1.一種基于實時流傳輸HLS協(xié)議的音視頻的跳轉(zhuǎn)播放方法,其特征在于,該方法包括:
在源音視頻的當前分片文件下載過程中,若檢測到當前的網(wǎng)絡(luò)帶寬小于預(yù)設(shè)值,則下載與所述源音頻的當前分片文件相應(yīng)的目標音視頻的分片文件,所述目標音視頻的分片文件對應(yīng)的分辨率低于所述源音視頻的分片文件對應(yīng)的分辨率;
基于所述源音視頻的當前分片文件,確定一個待解碼的源視頻分組基本碼流PES包作為連接視頻PES包和在時間上最接近所述連接視頻PES包的待解碼的源音頻PES包作為連接音頻PES包;以及基于所述目標音視頻的分片文件,確定在時間上最接近所述連接視頻PES包且為視頻幀中關(guān)鍵幀的開頭的目標視頻PES包作為跳轉(zhuǎn)視頻PES包和在時間上最接近所述跳轉(zhuǎn)視頻PES包且為音頻幀的開頭的目標音頻PES包作為跳轉(zhuǎn)音頻PES包;
從所述連接視頻PES包和所述連接音頻PES包結(jié)束解碼所述源音視頻的當前分片文件,并從所述跳轉(zhuǎn)視頻PES包和所述跳轉(zhuǎn)音頻PES包開始解碼并播放所述目標音視頻的分片文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,基于所述目標音視頻的分片文件,確定在時間上最接近所述連接視頻PES包且為視頻幀中關(guān)鍵幀的開頭的目標視頻PES包作為跳轉(zhuǎn)視頻PES包和在時間上最接近所述跳轉(zhuǎn)視頻PES包且為音頻幀的開頭的目標音頻PES包作為跳轉(zhuǎn)音頻PES包之后,從所述連接視頻PES包和所述連接音頻PES包結(jié)束解碼所述源音視頻的當前分片文件,并從所述跳轉(zhuǎn)視頻PES包和所述跳轉(zhuǎn)音頻PES包開始解碼并播放所述目標音視頻的分片文件之前,該方法還包括:
判斷所述連接視頻PES包和所述跳轉(zhuǎn)視頻PES包之間的時間差是否小于預(yù)設(shè)閾值;
如果不小于,基于所述源音視頻的分片文件,重新查找與所述跳轉(zhuǎn)視頻PES包之間的時間差小于所述預(yù)設(shè)閾值的源視頻PES包作為所述連接視頻PES包和在時間上最接近重新查找到的所述連接視頻PES包的源音頻PES包作為連接音頻PES包。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,基于所述源音視頻的當前分片文件,確定一個待解碼的源視頻PES包作為連接視頻PES包之前,該方法還包括:
對下載的所述源音視頻的當前分片文件進行解析,得到按時間先后順序排列的源視頻PES包隊列和源音頻PES包隊列,從所述源視頻PES包隊列中獲取預(yù)定數(shù)量的待解碼的源視頻PES包加入到視頻PES包解碼隊列以便解碼,以及從所述源音頻PES包隊列中獲取預(yù)定數(shù)量的待解碼的源音頻PES包加入到音頻PES包解碼隊列以便解碼;
基于所述源音視頻的當前分片文件,確定一個待解碼的源視頻PES包作為連接視頻PES包,包括:
從所述視頻PES包解碼隊列中,選擇一個源視頻PES包,作為連接視頻PES包。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,基于所述目標音視頻的分片文件,確定在時間上最接近所述連接視頻PES包且為視頻幀中關(guān)鍵幀的開頭的目標視頻PES包作為跳轉(zhuǎn)視頻PES包和在時間上最接近所述跳轉(zhuǎn)視頻PES包且為音頻幀的開頭的目標音頻PES包作為跳轉(zhuǎn)音頻PES包之前,該方法還包括:
對下載的所述目標音視頻的分片文件進行解析,得到按時間先后順序排列的目標視頻PES包隊列和目標音頻PES包隊列;
基于所述目標音視頻的分片文件,確定在時間上最接近所述連接視頻PES包且為視頻幀中關(guān)鍵幀的開頭的目標視頻PES包作為跳轉(zhuǎn)視頻PES包和在時間上最接近所述跳轉(zhuǎn)視頻PES包且為音頻幀的開頭的目標音頻PES包作為跳轉(zhuǎn)音頻PES包,包括:
獲取所述連接PES包的包頭中的時間標簽;
從所述目標視頻PES包隊列中查找出為關(guān)鍵幀的開頭的各目標視頻PES包,并獲取各目標視頻PES包的包頭中的時間標簽;
根據(jù)所述連接PES包的包頭中的時間標簽指示的時間,以及獲取的各目標視頻PES包的包頭中的時間標簽指示的時間,查找所述跳轉(zhuǎn)視頻PES包;所述跳轉(zhuǎn)視頻PES包的包頭中的時間標簽指示的時間最接近且晚于所述連接PES包的包頭中的時間標簽指示的時間;
從所述目標音頻PES包隊列中查找出為音頻幀的開頭的各目標音頻PES包,并獲取各目標音頻PES包的包頭中的時間標簽;
根據(jù)所述跳轉(zhuǎn)視頻PES包的包頭中的時間標簽指示的時間,以及獲取的各目標音頻PES包的包頭中的時間標簽指示的時間,查找所述跳轉(zhuǎn)音頻PES包;所述跳轉(zhuǎn)音頻PES包的包頭中的時間標簽指示的時間最接近所述跳轉(zhuǎn)視頻PES包的包頭中的時間標簽指示的時間。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,從所述目標視頻PES包隊列中查找出為關(guān)鍵幀的開頭的各目標視頻PES包,并獲取各目標視頻PES包的包頭中的時間標簽,包括:
依次判斷所述目標視頻PES包隊列中的各目標視頻PES包是否為關(guān)鍵幀的開頭;如果是,將該目標視頻PES包的包頭中的時間標簽按時間先后順序加入到關(guān)鍵幀索引隊列;
根據(jù)所述連接PES包的包頭中的時間標簽指示的時間,以及獲取的各目標視頻PES包的包頭中的時間標簽指示的時間,查找所述跳轉(zhuǎn)視頻PES包,包括:
按照時間先后順序依次判斷所述關(guān)鍵幀索引隊列中的各目標視頻PES包的包頭中的時間標簽指示的時間,是否晚于所述連接PES包的包頭中的時間標簽指示的時間;直到出現(xiàn)判斷結(jié)果為是的目標視頻PES包,將該目標視頻PES包作為所述跳轉(zhuǎn)視頻PES包。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,確定在時間上最接近所述連接視頻PES包的待解碼的源音頻PES包作為連接音頻PES包,包括:
獲取所述連接視頻PES包的包頭中的時間標簽;
從所述源音頻PES包隊列中查找出為音頻幀開頭的各源音頻PES包,并獲取各源音頻PES包的包頭中的時間標簽;
根據(jù)所述連接視頻PES包的包頭中的時間標簽指示的時間,以及獲取的各源音頻PES包的包頭中的時間標簽指示的時間,查找所述連接音頻PES包;所述連接音頻PES包的包頭中的時間標簽指示的時間最接近所述連接頻PES包的包頭中的時間標簽指示的時間。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,基于所述源音視頻的當前分片文件,重新查找與所述跳轉(zhuǎn)視頻PES包之間的時間差小于所述預(yù)設(shè)閾值的源視頻PES包作為所述連接視頻PES包和在時間上最接近重新查找到的所述連接視頻PES包的源音頻PES包作為連接音頻PES包,包括:
從所述源視頻隊列中查找出為視頻幀的開頭的各源視頻PES包,并獲取各源視頻PES包的包頭中的時間標簽;
根據(jù)所述跳轉(zhuǎn)視頻PES包中的時間標簽指示的時間,以及獲取的各源視頻PES包的包頭中的時間標簽指示的時間,重新查找所述連接視頻PES包;重新查找的所述連接視頻PES包的包頭中的時間標簽指示的時間最接近所述跳轉(zhuǎn)視頻PES包的包頭中的時間標簽指示的時間;
根據(jù)重新查找的所述連接視頻PES包的包頭中的的時間標簽指示的時間,以及獲取的各源音頻PES包的包頭中的時間標簽指示的時間,重新查找所述連接音頻PES包;重新查找的所述連接音頻PES包的包頭中的時間標簽指示的時間最接近重新查找的所述連接視頻PES包的包頭中的時間標簽指示的時間。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,從所述連接視頻PES包和所述連接音頻PES包結(jié)束解碼所述源音視頻的當前分片文件,并從所述跳轉(zhuǎn)視頻PES包和所述跳轉(zhuǎn)音頻PES包開始解碼并播放所述目標音視頻的分片文件,包括:
清除所述視頻PES包解碼隊列中所述連接視頻PES包之后的源視頻PES包,并在所述連接視頻PES包后加入所述跳轉(zhuǎn)視頻PES包及其之后的目標視頻PES包,以及清除所述音頻PES包解碼隊列中所述連接音頻PES包之后的源音頻PES包,并在所述連接音頻PES包后加入成所述跳轉(zhuǎn)音頻PES包及其之后的目標音頻PES包,進行解碼并播放。
9.一種基于HLS協(xié)議的音視頻的跳轉(zhuǎn)播放裝置,其特征在于,該裝置包括:
音視頻下載模塊,用于:在源音視頻的當前分片文件下載過程中,若檢測到當前的網(wǎng)絡(luò)帶寬小于預(yù)設(shè)值,則下載與所述源音頻的當前分片文件相應(yīng)的目標音視頻的分片文件,所述目標音視頻的分片文件對應(yīng)的分辨率低于所述源音視頻的分片文件對應(yīng)的分辨率;
連接包和跳轉(zhuǎn)包確定模塊,用于:基于所述源音視頻的當前分片文件,確定一個待解碼的源視頻PES包作為連接視頻PES包和在時間上最接近所述連接視頻PES包的待解碼的源音頻PES包作為連接音頻PES包;以及基于所述目標音視頻的分片文件,確定在時間上最接近所述連接視頻PES包且為視頻幀中關(guān)鍵幀的開頭的目標視頻PES包作為跳轉(zhuǎn)視頻PES包和在時間上最接近所述跳轉(zhuǎn)視頻PES包且為音頻幀的開頭的目標音頻PES包作為跳轉(zhuǎn)音頻PES包;
解碼播放模塊,用于:從所述連接視頻PES包和所述連接音頻PES包結(jié)束解碼所述源音視頻的當前分片文件,并從所述跳轉(zhuǎn)視頻PES包和所述跳轉(zhuǎn)音頻PES包開始解碼并播放所述目標音視頻的分片文件。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述連接包和跳轉(zhuǎn)包確定模塊還用于:
基于所述目標音視頻的分片文件,確定在時間上最接近所述連接視頻PES包且為視頻幀中關(guān)鍵幀的開頭的目標視頻PES包作為跳轉(zhuǎn)視頻PES包和在時間上最接近所述跳轉(zhuǎn)視頻PES包且為音頻幀的開頭的目標音頻PES包作為跳轉(zhuǎn)音頻PES包之后,從所述連接視頻PES包和所述連接音頻PES包結(jié)束解碼所述源音視頻的分片文件,并從所述跳轉(zhuǎn)視頻PES包和所述跳轉(zhuǎn)音頻PES包開始解碼并播放所述目標音視頻的分片文件之前,判斷所述連接視頻PES包和所述跳轉(zhuǎn)視頻PES包之間的時間差是否小于預(yù)設(shè)閾值;
如果不小于,基于所述源音視頻的當前分片文件,重新查找與所述跳轉(zhuǎn)視頻PES包之間的時間差小于所述預(yù)設(shè)閾值的源視頻PES包作為所述連接視頻PES包和在時間上最接近重新查找到的所述連接視頻PES包的源音頻PES包作為連接音頻PES包。