一種流媒體播放的切換方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種流媒體播放的切換方法和系統(tǒng)。方法包括步驟:從流媒體服務(wù)器下載并保存多個(gè)碼率信息、對應(yīng)碼率的資源地址信息,對應(yīng)多個(gè)碼率信息創(chuàng)建多個(gè)線程,下載并解析多個(gè)碼率資源的索引信息,流媒體播放過程中多個(gè)線程分別刷新對應(yīng)碼率資源索引信息的序列號,如果多個(gè)線程刷新出來的序列號不一致,根據(jù)各個(gè)碼率資源的片段獲取各個(gè)碼率資源的基礎(chǔ)時(shí)鐘,并根據(jù)不同碼率資源的基礎(chǔ)時(shí)鐘和對應(yīng)的序列號偏差,根據(jù)不同碼率的時(shí)間偏差切換到對應(yīng)位置播放。系統(tǒng)包括Source模塊、解析模塊、解碼器和輸出模塊。本發(fā)明解決了網(wǎng)絡(luò)流媒體播放自適應(yīng)動態(tài)切換過程中出現(xiàn)的音視頻不同步、畫面不連續(xù)的問題。本發(fā)明可廣泛應(yīng)用于各種流媒體播放的切換系統(tǒng)。
【專利說明】一種流媒體播放的切換方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種流媒體播放技術(shù),尤其涉及一種流媒體播放的切換方法,本發(fā)明還涉及一種流媒體播放的切換系統(tǒng)。
【背景技術(shù)】
[0002]隨著流媒體技術(shù)的普及,越來越多流媒體協(xié)議提出自適應(yīng),所謂的自適應(yīng),即服務(wù)器將媒體打包成不同清晰度、不同分辨率,并且將這些內(nèi)容通過一定協(xié)議呈現(xiàn),終端設(shè)備使用對應(yīng)協(xié)議,根據(jù)自身的網(wǎng)速、CPU、硬解性能進(jìn)行動態(tài)切換不同碼率、分辨率進(jìn)行播放,以提聞用戶體驗(yàn)。
[0003]目前大部分終端設(shè)備播放網(wǎng)絡(luò)流媒體都需要用戶手動選擇視頻播放模式,不支持自動切換,其主要原因是因?yàn)椴煌直媛柿髅襟w數(shù)據(jù)編碼格式、編碼參數(shù)不同,客戶端自動切換需要重新加載解碼器,這樣會造成音視頻不同步,視頻畫面卡頓,出現(xiàn)雜音等現(xiàn)象;同時(shí)由于客戶端和服務(wù)器數(shù)據(jù)訪問存在延時(shí),不同分辨率索引文件存在差異,無法準(zhǔn)確建立索引關(guān)聯(lián),切換過程中,存在重復(fù)播播放已經(jīng)觀看過的,嚴(yán)重影響用戶體驗(yàn)。
[0004]對于手動切換,操作不是很智能,而且在播放過程中,手動切換實(shí)際上是重置播放器,選擇新地址進(jìn)行播放,這樣在切換過程中需要一定時(shí)間的緩沖等待時(shí)間,播放過程中受網(wǎng)絡(luò)因素影響可能需要頻繁緩沖,影響用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0005]為了解決上述技術(shù)問題,本發(fā)明的目的是提供一種能解決網(wǎng)絡(luò)流媒體播放自適應(yīng)切換過程中出現(xiàn)的音視頻不同步、畫面不連續(xù)問題的切換方法。
[0006]為了解決上述技術(shù)問題,本發(fā)明的目的是提供一種能解決網(wǎng)絡(luò)流媒體播放自適應(yīng)切換過程中出現(xiàn)的音視頻不同步、畫面不連續(xù)問題的切換系統(tǒng)。
[0007]本發(fā)明所采用的技術(shù)方案是:
一種流媒體播放的切換方法,其包括步驟:S1,解析并判斷所要播放的流媒體是否為多碼率,若為多碼率,則執(zhí)行步驟S2;S2,解析并獲取每個(gè)碼率對應(yīng)資源的資源索引信息,并對應(yīng)每個(gè)碼率創(chuàng)建一個(gè)線程;S3,在流媒體播放需要進(jìn)行碼率切換時(shí),每個(gè)線程分別刷新對應(yīng)碼率資源索引信息的序列號,如果多個(gè)線程刷新出來的序列號一致,則進(jìn)入步驟S4,否則進(jìn)入步驟S5 ;S4,直接切換到與當(dāng)前網(wǎng)絡(luò)速度匹配的碼率資源或切換到所需的其它碼率資源;S5,根據(jù)各個(gè)碼率的序列號,計(jì)算出不同碼率的具體時(shí)間偏差,在進(jìn)行碼率切換時(shí),根據(jù)不同碼率的具體時(shí)間偏差,切換到所要切換到碼率的對應(yīng)時(shí)間位置進(jìn)行播放。
[0008]優(yōu)選的,所述步驟S5具體包括子步驟:S51,下載各個(gè)碼率資源的片段;S52,根據(jù)各個(gè)碼率資源的片段獲取各個(gè)碼率資源的基礎(chǔ)時(shí)鐘;S53,根據(jù)不同碼率資源的基礎(chǔ)時(shí)鐘和對應(yīng)的序列號偏差,計(jì)算出不同碼率播放的具體時(shí)間偏差;S54,根據(jù)當(dāng)前網(wǎng)絡(luò)速度,判斷是否需要切換到其它碼率播放;S55,根據(jù)不同碼率播放的具體時(shí)間偏差,無縫切換到最佳碼率上進(jìn)行播放。
[0009]優(yōu)選的,所述步驟S4具體包括子步驟:S41,在對應(yīng)碼率資源地址下載資源數(shù)據(jù);S42,解析資源數(shù)據(jù)的編碼格式;S43,使用對應(yīng)的解碼器對資源數(shù)據(jù)進(jìn)行解碼并輸出播放。
[0010]優(yōu)選的,其還包括步驟:S0,獲取流媒體資源數(shù)據(jù)的編碼格式,并根據(jù)編碼格式預(yù)留用于緩沖不同編碼格式流媒體資源數(shù)據(jù)的內(nèi)存空間和用于解析流媒體資源的解碼器。
[0011]優(yōu)選的,所述步驟SO具體包括子步驟:S01,預(yù)下載部分流媒體資源數(shù)據(jù),分析并獲取流媒體資源數(shù)據(jù)的編碼格式;S02,根據(jù)編碼格式預(yù)留用于緩存不同編碼格式流媒體資源數(shù)據(jù)的內(nèi)存和用于解析流媒體資源的解碼器,創(chuàng)建內(nèi)存中存放流媒體資源的內(nèi)存索引信息,所述內(nèi)存索引信息包括分片長度和編碼類型信息。
[0012]優(yōu)選的,其還包括步驟:S6,下載流媒體資源數(shù)據(jù)分片到內(nèi)存中,更新內(nèi)存中的索引信息和數(shù)據(jù)讀寫指針,并且計(jì)算下載流媒體資源數(shù)據(jù)的大小和時(shí)間;S7,根據(jù)下載流媒體資源數(shù)據(jù)的大小和時(shí)間,判斷是否需要切換到其他碼率的地址上進(jìn)行播放。
[0013]一種流媒體播放的切換系統(tǒng),其用于實(shí)施一種流媒體播放的切換方法,其包括:Source模塊,用于下載對應(yīng)數(shù)據(jù),所述對應(yīng)數(shù)據(jù)包括多個(gè)碼率信息、對應(yīng)碼率的資源地址信息;解析模塊,用于解析流媒體資源的數(shù)據(jù)格式;解碼器,用于對流媒體資源數(shù)據(jù)的解碼操作;輸出模塊,用于流媒體資源的輸出播放。
[0014]優(yōu)選的,所述對應(yīng)數(shù)據(jù)還包括:部分流媒體資源數(shù)據(jù)和/或流媒體資源數(shù)據(jù)的編碼格式信息,所述解析模塊解析流媒體資源數(shù)據(jù)的編碼格式并為相應(yīng)的流媒體資源數(shù)據(jù)預(yù)留解碼器。
[0015]優(yōu)選的,其還包括用于緩存多個(gè)編碼格式流媒體資源分片的內(nèi)存。
[0016]本發(fā)明的有益效果是:
本發(fā)明一種流媒體播放的切換方法通過創(chuàng)建對應(yīng)線程,分別下載并跟蹤多個(gè)碼率資源的索引信息,通過索引信息中的序列號判斷是否可以無縫切換,通過基礎(chǔ)時(shí)鐘確認(rèn)不同碼率之間對應(yīng)的關(guān)系,保證切換過程中畫面無縫播放,解決了網(wǎng)絡(luò)流媒體播放自適應(yīng)動態(tài)切換過程中出現(xiàn)的音視頻不同步、畫面不連續(xù)的問題。
[0017]另外,本發(fā)明還通過計(jì)算網(wǎng)絡(luò)平均速度,實(shí)現(xiàn)切換最佳碼率的選擇;通過對不同編碼格式流媒體資源的預(yù)處理,實(shí)現(xiàn)不同編碼格式流媒體資源的無縫切換;通過預(yù)留用于緩存流媒體資源分片的內(nèi)存,實(shí)現(xiàn)快速切換的同時(shí)減少內(nèi)存碎片。
[0018]本發(fā)明可廣泛應(yīng)用于各種流媒體播放的切換系統(tǒng)。
[0019]本發(fā)明的另一個(gè)有益效果是:
本發(fā)明一種流媒體播放的切換系統(tǒng)通過Source模塊和解析模塊,實(shí)現(xiàn)對不同碼率資源和/或不同編碼格式的流媒體資源的預(yù)處理,進(jìn)而實(shí)現(xiàn)不同碼率資源切換過程中的無縫連接,提高了用戶體驗(yàn)。
[0020]本發(fā)明可廣泛應(yīng)用于各種流媒體播放的切換系統(tǒng)。
【專利附圖】
【附圖說明】
[0021]下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】作進(jìn)一步說明:
圖1是發(fā)明一種流媒體播放的切換方法對應(yīng)的程序流程圖;
圖2是本發(fā)明一種實(shí)施例三種碼率索引信息中序列號對應(yīng)關(guān)系示意圖;
圖3是本發(fā)明一種實(shí)施例不同編碼格式流媒體資源在內(nèi)存中的存儲示意圖。
【具體實(shí)施方式】
[0022]需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0023]本發(fā)明一種流媒體播放的切換方法包括兩部分:
1.自適應(yīng)流媒體數(shù)據(jù)不同碼率資源下載算法的優(yōu)化,適用于具有多碼率的流媒體資源;
2.自適應(yīng)流媒體數(shù)據(jù)不同編碼格式資源切換算法的優(yōu)化,適用于具有不同編碼格式的流媒體資源。
[0024]自適應(yīng)流媒體數(shù)據(jù)不同碼率資源下載算法的優(yōu)化,包括步驟:
SI,解析并判斷所要播放的流媒體是否為多碼率,若為多碼率,則執(zhí)行步驟S2 ;
S2,解析并獲取每個(gè)碼率對應(yīng)資源的資源索引信息,并對應(yīng)每個(gè)碼率創(chuàng)建一個(gè)線程;如圖1所示,以機(jī)頂盒媒體播放器播放三種碼率資源(高等碼率High、中等碼率Mid、低等碼率Low)為例,詳述工作過程。
[0025]當(dāng)機(jī)頂盒媒體播放器接收到播放流媒體請求時(shí),Source模塊解析相關(guān)地址,根據(jù)地址格式采用相應(yīng)協(xié)議發(fā)起連接請求,等待服務(wù)器響應(yīng),下載部分?jǐn)?shù)據(jù),預(yù)解析服務(wù)器返回的數(shù)據(jù);如 Http Live Streaming (HLS)協(xié)議返回 m3u8 文件,smooth streaming 協(xié)議返回manifest文件,mpeg-dash返回mpd文件。播放器預(yù)解析數(shù)據(jù)源格式,動態(tài)加載解析器,并且選擇分?jǐn)?shù)較高的插件,當(dāng)解析器匹配成功后,同時(shí)還能獲取音視頻的編碼方式。
[0026]S3,如圖2所示,在流媒體播放需要進(jìn)行碼率切換時(shí),每個(gè)線程分別刷新對應(yīng)碼率資源索引信息的序列號,如果多個(gè)線程刷新出來的序列號一致,則進(jìn)入步驟S4,否則進(jìn)入步驟S5 ;
在本實(shí)施例中,對于多碼率資源,Source模塊下載完描述文檔后,即可以知道自適應(yīng)流的信息,此時(shí),播放器首先將自適應(yīng)流信息按照碼率高低進(jìn)行排序,默認(rèn)選擇中等碼率Mid開始播放,這樣可以避免最低碼率Low是音頻的情況,并且默認(rèn)情況下,自動切換過程中不切換到只有音頻的列表。
[0027]下面給出一個(gè)基于HLS協(xié)議自適應(yīng)實(shí)例,機(jī)頂盒根據(jù)輸入地址,首先下載出來的是索引信息playlist:
#EXTM3U
#EXT-X-STREAM-1NF:PR0GRAM-1D=1127167744, BANDWIDTH=400000
video—mid.m3u8
#EXT-X-STREAM-1NF:PR0GRAM-1D=1127167744, BANDWIDTH=1000000
video—high.m3u8
#EXT-X-STREAM-1NF:PR0GRAM-1D=1127167744, BANDWIDTH=20000
aud1_only.m3u8
文件中描述了該流支持高清(高等碼率High )、標(biāo)清(中等碼率Mid)和只有音頻(低等碼率Low)的三種不同方式進(jìn)行播放,并且給出對應(yīng)碼率的資源地址;機(jī)頂盒獲取此數(shù)據(jù)后,通過解析此文件,將地址按照碼率信息進(jìn)行排序,并保持每個(gè)地址的信息,然后選擇中級碼率對應(yīng)的地址進(jìn)行播放。
[0028]S4,直接切換到與當(dāng)前網(wǎng)絡(luò)速度匹配的碼率資源或切換到所需的其它碼率資源。優(yōu)選的,所述步驟S4具體包括子步驟:S41,在對應(yīng)碼率資源地址下載資源數(shù)據(jù);S42,解析資源數(shù)據(jù)的編碼格式;S43,使用對應(yīng)的解碼器對資源數(shù)據(jù)進(jìn)行解碼并輸出播放。
[0029]S5,根據(jù)各個(gè)碼率的序列號,計(jì)算出不同碼率的具體時(shí)間偏差,在進(jìn)行碼率切換時(shí),根據(jù)不同碼率的具體時(shí)間偏差,切換到所要切換到碼率的對應(yīng)時(shí)間位置進(jìn)行播放。優(yōu)選的,所述步驟S5具體包括子步驟:S51,下載各個(gè)碼率資源的片段;S52,根據(jù)各個(gè)碼率資源的片段獲取各個(gè)碼率資源的基礎(chǔ)時(shí)鐘;S53,根據(jù)不同碼率資源的基礎(chǔ)時(shí)鐘和對應(yīng)的序列號偏差,計(jì)算出不同碼率播放的具體時(shí)間偏差;S54,根據(jù)當(dāng)前網(wǎng)絡(luò)速度,判斷是否需要切換到其它碼率播放;S55,根據(jù)不同碼率播放的具體時(shí)間偏差,無縫切換到最佳碼率上進(jìn)行播放。
[0030]該實(shí)施例中,為了快速計(jì)算出網(wǎng)速,保證自動切換碼率不出現(xiàn)音視頻不同步,只有視頻沒有音頻等情況,機(jī)頂盒根據(jù)自適應(yīng)列表個(gè)數(shù),創(chuàng)建對應(yīng)線程個(gè)數(shù)同時(shí)下載每個(gè)列表中對應(yīng)m3u8文件,同時(shí)解析m3u8文件中的EXT-X-MEDIA-SEQUENCE標(biāo)簽的值。每個(gè)線程重試三次刷新對應(yīng)m3u8列表,如果每個(gè)線程刷新出來的序列號一致,表明此自適應(yīng)流每個(gè)列表是同步的,自動切換過程中不會出現(xiàn)播放重復(fù)內(nèi)容的情況;如果不一樣(如圖2所示),或者多次刷新出來出現(xiàn)偏差,說明每個(gè)播放列表中時(shí)間可能存在偏差,這時(shí)候,如果根據(jù)序列號自動切換,會出現(xiàn)不連續(xù)的情況,即觀看的視頻可能重復(fù)觀看,或者跳躍觀看,通常HLS協(xié)議中,每個(gè)TS片段推薦時(shí)長為10s,這樣觀看過程中重復(fù)觀看效果十分不好。為了解決上述問題,機(jī)頂盒分別下載每個(gè)列表中的第一個(gè)TS片段并進(jìn)行解析操作,獲取TS片段中的PCR/PTS時(shí)間(基礎(chǔ)時(shí)鐘),并計(jì)算出每個(gè)列表中序列表號的具體偏差,通過這種改進(jìn),可以避免碼率切換過程中,出現(xiàn)播放重復(fù)片段,造成音視頻不同步,卡頓等情況。
[0031]相比常見媒體播放器,本方法有如下優(yōu)點(diǎn):
1、根據(jù)播放列表,將不同碼率進(jìn)行排序,首次播放選擇中等碼率進(jìn)行播放,避開了音視頻共存的情況,即最低碼率只有音頻沒有視頻。
[0032]2、首次播放過程中,創(chuàng)建對應(yīng)線程,分別下載每個(gè)自適應(yīng)流的索引信息,判斷是直播或者點(diǎn)播。如果是直播,服務(wù)器經(jīng)常存在編碼效率問題,導(dǎo)致不同碼率存在一定時(shí)間差,本方法改進(jìn)通過序列號判斷是否可以無縫切換,即當(dāng)序列號不同時(shí)候,說明服務(wù)器編碼有一定的先后,切換過程中可能會播放相同節(jié)目內(nèi)容。
[0033]3、當(dāng)序列號不一致,分別下載每個(gè)列表中的第一個(gè)TS片段部分?jǐn)?shù)據(jù),解析TS中的PCR (基礎(chǔ)時(shí)鐘)值,進(jìn)行比較,進(jìn)行序列號映射,如圖2,Low playlist為低等碼率播放列表序列號,Mid playlist為中等碼率播放列表序列號,High playlist為高等碼率播放列表序列號。Mid playlist的序列號每次比High playlist和Low playlist大,所以播完中等碼率Mid第2序列號對應(yīng)的內(nèi)容后,自動切換要播放高等碼率High第2序列號對應(yīng)的內(nèi)容,再次切換要播放中等碼率Mid第4序列號對應(yīng)的內(nèi)容,否則自動切換由于時(shí)間不一致會造成卡頓。本方法通過最開始下載少部分?jǐn)?shù)據(jù),進(jìn)行PCR/PTS (基礎(chǔ)時(shí)鐘)跟蹤,確認(rèn)不同碼率之間對應(yīng)的關(guān)系,保證切換過程中畫面無縫播放。
[0034]4、由于媒體一開始播放無法準(zhǔn)確的獲取當(dāng)前網(wǎng)速,所以一般客戶端都需要播放一定時(shí)間后才能切換,本方法在下載數(shù)據(jù)計(jì)算PCR偏差過程中,就可以求得平均速度,可以很快獲取當(dāng)前系統(tǒng)的平均網(wǎng)絡(luò)速度,快速切換到最佳碼率上進(jìn)行播放。
[0035]對于編碼格式相同,碼率不同的流媒體,切換過程中,可能出現(xiàn)音視頻卡頓,不連續(xù)等情況。但對于編碼格式不一樣的流媒體,自動切換后,會直接出現(xiàn)無法播放的情況,如標(biāo)清的采用mpeg2編碼,高清的采用H.264編碼,直接切換會造成無法播放,出現(xiàn)噪音等情況,而一般播放器是讓用戶手動切換,手動切換每次都要重新初始化播放器。即使是自動切換,每次切換還是要重新初始化播放器,這樣會造成短暫的黑屏,用戶體驗(yàn)不好。因此,作為本發(fā)明的一種改進(jìn)方案,本發(fā)明還具備自適應(yīng)流媒體數(shù)據(jù)不同編碼格式資源切換算法的優(yōu)化,除了上述步驟,其還包括步驟:S0,獲取流媒體資源數(shù)據(jù)的編碼格式,并根據(jù)編碼格式預(yù)留用于緩沖不同編碼格式流媒體資源數(shù)據(jù)的內(nèi)存空間和用于解析流媒體資源的解碼器。
[0036]優(yōu)選的,所述步驟SO具體包括子步驟:S01,預(yù)下載部分流媒體資源數(shù)據(jù),分析并獲取流媒體資源數(shù)據(jù)的編碼格式;S02,根據(jù)編碼格式預(yù)留用于緩存不同編碼格式流媒體資源數(shù)據(jù)的內(nèi)存和用于解析流媒體資源的解碼器,創(chuàng)建內(nèi)存中存放流媒體資源的內(nèi)存索引信息,所述內(nèi)存索引信息包括分片長度和編碼類型信息。
[0037]如圖1所示,本實(shí)施例中,對于編碼格式不同的情況,有部分流媒體資源,如smooth streaming, mpeg-dash,其編碼格式在對于的文檔中已經(jīng)描述出來,這樣可以快速獲取編碼方式了 ;另一部分流媒體資源,可通過預(yù)先下載每一個(gè)流媒體資源中的部分?jǐn)?shù)據(jù),即可以知道媒體具體編碼格式。為了達(dá)到快速切換不同編碼方式,減少CPU開額外開銷,具體解決方法如下:
1、機(jī)頂盒通過解析流媒體資源,可以知道流媒體采取哪種協(xié)議進(jìn)行交互,部分協(xié)議其編碼方式會在描述文檔中給出;對于編碼方式未知的多碼率媒體流,通過預(yù)下載每種自適應(yīng)流的部分?jǐn)?shù)據(jù),然后進(jìn)行分析數(shù)據(jù)編碼方式,即可知道數(shù)據(jù)具體編碼格式。
[0038]2、機(jī)頂盒記錄不同碼率流媒體的編碼格式,并且初始化對應(yīng)的個(gè)數(shù)解析器,每個(gè)解析器模擬出一個(gè)program用來關(guān)聯(lián)硬解解碼接口,Source模塊將不在播放的媒體狀態(tài)置為空閑,這樣對應(yīng)的解碼器實(shí)際上處于閑置狀態(tài)。
[0039]優(yōu)選的,其還包括步驟:S6,下載流媒體資源數(shù)據(jù)分片到內(nèi)存中,更新內(nèi)存中的索引信息和數(shù)據(jù)讀寫指針,并且計(jì)算下載流媒體資源數(shù)據(jù)的大小和時(shí)間;S7,根據(jù)下載流媒體資源數(shù)據(jù)的大小和時(shí)間,判斷是否需要切換到其他碼率的地址上進(jìn)行播放。
[0040]為了讓播放流暢,減少數(shù)據(jù)拷貝次數(shù)、CPU消耗和內(nèi)存反復(fù)申請釋放帶來的開銷,播放器初始化后,初始化一段內(nèi)存用于緩存流媒體資源數(shù)據(jù),播放切換過程中,記錄數(shù)據(jù)開始位置和數(shù)據(jù)長度,循環(huán)利用循環(huán)內(nèi)存從而減少內(nèi)存碎片,圖3描述了流媒體資源數(shù)據(jù)在內(nèi)存中的分布,Video#l代表第一編碼格式的流媒體資源分片,Video#2代表第二編碼格式的流媒體資源分片,Video#3代表第三編碼格式的流媒體資源分片。
[0041]該實(shí)施例中,機(jī)頂盒每下載完一個(gè)流媒體數(shù)據(jù)分片,更新循環(huán)內(nèi)存中的索引信息,包括分片長度,類型信息,并且更新數(shù)據(jù)讀寫指針,并且計(jì)算下載數(shù)據(jù)大小和時(shí)間。通過下載數(shù)據(jù)大小和時(shí)間等因素判斷是否需要切換到其他碼率的地址上進(jìn)行播放。解析器通過指針從共享內(nèi)存中獲取數(shù)據(jù),按照如下格式進(jìn)行解析,前面12字節(jié)用來指示數(shù)據(jù)信息,即4字節(jié)類型,4字節(jié)切片長度,4字節(jié)當(dāng)前下載數(shù)據(jù)長度,后面跟原始數(shù)據(jù)。數(shù)據(jù)實(shí)際長度可以從協(xié)議報(bào)頭中獲取,當(dāng)實(shí)際長度未知時(shí)候,默認(rèn)長度為1514,實(shí)際長度保存在當(dāng)前下載長度。解析器讀取數(shù)據(jù)類型和長度后,選擇對應(yīng)的解析器獲得原始數(shù)據(jù),并且將數(shù)據(jù)通過硬件解碼器,并且設(shè)置解碼器將畫面拉伸、壓縮成屏顯寬高比,這樣自動切換非常平滑。機(jī)頂盒根據(jù)網(wǎng)絡(luò)速度的變化,自動切換到不同碼率,機(jī)頂盒根據(jù)文件類型,選擇對應(yīng)的解析器進(jìn)行解封裝并將數(shù)據(jù)注入對應(yīng)硬解接口進(jìn)行播放。通過上述算法改進(jìn),解決自適應(yīng)流切換過程中,出現(xiàn)不連續(xù)、音視頻不同步、反復(fù)初始化等問題,其總體流程如圖1所示。
[0042]本發(fā)明一種流媒體播放的切換方法通過創(chuàng)建對應(yīng)線程,分別下載并跟蹤多個(gè)碼率資源的索引信息,通過索引信息中的序列號判斷是否可以無縫切換,通過基礎(chǔ)時(shí)鐘確認(rèn)不同碼率之間對應(yīng)的關(guān)系,保證切換過程中畫面無縫播放,解決了網(wǎng)絡(luò)流媒體播放自適應(yīng)動態(tài)切換過程中出現(xiàn)的音視頻不同步、畫面不連續(xù)的問題。
[0043]另外,本發(fā)明還通過計(jì)算網(wǎng)絡(luò)平均速度,實(shí)現(xiàn)切換最佳碼率的選擇;通過對不同編碼格式流媒體資源的預(yù)處理,實(shí)現(xiàn)不同編碼格式流媒體資源的無縫切換;通過預(yù)留用于緩存流媒體資源分片的內(nèi)存,實(shí)現(xiàn)快速切換的同時(shí)減少內(nèi)存碎片。
[0044]本發(fā)明可廣泛應(yīng)用于各種流媒體播放的切換系統(tǒng)。
[0045]一種流媒體播放的切換系統(tǒng),其用于實(shí)施一種流媒體播放的切換方法,其包括:Source模塊,用于下載對應(yīng)數(shù)據(jù),所述對應(yīng)數(shù)據(jù)包括多個(gè)碼率信息、對應(yīng)碼率的資源地址信息;解析模塊,用于解析流媒體資源的數(shù)據(jù)格式;解碼器,用于對流媒體資源數(shù)據(jù)的解碼操作;輸出模塊,用于流媒體資源的輸出播放。
[0046]優(yōu)選的,所述對應(yīng)數(shù)據(jù)還包括:部分流媒體資源數(shù)據(jù)和/或流媒體資源數(shù)據(jù)的編碼格式信息,所述解析模塊解析流媒體資源數(shù)據(jù)的編碼格式并為相應(yīng)的流媒體資源數(shù)據(jù)預(yù)留解碼器。
[0047]優(yōu)選的,其還包括用于緩存多個(gè)編碼格式流媒體資源分片的內(nèi)存。
[0048]一種流媒體播放的切換系統(tǒng)的工作原理對應(yīng)于一種流媒體播放的切換方法,在此不做累述。
[0049]本發(fā)明一種流媒體播放的切換系統(tǒng)通過Source模塊和解析模塊,實(shí)現(xiàn)對不同碼率資源和/或不同編碼格式的流媒體資源的預(yù)處理,進(jìn)而實(shí)現(xiàn)不同碼率資源切換過程中的無縫連接,提高了用戶體驗(yàn)。
[0050]本發(fā)明可廣泛應(yīng)用于各種流媒體播放的切換系統(tǒng)。
[0051]以上是對本發(fā)明的較佳實(shí)施進(jìn)行了具體說明,但本發(fā)明創(chuàng)造并不限于所述實(shí)施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可做作出種種的等同變形或替換,這些等同的變形或替換均包含在本申請權(quán)利要求所限定的范圍內(nèi)。
【權(quán)利要求】
1.一種流媒體播放的切換方法,其特征在于,其包括步驟: SI,解析并判斷所要播放的流媒體是否為多碼率,若為多碼率,則執(zhí)行步驟S2 ; S2,解析并獲取每個(gè)碼率對應(yīng)資源的資源索引信息,并對應(yīng)每個(gè)碼率創(chuàng)建一個(gè)線程;S3,在流媒體播放需要進(jìn)行碼率切換時(shí),每個(gè)線程分別刷新對應(yīng)碼率資源索引信息的序列號,如果多個(gè)線程刷新出來的序列號一致,則進(jìn)入步驟S4,否則進(jìn)入步驟S5 ; S4,直接切換到與當(dāng)前網(wǎng)絡(luò)速度匹配的碼率資源或切換到所需的其它碼率資源; S5,根據(jù)各個(gè)碼率的序列號,計(jì)算出不同碼率的具體時(shí)間偏差,在進(jìn)行碼率切換時(shí),根據(jù)不同碼率的具體時(shí)間偏差,切換到所要切換到碼率的對應(yīng)時(shí)間位置進(jìn)行播放。
2.根據(jù)權(quán)利要求1所述的一種流媒體播放的切換方法,其特征在于,所述步驟S5具體包括子步驟: S51,下載各個(gè)碼率資源的片段; S52,根據(jù)各個(gè)碼率資源的片段獲取各個(gè)碼率資源的基礎(chǔ)時(shí)鐘; S53,根據(jù)不同碼率資源的基礎(chǔ)時(shí)鐘和對應(yīng)的序列號偏差,計(jì)算出不同碼率播放的具體時(shí)間偏差; S54,根據(jù)當(dāng)前網(wǎng)絡(luò)速度,判斷是否需要切換到其它碼率播放; S55,根據(jù)不同碼率播放的具體時(shí)間偏差,無縫切換到最佳碼率上進(jìn)行播放。
3.根據(jù)權(quán)利要求1所述的一種流媒體播放的切換方法,其特征在于,所述步驟S4具體包括子步驟: S41,在對應(yīng)碼率資源地址下載資源數(shù)據(jù); S42,解析資源數(shù)據(jù)的編碼格式; S43,使用對應(yīng)的解碼器對資源數(shù)據(jù)進(jìn)行解碼并輸出播放。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的一種流媒體播放的切換方法,其特征在于,其還包括步驟: S0,獲取流媒體資源數(shù)據(jù)的編碼格式,并根據(jù)編碼格式預(yù)留用于緩沖不同編碼格式流媒體資源數(shù)據(jù)的內(nèi)存空間和用于解析流媒體資源的解碼器。
5.根據(jù)權(quán)利要求4所述的一種流媒體播放的切換方法,其特征在于,所述步驟SO具體包括子步驟: SOI,預(yù)下載部分流媒體資源數(shù)據(jù),分析并獲取流媒體資源數(shù)據(jù)的編碼格式; S02,根據(jù)編碼格式預(yù)留用于緩存不同編碼格式流媒體資源數(shù)據(jù)的內(nèi)存和用于解析流媒體資源的解碼器,創(chuàng)建內(nèi)存中存放流媒體資源的內(nèi)存索引信息,所述內(nèi)存索引信息包括分片長度和編碼類型信息。
6.根據(jù)權(quán)利要求5所述的一種流媒體播放的切換方法,其特征在于,其還包括步驟: S6,下載流媒體資源數(shù)據(jù)分片到內(nèi)存中,更新內(nèi)存中的索引信息和數(shù)據(jù)讀寫指針,并且計(jì)算下載流媒體資源數(shù)據(jù)的大小和時(shí)間; S7,根據(jù)下載流媒體資源數(shù)據(jù)的大小和時(shí)間,判斷是否需要切換到其他碼率的地址上進(jìn)行播放。
7.—種流媒體播放的切換系統(tǒng),其特征在于,其用于實(shí)施如權(quán)利要求1至6任意一項(xiàng)所述的一種流媒體播放的切換方法,其包括: Source模塊,用于下載對應(yīng)數(shù)據(jù),所述對應(yīng)數(shù)據(jù)包括多個(gè)碼率信息、對應(yīng)碼率的資源地址信息; 解析模塊,用于解析流媒體資源的數(shù)據(jù)格式; 解碼器,用于對流媒體資源數(shù)據(jù)的解碼操作; 輸出模塊,用于流媒體資源的輸出播放。
8.根據(jù)權(quán)利要求7所述的一種流媒體播放的切換系統(tǒng),其特征在于,所述對應(yīng)數(shù)據(jù)還包括:部分流媒體資源數(shù)據(jù)和/或流媒體資源數(shù)據(jù)的編碼格式信息,所述解析模塊解析流媒體資源數(shù)據(jù)的編碼格式并為相應(yīng)的流媒體資源數(shù)據(jù)預(yù)留解碼器。
9.根據(jù)權(quán)利要求8所述的一種流媒體播放的切換系統(tǒng),其特征在于,其還包括用于緩存多個(gè)編碼格式流媒體資源分片的內(nèi)存。
【文檔編號】H04N21/4402GK104519372SQ201410802428
【公開日】2015年4月15日 申請日期:2014年12月19日 優(yōu)先權(quán)日:2014年12月19日
【發(fā)明者】曾令明 申請人:深圳市九洲電器有限公司