一種圖片播放的方法、裝置及機頂盒的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體技術(shù)領(lǐng)域,特別是涉及一種圖片播放的方法、裝置及機頂盒。
【背景技術(shù)】
[0002]流媒體指以流方式在網(wǎng)絡中傳送音頻、視頻和多媒體文件的媒體形式。相對于下載后觀看的網(wǎng)絡播放形式而言,流媒體的典型特征是把連續(xù)的音頻和視頻信息壓縮后放到網(wǎng)絡服務器上,用戶邊下載邊觀看,而不必等待整個文件下載完畢。
[0003]硬件解碼就是通過顯卡的視頻加速功能對高清視頻進行解碼。因此硬解能夠?qū)⒅醒胩幚砥鰿PU從繁重的視頻解碼運算中釋放出來,使電腦具備流暢播放高清視頻的能力。顯卡的圖形處理器GPU/視覺處理器VPU要比CPU更適合這類大數(shù)據(jù)量的、低難度的重復工作。視頻解碼工作從處理器那里分離出來,交給顯卡去做,這就叫做硬件解碼。
[0004]FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,屬于自由軟件,采用庫通用公共許可證LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,為了保證高可移植性和編解碼質(zhì)量,Iibavcodec里很多codec都是從頭開發(fā)的。
[0005]在現(xiàn)有技術(shù)中存在如下技術(shù)問題,在發(fā)現(xiàn)硬件解碼器資源已經(jīng)完全被占用后,進行硬件解碼帶來的CPU負擔過重而導致的嚴重卡頓,用戶無法選擇高清節(jié)目播放的問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問題是提供一種圖片播放的方法、裝置及機頂盒,解決在發(fā)現(xiàn)硬件解碼器資源已經(jīng)完全被占用后,進行硬件解碼使CPU負擔過重,加重視頻卡頓,讓用戶無法選擇高清節(jié)目播放的問題
[0007]為了解決上述技術(shù)問題,本發(fā)明實施例的圖片播放的方法,包括:
[0008]檢測到當前頻道的節(jié)目流進行播放時,獲取硬件解碼器資源的占用情況;
[0009]在所述硬件解碼器資源處于全部被占用的第一時刻,若接收到當前節(jié)目流的圖片播放指令,且仍占用原有的硬件解碼器資源時,對所述節(jié)目流進行處理,獲得圖片,并播放圖片。
[0010]其中,在所述硬件解碼器資源處于全部被占用的第一時刻時,還包括:提示播放能力不足的步驟。
[0011]其中,播放圖片的過程中,還包括:
[0012]定時申請硬件解碼器資源;
[0013]若申請到空閑的硬件解碼器資源時,則停止圖片播放,并利用所述空閑的硬件解碼器資源對當前節(jié)目流進行硬件解碼,并從所述第一時刻播放解碼后的節(jié)目流。
[0014]其中,對所述節(jié)目流進行處理,獲得圖片,并播放圖片的步驟包括:對所述節(jié)目流進行抽幀以及生成圖片處理,獲得圖片,并播放圖片。
[0015]其中,對所述節(jié)目流進行抽幀以及生成圖片處理,獲得圖片,并播放圖片的步驟包括:
[0016]將從流媒體服務器獲取的節(jié)目流,存入緩沖區(qū)鏈表中;
[0017]從所述緩沖區(qū)鏈表中的取緩沖區(qū)中,循環(huán)抽幀的多個幀;
[0018]抽幀出的每幀數(shù)據(jù)轉(zhuǎn)為圖片,經(jīng)圖片路徑存入圖片鏈表;
[0019]循環(huán)播放所述圖片鏈表中的圖片。
[0020]其中,經(jīng)圖片路徑存入圖片鏈表后還包括:
[0021]刪除取過的所述取緩沖區(qū)。
[0022]其中,循環(huán)播放所述圖片鏈表中的圖片后還包括:
[0023]經(jīng)預定時間后,刪除圖片路徑節(jié)點以及所播放的圖片。
[0024]相應地,為了解決上述技術(shù)問題,本發(fā)明實施例還提供一種圖片播放的裝置,其中,包括:
[0025]獲取模塊,用于檢測到當前頻道的節(jié)目流進行播放時,獲取硬件解碼器資源的占用情況;
[0026]第一處理模塊,用于在所述硬件解碼器資源處于全部被占用的第一時刻,若接收到當前節(jié)目流的圖片播放指令,且仍占用原有的硬件解碼器資源時,對所述節(jié)目流進行處理,獲得圖片,并播放圖片。
[0027]其中,還包括:提示模塊,用于提示播放能力不足。
[0028]其中,還包括:申請模塊,用于定時申請硬件解碼器資源;
[0029]第二處理模塊,用于若申請到空閑的硬件解碼器資源時,則停止圖片播放,并利用所述空閑的硬件解碼器資源對當前節(jié)目流進行硬件解碼,并從所述第一時刻播放解碼后的節(jié)目流。
[0030]進一步地,所述第一處理模塊包括:
[0031]第一處理子模塊,用于對所述節(jié)目流進行抽幀以及生成圖片處理,獲得圖片,并播放圖片。
[0032]進一步地,所述第一處理子模塊包括:
[0033]存儲單元,用于將從流媒體服務器獲取的節(jié)目流,存入緩沖區(qū)鏈表中;
[0034]抽幀單元,用于從所述緩沖區(qū)鏈表中的取緩沖區(qū)中,循環(huán)抽幀的多個幀;
[0035]圖片生成單元,用于抽幀出的每幀數(shù)據(jù)轉(zhuǎn)為圖片,經(jīng)圖片路徑存入圖片鏈表;
[0036]圖片播放單元,用于循環(huán)播放所述圖片鏈表中的圖片。
[0037]進一步地,所述第一處理子模塊還包括:第一刪除單元,用于刪除取過的所述取緩沖區(qū)。
[0038]進一步地,所述第一處理子模塊還包括:第二刪除單元,用于經(jīng)預定時間后,刪除圖片路徑節(jié)點以及所播放的圖片。
[0039]本發(fā)明實施例還提供一種機頂盒,其中,包括如上述所述的圖片播放的裝置。
[0040]本發(fā)明的上述技術(shù)方案的有益效果如下:
[0041]本發(fā)明的方案中,檢測到當前頻道進行節(jié)目流播放時,并查看硬件解碼器資源是否被完全占有,如果硬件解碼器資源被完全占有,此時選擇當前節(jié)目流的圖片播放指令,并且沒有停止原有占用的硬件解碼器資源的業(yè)務,通過對所述節(jié)目流進行處理,獲得圖片,并播放圖片。在硬件解碼器資源沒有資源的時候,通過處理節(jié)目流進行圖片播放,緩沖節(jié)目流,減少硬件解碼器資源的利用,降低CPU的占有率,減輕CPU負擔,提高用戶體驗。
【附圖說明】
[0042]圖1為本發(fā)明的基本步驟示意圖;
[0043]圖2為本發(fā)明的總體處理流程圖;
[0044]圖3為本發(fā)明的抽幀及圖片播放流程;
[0045]圖4為本發(fā)明的總體結(jié)構(gòu)示意圖。
【具體實施方式】
[0046]為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例進行詳細描述。
[0047]本發(fā)明提供一種圖片播放的方法、裝置及機頂盒,在硬件解碼器資源被完全占有后,不用添加新的硬件解碼器,利用軟件解碼處理節(jié)目流,從而減少CPU的負擔。
[0048]如圖1所示,本發(fā)明實施例的圖片播放的方法,其中,包括:
[0049]步驟1,檢測到當前頻道的節(jié)目流進行播放時,獲取硬件解碼器資源的占用情況;其中,當前頻道的節(jié)目流是指用戶當前選擇高清節(jié)目播放。
[0050]步驟2,在所述硬件解碼器資源處于全部被占用的第一時刻,若接收到當前節(jié)目流的圖片播放指令,且仍占用原有的硬件解碼器資源時,對所述節(jié)目流進行處理,獲得圖片,并播放圖片。其中,對節(jié)目流的處理可以是通過優(yōu)化的ffmpeg實現(xiàn)。
[0051]如果不經(jīng)過用戶選擇,直接處理節(jié)目流,影響用戶使用效果,因此本發(fā)明實施例的圖片播放的方法中,在所述硬件解碼器資源處于全部被占用的第一時刻時,還包括:步驟21,提示播放能力不足的步驟。其中,播放能力不足是指沒有空閑的硬件解碼器資源,通過提示方式用戶可以自主選擇操作。
[0052]當用戶選擇高清節(jié)目之后,硬件解碼器資源處于全部被占用的第一時刻時,也就是沒有空閑的硬件解碼器資源,為了方便用戶了解到當前的CPU的占有狀況,進行播放能力不足的提醒。
[0053]圖片播放是為了緩解CPU的占有率,不能一直繼續(xù)圖片播放,因此本發(fā)明實施例的所述的圖片播放的方法中,播放圖片的過程中,還包括:
[0054]步驟3,定時申請硬件解碼器資源;
[0055]步驟4,若申請到空閑的硬件解碼器資源時,則停止圖片播放,并利用所述空閑的硬件解碼器資源對當前節(jié)目流進行硬件解碼,并從所述第一時刻播放解碼后的節(jié)目流。其中,第一時刻是指剛開始硬件解碼器無資源,開始圖片播放的時刻。
[0056]在硬件解碼器資源的全部占用時,進行圖片播放緩解CPU壓力,但不能一直進行圖片播放,通過步驟3時刻申請硬件解碼器資源,進行節(jié)目流的播放。這樣能夠提高用戶體驗效果。
[0057]如圖2所示,本發(fā)明實施例的總體流程的具體過程。
[0058]機頂盒側(cè)提供硬件解碼器資源管理的模塊,具備硬件解碼器資源的申請/釋放/查詢能力。
[0059](I)監(jiān)測到當前頻道節(jié)目流播放,也就是當前用戶選擇高清的節(jié)目之后,獲取硬件解碼器資源的占用情況,看是否被完全占用,如果是被完全占用沒有資源,則在頁面通知EPG彈出提示選擇框展示給用戶,提示播放能力不足,讓用戶選擇是否進行當前頻道的圖片播放。
[0060](2)當用戶沒有選擇停止原有占用硬件解碼器的業(yè)務,并且選擇了進行當前頻道的圖片播放的時候,機頂盒后臺開始使用優(yōu)化過的ffmpeg把從網(wǎng)絡過來的高清碼流進行抽幀以及圖片生成操作,并開始播放圖片。
[0061](3)在播放圖片的過程中,由定時器設定時間,繼續(xù)向資源管理模塊申請硬件解碼器資源,如果可以申請到硬件解碼器資源,則停止ffmpeg的抽幀以及播放圖片,開始當前高清頻道的硬件解碼從高清選擇時,硬件資源被完全占有的時刻開始播放。
[0062]本發(fā)明的又一實施例的圖片播放的方法中,對所述節(jié)目流進行處理,獲得圖片,并播放圖片的步驟包括:
[0063]步驟22,對所述節(jié)目流進行抽幀以及生成圖片處理,獲得圖片,并播放圖片。
[0064]其中,具體步驟包括:
[0065]步驟221,將從流媒體服務器獲取的節(jié)目流,存入緩沖區(qū)鏈表中;
[0066]步驟222,從所述緩沖區(qū)鏈表中的取緩沖區(qū)中,循環(huán)抽幀的多個幀;
[0067]步驟223,抽幀出的每幀數(shù)據(jù)轉(zhuǎn)為圖片,經(jīng)圖片路徑存入圖片鏈表,刪除取過的所述取緩沖區(qū);
[0068]步驟224,循環(huán)播放所述圖片鏈表中的圖片,經(jīng)預定時間后,刪除圖片路徑節(jié)點以及所播放的圖片。