一種流媒體緩沖播放方法、裝置及顯示設備的制造方法
【專利摘要】本發(fā)明提供一種流媒體緩沖播放方法、裝置及顯示設備,涉及顯示技術領域,用于在保證流媒體節(jié)目流暢播放的同時盡可能縮短啟動播放的時間。該方法包括:接收RTP數據包,其中RTP數據包包括:包頭和負載;將負載緩沖至緩沖區(qū)域并根據包頭獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值;若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,則對緩沖區(qū)域內未解碼的負載進行解碼并播放。本發(fā)明用于流媒體的緩沖播放。
【專利說明】
一種流媒體緩沖播放方法、裝置及顯示設備
技術領域
[0001]本發(fā)明涉及顯示技術領域,尤其涉及一種流媒體緩沖播放方法、裝置及顯示設備。
【背景技術】
[0002]隨著網絡技術的發(fā)展和網絡終端設備的普及,流媒體播放成為機頂盒等終端設備最常用和最重要的功能。通常流媒體點播功能主要涉及前端服務器、中間網絡傳輸和終端數據下載和緩沖,以及音視頻解碼和顯示,而對于終端用戶來說,能夠快速和流暢地看到所點播的流媒體節(jié)目是其基本的需求,也是終端設備的最終的實現目標。
[0003]若要能夠快速的看到所點播的流媒體節(jié)目,則需要盡可能的縮短啟動播放時間,而要流暢的看到所點播的流媒體節(jié)目,則需要盡可能的避免視頻卡頓。但是盡可能的縮短啟動播放的時間和盡可能的避免視頻卡頓在一定條件下相互矛盾,無法同時滿足。例如:在網絡帶寬不足時播放高分辨率的流媒體節(jié)目時,為了快速看到所點播的流媒體節(jié)目,需要縮短啟動播放時間,加快視頻幀的播出,即緩沖盡可能小的數據就開始對流媒體節(jié)目進行播放,而這會迅速消耗緩沖區(qū)內的緩沖數據,當帶寬不足時會導致:緩沖-播放-暫停-緩沖-播放,表現為視頻頻繁的卡頓,即無法流暢的看到所點播的流媒體節(jié)目。而為了流暢的看到所點播的流媒體節(jié)目,則需要增大啟動播放時間,也就是在流媒體節(jié)目開始解碼前盡可能地多緩沖數據。為了平衡快速的看到所點播的流媒體節(jié)目和流暢的看到所點播的流媒體節(jié)目之間的關系,現有技術中,通過在播放器中設定一個固定大小的閾值,當播放器緩沖的數據達到閾值時,啟動解碼器對緩沖的數據進行解碼并播放。然而由于不同的流媒體節(jié)目在數據量大小相同時其播放時間長度卻不一定相同,所以通過設置閾值的方式仍無法平衡快速啟動播放和流暢播放之間的矛盾。
【發(fā)明內容】
[0004]本發(fā)明的實施例提供一種流媒體緩沖播放方法、裝置及顯示設備,用于在保證流媒體節(jié)目流暢播放的同時盡可能縮短啟動播放的時間。
[0005]為達到上述目的,本發(fā)明的實施例采用如下技術方案:
[0006]第一方面,提供一種流媒體緩沖播放方法,包括:
[0007]接收RTP(英文全稱:Real-time Transport Protocol,中文名稱:實時傳輸協議)數據包,其中所述RTP數據包包括:包頭和負載;
[0008]將所述負載緩沖至緩沖區(qū)域并根據所述包頭獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;
[0009]判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值;
[0010]若所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,則對所述緩沖區(qū)域內未解碼的負載進行解碼并播放。
[0011]第二方面,提供一種流媒體緩沖播放裝置,包括:
[0012]接收單元,用于接收RTP數據包,其中所述RTP數據包包括:包頭和負載;
[0013]獲取單元,用于將所述負載緩沖至緩沖區(qū)域并根據所述包頭獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;
[0014]處理單元,用于判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值;
[0015]若所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,所述處理單元還用于對所述緩沖區(qū)域內的負載進行解碼并播放。
[0016]第三方面,提供一種顯示設備,包括第二方面所述的流媒體緩沖播放裝置。
[0017]本發(fā)明實施例提供的流媒體緩沖播放方法,首先接收RTP數據包,其次將RTP數據包的負載緩沖至緩沖區(qū)域并根據RTP數據包的包頭獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;然后再判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值,當緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,則對所述緩沖區(qū)域內未解碼的負載進行解碼并播放,即本發(fā)明實例中根據RTP數據包的包頭獲取緩存區(qū)域內未解碼的負載所包含視頻幀數量,然后在根據獲取緩存區(qū)域內未解碼的負載所包含視頻幀數量判斷是否開始對緩存區(qū)域內未解碼的負載解碼并播放,相比于現有技術中緩存固定大小的數據量,然后開始對視頻數據解析并播放,本發(fā)明實施例通過視頻幀數量判斷是否開始解碼并播放,因此可以避免因數據量大小相同時其播放時間長度不一定相同引起的無法平衡快速啟動播放和流暢播放之間的矛盾,所以本發(fā)明實施例可以在保證流媒體節(jié)目流暢播放的同時盡可能縮短啟動播放的時間。
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0019]圖1為本發(fā)明實施例提供的流媒體緩沖播放方法的步驟流程圖一;
[0020]圖2為本發(fā)明實施例提供的流媒體傳輸協議棧結構的示意圖;
[0021]圖3為本發(fā)明實施例提供的流媒體緩沖播放方法的步驟流程圖二;
[0022]圖4為本發(fā)明實施例提供的RTP數據包的包頭的示意性結構圖;
[0023]圖5為本發(fā)明實施例提供的幀號與緩存地址對應關系的示意圖;
[0024]圖6為本發(fā)明實施例提供的流媒體緩沖播放方法的步驟流程圖三;
[0025]圖7為本發(fā)明實施例提供的流媒體緩沖播放方法的步驟流程圖四;
[0026]圖8為本發(fā)明實施例提供的流媒體緩沖播放方法的步驟流程圖五;
[0027]圖9為本發(fā)明實施例提供的流媒體緩沖播放裝置的示意性結構圖。
【具體實施方式】
[0028]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0029]本發(fā)明的發(fā)明原理為:在流媒體緩沖播放過程中,通過緩沖區(qū)域內未解碼的負載所包含的視頻幀數量判斷是否開始讀緩存區(qū)域內未解碼的負載進行解碼并播放,從而從根本上避免了由于因數據量大小相同時其播放時間長度不一定相同引起的無法平衡快速啟動播放和流暢播放之間的矛盾的問題,因此本發(fā)明實施例可以在保證流媒體節(jié)目流暢播放的同時盡可能縮短啟動播放的時間。
[0030]本發(fā)明實施例提供一種流媒體緩沖播放方法,參照圖1所示,該方法包括如下步驟:
[0031]SI 1、接收RTP數據包。其中RTP數據包包括:包頭和負載。
[0032]具體的,RTP是一種網絡傳輸協議,其廣泛應用于流媒體相關的電話、視頻會議、電視、一鍵通等通訊和娛樂業(yè)務中。RTP說明了在互聯網上傳遞音頻和視頻的標準數據包格式,即本文中的RTP數據包的格式。通常RTP和RTP控制協議(英文名稱:RTP ControlProtocoI,簡稱:RTCP)一起使用,其中RTP用于實時傳輸數據,提供的信息包括:時間戳、序列號以及負載格式等;RTCP用于服務質量(英文名稱:Quality Of Service,簡稱:QOS)反饋和同步媒體流。其中,RTP傳輸協議的報文(即RTP數據包)由包頭和負載兩部分內容組成;包頭中包括:RTP協議的版本號、填充標志、擴展標志、CSRC計數器等內容,用于表示RTP數據包的版本號、負載類型等信息;負載即為RTP數據數據包實際需要傳輸的數據流,若RTP數據用于傳輸音頻文件,則負載為需要傳輸的音頻數據;若RTP數據用于傳輸視頻文件,則負載為需要傳輸的視頻數據。
[0033]進一步的,參照圖2所示,圖2中描述了基于RTP的動態(tài)圖像專家組傳輸流(英文全稱:Moving Picture Experts Group Transport Stream,英文簡稱:MPEG-TS)流媒體傳輸協議棧結構?;谠摿髅襟w傳輸協議棧結構,終端和內容分發(fā)系統(tǒng)之間的接口分為兩個通道,其一為:流媒體傳輸和接收通道21;其二為:媒體流會話控制通道22 ο即終端與內容分發(fā)系統(tǒng)之間按照圖2中所示流媒體傳輸和接收通道21的格式和協議來完成實際媒體流數據的傳輸和解包播放,終端與內容分發(fā)系統(tǒng)之間按照圖2中所示媒體流會話控制通道22的協議來完成對媒體流的控制和交互。
[0034]S12、將負載緩沖至緩沖區(qū)域并根據包頭獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量。
[0035]需要說明的時,在接收RTP數據包后應首先對RTP數據包進行解碼,然后才能夠緩沖負載和根據包頭取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量。其中本發(fā)明的實施例中對RTP數據包進行解析的方法可以與現有技術中對RTP數據報的解析方法相同,本發(fā)明實施例在此不做詳細說明。
[0036]具體的,RTP數據包的負載為傳輸(英文名稱:TransportStream,簡稱:TS)流,所以上述步驟S12即為將TS流緩沖值緩存區(qū)域,然后獲取緩沖區(qū)域中尚未進行解碼的TS流包含的視頻幀數量。
[0037]S13、判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值。
[0038]需要說明的是,緩沖區(qū)域內未解碼的負載是指已經緩存在緩存區(qū)域,但解碼器尚未讀取并解碼的負載。緩存區(qū)域內的負載在解碼前和解碼后,負載本身并未發(fā)生變化,其區(qū)別僅在于解碼器是否對該部分負載進行讀取,若解碼器已對該部分負載進行讀取,則該部分負載為已解的碼負載,而若解碼器尚未對該部分負載進行讀取,則該部分負載為未解碼的負載。此外,當解碼器對負載讀取并解碼后,可以將該分部已解碼負載從緩存區(qū)域中刪除,節(jié)省解碼緩存區(qū)域的存儲空間。且若每次解碼器讀取負載后都將緩存區(qū)域的已讀取的負載進行刪除,則緩存區(qū)域中僅包括未解碼的負載,緩存區(qū)域內未解碼的負載即為緩存區(qū)域內的全部負載。
[0039]此外,第一閾值可以由本領域技術人員根據實際的數據傳輸帶寬設定,帶寬較大時,第一閾值可以設定的較小;帶寬較小時,第一閾值應該設定的較大。在上述步驟S13中,若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值則執(zhí)行步驟S14;若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于第一閾值則返回步驟Sll,繼續(xù)接受RTP數據包。
[0040]S14、對緩沖區(qū)域內未解碼的負載進行解碼并播放。
[0041]S卩,第一閾值表示滿足對負載進行解碼并播放的條件,或者是在暫停解碼并播放后滿足重新開始解碼并播放的條件。緩存區(qū)域內未解碼的負載所包含的視頻幀數量達到第一閾值時,即開始對緩存區(qū)域中的未解碼的負載進行解碼并播放。
[0042]需要說明的是,本發(fā)明實施例中的接收RTP數據包并對RTP數據包解析后將負載緩沖至緩沖區(qū)域和對負載進行解碼并播放是兩個獨立的線程。其中,第一個線程不斷接收通過網絡傳輸來的RTP數據包、對RTP數據包解析并將負載緩沖至緩沖區(qū)域;第二個線程則在緩沖區(qū)域內未解碼的負載所包含的視頻幀數量的控制下開始或者停止對負載進行解碼并播放。
[0043]本發(fā)明實施例提供的流媒體緩沖播放方法,首先接收RTP數據包,其次將RTP數據包的負載緩沖至緩沖區(qū)域并根據RTP數據包的包頭獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;然后再判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值,當緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,則對緩沖區(qū)域內未解碼的負載進行解碼并播放,即本發(fā)明實例中根據RTP數據包的包頭獲取緩存區(qū)域內未解碼的負載所包含視頻幀數量,然后在根據獲取緩存區(qū)域內未解碼的負載所包含視頻幀數量判斷是否開始對緩存區(qū)域內未解碼的負載解碼并播放,相比于現有技術中緩存固定大小的數據量,然后開始對視頻數據解析并播放,本發(fā)明實施例通過視頻幀數量判斷是否開始解碼并播放,因此可以避免因數據量大小相同時其播放時間長度不一定相同引起的無法平衡快速啟動播放和流暢播放之間的矛盾,所以本發(fā)明實施例可以在保證流媒體節(jié)目流暢播放的同時盡可能縮短啟動播放的時間。
[0044]進一步的,參照圖3所示,上述實施例的步驟S12中根據包頭獲取負載所包含的視頻幀數量具體可以通過如下步驟實現。
[0045 ] S121、獲取起始幀的幀號。其中起始幀為緩沖區(qū)域內未解碼的負載所包含的視頻幀中幀號最小的視頻幀。
[0046]起始幀為緩沖區(qū)域內未解碼的負載包含的視頻幀中幀號最小的視頻幀,所以在每一讀取并解碼緩存區(qū)域的負載后,初始幀的幀號都會重新進行賦值。示例性的,在第一次讀取緩存區(qū)域內的視頻幀時,緩存區(qū)域內的負載全部都未被讀取,最小的幀號為I,所以在第一次讀取時幀號為I的視頻幀為初始幀。而若第一讀取時讀取了緩存區(qū)域內包含10個視頻幀(幀號為1-10的視頻幀)的負載,則此時緩沖區(qū)域內未解碼的負載包含的視頻幀中最小的幀號為11,所以在第二次讀取緩沖區(qū)域內的負載時幀號為11的視頻幀則為初始幀。以此類推,在第三、第四以及以后各次取緩存區(qū)域的負載后,都會根據前一次讀取負載包含視頻幀數量對初始幀的幀號重新進行賦值。
[0047]S122、根據包頭中的有效載荷類型判斷負載是否為視頻數據。
[0048]具體的,參照圖4所示,圖4為RTP數據包的包頭的格式。RTP數據包的包頭的前兩位(bito-l)為RTP協議的版本號V,圖4中以RTP協議的版本號V=2為例進行說明。包頭的第三位(bit2)為填充標志P,如果P=I,則在該報文的尾部填充一個或多個額外的八位組,它們不是有效載荷的一部分。包頭的第四位(bit3)為擴展標志X,如果X=I,則在RTP報頭后跟有一個擴展報頭。包頭的第五位至第八位CC(bit4-7)為CSRC計數器,表示CSRC標識符的個數。包頭的第九位(bit8)為標記位M,對于不同的效載荷類型M表示不同的含義,當有效載荷為視頻,則M表示一幀的結束,當有效載荷為音頻,則M表示會話的開始。包頭的第十位至第十七位(bit9-16)為有效載荷類型PT,用于說明RTP數據包中負載的類型,在流媒體中一般用于區(qū)分音頻流和視頻流,從而便于終端進行解析。此外,包頭中還包括:序列號、時戳等信息。對于RTP數據包的包頭中包含的本申請不涉及的信息本文不再詳細進行說明。
[0049]即上述步驟S122中需要根據包頭的第十位至第十七位(bit9_16)有效載荷類型PT判斷包頭對應的負載是否為視頻數據。
[0050]在步驟S122中,若根據有效載荷類型PT判斷得出包頭對應的負載為視頻數據則進一步執(zhí)行步驟S123;而若根據PT判斷得出包頭對應的負載不為視頻數據,則包頭對應的負載不可能包含視頻幀,返回上述實施例中的步驟SI I,繼續(xù)接收RTP數據包。
[0051]S123、根據包頭中的標記位判斷負載所包含視頻幀是否結束。
[0052]具體的,根據標記位M,判斷包頭對應的負載所包含視頻幀是否結束。當步驟S123中判斷得出包頭對應的負載所包含視頻幀結束,則執(zhí)行步驟SI 24。
[0053]S124、結束幀的幀號遞增I。
[0054]S卩,結束幀的幀號為緩沖區(qū)域內未解碼的負載所包含的視頻幀中幀號最大的視頻幀。所以結束幀的幀號隨著RTP數據包的接收緩沖也在不斷重新賦值。
[0055]S125、根據起始幀的幀號與結束幀的幀號的差值獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量。
[0056]即緩存區(qū)域內未解碼的負載所包含的視頻幀數量即為:起始幀的幀號與結束幀的幀號的差值。
[0057]若起始幀的幀號為frameN0_strat、結束幀的幀號為frameN0_end,緩存區(qū)域內未解碼的負載所包含的視頻幀數量為frameNum,則有frameNum = frameN0_end_f rameN0_stratο
[0058]此外,上述實施例還可以在開始執(zhí)行上述實施例中的各個步驟之前對視頻幀的幀號進行重置,即將初始視頻幀的幀號重置為O。若在開始執(zhí)行上述實施例中的各個步驟之前還對視頻幀的幀號進行重置,可以簡化獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量時的計算過程。
[0059]由上述獲取視頻幀的過程可知,在對RTP數據包的上層協議解析階段就可以判斷出RTP數據包中是否包含完整的視頻幀,而無需等到對RTP數據包中的負載進行解碼后才判斷出是否包含完整的視頻幀,所以通過上述實施例可以為緩沖后的播放時機提供準確的判斷條件,同時為播放過程中出現緩沖欠載而需要暫停解碼和播放并繼續(xù)緩沖的時機提供了準確的判斷條件。
[0060]此外,優(yōu)選的,參照圖5所示,上述實例中還可以將RTP數據包的負載中的每一個視頻幀緩沖在一個獨立緩沖區(qū)域中,并獲取該緩沖區(qū)域的緩沖地址,然后針對每一個視頻幀的幀號和緩沖地址建立對應關系。即,在對負載進行緩沖的過程中可以將TS流以視頻幀為單位進行緩沖,使每一個緩沖區(qū)域中均包含一個完整的視頻幀,其中,緩沖區(qū)域中的視頻幀可以為內部編碼幀(簡稱:1幀)或者前向預測幀(簡稱:P幀)或者雙向內插幀(簡稱:B幀),將RTP數據包的負載緩沖至緩沖區(qū)域后,記錄緩沖后的幀號以及每一個幀號對應的緩沖地址,然后通過幀號以幀號對應的緩存地址來控制負載的注入。
[0061]進一步的,參照圖6所示,上述實施例的步驟S14中對緩沖區(qū)域內未解碼的負載進行解碼并播放具體可以包括如下步驟。
[0062]S141、判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第二閾值。
[0063]第二閾值可以由實際使用中解碼器一次最多可以處理的數據設定,一次最多可以處理的數據量越大則第二閾值應該設定的越大,一次最多可以處理的數據量越小則第二閾值應該設定的越小。在上述步驟S141中,若視頻幀數量大于或等于第二閾值則執(zhí)行步驟S142;若視頻幀數量小于第二閾值則執(zhí)行步驟S143。
[0064]S142、由起始幀開始讀取包含第二閾值個視頻幀的負載。
[0065]S143、由起始幀開始讀取緩沖區(qū)域內全部未解碼的負載。
[0066]第二閾值表示解碼器一次最多可以讀取的視頻幀數量。若視頻幀數量大于第二閾值,則由起始幀開始讀取包含第二閾值個視頻幀的負載,若視頻幀數量小于第二閾值,則由起始幀開始讀取緩存區(qū)域中全部未解碼的負載。
[0067]因為第一閾值表示滿足對負載進行解碼并播放的條件,或者是在暫停解碼并播放后滿足重新開始解碼并播放的條件,而第二閾值表示表示一次最多可以讀取的視頻幀數量,所以在設定第一閾值和第二閾值時應滿足第一閾值小于第二閾值。
[0068]若起始幀的幀號為frameN0_strat、結束幀的幀號為frameN0_end,第一閾值為START,第二閾值為 OVERFLOW,則有 START〈0VERFL0W,且在 frameNO_end-frameNO_strat 大于或等于OVERFLOW時,由frameN0_strat開始讀取包含OVERFLOW個視頻幀的負載,在frameN0_end-f rameN0_strat小于OVERFLOW時,由f rameN0_strat開始讀取全部未解碼的負載。
[0069]S144、對讀取的負載進行解碼并播放。
[0070]進一步的,參照圖7所示,在上述步驟S144對讀取的負載進行解碼并播放之前,上述實施例還可以包括如下步驟:
[0071]S145、判斷解碼器是否為暫停狀態(tài)。
[0072]若解碼器為暫停狀態(tài),則執(zhí)行步驟S146,若解碼器不為暫停狀態(tài),則執(zhí)行步驟S147o
[0073]S146、恢復解碼器。
[0074]S147、判斷是否已開始解碼并播放。
[0075]若沒有開始解碼并播放則執(zhí)行步驟S158。
[0076]S148、啟動解碼器。
[0077]優(yōu)選的,參照圖8所示,在步驟S13中,若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于第一閾值時執(zhí)行步驟S15。
[0078]S15、判斷解碼器是否為啟動狀態(tài)。
[0079]在步驟S15中,若解碼器為啟動狀態(tài),則執(zhí)行步驟S16,若解碼器為非啟動狀態(tài),則返回步驟SI I。
[0080]S16、判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第三閾值。
[0081]第三閾值表示若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于該數量,則暫停對緩沖區(qū)域內的負載解碼并播放,等待數據緩沖。第三閾值可以根據實際需要設定為任意值。此外,因為第一閾值表示滿足對負載進行解碼并播放的條件,或者是在暫停解碼并播放后滿足重新開始解碼并播放的條件,而第三閾值表示若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于該數量,則暫停對緩沖區(qū)域內的負載解碼并播放,所以在設定第一閾值和第二閾值時應滿足第一閾值大于第三閾值。
[0082]在步驟S16中,若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第三閾值,則執(zhí)行步驟S17,若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于第三閾值,則執(zhí)行步驟S18。
[0083]S17、由起始幀開始讀取緩沖區(qū)域內的全部未解碼的負載并對讀取的負載進行解碼并播放。
[0084]S18、暫停解碼器。
[0085]若起始幀的幀號為frameN0_strat、結束幀的幀號為frameN0_end,第一閾值為START,第三閾值為UNDERFLOW,則有START>UNDERFLOW,在解碼器啟動且frameN0_end-frameN0_strat大于或等于UNDERFLOW時,由frameN0_strat開始讀取緩沖區(qū)域內的全部未解碼的負載并對讀取的負載進行解碼并播放,在解碼器啟動且frameN0_end-frameN0_strat小于UNDERFLOW時,暫停解碼器。
[0086]此外,本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0087]本發(fā)明再一實施例提供一種流媒體緩沖播放裝置,參照圖9所示,該流媒體緩沖播放裝置90包括:
[0088]接收單元91,用于接收RTP數據包,其中RTP數據包包括:包頭和負載;
[0089]獲取單元92,用于將負載緩沖至緩沖區(qū)域并根據包頭獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;
[0090]處理單元93,用于判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值;
[0091]若緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,處理單元93還用于對緩沖區(qū)域內的負載進行解碼并播放。
[0092]本發(fā)明實施例提供的流媒體緩沖播放裝置,通過接收單元接收RTP數據包并通過解析單元解析接收到的RTP數據包,再通過獲取單元將RTP數據包的負載緩沖至緩沖區(qū)域并根據RTP數據包的包頭獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;最后通過處理單元再判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值,當緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,則對緩沖區(qū)域內未解碼的負載進行解碼并播放,即本發(fā)明實例中根據RTP數據包的包頭獲取緩存區(qū)域內未解碼的負載所包含視頻幀數量,然后在根據獲取緩存區(qū)域內未解碼的負載所包含視頻幀數量判斷是否開始對緩存區(qū)域內未解碼的負載解碼并播放,相比于現有技術中緩存固定大小的數據量,然后開始對視頻數據解析并播放,本發(fā)明實施例通過視頻幀數量判斷是否開始解碼并播放,因此可以避免因數據量大小相同時其播放時間長度不一定相同引起的無法平衡快速啟動播放和流暢播放之間的矛盾,所以本發(fā)明實施例可以在保證流媒體節(jié)目流暢播放的同時盡可能縮短啟動播放的時間。
[0093]可選的,處理單元93具體用于獲取起始幀的幀號;根據包頭中的有效載荷類型判斷負載是否為視頻數據;若是,根據包頭中的標記位判斷負載所包含的視頻幀是否結束;若負載包含的視頻幀結束,則結束幀的幀號遞增I;根據起始幀的幀號與結束幀的幀號的差值獲取緩沖區(qū)域內未解碼的負載所包含的視頻幀數量;其中起始幀為緩沖區(qū)域內未解碼的負載所包含的視頻幀中幀號最小的視頻幀。
[0094]可選的,處理單元93還用于在緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值時,判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第二閾值;
[0095]若是,處理單元93還用于由起始幀開始讀取包含第二閾值個視頻幀的負載;
[0096]若否,處理單元93還用于由起始幀開始讀取緩沖區(qū)域內全部未解碼的負載;
[0097]處理單元93還用于對讀取的負載進行解碼并播放;
[0098]其中,第一閾值小于第二閾值。
[0099]可選的,處理單元93還用于判斷解碼器是否為暫停狀態(tài);
[0100]處理單元93還用在解碼器為暫停狀態(tài)時,恢復解碼器;
[0101]處理單元93還用在解碼器不為暫停狀態(tài),判斷是否已開始進行解碼并播放;
[0102]若否,處理單元93還用啟動解碼器。
[0103]可選的,處理單元93還用于在當緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于第一閾值時,判斷解碼器是否為啟動狀態(tài);
[0104]若解碼器為啟動狀態(tài),處理單元93還用于判斷緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第三閾值是否大于或等于第三閾值;
[0105]若是,處理單元93還用于由起始幀開始讀取緩沖區(qū)域內的全部未解碼的負載并對讀取的負載進行解碼并播放;
[0106]若否,處理單元93還用于暫停解碼器;
[0107]其中,第一閾值大于第三閾值。
[0108]需要說明的是,上述流媒體緩沖播放裝置中接收單元91可以為顯示裝置中具有接收功能的電路接口,獲取單元92可以通過顯示其中具有邏輯運算功能的電路實現。處理單元93可以為單獨設立的處理器,也可以集成在顯示裝置的某一個處理器中實現,此外,也可以以程序代碼的形式存儲于顯示裝置的存儲器中,由顯示裝置的某一個處理器調用并執(zhí)行以上處理單元93的功能。這里的處理器可以是一個中央處理器(英文全稱:CentralProcessing Unit,英文簡稱:CPU),或者是特定集成電路(英文全稱:Applicat1nSpecific Integrated Circuit,英文簡稱:ASIC),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
[0109]本發(fā)明再一實施例提供一種顯示設備,該顯示設備包括上述任一實施例提供的流媒體緩沖播放裝置。另外,顯示裝置可以為:電子紙、手機、平板電腦、電視機、顯示器、筆記本電腦、數碼相框、導航儀等任何具有顯示功能的產品或部件。
[0110]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以權利要求的保護范圍為準。
【主權項】
1.一種流媒體緩沖播放方法,其特征在于,包括: 接收RTP數據包,其中所述RTP數據包包括:包頭和負載; 將所述負載緩沖至緩沖區(qū)域并根據所述包頭獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量; 判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值;若所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,則對所述緩沖區(qū)域內未解碼的負載進行解碼并播放。2.根據權利要求1所述的方法,其特征在于,所述根據所述包頭獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量,包括: 獲取起始幀的幀號,其中所述起始幀為所述緩沖區(qū)域內未解碼的負載所包含的視頻幀中幀號最小的視頻幀; 根據所述包頭中的有效載荷類型判斷所述負載是否為視頻數據; 若是,則根據所述包頭中的標記位判斷所述負載所包含的視頻幀是否結束; 若所述負載包含的視頻幀結束,則結束幀的幀號遞增I; 根據所述起始幀的幀號與所述結束幀的幀號的差值獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量。3.根據權利要求2所述的方法,其特征在于,所述對所述緩沖區(qū)域內未解碼的負載進行解碼并播放包括: 判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第二閾值; 若是,則由起始幀開始讀取包含第二閾值個視頻幀的負載; 若否,則由所述起始幀開始讀取所述緩沖區(qū)域內全部未解碼的負載; 對讀取的負載進行解碼并播放; 其中,所述第一閾值小于所述第二閾值。4.根據權利要求3所述的方法,其特征在于,所述對讀取的負載進行解碼并播放前,所述方法還包括: 判斷解碼器是否為暫停狀態(tài); 若所述解碼器為暫停狀態(tài),則恢復所述解碼器; 若所述解碼器不為暫停狀態(tài),則判斷是否已開始解碼并播放; 若否,則啟動所述解碼器。5.根據權利要求1所述的方法,其特征在于,所述方法還包括: 當所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于第一閾值時,判斷解碼器是否為啟動狀態(tài); 若所述解碼器為啟動狀態(tài),則判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第三閾值; 若是,則由所述起始幀開始讀取所述緩沖區(qū)域內的全部未解碼的負載并對讀取的負載進行解碼并播放; 若否,則暫停所述解碼器; 其中,所述第一閾值大于所述第三閾值。6.一種流媒體緩沖播放裝置,其特征在于,包括: 接收單元,用于接收RTP數據包,其中所述RTP數據包包括:包頭和負載; 獲取單元,用于將所述負載緩沖至緩沖區(qū)域并根據所述包頭獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量; 處理單元,用于判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第一閾值; 若所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值,所述處理單元還用于對所述緩沖區(qū)域內的負載進行解碼并播放。7.根據權利要求6所述的裝置,其特征在于,所述處理單元具體用于獲取起始幀的幀號;根據所述包頭中的有效載荷類型判斷所述負載是否為視頻數據;若是,根據所述包頭中的標記位判斷所述負載所包含的視頻幀是否結束;若所述負載包含的視頻幀結束,則結束幀的幀號遞增I;根據所述起始幀的幀號與所述結束幀的幀號的差值獲取所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量; 其中所述起始幀為所述緩沖區(qū)域內未解碼的負載所包含的視頻幀中幀號最小的視頻幀。8.根據權利要求7所述的裝置,其特征在于,所述處理單元還用于在所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量大于或等于第一閾值時,判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第二閾值; 若是,所述處理單元還用于由起始幀開始讀取包含第二閾值個視頻幀的負載; 若否,所述處理單元還用于由所述起始幀開始讀取所述緩沖區(qū)域內全部未解碼的負載; 所述處理單元還用于對讀取的負載進行解碼并播放; 其中,所述第一閾值小于所述第二閾值。9.根據權利要求8所述的裝置,其特征在于,所述處理單元還用于判斷解碼器是否為暫停狀態(tài); 所述處理單元還用在所述解碼器為暫停狀態(tài)時,恢復所述解碼器; 所述處理單元還用在所述解碼器不為暫停狀態(tài),判斷是否已開始進行解碼并播放; 若否,所述處理單元還用啟動所述解碼器。10.根據權利要求6所述的裝置,其特征在于,所述處理單元還用于在當所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量小于第一閾值時,判斷解碼器是否為啟動狀態(tài); 若所述解碼器為啟動狀態(tài),所述處理單元還用于判斷所述緩沖區(qū)域內未解碼的負載所包含的視頻幀數量是否大于或等于第三閾值是否大于或等于第三閾值; 若是,所述處理單元還用于由所述起始幀開始讀取所述緩沖區(qū)域內的全部未解碼的負載并對讀取的負載進行解碼并播放; 若否,所述處理單元還用于暫停所述解碼器; 其中,所述第一閾值大于所述第三閾值。11.一種顯示設備,其特征在于,包括權利要求6-10任一項所述的流媒體緩沖播放裝置。
【文檔編號】H04N21/6437GK105916058SQ201610293396
【公開日】2016年8月31日
【申請日】2016年5月5日
【發(fā)明人】劉慶彬
【申請人】青島海信寬帶多媒體技術有限公司