一種獲取直播視頻切片的方法及服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及直播視頻流媒體技術(shù),具體涉及一種獲取直播視頻切片的方法及服務(wù)器。
【背景技術(shù)】
[0002]HLS(HTTP Live Streaming)協(xié)議為基于超文本傳輸協(xié)議(HTTP, HypertextTransfer Protocol)的動態(tài)碼流自適應(yīng)協(xié)議,是由蘋果公司提出的一種流媒體傳輸協(xié)議。近年來,HLS協(xié)議在流媒體領(lǐng)域得到了廣泛應(yīng)用,主要由于其采用HTTP協(xié)議傳輸,可以根據(jù)網(wǎng)絡(luò)帶寬自適應(yīng)地調(diào)整碼率,如允許網(wǎng)絡(luò)側(cè)的服務(wù)器為同一節(jié)目內(nèi)容存放多個不同碼率的多媒體流,而終端可根據(jù)實際的網(wǎng)絡(luò)下載速度自適應(yīng)地調(diào)整所要下載的多媒體流的碼率;在網(wǎng)絡(luò)帶寬緊張時,終端可通過降低碼率實現(xiàn)不間斷的播放。
[0003]相對于其它常見的流媒體直播協(xié)議,例如路由選擇表維護協(xié)議(RTMP,RoutingTable Maintenance Protocol)、實時流傳輸協(xié)議(RTSP, Real Time Streaming Protocol)、微軟媒體服務(wù)器協(xié)議(MMS, Microsoft Media Server Protocol)等,利用HLS協(xié)議對視頻進(jìn)行直播,最大的不同在于,終端獲取到的多媒體數(shù)據(jù)并不是一個完整的數(shù)據(jù)流,而是一個個記錄有數(shù)據(jù)的切片,這是因為:在HLS協(xié)議中,服務(wù)器端將直播數(shù)據(jù)流存儲為連續(xù)的、很短時長的媒體文件(動態(tài)圖像專家組MPEG-傳輸流TS格式),這些媒體文件就被稱為切片,而客戶端只需要不斷的下載并播放這些切片,即可形成直播視頻。其中,因為服務(wù)器端總是會將最新的直播數(shù)據(jù)生成新切片,客戶端只需不停的按順序播放從服務(wù)器獲取到的切片,就實現(xiàn)了直播。
[0004]目前可采用以下兩種方式生成符合HLS協(xié)議的切片:一種方式是在多媒體數(shù)據(jù)的轉(zhuǎn)碼過程中直接生成符合要求的切片;第二種方式是將轉(zhuǎn)碼與分片兩個過程獨立開來,先將直播數(shù)據(jù)進(jìn)行轉(zhuǎn)碼,再對轉(zhuǎn)碼后的文件進(jìn)行切片;其中,第一種方式要求轉(zhuǎn)碼器必須能夠支持切片功能,對轉(zhuǎn)碼器的設(shè)計要求較高,不利于實現(xiàn);第二種方式由于其將轉(zhuǎn)碼、分片獨立開來,使得實現(xiàn)較為容易。所以,目前第二種生成切片的方法更受歡迎,但是其也存在以下問題:由于生成的切片長度固定,使得切片邊緣可能會存在有不完整數(shù)據(jù)或者冗余數(shù)據(jù),導(dǎo)致切片的直播畫面出現(xiàn)較慢且相鄰兩切片之間的直播畫面存在有不連續(xù)的情況,降低了用戶觀看體驗。
【發(fā)明內(nèi)容】
[0005]為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明實施例提供一種獲取直播視頻切片的方法及服務(wù)器,能夠解決切片的直播畫面出現(xiàn)較慢、相鄰兩切片之間的直播畫面存在有不連續(xù)等情況,從而提高直播視頻播放流暢性、播放畫面質(zhì)量,提升用戶觀看體驗。
[0006]本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:
[0007]本發(fā)明實施例提供了一種獲取直播視頻切片的方法,所述方法包括:
[0008]獲取切片的基準(zhǔn)時長;
[0009]確定基準(zhǔn)時長與第一預(yù)設(shè)時長之和為第一時長,和/或確定基準(zhǔn)時長與第一預(yù)設(shè)時長之差為第二時長;
[0010]獲取當(dāng)前原始直播源的第q個關(guān)鍵幀;
[0011]確定第q個關(guān)鍵幀的起始位置為第q個切片的起始位置;
[0012]在第q個關(guān)鍵幀起始位置的第一時長和/或第二時長內(nèi),確定為存在有第q+Ι個關(guān)鍵幀時,確定所述第q+Ι個關(guān)鍵幀的起始位置為第q個切片的結(jié)束位置;
[0013]在第q幀起始位置及結(jié)束位置處,對當(dāng)前原始直播源進(jìn)行切分,形成第q個切片;其中,q為正整數(shù)。
[0014]上述方案中,所述方法還包括:
[0015]在第q個關(guān)鍵幀起始位置的第一時長和/或第二時長內(nèi),確定為沒有存在第q+1個關(guān)鍵幀時,將距離第q個關(guān)鍵幀起始位置為基準(zhǔn)時長的位置為第q個切片的結(jié)束位置,在第q幀起始位置及結(jié)束位置處,對當(dāng)前原始直播源進(jìn)行切分,形成第q個切片。
[0016]上述方案中,所述獲取切片的基準(zhǔn)時長,
[0017]包括:
[0018]獲取當(dāng)前原始直播源的關(guān)鍵幀長度;
[0019]獲取用于緩存當(dāng)前原始直播源的視頻緩存檢驗器VBV長度;
[0020]求取關(guān)鍵幀長度、VBV長度及第一預(yù)設(shè)閾值之和;
[0021]將所求取的和值作為切片的基準(zhǔn)時長。
[0022]上述方案中,在獲取切片的基準(zhǔn)時長之前,所述方法包括:
[0023]接收當(dāng)前原始直播源;
[0024]轉(zhuǎn)換當(dāng)前原始直播源為實時傳輸協(xié)議RTP碼流,并標(biāo)識出所述RTP碼流的關(guān)鍵幀信息;
[0025]對所述RTP碼流進(jìn)行緩存、排序、解析處理;
[0026]刪除經(jīng)處理后的RTP碼流中的RTP包頭,形成RTP凈載荷數(shù)據(jù);
[0027]在所述RTP凈載荷數(shù)據(jù)中,依據(jù)關(guān)鍵幀信息,獲取第q個關(guān)鍵幀。
[0028]上述方案中,所述方法還包括:
[0029]從當(dāng)前原始直播源中獲取節(jié)目關(guān)聯(lián)表PAT和節(jié)目映射表PMT,配置PAT和PMT至每個切片的初始位置,以方便切片所承載節(jié)目內(nèi)容的播放;
[0030]當(dāng)前原始直播源存在有至少兩種碼率時,配置不同碼率的切片所承載的節(jié)目內(nèi)容的長度為相同,以方便不同碼率切片的切換。
[0031]本發(fā)明實施例還提供了一種服務(wù)器,所述服務(wù)器包括:
[0032]第一獲取單元,用于獲取切片的基準(zhǔn)時長;
[0033]第一確定單兀,用于確定基準(zhǔn)時長與第一預(yù)設(shè)時長之和為第一時長,和/或確定基準(zhǔn)時長與第一預(yù)設(shè)時長之差為第二時長;
[0034]第二獲取單元,用于獲取當(dāng)前原始直播源的第q個關(guān)鍵幀;
[0035]第二確定單元,用于確定第q個關(guān)鍵幀的起始位置為第q個切片的起始位置;
[0036]第三確定單元,用于在第q個關(guān)鍵幀起始位置的第一時長和/或第二時長內(nèi),確定為存在有第q+Ι個關(guān)鍵幀時,確定所述第q+Ι個關(guān)鍵幀的起始位置為第q個切片的結(jié)束位置;
[0037]第一切分單元,用于在第q幀起始位置及結(jié)束位置處,對當(dāng)前原始直播源進(jìn)行切分,形成第q個切片;其中,q為正整數(shù)。
[0038]上述方案中,
[0039]所述第三確定單元,還用于在第q個關(guān)鍵幀起始位置的第一時長和/或第二時長內(nèi),確定為沒有存在第q+Ι個關(guān)鍵巾貞時,將距離第q個關(guān)鍵巾貞起始位置為基準(zhǔn)時長的位置為第q個切片的結(jié)束位置;
[0040]相應(yīng)的,所述第一切分單元,還用于在第q幀起始位置及結(jié)束位置處,對當(dāng)前原始直播源進(jìn)行切分,形成第q個切片。
[0041]上述方案中,所述第一獲取單元,還用于:
[0042]獲取當(dāng)前原始直播源的關(guān)鍵幀長度;
[0043]獲取用于緩存當(dāng)前原始直播源的視頻緩存檢驗器VBV長度;
[0044]求取關(guān)鍵幀長度、VBV長度及第一預(yù)設(shè)閾值之和;
[0045]將所求取的和值作為切片的基準(zhǔn)時長。
[0046]上述方案中,所述服務(wù)器還包括:
[0047]第一接收單元,用于接收當(dāng)前原始直播源;
[0048]第一轉(zhuǎn)換單元,用于轉(zhuǎn)換當(dāng)前原始直播源為實時傳輸協(xié)議RTP碼流,并標(biāo)識出所述RTP碼流的關(guān)鍵幀信息;
[0049]第一處理單元,用于對所述RTP碼流進(jìn)行緩存、排序、解析處理;
[0050]第一刪除單元,用于刪除經(jīng)所述第一處理單元處理后的RTP碼流中的RTP包頭,形成RTP凈載荷數(shù)據(jù);
[0051]相應(yīng)的,
[0052]所述第二獲取單元,還用于在所述RTP凈載荷數(shù)據(jù)中,依據(jù)關(guān)鍵幀信息,獲取第q個關(guān)鍵幀。
[0053]上述方案中,所述服務(wù)器還包括:
[0054]第三獲取單元、第一配置單元、第四確定單元、第二配置單元;其中,
[0055]所述第三獲取單元,用于從當(dāng)前原始直播源中獲取節(jié)目關(guān)聯(lián)表PAT和節(jié)目映射表PMT ;
[0056]所述第一配置單元,用于配置PAT和PMT至每個切片的初始位置,以方便切片所承載節(jié)目內(nèi)容的播放;
[0057]所述第四確定單元,用于確定出當(dāng)前原始直播源存在有至少兩種碼率時,觸發(fā)所述第二配置單元;
[0058]所述第二配置單元,用于配置不同碼率的切片所承載的節(jié)目內(nèi)容的長度為相同,以方便不同碼率切片的切換。
[0059]本發(fā)明實施例提供的獲取直播視頻切片的方法及服務(wù)器,所述方法包括:獲取切片的基準(zhǔn)時長;確定基準(zhǔn)時長與第一預(yù)設(shè)時長之和為第一時長,和/或確定基準(zhǔn)時長與第一預(yù)設(shè)時長之差為第二時長;獲取當(dāng)前原始直播源的第q個關(guān)鍵幀;確定第q個關(guān)鍵幀的起始位置為第q個切片的起始位置;在第q個關(guān)鍵幀起始位置的第一時長和/或第二時長內(nèi),確定為存在有第q+Ι個關(guān)鍵幀時,確定所述第q+Ι個關(guān)鍵幀的起始位置為第q個切片的結(jié)束位置;在第q幀起始位置及結(jié)束位置處,對當(dāng)前原始直播源進(jìn)行切分,形成第q個切片;其中,q為正整數(shù)。利用本發(fā)明實施例的技術(shù)方案,可保證切片長度在基準(zhǔn)時長左右波動,進(jìn)而能夠解決切片的直播畫面出現(xiàn)較慢、相鄰兩切片之間的直播畫面存在有不連續(xù)等情況,從而可提高直播視頻播放流暢性、播放畫面質(zhì)量,提升用戶觀看體驗。
【附圖說明】
[0060]圖1為本發(fā)明實施例提供的獲取直播視頻切片的方法流程示意圖;
[0061]圖2為本發(fā)明實施例提供的應(yīng)用場景一示意圖;
[0062]圖3為本發(fā)明實施例提供的獲取直播視頻切片的方法的一具體實現(xiàn)流程示意圖;
[0063]圖4為本發(fā)明實施例提