本發(fā)明涉及流媒體技術(shù)領(lǐng)域,尤其涉及一種直播快速啟播方法及系統(tǒng)。
背景技術(shù):
在直播中,首屏打開速度直接關(guān)系到用戶體驗(yàn)。以點(diǎn)播為例,由于點(diǎn)播用戶的接入都是從0秒開始,而任何一個(gè)點(diǎn)播文件,其0秒的第一個(gè)音視頻幀一定是關(guān)鍵幀,因而對(duì)于點(diǎn)播而言,拋開網(wǎng)絡(luò)傳輸、解碼因素,其首屏打開速度可以說是實(shí)時(shí)打開。
然而,對(duì)于直播來講,由于直播文件往往是流文件,直播用戶都是在一個(gè)隨機(jī)的時(shí)間點(diǎn)接到這個(gè)流文件進(jìn)行播放,因而用戶接入時(shí)的第一個(gè)音視頻幀可能是幀內(nèi)編碼幀i幀,又稱關(guān)鍵幀,也有可能是幀間預(yù)測編碼幀p幀,也有可能是雙向預(yù)測編碼幀b幀。由于播放器啟播時(shí)需要有關(guān)鍵幀才能夠進(jìn)行播放,因而會(huì)帶來以下問題:
1)播放器在啟播時(shí)會(huì)大概率出現(xiàn)黑屏,并且,如果直播流文件的gop(groupofpicture,圖像組)比較大,播放器接收的第一個(gè)音視頻幀離下一個(gè)關(guān)鍵幀還比較長,那么用戶需要等待一定時(shí)間才可以看到首屏。
2)如果服務(wù)器從上一個(gè)關(guān)鍵幀的位置開始發(fā)送數(shù)據(jù),那么會(huì)額外增加直播延遲,從而降低用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種直播快速啟播方法及系統(tǒng)。所述技術(shù)方案如下:
一方面,提供了一種直播快速啟播方法,包括如下步驟:
服務(wù)器對(duì)音視頻流進(jìn)行切片,并根據(jù)所述音視頻流的時(shí)間戳對(duì)生成的切片文件進(jìn)行編號(hào);
所述服務(wù)器記錄所述音視頻流關(guān)鍵幀信息;
所述服務(wù)器根據(jù)播放端發(fā)送的直播請(qǐng)求確定起始切片文件編號(hào);
所述服務(wù)器根據(jù)所述起始切片文件編號(hào)以及所記錄的音視頻流關(guān)鍵幀信息,發(fā)送啟播響應(yīng)文件以及所述起始切片文件編號(hào)至所述播放端;
所述播放端以與所述起始切片文件編號(hào)最接近的關(guān)鍵幀為依據(jù)對(duì)所述啟播響應(yīng)文件進(jìn)行時(shí)間戳重置,所述播放端對(duì)時(shí)間戳重置后的所述啟播響應(yīng)文件進(jìn)行解碼播放。
進(jìn)一步的,所述服務(wù)器根據(jù)所述起始切片文件編號(hào)以及所記錄的音視頻流關(guān)鍵幀信息,發(fā)送啟播響應(yīng)文件以及所述起始切片文件編號(hào)至所述播放端的步驟具體包括:
所述服務(wù)器確定與所述起始切片文件編號(hào)最接近的關(guān)鍵幀切片文件,其中,所述關(guān)鍵幀切片文件包含有關(guān)鍵幀,并且所述關(guān)鍵幀切片文件的編號(hào)小于等于所述起始切片文件編號(hào),同時(shí)所述關(guān)鍵幀切片文件的編號(hào)與所述起始切片文件編號(hào)的差值最??;
當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括關(guān)鍵幀切片文件、編號(hào)處在所述關(guān)鍵幀切片文件的編號(hào)和所述起始切片文件編號(hào)之間的中間切片文件、起始切片文件,所述服務(wù)器將所述啟播響應(yīng)文件以及所述起始切片文件編號(hào)發(fā)送至所述播放端;
當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括起始切片文件,所述起始切片文件即所述關(guān)鍵幀切片文件,所述服務(wù)器將所述啟播響應(yīng)文件及所述起始切片文件編號(hào)發(fā)送至所述播放端。
進(jìn)一步的,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述播放端對(duì)所述響應(yīng)文件進(jìn)行時(shí)間戳重置的步驟具體包括:
所述播放端將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀切片文件中關(guān)鍵幀及關(guān)鍵幀之后的音視頻幀的時(shí)間戳為起始時(shí)間戳;
所述播放端將所述中間切片文件中的音視頻幀的時(shí)間戳重置為所述起始時(shí)間戳;
所述起始切片文件的第一幀原時(shí)間戳設(shè)為基準(zhǔn)值,所述播放端將所述起始切片文件及之后的切片文件中每一幀時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
進(jìn)一步的,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述播放端對(duì)所述響應(yīng)文件進(jìn)行時(shí)間戳重置的步驟具體包括:
所述播放端將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀的時(shí)間戳為起始時(shí)間戳;
所述關(guān)鍵幀的原時(shí)間戳設(shè)為基準(zhǔn)值,所述播放端將所述關(guān)鍵幀之后的所有音視頻幀的時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
進(jìn)一步的,所述服務(wù)器記錄所述音視頻流關(guān)鍵幀信息的步驟具體為:
所述服務(wù)器根據(jù)音視頻流切片文件及其對(duì)應(yīng)的編號(hào)生成關(guān)鍵幀切片文件編號(hào)列表。
進(jìn)一步的,所述切片為物理切片,所述服務(wù)器對(duì)音視頻流進(jìn)行切片,并根據(jù)所述音視頻流的時(shí)間戳對(duì)生成的切片文件進(jìn)行編號(hào)的步驟具體包括:
所述服務(wù)器根據(jù)設(shè)定時(shí)間間隔對(duì)所述音視頻流進(jìn)行切片,生成切片文件;
所述服務(wù)器對(duì)生成的切片文件以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
進(jìn)一步的,所述播放端對(duì)所述響應(yīng)文件進(jìn)行時(shí)間戳重置的步驟還包括:所述播放端在接收到所述啟播響應(yīng)文件,并進(jìn)行時(shí)間戳重置后,依據(jù)所述物理切片編號(hào)從小到大的順序繼續(xù)向所述服務(wù)器請(qǐng)求所述啟播響應(yīng)文件之后的切片文件,并進(jìn)行時(shí)間戳重置和解碼播放。進(jìn)一步的,所述切片為邏輯切片,所述服務(wù)器對(duì)音視頻流進(jìn)行切片,并根據(jù)所述音視頻流的時(shí)間戳對(duì)生成的切片文件進(jìn)行編號(hào)的步驟具體包括:
所述服務(wù)器根據(jù)設(shè)定時(shí)間間隔在所述音視頻流文件中插入帶有切片編號(hào)的頭部字節(jié);所述切片編號(hào)以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
進(jìn)一步的,
所述播放端對(duì)所述響應(yīng)文件進(jìn)行時(shí)間戳重置的步驟還包括:所述播放端在接收到所述啟播響應(yīng)文件,并進(jìn)行時(shí)間戳重置后,
所述服務(wù)器繼續(xù)以從小到大的順序自動(dòng)發(fā)送所述啟播響應(yīng)文件之后的邏輯切片,并由播放端進(jìn)行時(shí)間戳重置和解碼播放。
進(jìn)一步的,所述播放端發(fā)送的直播請(qǐng)求包括延遲參數(shù);
所述服務(wù)器根據(jù)播放端發(fā)送的直播請(qǐng)求確定起始切片文件編號(hào)的步驟具體包括:
所述服務(wù)器根據(jù)所述直播請(qǐng)求中的延遲參數(shù)及所述音視頻流最新切片編號(hào)計(jì)算所述起始切片文件編號(hào)。
另一方面,提供了一種直播快速啟播系統(tǒng),包括服務(wù)器和播放端,所述服務(wù)器包括切片模塊和發(fā)送模塊,所述播放端包括時(shí)間戳重置模塊和解碼播放模塊;
所述切片模塊,用于對(duì)音視頻流進(jìn)行切片,并根據(jù)所述音視頻流的時(shí)間戳對(duì)生成的切片文件進(jìn)行編號(hào),以及,用于記錄所述音視頻流關(guān)鍵幀信息,并根據(jù)所述播放端發(fā)送的直播請(qǐng)求確定起始切片文件編號(hào);
所述發(fā)送模塊,用于根據(jù)所述起始切片文件編號(hào)以及所記錄的音視頻流關(guān)鍵幀信息,發(fā)送啟播響應(yīng)文件以及所述起始切片文件編號(hào)至所述播放端;
所述時(shí)間戳重置模塊,用于以所述起始切片文件編號(hào)最接近關(guān)鍵幀為依據(jù)對(duì)所述啟播響應(yīng)文件進(jìn)行時(shí)間戳重置;
所述解碼播放模塊,用于對(duì)時(shí)間戳重置后的所述啟播響應(yīng)文件進(jìn)行解碼播放。
進(jìn)一步的,所述發(fā)送模塊還用于:
確定與所述起始切片文件編號(hào)最接近的關(guān)鍵幀切片文件,其中,所述關(guān)鍵幀切片文件包含有關(guān)鍵幀,并且所述關(guān)鍵幀切片文件的編號(hào)小于等于所述起始切片文件編號(hào),同時(shí)所述關(guān)鍵幀切片文件的編號(hào)與所述起始切片文件編號(hào)的差值最??;
當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括關(guān)鍵幀切片文件、編號(hào)處在所述關(guān)鍵幀切片文件的編號(hào)和所述起始切片文件編號(hào)之間的中間切片文件、起始切片文件,所述發(fā)送模塊將所述啟播響應(yīng)文件以及所述起始切片文件編號(hào)發(fā)送至所述播放端;
當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括起始切片文件,所述起始切片文件即所述關(guān)鍵幀切片文件,所述發(fā)送模塊所述啟播響應(yīng)文件及所述起始切片文件編號(hào)發(fā)送至所述播放端。
進(jìn)一步的,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述時(shí)間戳重置模塊還用于:
將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀切片文件中關(guān)鍵幀及關(guān)鍵幀之后的音視頻幀的時(shí)間戳為起始時(shí)間戳;
將所述中間切片文件中的音視頻幀的時(shí)間戳重置為所述起始時(shí)間戳;
所述起始切片文件的第一幀原時(shí)間戳設(shè)為基準(zhǔn)值,將所述起始切片文件及之后的切片文件中每一幀時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
進(jìn)一步的,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述時(shí)間戳重置模塊還用于:
將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀的時(shí)間戳為起始時(shí)間戳;
所述關(guān)鍵幀的原時(shí)間戳設(shè)為基準(zhǔn)值,將所述關(guān)鍵幀之后的所有音視頻幀的時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
進(jìn)一步的,所述切片模塊還用于根據(jù)音視頻流切片文件及其對(duì)應(yīng)的編號(hào)生成關(guān)鍵幀切片文件編號(hào)列表。
進(jìn)一步的,所述切片為物理切片,所述切片模塊還用于:
根據(jù)設(shè)定時(shí)間間隔對(duì)所述音視頻流進(jìn)行切片,生成切片文件;
對(duì)生成的切片文件以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
進(jìn)一步的,所述播放端還包括請(qǐng)求模塊,用于依據(jù)所述物理切片編號(hào)從小到大的順序繼續(xù)向所述服務(wù)器請(qǐng)求所述啟播響應(yīng)文件之后的切片文件。
進(jìn)一步的,所述切片為邏輯切片,所述切片模塊還用于:
根據(jù)設(shè)定時(shí)間間隔在所述音視頻流文件中插入帶有切片編號(hào)的頭部字節(jié);所述切片編號(hào)以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
進(jìn)一步的,所述發(fā)送模塊,還用于繼續(xù)以從小到大的順序自動(dòng)發(fā)送所述啟播響應(yīng)文件之后的邏輯切片。
進(jìn)一步的,所述播放端發(fā)送的直播請(qǐng)求包括延遲參數(shù);
所述發(fā)送模塊還用于根據(jù)所述直播請(qǐng)求中的延遲參數(shù)及所述音視頻流最新切片編號(hào)計(jì)算所述起始切片文件編號(hào)。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
通過以起始切片文件編號(hào)最接近關(guān)鍵幀為依據(jù)對(duì)啟播響應(yīng)文件進(jìn)行時(shí)間戳重置,將最接近起始切片文件的關(guān)鍵幀和起始切片文件結(jié)合起來,達(dá)到了快速啟播的效果,同時(shí)將關(guān)鍵幀至起始切片文件之間的所有音視頻幀的時(shí)間戳重置為起始時(shí)間戳,進(jìn)行快速跳過,達(dá)到了不影響直播延遲的效果。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的一種直播快速啟播方法步驟流程圖;
圖2是本發(fā)明實(shí)施例一提供的步驟s104的詳細(xì)子步驟流程圖;
圖3是本發(fā)明實(shí)施例二提供的一種直播快速啟播系統(tǒng)示意圖;
圖4是本發(fā)明實(shí)施例二提供的另一種直播快速啟播系統(tǒng)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
實(shí)施例一
本發(fā)明實(shí)施例提供了一種直播快速啟播方法,參見圖1,包括如下步驟:
s101:服務(wù)器對(duì)音視頻流進(jìn)行切片,并根據(jù)所述音視頻流的時(shí)間戳對(duì)生成的切片文件進(jìn)行編號(hào)。
具體而言,上述服務(wù)器可以是提供直播服務(wù)的服務(wù)器,也可以是進(jìn)行轉(zhuǎn)播的服務(wù)器,例如cdn(contentdeliverynetwork,內(nèi)容分發(fā)網(wǎng)絡(luò))節(jié)點(diǎn)服務(wù)器。上述播放端是指具備直播功能的播放器,例如優(yōu)酷視頻播放器、騰訊視頻播放器等本地播放器,也可以是網(wǎng)頁播放器。上述音視頻流是指從直播現(xiàn)場通過網(wǎng)絡(luò)傳輸至服務(wù)器的音視頻數(shù)據(jù)。
在本實(shí)施例中,服務(wù)器對(duì)音視頻流進(jìn)行切片的方式可以是物理切片,也可以是邏輯切片。
在本實(shí)施例中,采用物理切片的方式時(shí),所述服務(wù)器根據(jù)設(shè)定時(shí)間間隔對(duì)所述音視頻流進(jìn)行切片,生成切片文件。
具體而言,上述設(shè)定時(shí)間間隔可以根據(jù)需要進(jìn)行設(shè)置,例如設(shè)定時(shí)間間隔為1秒或者2秒,當(dāng)設(shè)定時(shí)間間隔為1秒時(shí),服務(wù)器將按照1秒的時(shí)間長度對(duì)音視頻流進(jìn)行切片,進(jìn)而生成多個(gè)時(shí)間長度為1秒的切片文件。
所述服務(wù)器對(duì)生成的切片文件以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
具體而言,對(duì)切片文件進(jìn)行編號(hào)是為了區(qū)分切片文件的先后順序,并按照先后順序依次處理這些切片文件。由于在每個(gè)切片文件中包含有大量的音視頻幀,每個(gè)音視頻幀均內(nèi)置有時(shí)間戳,并且在單個(gè)切片文件中這些音視頻幀是按照時(shí)間戳的大小順序進(jìn)行排列的,因此可以根據(jù)每個(gè)切片文件的第一個(gè)音視頻幀的時(shí)間戳,判斷出各個(gè)切片文件的先后順序,并根據(jù)先后順序進(jìn)行編號(hào),編號(hào)規(guī)則是以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào),例如將時(shí)間戳最小的切片文件編號(hào)為1,時(shí)間戳第二小的切片文件編號(hào)為2,隨切片文件的時(shí)間戳增大其編號(hào)同樣增大。當(dāng)然起始編號(hào)可以是其他數(shù)字,例如從5開始。
需要說明的是,還可以按照其他方式進(jìn)行編號(hào),例如字母加數(shù)字的方式a1、a2、a3……,a1對(duì)應(yīng)時(shí)間戳最小的切片文件,a2對(duì)應(yīng)時(shí)間戳第二小的切片文件,后續(xù)編號(hào)依次對(duì)應(yīng)時(shí)間戳逐漸增大的切片文件。也就是說,只要存在先后順序的編號(hào)方式均可以對(duì)切片文件進(jìn)行編號(hào)。
在本實(shí)施例中,采用邏輯切片的方式時(shí),所述服務(wù)器根據(jù)設(shè)定時(shí)間間隔在所述音視頻流文件中插入帶有切片編號(hào)的頭部字節(jié);所述切片編號(hào)以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
具體而言,編號(hào)方式同物理切片的編號(hào)方式類似,按照時(shí)間戳從小到大的順序?qū)η衅募M(jìn)行自然數(shù)編號(hào),并將這些編號(hào)插入切片文件的頭部字節(jié)中。
s102:所述服務(wù)器記錄所述音視頻流關(guān)鍵幀信息。
在本實(shí)施例中,所述服務(wù)器根據(jù)音視頻流切片文件及其對(duì)應(yīng)的編號(hào)生成關(guān)鍵幀切片文件編號(hào)列表。
具體而言,服務(wù)器記錄包含有關(guān)鍵幀的切片文件編號(hào),并按照一定的規(guī)則,例如按照編號(hào)從小到大的順序,生成關(guān)鍵幀切片文件編號(hào)列表,作為后續(xù)判斷關(guān)鍵幀切片文件的數(shù)據(jù)。
s103:所述服務(wù)器根據(jù)播放端發(fā)送的直播請(qǐng)求確定起始切片文件編號(hào)。
在本實(shí)施例中,所述播放端發(fā)送的直播請(qǐng)求中包括延遲參數(shù),所述服務(wù)器根據(jù)所述直播請(qǐng)求中的延遲參數(shù)及所述音視頻流最新切片編號(hào)計(jì)算所述起始切片文件編號(hào)。
具體而言,起始切片文件是指播放器開始直播時(shí)的時(shí)間戳所對(duì)應(yīng)的切片文件,最新切片是指服務(wù)器生成的最新切片文件,其時(shí)間戳最大,延遲參數(shù)是指播放端進(jìn)行直播的設(shè)定延遲,例如延遲參數(shù)為3秒,則播放端將從延遲最新音視頻流的時(shí)間3秒的時(shí)間戳位置進(jìn)行播放,也就是說,服務(wù)器從最新音視頻流時(shí)間戳前3秒的位置發(fā)送音視頻流至播放端,對(duì)于其他的音視頻流數(shù)據(jù)則不再發(fā)送至客戶端。
例如,當(dāng)切片時(shí)的設(shè)定時(shí)間間隔為1秒,延遲參數(shù)為5秒,最新切片編號(hào)為20時(shí),服務(wù)器計(jì)算得到延遲參數(shù)為5個(gè)設(shè)定時(shí)間間隔,則起始切片文件編號(hào)距離最新切片編號(hào)5個(gè)編號(hào),即起始切片文件編號(hào)為15。
s104:所述服務(wù)器根據(jù)所述起始切片文件編號(hào)以及所記錄的音視頻流關(guān)鍵幀信息,發(fā)送啟播響應(yīng)文件以及所述起始切片文件編號(hào)至所述播放端。
參見圖2,在本實(shí)施例中,本步驟具體包括s1041-s1043三個(gè)子步驟:
s1041:所述服務(wù)器確定與所述起始切片文件編號(hào)最接近的關(guān)鍵幀切片文件,其中,所述關(guān)鍵幀切片文件包含有關(guān)鍵幀,并且所述關(guān)鍵幀切片文件的編號(hào)小于等于所述起始切片文件編號(hào),同時(shí)所述關(guān)鍵幀切片文件的編號(hào)與所述起始切片文件編號(hào)的差值最小。
具體而言,由于起始切片文件不一定存在關(guān)鍵幀,當(dāng)起始切片文件不存在關(guān)鍵幀時(shí),播放端將無法播放起始切片文件,出現(xiàn)黑屏,直到接收到關(guān)鍵幀,因此,服務(wù)器需要確定與所述起始切片文件編號(hào)最接近的關(guān)鍵幀切片文件,從關(guān)鍵幀切片文件編號(hào)開始發(fā)送音視頻流至播放端。
由于編號(hào)按照自然數(shù)從小到大的順序,并且起始切片文件編號(hào)已經(jīng)確定,服務(wù)器只能從起始切片文件編號(hào)之前的切片文件中尋找關(guān)鍵幀,并且為了不增加直播延遲,該關(guān)鍵幀距離起始切片文件最近,進(jìn)而保證該關(guān)鍵幀與起始切片文件之間的音視頻幀最少,也就需要滿足所述關(guān)鍵幀切片文件的編號(hào)小于等于所述起始切片文件編號(hào),同時(shí)所述關(guān)鍵幀切片文件的編號(hào)與所述起始切片文件編號(hào)的差值最小。服務(wù)器通過上述關(guān)鍵幀信息中包含的含有關(guān)鍵幀的切片文件編號(hào),經(jīng)過編號(hào)差值計(jì)算,得到關(guān)鍵幀切片文件的編號(hào)。
s1042:當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括關(guān)鍵幀切片文件、編號(hào)處在所述關(guān)鍵幀切片文件的編號(hào)和所述起始切片文件編號(hào)之間的中間切片文件、起始切片文件,所述服務(wù)器將所述啟播響應(yīng)文件以及所述起始切片文件編號(hào)發(fā)送至所述播放端。
具體而言,對(duì)于起始切片文件不包含關(guān)鍵幀的情況,服務(wù)器需要將關(guān)鍵幀切片文件及其之后的切片文件發(fā)送至播放端,此時(shí),啟播響應(yīng)文件包括關(guān)鍵幀切片文件、編號(hào)處在所述關(guān)鍵幀切片文件的編號(hào)和所述起始切片文件編號(hào)之間的中間切片文件、起始切片文件。
s1043:當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括起始切片文件,所述起始切片文件即所述關(guān)鍵幀切片文件,所述服務(wù)器將所述啟播響應(yīng)文件及所述起始切片文件編號(hào)發(fā)送至所述播放端。
具體而言,對(duì)于起始切片文件包含關(guān)鍵幀的情況,此時(shí),所述起始切片文件即所述關(guān)鍵幀切片文件,服務(wù)器將起始切片文件及其之后的切片文件發(fā)送至播放端。
s105:所述播放端以與所述起始切片文件編號(hào)最接近的關(guān)鍵幀為依據(jù)對(duì)所述啟播響應(yīng)文件進(jìn)行時(shí)間戳重置,所述播放端對(duì)時(shí)間戳重置后的所述啟播響應(yīng)文件進(jìn)行解碼播放。
在本實(shí)施例中,本步驟存在兩種情況。
對(duì)于所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)的情況,所述播放端對(duì)所述響應(yīng)文件進(jìn)行時(shí)間戳重置的步驟具體包括:
所述播放端將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀切片文件中關(guān)鍵幀及關(guān)鍵幀之后的音視頻幀的時(shí)間戳為起始時(shí)間戳;具體而言,由于關(guān)鍵幀之前的音視頻幀對(duì)直播無意義,因此需要丟棄,同時(shí),由于播放端得到關(guān)鍵幀即能夠進(jìn)行直播,因此,關(guān)鍵幀切片文件中關(guān)鍵幀之后的音視頻幀也沒有意義。通過將上述無意義的音視頻幀的時(shí)間戳重置為起始時(shí)間戳,從而快速跳過,實(shí)現(xiàn)播放端快速播放首屏。
所述播放端將所述中間切片文件中的音視頻幀的時(shí)間戳重置為所述起始時(shí)間戳;具體而言,播放端需要從起始切片文件的位置開始直播,因此這些中間切片文件同樣沒有意義,通過重置其時(shí)間戳為起始時(shí)間戳,同樣進(jìn)行快速跳過。
所述起始切片文件的第一幀原時(shí)間戳設(shè)為基準(zhǔn)值,所述播放端將所述起始切片文件及之后的切片文件中每一幀時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。具體而言,播放端根據(jù)關(guān)鍵幀和起始切片文件即可進(jìn)行直播,為了保證直播的正常,起始切片文件的時(shí)間戳也需要重置,即起始切片文件中每一個(gè)音視頻幀的原時(shí)間戳減去起始切片文件的第一幀原時(shí)間戳,再加上所述起始時(shí)間戳,即為起始切片文件重置后的時(shí)間戳。例如,起始時(shí)間戳為00:00:10,起始切片文件的第一幀原時(shí)間戳為10:05:50,起始切片文件的第五十幀原時(shí)間戳為10:05:52,則起始切片文件的第五十幀的調(diào)整時(shí)間戳為10:05:52減去10:05:50,再加上00:00:10,即00:00:12。
對(duì)于所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)的情況,所述播放端對(duì)所述響應(yīng)文件進(jìn)行時(shí)間戳重置的步驟具體包括:
所述播放端將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀的時(shí)間戳為起始時(shí)間戳;
所述關(guān)鍵幀的原時(shí)間戳設(shè)為基準(zhǔn)值,所述播放端將所述關(guān)鍵幀之后的所有音視頻幀的時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
具體而言,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),播放端同樣需要丟棄起始切片文件中關(guān)鍵幀之前的音視頻幀,并對(duì)關(guān)鍵幀及其之后的所有音視頻幀重置時(shí)間戳。
需要說明的是,服務(wù)器也能夠?qū)λ鰡⒉ロ憫?yīng)文件和其之后的切片文件進(jìn)行時(shí)間戳重置,其重置同樣分為所述關(guān)鍵幀切片文件的編號(hào)小于或者等于所述起始切片文件編號(hào)的情況,并且其重置內(nèi)容和播放端重置內(nèi)容類似,待服務(wù)器時(shí)間戳重置完成后,服務(wù)器將重置后的啟播響應(yīng)文件和其之后的切片文件發(fā)送至播放端,播放端按照常規(guī)直播方式即可進(jìn)行直播。
在本實(shí)施例中,對(duì)于物理切片的方式,所述播放端依據(jù)所述物理切片編號(hào)從小到大的順序繼續(xù)向所述服務(wù)器請(qǐng)求所述啟播響應(yīng)文件之后的切片文件。
在本實(shí)施例中,對(duì)于邏輯切片的方式,所述服務(wù)器繼續(xù)以從小到大的順序自動(dòng)發(fā)送所述啟播響應(yīng)文件之后的邏輯切片。
具體而言,對(duì)于啟播響應(yīng)文件之后的切片文件,同樣需要對(duì)其時(shí)間戳重置為調(diào)整時(shí)間戳。待時(shí)間戳設(shè)置完成后,播放端將按照編號(hào)從小到大的順序依次對(duì)切片文件進(jìn)行解碼播放。
實(shí)施例二
參見圖3,本發(fā)明實(shí)施例提供了一種直播快速啟播系統(tǒng),可以執(zhí)行實(shí)施例一中提供的直播快速啟播方法,包括服務(wù)器和播放端,所述服務(wù)器包括切片模塊和發(fā)送模塊,所述播放端包括時(shí)間戳重置模塊和解碼播放模塊;
所述切片模塊,用于對(duì)音視頻流進(jìn)行切片,并根據(jù)所述音視頻流的時(shí)間戳對(duì)生成的切片文件進(jìn)行編號(hào),以及,用于記錄所述音視頻流關(guān)鍵幀信息,并根據(jù)所述播放端發(fā)送的直播請(qǐng)求確定起始切片文件編號(hào);
所述發(fā)送模塊,用于根據(jù)所述起始切片文件編號(hào)以及所記錄的音視頻流關(guān)鍵幀信息,發(fā)送啟播響應(yīng)文件以及所述起始切片文件編號(hào)至所述播放端;
所述時(shí)間戳重置模塊,用于以所述起始切片文件編號(hào)最接近關(guān)鍵幀為依據(jù)對(duì)所述啟播響應(yīng)文件進(jìn)行時(shí)間戳重置;
所述解碼播放模塊,用于對(duì)時(shí)間戳重置后的所述啟播響應(yīng)文件進(jìn)行解碼播放。
在本實(shí)施例中,所述發(fā)送模塊還用于:
確定與所述起始切片文件編號(hào)最接近的關(guān)鍵幀切片文件,其中,所述關(guān)鍵幀切片文件包含有關(guān)鍵幀,并且所述關(guān)鍵幀切片文件的編號(hào)小于等于所述起始切片文件編號(hào),同時(shí)所述關(guān)鍵幀切片文件的編號(hào)與所述起始切片文件編號(hào)的差值最小;
當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括關(guān)鍵幀切片文件、編號(hào)處在所述關(guān)鍵幀切片文件的編號(hào)和所述起始切片文件編號(hào)之間的中間切片文件、起始切片文件,所述發(fā)送模塊將所述啟播響應(yīng)文件以及所述起始切片文件編號(hào)發(fā)送至所述播放端;
當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述啟播響應(yīng)文件包括起始切片文件,所述起始切片文件即所述關(guān)鍵幀切片文件,所述發(fā)送模塊將所述啟播響應(yīng)文件以及所述起始切片文件編號(hào)發(fā)送至所述播放端。
在本實(shí)施例中,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)小于所述起始切片文件編號(hào)時(shí),所述時(shí)間戳重置模塊還用于:
將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀切片文件中關(guān)鍵幀及關(guān)鍵幀之后的音視頻幀的時(shí)間戳為起始時(shí)間戳;
將所述中間切片文件中的音視頻幀的時(shí)間戳重置為所述起始時(shí)間戳;
所述起始切片文件的第一幀原時(shí)間戳設(shè)為基準(zhǔn)值,將所述起始切片文件及之后的切片文件中每一幀時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
在本實(shí)施例中,當(dāng)所述關(guān)鍵幀切片文件的編號(hào)等于所述起始切片文件編號(hào)時(shí),所述時(shí)間戳重置模塊還用于:
將所述關(guān)鍵幀切片文件中所述關(guān)鍵幀之前的音視頻幀丟棄,并重置所述關(guān)鍵幀的時(shí)間戳為起始時(shí)間戳;
所述關(guān)鍵幀的原時(shí)間戳設(shè)為基準(zhǔn)值,將所述關(guān)鍵幀之后的所有音視頻幀的時(shí)間戳重置為調(diào)整時(shí)間戳,所述調(diào)整時(shí)間戳為:對(duì)應(yīng)的音視頻幀原時(shí)間戳減去基準(zhǔn)值,再加上所述起始時(shí)間戳。
在本實(shí)施例中,所述切片模塊還用于根據(jù)音視頻流切片文件及其對(duì)應(yīng)的編號(hào)生成關(guān)鍵幀切片文件編號(hào)列表。
在本實(shí)施例中,所述切片為物理切片,所述切片模塊還用于:
根據(jù)設(shè)定時(shí)間間隔對(duì)所述音視頻流進(jìn)行切片,生成切片文件;
對(duì)生成的切片文件以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
參見圖4,在本實(shí)施例中,所述播放端還包括請(qǐng)求模塊,用于依據(jù)所述物理切片編號(hào)從小到大的順序繼續(xù)向所述服務(wù)器請(qǐng)求所述啟播響應(yīng)文件之后的切片文件。
在本實(shí)施例中,所述切片為邏輯切片,所述切片模塊還用于:
根據(jù)設(shè)定時(shí)間間隔在所述音視頻流文件中插入帶有切片編號(hào)的頭部字節(jié);所述切片編號(hào)以時(shí)間戳為依據(jù)用自然數(shù)進(jìn)行編號(hào)。
在本實(shí)施例中,所述發(fā)送模塊,還用于繼續(xù)以從小到大的順序自動(dòng)發(fā)送所述啟播響應(yīng)文件之后的邏輯切片。
在本實(shí)施例中,所述播放端發(fā)送的直播請(qǐng)求包括延遲參數(shù);
所述發(fā)送模塊還用于根據(jù)所述直播請(qǐng)求中的延遲參數(shù)及所述音視頻流最新切片編號(hào)計(jì)算所述起始切片文件編號(hào)。
本發(fā)明實(shí)施例通過以起始切片文件編號(hào)最接近關(guān)鍵幀為依據(jù)對(duì)啟播響應(yīng)文件進(jìn)行時(shí)間戳重置,將最接近起始切片文件的關(guān)鍵幀和起始切片文件結(jié)合起來,達(dá)到了快速啟播的效果,同時(shí)將關(guān)鍵幀至起始切片文件之間的所有音視頻幀的時(shí)間戳重置為起始時(shí)間戳,進(jìn)行快速跳過,達(dá)到了不影響直播延遲的效果。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。