一種在hls直播流媒體中進行節目動態插入播放的方法
【專利摘要】本發明涉及一種在HLS直播流媒體中進行節目動態插入播放的方法,在接收到每個用戶的直播頻道收看請求后,節目分發服務器為每個用戶生成一個單獨的L-m3u8邏輯索引文件,該L-m3u8邏輯索引文件中包括了插播視頻切片文件和所請求的直播流媒體切片文件,并且該邏輯索引文件與流媒體切片文件對應的m3u8索引文件的結構和更新頻率保持一致,同時將待插入的插播視頻實時復制到節目分發服務器內存中,并將插播視頻切片文件名修改為符合L-m3u8邏輯索引文件中規定的文件名,使得所生成的L-m3u8邏輯索引文件中所包括的切片文件名均連續。為每個用戶插入單獨的視頻內容,實現了HLS直播流媒體中插入廣告或其他視頻信息的新功能。
【專利說明】一種在HLS直播流媒體中進行節目動態插入播放的方法
【技術領域】
[0001]本發明涉及一種動態插入播放技術,特別涉及一種在HLS直播流媒體中進行節目動態插入播放的方法。
【背景技術】
[0002]網絡流媒體業務是目前互聯網的主流應用,特別是在以iPhone手機、iPAD平板電腦和Android手機為代表的移動智能終端出現后,網絡流媒體獲得了爆發式的發展,其所采用的技術也在不斷升級換代。
[0003]在流媒體節目中插入廣告內容,是目前互聯網視頻業務的重要收入來源,目前網絡視頻服務商能提供的業務都是在點播中插入廣告,或者在點播節目制作階段就把廣告插入到片頭或片中,或者在用戶點播流媒體節目時由播放客戶端或流媒體服務器實現廣告節目動態插入。
[0004]目前主流的網絡流媒體,為了面向iPhone手機、iPAD平板電腦,廣泛的采用了蘋果公司的HLS (HTTP Live Streaming)流媒體協議。該協議已經由蘋果公司提交至ITEF互聯網工程任務組作為標準草案形式進行公開。
[0005]與以往的網絡流媒體播放協議,如實時傳輸流協議RTSP相比,HLS協議不再使用UDP協議來傳輸流媒體節目,因此能更好的適應互聯網的復雜環境,實現在諸如NAT、代理網絡等異構網絡下的穩定視頻質量。加之蘋果公司iPhone手機和iPAD平板電腦的暢銷,使得HLS協議成為當前互聯網視頻行業事實上主要的行業標準之一,或者必須支持的標準。
[0006]對于采用HLS協議的直播流媒體插入廣告,目前未有網絡視頻服務商提供此項服務。
【發明內容】
[0007]本發明是針對HLS流媒體協議的網絡直播流媒體服務系統中尚沒有節目插入技術的問題,提出了一種在HLS直播流媒體中進行節目動態插入播放的方法,使其對所存儲的直播頻道切片文件進行動態重組,使得每次播放器調用此直播流媒體節目時,均先收看一段前插的視頻,如廣告。
[0008]本發明的技術方案為:一種在HLS直播流媒體中進行節目動態插入播放的方法,節目轉碼服務器生成直播流媒體切片文件和對應的m3u8索引文件;節目分發服務器存儲節目轉碼服務器生成的文件,在接收到每個用戶的直播頻道收看請求后,節目分發服務器為每個用戶生成一個單獨的L-m3u8邏輯索引文件,該L-m3u8邏輯索引文件中包括了插播視頻切片文件和所請求的直播流媒體切片文件,并且該邏輯索引文件與流媒體切片文件對應的m3u8索引文件的結構和更新頻率保持一致,同時將待插入的插播視頻實時復制到節目分發服務器內存中,并將插播視頻切片文件名修改為符合L-m3u8邏輯索引文件中規定的文件名,使得所生成的L-m3u8邏輯索引文件中所包括的切片文件名均連續;播放客戶端從節目分發服務器獲得到所請求的邏輯索引文件,并根據邏輯索引文件逐個獲取流媒體節目的切片文件進行播放。
[0009]所述節目分發服務器創建數據庫,數據庫包括用戶id、用戶請求的IP地址、用戶請求的頻道id、創建的L-m3u8邏輯索引文件、最后一次請求該邏輯索引文件的時間;節目分發服務器還維護數據庫,當創建的L-m3u8邏輯索引文件長時間沒有用戶訪問時,將創建的L-m3u8邏輯索引文件銷毀,以節約系統開銷。
[0010]本發明的有益效果在于:本發明在HLS直播流媒體中進行節目動態插入播放的方法,允許運營商對使用HLS流媒體協議的網絡直播節目中,為每個用戶插入單獨的視頻內容,使用戶先收看插播視頻后再收看直播節目,實現了 HLS直播流媒體中插入廣告或其他視頻信息的新功能。
【專利附圖】
【附圖說明】
[0011]圖1為蘋果公司定義的HLS流媒體服務系統架構圖;
圖2為本發明生成的L-m3u8邏輯索引文件最初構成示意圖。
【具體實施方式】
[0012]HLS是一種完全基于HTTP的媒體流協議。如圖1所示蘋果公司定義的HLS流媒體服務系統架構圖,一個完整的HLS系統主要由三個部分組成:節目轉碼服務器Server、節目分發服務器Distribut1n和播放客戶端Client。
[0013]節目轉碼服務器Server主要生成用于可供終端播放的流媒體視音頻文件,要求視頻采用H.264進行編碼,音頻采用AAC進行編碼,并且采用MPEG-2傳輸碼流格式進行視音頻文件的封裝(也就是文件后綴名為ts)。為了適應在互聯網上進行流媒體傳輸,在HLS協議中,特別要求在進行視音頻文件的封裝時,需要按時間將其切成一塊一塊的文件序列(這個過程一般稱為切片segment),比如視音頻節目每隔5秒鐘就保存為一個切片文件,同時再根據這些切片文件序列情況,生成一個后綴名為m3u8的索引文件,這樣多個切片文件連起來還是原始的視音頻節目。因此從節目轉碼服務器所輸出的視音頻節目就是一個存儲多個切片文件的文件夾和對應的m3u8索引文件。
[0014]節目分發服務器Distribut1n是一個Web服務器,用于存儲轉碼后的視音頻節目文件。播放客戶端Client通過標準HTTP方法,從節目分發服務器獲得到所請求流媒體的索引文件,并根據索引文件逐個獲取流媒體節目的切片文件,由此播放客戶端按照此順序進行逐個視音頻解碼,并最終拼接為完整的視頻畫面顯示給用戶。
[0015]根據HLS流媒體協議的特點,直播流媒體節目在進行編碼或轉碼時,將把視頻碼率按照切片形式,在節目分發服務器Distribut1n的特定目錄下進行保存,并且這些切片文件在該目錄下只保存有限的一段時間,比如5分鐘。在該目錄下依然保存該節目的m3u8索引文件和各切片文件,這些文件都是處于動態更新中。
[0016]在直播流媒體節目中,m3u8索引文件中包含的切片文件個數可以在編碼器或轉碼器中設置,其更新速度與每個切片的時間長度有關。簡單來說,就是編碼器或轉碼器生成第I個切片文件slice_p時,編碼器或轉碼器自動計算出該m3u8索引文件的第一個版本中,包含的切片文件分別是:
slice—p.ts
slice_[p+l].ts
slice_[p+2].ts
slice_[p+n_2].ts
slice_[p+n_l].ts
其中P是一個隨機正整數,n表示編碼器或轉碼器配置的m3u8中包含的有效切片文件個數。在每個m3u8索引文件中,要求所有的切片文件均是連續的。
[0017]假定編碼器或轉碼器在上一個版本的m3u8索引文件的倒數第2個切片文件(也即是slice_[p+n-2]文件)開始生成時,開始更新m3u8索引文件,那么新版本的m3u8索引文件將包含如下的文件結構:
slice_[p+n_2].ts
slice_[p+n_l].ts
slice_[p+n].ts
slice_[p+2n-4].ts
slice_[p+2n-3].ts
當編碼器或轉碼器開始生成Slice_[p+2n-4]切片文件時,該m3u8索引文件將再次進行更新,新版本的m3u8索引文件將包含如下的文件結構:slice_[p+2n-4].tsslice_[p+2n-3].tsslice_[p+2n-2].ts
slice_[p+3n-4].ts
slice_[p+3n-5].ts
在HLS直播流媒體中進行節目動態插入播放的方法,首先,修改HLS流媒體服務系統的實現機制,為每個用戶的一次點播請求建立一個L-m3u8邏輯索引文件,該邏輯索引文件中包括了插播視頻切片文件和實際的直播流媒體切片文件,并且與直播節目m3u8索引文件的結構和更新頻率保持一致,使得在用戶點播時實現插播視頻和直播節目的無縫銜接。同時將待插入的插播視頻實時復制到內存中的某個區域,并將原始切片文件名修改為符合L-m3u8邏輯索引文件中規定的文件名,使得所生成的新的L-m3u8邏輯索引中所包括的切片文件名均連續,滿足HLS播放器要求的一個m3u8下所有切片文件名聯系的要求。
[0018]主要實現方法是,本發明所修改的節目分發服務器Distribut1n,在接收到每個用戶的直播頻道收看請求后,將為每個用戶生成一個單獨的L-m3u8邏輯索引文件,該索引文件由節目分發服務器Distribut1n創建,在節目分發服務器Distribut1n中通過數據庫控制索引文件的生成和維護,該數據庫主要管理用戶id、用戶請求的IP地址、用戶請求的頻道id、對應L-m3u8邏輯索引文件、最后一次請求該文件的時間。在節目分發服務器Distribut1n維護該數據時,需要比較該用戶最后一次請求該L-m3u8邏輯索引文件的時間與當前時間的差距;當檢測到用戶上次收看時間距離系統當前時間很近時,說明用戶仍在繼續收看中,需要繼續維護該邏輯索引文件;當該邏輯索引文件長時間沒有用戶訪問時,就需要將其銷毀,以節約系統開銷。插播視頻多以廣告為主。
[0019]在具體實現方法上,本發明所修改的節目分發服務器Distribut1n,將定時解析由編碼器和轉碼器生成的m3u8原始索引文件,并實時監控該目錄下各切片文件的運行狀態息。
[0020]當某個用戶請求某個直播流媒體頻道時,本發明所修改的節目分發服務器Distribut1n,將為該用戶創建一個新的邏輯索引文件,其包括了廣告節目切片和直播節目切片。其文件結構類似如下:
slice_[m_k]
slice_[m_l]
slice_[m]
slice_[m+l]
slice_[m_k+n]
其中m是直播頻道所生成的m3u8真實索引文件中的某一個,η是m3u8中包含的有效切片文件個數,k表示插入的廣告內容的切片文件個數。
[0021]因此本發明所修改的節目分發服務器Distribut1n的另外一個關鍵技術,是將待插入的廣告節目實時復制到內存中的某個區域,并將原始切片文件名修改為符合L-m3u8邏輯索引文件中規定的文件名。
[0022]比如某個廣告內容共有k個所有切片,原始名稱為: ad—slice—adOOl
ad—slice—ad002
ad—slice_ad[k]
這樣本發明所修改的節目分發服務器Distribut1n就會將這些節目進行復制后改名,新的文件名稱將是:slice_[m_k]
slice_[m_l]
通過這種文件復制和更名,使得本發明所生成的新的L-m3u8邏輯索引中所包括的切片文件名均連續,滿足HLS播放器要求的一個m3u8下所有切片文件名聯系的要求。
[0023]這樣由本發明所修改的節目分發服務器Distribut1n,在所維護的L_m3u8邏輯索引文件,生成的L-m3u8邏輯索引文件最初構成示意圖如圖2所示:
由于HLS客戶端在播放時,首先下載sliCe_[m-k]切片,然后邊播放邊下載后面的slice_[m-l]等其他切片文件,而直播頻道生成的m3u8索引文件中所包含的切片文件一直在向前增加,因此一般m選擇真實切片文件中的第k個切片。
[0024]這樣當用戶持續觀看這個頻道的直播節目時,這個L-m3u8邏輯索引文件也將不再包含廣告切片文件,而只包括了編碼器或轉碼器所生成的m3u8真實索引文件中所列出的那些切片文件,這樣保證了廣告切片文件播放完畢后,播放的流媒體直播節目與實際的切片文件之間保持嚴格同步。
【權利要求】
1.一種在HLS直播流媒體中進行節目動態插入播放的方法,其特征在于,節目轉碼服務器生成直播流媒體切片文件和對應的m3u8索引文件;節目分發服務器存儲節目轉碼服務器生成的文件,在接收到每個用戶的直播頻道收看請求后,節目分發服務器為每個用戶生成一個單獨的L-m3u8邏輯索引文件,該L-m3u8邏輯索引文件中包括了插播視頻切片文件和所請求的直播流媒體切片文件,并且該邏輯索引文件與流媒體切片文件對應的m3u8索引文件的結構和更新頻率保持一致,同時將待插入的插播視頻實時復制到節目分發服務器內存中,并將插播視頻切片文件名修改為符合L-m3u8邏輯索引文件中規定的文件名,使得所生成的L-m3u8邏輯索引文件中所包括的切片文件名均連續;播放客戶端從節目分發服務器獲得到所請求的邏輯索引文件,并根據邏輯索引文件逐個獲取流媒體節目的切片文件進行播放。
2.根據權利要求1所述在HLS直播流媒體中進行節目動態插入播放的方法,其特征在于,所述節目分發服務器創建數據庫,數據庫包括用戶id、用戶請求的IP地址、用戶請求的頻道id、創建的L-m3u8邏輯索引文件、最后一次請求該邏輯索引文件的時間;節目分發服務器還維護數據庫,當創建的L-m3u8邏輯索引文件長時間沒有用戶訪問時,將創建的L-m3u8邏輯索引文件銷毀,以節約系統開銷。
【文檔編號】H04N21/845GK104394443SQ201410734649
【公開日】2015年3月4日 申請日期:2014年12月8日 優先權日:2014年9月16日
【發明者】萬乾榮, 王明敏, 王正軍, 吳堅, 劉勝, 楊啟程, 鄧勇, 錢晨, 陳寶霞, 李奎, 汪瑞琪, 忻悅, 顧曉燕 申請人:東方有線網絡有限公司, 上海下一代廣播電視網應用實驗室有限公司