一種通過CDN網絡獲取HLS內容的方法及伺服器與流程
2023-05-24 15:46:31 1

本發明屬於網絡信息分發技術領域,特別涉及一種通過cdn網絡獲取hls內容的方法及伺服器。
背景技術:
cdn的全稱是contentdeliverynetwork,即內容分發網絡。其基本思路是儘可能避開網際網路上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點伺服器構成在現有的網際網路基礎之上的一層智能虛擬網絡,cdn系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。
hls(httplivestreaming)協議是由蘋果公司實現的基於http的流媒體通信協議。hls協議的流媒體傳輸過程是首先伺服器在資源準備階段將不同比特率的視頻切片並分別存儲,同時生成兩級或更多級的m3u8文件。傳輸開始時,客戶端首先從伺服器上請求並下載m3u8文件,通過解析該文件得到視頻切片信息,選擇適合當前狀況的切片,提取出該切片的url地址,直接通過該地址向伺服器發起請求。因此,伺服器端不需要任何額外的處理,任意web伺服器都可以配置成支持hls協議的伺服器。
當用戶終端通過內容身份標識號碼(cid)向cdn節點伺服器請求hls文件時,由於cdn節點伺服器無法從用戶終端發送的hls文件請求中解析出cid,因此無法實現文件的查找和提供。授權公告號為cn103051976b的發明專利公開了一種cdn分發hls內容方法、系統及設備,通過對初始內容請求的url進行重定向,實現了通過cdn網絡對hls內容進行分發。但是該方法需要用戶終端發送至少兩次請求,這提高了闡述過程的複雜程度,並增加了cdn節點伺服器的工作負荷。
技術實現要素:
為了解決上述技術問題,本發明提供了一種通過cdn網絡獲取hls內容的方法及伺服器。
本發明具體技術方案如下:
本發明一方面提供了一種通過cdn網絡獲取hls內容的方法,包括如下步驟:
s1:用戶終端向所述cdn節點伺服器發送hls文件獲取請求;
s2:所述cdn節點伺服器接收所述hls文件獲取請求進行解析,判斷其中是否攜帶請求的文件內容身份標識cid,如攜帶,則根據所述cid查找所述用戶終端請求的內容;如未攜帶,則向所述用戶終端發送cid索取請求,所述cdn節點伺服器收到所述用戶終端發送的所述cid後,再進行查找;
s3:所述cdn節點伺服器對所述cid進行解讀,根據其中包含的信息,獲取所述hls文件的索引文件,並將所述索引文件發送給所述用戶終端;
s4:所述用戶終端對所述索引文件進行解析,並向所述cdn節點伺服器獲取相應的媒體文件進行播放。
進一步地,所述步驟s2包括如下步驟:
s2.1:所述cdn節點伺服器接收所述hls文件獲取請求並進行解析,判斷其中是否攜帶cid;
s2.2:如所述hls文件獲取請求中攜帶有cid,則對所述cid進行識別,並查找所述cid指向的內容;
s2.3:如所述hls文件獲取請求中未攜帶cid,則將所述hls文件獲取請求擱置,並向所述用戶終端發送cid獲取請求,索要所述cid;所述cdn節點伺服器接收到所述cid後,對所述cid進行識別,並查找所述cid指向的內容。
進一步地,所述步驟s2.3中,向所述用戶終端發送cid獲取請求的具體方法如下:
s2.3.1:設置一個時間閾值;
s2.3.2:所述cdn節點伺服器向所述用戶終端,發送cid獲取請求,並從發送時開始計時,如所述用戶終端超過所述時間閾值的時長時仍未作出響應,則再次發送所述cid獲取請求。
進一步地,所述步驟s2.3還包括如下步驟:
s2.3.3:設置一個次數閾值,當所述cdn節點伺服器發送所述cid獲取請求的次數達到所述次數閾值時,則認定所述用戶終端不再請求獲取hls文件,此時停止發送所述cid獲取請求,並將擱置的所述hls文件獲取請求刪除。
進一步地,所述步驟s3的具體方法如下:
所述cdn節點伺服器對所述cid進行解讀,獲取其中包含的hls索引信息;所述cdn節點伺服器根據所述hls索引信息,查找所述hls文件的索引文件,並發送給所述用戶終端。
進一步地,所述步驟s4的具體方法如下:
所述用戶終端接收所述索引文件並進行解析,然後根據所述索引文件的信息,按順序向所述cdn節點伺服器請求媒體文件進行播放。
進一步地,所述cdn節點伺服器查找所述索引文件時,首先在本地進行檢索,查看是否有相應內容,如果有,則將所述索引文件發送給所述用戶終端;如果沒有,則在網絡內進行查找,並將查找到的內容索引文件發回給所述用戶終端,同時所述索引文件對應的媒體文件儲存在本地。
本發明另一方面提供了一種通過cdn網絡獲取hls內容的伺服器,包括如下部分:
接收模塊,用於接收用戶終端發送的hls文件獲取請求以及文件內容身份標識cid;
cid解讀模塊,用於判斷所述hls文件獲取請求中是否攜帶cid,如攜帶,則對所述cid進行解讀;如未攜帶,則將所述hls文件獲取請求擱置,並通知發送模塊向所述用戶終端發送cid索取請求;
查找模塊,用於查找所述用戶終端請求獲取的hls文件的索引文件和媒體文件;
發送模塊,用於向所述用戶終端發送cid獲取請求以及hls文件的索引文件和媒體文件。
進一步地,所述伺服器還包括如下部分:
計時模塊,用於設定時間閾值,並從所述cid獲取請求發送時開始計時,如所述用戶終端超過所述時間閾值的時長仍未作出回應,則通知所述cid解讀模塊將所述hls文件獲取請求擱置,同時通知所述發送模塊再次發送所述cid獲取請求;
計次模塊,用於設定次數閾值,並記錄所述cid獲取請求的發送次數,如發送次數超過所述次數閾值,則通知所述發送模塊停止發送所述cid獲取請求,同時通知所述cid解讀模塊將擱置的所述hls文件獲取請求刪除。
進一步地,所述伺服器還包括如下部分:
存儲模塊,用於對所述媒體文件進行緩存,以供所述用戶終端根據所述索引文件進行獲取使用。
本發明的有益效果如下:本發明提供了一種通過cdn網絡獲取hls內容的方法及伺服器,以文件內容身份標識cid作為請求hls文件的許可標識,將其作為用戶終端的hls文件請求信息被cdn節點伺服器解讀的必要條件;用戶終端向cdn節點伺服器請求hls文件時,如果請求中攜帶了cid,則只需要發送一次請求即可實現cdn節點伺服器對請求信息的解讀;如果請求中未攜帶cid,則需要將cid補充發送,但同樣不需要多次請求來實現這一功能。通過以上設計,有效降低了cdn網絡中hls傳輸過程的複雜程度,減輕了cdn節點處理器處理請求的工作量,提高了信息傳輸的工作效率和成功率。
附圖說明
圖1為實施例1所述的一種通過cdn網絡獲取hls內容的方法的流程圖;
圖2為實施例2所述的一種通過cdn網絡獲取hls內容的方法中獲取cid的方法流程圖;
圖3為實施例3所述的一種通過cdn網絡獲取hls內容的方法中獲取hls文件的方法流程圖;
圖4為實施例4所述的一種通過cdn網絡獲取hls內容的伺服器的結構示意圖;
圖5為實施例5所述的一種通過cdn網絡獲取hls內容的伺服器的結構示意圖。
具體實施方式
下面結合附圖和以下實施例對本發明作進一步詳細說明。
實施例1
如圖1所示,本發明實施例1提供了一種通過cdn網絡獲取hls內容的方法,包括如下步驟:
s1:用戶終端向所述cdn節點伺服器發送hls文件獲取請求;
s2:所述cdn節點伺服器接收所述hls文件獲取請求進行解析,判斷其中是否攜帶請求的文件內容身份標識cid,如攜帶,則根據所述cid查找所述用戶終端請求的內容;如未攜帶,則向所述用戶終端發送cid索取請求,所述cdn節點伺服器收到所述用戶終端發送的所述cid後,再進行查找;
所述cid用來標識所述hls內容的文件包,可看做是用戶終端用戶請求hls文件的許可標識,所述文件包中包括m3u8索引文件和ts媒體文件。當用戶終端發送的hls文件獲取請求中未攜帶cid時,則認為該用戶終端未提供許可標識,此時需向用戶終端索要cid,以便後續為用戶終端提供hls文件;
s3:所述cdn節點伺服器對所述cid進行解讀,根據其中包含的信息,獲取所述hls文件的索引文件,並將所述索引文件發送給所述用戶終端;
s4:所述用戶終端對所述索引文件進行解析,並向所述cdn節點伺服器獲取相應的媒體文件進行播放。
hls文件的媒體文件由一系列文件切片組成,所述用戶終端獲取索引文件後,根據所述索引文件按順序向所述cdn節點伺服器請求媒體文件進行播放。
本實施例中,以文件內容身份標識cid作為請求hls文件的許可標識,將其作為用戶終端的hls文件請求信息被cdn節點伺服器解讀的必要條件;用戶終端向cdn節點伺服器請求hls文件時,如果請求中攜帶了cid,則只需要發送一次請求即可實現cdn節點伺服器對請求信息的解讀;如果請求中未攜帶cid,則需要將cid補充發送,但同樣不需要多次請求來實現這一功能。通過以上設計,有效降低了cdn網絡中hls傳輸過程的複雜程度,減輕了cdn節點處理器處理請求的工作量,提高了信息傳輸的工作效率和成功率。
實施例2
如圖2所示,本實施例2在實施例1的基礎上提供了一種通過cdn網絡獲取hls內容的方法,該實施例2進一步限定了所述步驟s2包括如下步驟:
s2.1:所述cdn節點伺服器接收所述hls文件獲取請求並進行解析,判斷其中是否攜帶cid;
s2.2:如所述hls文件獲取請求中攜帶有cid,則對所述cid進行識別,並查找所述cid指向的內容;
s2.3:如所述hls文件獲取請求中未攜帶cid,則將所述hls文件獲取請求擱置,並向所述用戶終端發送cid獲取請求,索要所述cid;所述cdn節點伺服器接收到所述cid後,對所述cid進行識別,並查找所述cid指向的內容。
由於cid是hls文件獲取請求被cdn節點伺服器解讀的必要條件,因此當用戶終端發送的hls文件獲取請求中未攜帶cid時,cdn節點伺服器需要提醒用戶終端補充發送cid。所述步驟s2.3中,向所述用戶終端發送cid獲取請求的具體方法如下:
s2.3.1:設置一個時間閾值;
s2.3.2:所述cdn節點伺服器向所述用戶終端,發送cid獲取請求,並從發送時開始計時,如所述用戶終端超過所述時間閾值的時長時仍未作出響應,則再次發送所述cid獲取請求;
為避免由於網絡故障等客觀原因造成用戶終端無法接收cid獲取請求、或cdn節點伺服器無法接受cid,導致hls文件獲取請求無法被正常解讀,cdn節點伺服器設置一個時間閾值,按照時間閾值重複發送cid獲取請求,以保證用戶終端與cdn節點伺服器的通信暢通;
s2.3.3:設置一個次數閾值,當所述cdn節點伺服器發送所述cid獲取請求的次數達到所述次數閾值時,則認定所述用戶終端不再請求獲取hls文件,此時停止發送所述cid獲取請求,並將擱置的所述hls文件獲取請求刪除。
為避免多次重複發送cid獲取請求增加工作量,cdn節點伺服器設置一個次數閾值,超過該次數閾值即認為用戶終端不再請求獲取hls文件,此時即停止發送,以減少無效的操作增加cdn節點伺服器的負荷。
實施例3
如圖3所示,本實施例3在實施例1的基礎上提供了一種通過cdn網絡獲取hls內容的方法,該實施例3進一步限定了所述步驟s3的具體方法如下:
所述cdn節點伺服器對所述cid進行解讀,獲取其中包含的hls索引信息;所述cdn節點伺服器根據所述hls索引信息,查找所述hls文件的索引文件,並發送給所述用戶終端。
所述步驟s4的具體方法如下:
所述用戶終端接收所述索引文件並進行解析,然後根據所述索引文件的信息,按順序向所述cdn節點伺服器請求媒體文件進行播放。
所述cdn節點伺服器查找所述索引文件時,首先在本地進行檢索,查看是否有相應內容,如果有,則將所述索引文件發送給所述用戶終端;如果沒有,則在網絡內進行查找,並將查找到的內容索引文件發回給所述用戶終端,同時所述索引文件對應的媒體文件儲存在本地。
實施例4
如圖4所示,本實施例4提供了一種通過cdn網絡獲取hls內容的伺服器,包括如下部分:
接收模塊1,用於接收用戶終端發送的hls文件獲取請求以及文件內容身份標識cid;
cid解讀模塊2,用於判斷所述hls文件獲取請求中是否攜帶cid,如攜帶,則對所述cid進行解讀;如未攜帶,則將所述hls文件獲取請求擱置,並通知發送模塊4向所述用戶終端發送cid索取請求;
查找模塊3,用於查找所述用戶終端請求獲取的hls文件的索引文件和媒體文件;
發送模塊4,用於向所述用戶終端發送cid獲取請求以及hls文件的索引文件和媒體文件。
接收模塊1接收用戶終端發送的hls文件,交由cid解讀模塊2解讀其中的cid;如hls文件並未攜帶cid,則由發送模塊4向用戶終端發送cid獲取請求,用戶終端發送的cid仍由接收模塊1接收,並再次交給cid解讀模塊2進行解讀;查找模塊3根據解讀出的信息查找hls文件的索引文件,由發送模塊4發送給用戶終端,用戶終端根據索引文件請求媒體文件,仍由發送模塊4發給用戶終端。通過上述流程,使用戶終端完成了對hls文件的獲取。
實施例5
如圖5所示,本實施例5在實施例4的基礎上提供了一種通過cdn網絡獲取hls內容的伺服器,該實施例5進一步限定了所述伺服器還包括如下部分:
計時模塊5,用於設定時間閾值,並從所述cid獲取請求發送時開始計時,如所述用戶終端超過所述時間閾值的時長仍未作出回應,則通知所述cid解讀模塊2將所述hls文件獲取請求擱置,同時通知所述發送模塊4再次發送所述cid獲取請求;
計次模塊6,用於設定次數閾值,並記錄所述cid獲取請求的發送次數,如發送次數超過所述次數閾值,則通知所述發送模塊4停止發送所述cid獲取請求,同時通知所述cid解讀模塊2將擱置的所述hls文件獲取請求刪除;
計時模塊5定時通知發送模塊4重新發送cid獲取請求,以保證伺服器與用戶終端之間通信暢通,計次模塊6控制cid獲取請求的發送次數,避免過多的無效操作增加伺服器的負荷,通過二者的配合實現向用戶終端索取cid的最佳處理;
存儲模塊7,用於對所述媒體文件進行緩存,以供所述用戶終端根據所述索引文件進行獲取使用。
以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但並不能因此而理解為對本發明專利範圍的限制。應當指出的是,對於本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬於本發明的保護範圍。因此,本發明專利的保護範圍應以所附權利要求為準。