減少編碼片段重複的P2P直播系統及方法與流程
2023-05-06 04:01:12 1

本發明涉及直播技術領域,特別涉及一種減少編碼片段重複的p2p(對等網絡)直播系統及方法。
背景技術:
視頻直播過程中,邊緣伺服器將視頻數據切分成同樣大小的數據塊(chunk),再將每個chunk切分成k個同樣大小的原始片段(pieces),並通過[n,k]糾刪碼生成n-k個冗餘的編碼片段,邊緣伺服器將編碼片段分發給供源節點,播放節點從供源節點獲取編碼片段。當每個播放節點收集滿k個pieces就嘗試解碼恢復原始chunk。但由於網絡延時或丟包等原因,播放節點收集滿k個pieces的過程比較緩慢,如果某chunk遲遲不能被恢復,在流媒體播放中就會發生卡頓現象,影響用戶體驗。另外,現有技術中,邊緣伺服器發送編碼片段為無規則發送,播放節點常常會收到重複編碼片段,不僅會導致傳輸浪費,還會加劇卡頓問題。
技術實現要素:
本發明要解決的技術問題是為了緩解現有技術中的直播方法常出現卡頓現象的缺陷,提供一種減少編碼片段重複的p2p直播系統及方法。
本發明是通過下述技術方案來解決上述技術問題:
一種減少編碼片段重複的p2p直播系統,其特點在於,所述p2p直播系統包括:邊緣伺服器、供源節點和播放節點,所述供源節點分別與所述邊緣伺服器和所述播放節點通信連接;
所述邊緣伺服器用於將視頻數據切分成若干數據塊,並將每個數據塊切分、編碼成若干個編碼片段,且將所述若干編碼片段劃分為分發編碼片段和補充編碼片段;
所述邊緣伺服器還用於將分發編碼片段分發至所述供源節點;
所述播放節點用於從所述供源節點獲取分發編碼片段,並在預設時間段內獲取的分發編碼片段的數量未達到糾刪碼閾值時,發送補充片段請求至所述邊緣伺服器;
所述邊緣伺服器還用於在接收到所述補充片段請求時,將補充編碼片段發送至所述播放節點以進行糾刪碼補償。
較佳地,每個分發編碼片段具有不同的編碼id;
所述邊緣伺服器還用於為每個供源節點分配一個固定的編碼id,且將與編碼id對應的分發編碼片段發送至相應的供源節點。
較佳地,當所述播放節點從不同的供源節點獲得了具有相同編碼id的分發編碼片段時,所述播放節點從所述不同的供源節點中選擇一個供源節點獲取分發編碼片段,並斷開與其他供源節點的通信連接。
較佳地,所述播放節點還用於在判斷獲取的分發編碼片段有重複時,刪除重複的分發編碼片段。
較佳地,所述補充片段請求包括片段補充個數;所述片段補充個數通過m表徵,所述m的計算公式為:
m=糾刪碼閾值-預設時間段內獲取的分發編碼片段的數量;
所述邊緣伺服器在接收到所述補充片段請求時,將m個補充編碼片段發送至所述播放節點。
較佳地,每個播放節點向唯一對應的邊緣伺服器發送補充片段請求。
較佳地,從所述若干編碼片段中劃分的補充編碼片段的數量不小於所述糾刪碼閾值。
本發明還提供一種減少編碼片段重複的p2p直播方法,其特點在於,所述p2p直播方法包括:
s1、邊緣伺服器將視頻數據切分成若干數據塊,並將每個數據塊切分、編碼成若干個編碼片段,且將所述若干編碼片段劃分為分發編碼片段和補充編碼片段;
s2、所述邊緣伺服器將分發編碼片段分發至供源節點;
s3、播放節點從供源節點獲取分發編碼片段,並在預設時間段內獲取的分發編碼片段的數量未達到糾刪碼閾值時,發送補充片段請求至所述邊緣伺服器;
s4、所述邊緣伺服器在接收到所述補充片段請求時,將補充編碼片段發送至所述播放節點以進行糾刪碼補償。
較佳地,步驟s1中還包括:
所述邊緣伺服器為每個分發編碼片段設置不同的編碼id;
步驟s2,具體包括:
所述邊緣伺服器為每個供源節點分配一個固定的編碼id,且將與編碼id對應的分發編碼片段發送至相應的供源節點。
較佳地,在步驟s3中,播放節點從所述供源節點獲取分發編碼片段的步驟,具體包括:
當所述播放節點從不同的供源節點獲得了具有相同編碼id的分發編碼片段時,所述播放節點從所述不同的供源節點中選擇其中一個供源節點獲取分發編碼片段,並斷開與其他供源節點的通信連接。
較佳地,在步驟s3中,在獲取分發編碼片段的步驟之後,還包括:
所述播放節點在判斷獲取的分發編碼片段有重複時,刪除重複的分發編碼片段。
較佳地,所述補充片段請求包括片段補充個數;所述片段補充個數通過m表徵,所述m的計算公式為:
m=糾刪碼閾值-預設時間段內獲取的分發編碼片段的數量;
步驟s4中,將補充編碼片段發送至所述播放節點以進行糾刪碼補償的步驟,具體包括:
將m個補充編碼片段發送至所述播放節點。
較佳地,步驟s3中,每個播放節點向唯一對應的邊緣伺服器發送補充片段請求。
較佳地,從所述若干編碼片段中劃分的補充編碼片段的數量不小於所述糾刪碼閾值。
本發明的積極進步效果在於:本發明的邊緣伺服器將編碼片段分成不同的兩部分,一部分通過供源節點分發至播放節點,一部分用於當播放節點在預設時間段內獲取的分發編碼片段的數量未達到糾刪碼閾值時,發送給播放節點以進行糾刪碼補償。從而,本發明大大減小了因網絡延時或丟包等原因造成的播放節點獲取編碼片段緩慢,致使數據塊不能恢復而導致流媒體播放過程中的卡頓現象。另外,由於補充的編碼片段與分發的編碼片段是不同的,從而減小了播放節點接收重複編碼片段的概率,進而減小了播放節點因接收到重複的編碼片段導致的卡頓風險,保證了視頻的流暢播放。
附圖說明
圖1為本發明實施例1的減少編碼片段重複的p2p直播系統的結構示意圖。
圖2為本發明實施例3的減少編碼片段重複的p2p直播方法的流程圖。
圖3為本發明實施例4的減少編碼片段重複的p2p直播方法的流程圖。
圖4為本發明實施例5的減少編碼片段重複的p2p直播方法的流程圖。
具體實施方式
下面通過實施例的方式進一步說明本發明,但並不因此將本發明限制在所述的實施例範圍之中。
實施例1
如圖1所示,本實施例的p2p直播系統包括:邊緣伺服器1、供源節點2和播放節點,每個邊緣伺服器1分別與多個供源節點2通信連接,每個供源節點2又與多個播放節點3通信連接,每個播放節點也與多個供源節點2通信連接。視頻直播過程中,邊緣伺服器將獲取的視頻數據切分成若干數據塊,並將每個數據塊切分、編碼成若干個編碼片段。具體的,邊緣伺服器將每個數據塊切分成k個同樣大小的原始片段,再通過糾刪碼對k個原始片段進行編碼生成n-k個冗餘的編碼片段,且將n個編碼片段劃分為分發編碼片段和補充編碼片段。邊緣伺服器將分發編碼片段分發至供源節點,播放節點則可從供源節點獲取分發編碼片段,並在獲取分發編碼片段的過程中判斷預設時間段(可根據網絡狀態、播放節點性能等自行設置)內獲取的分發編碼片段的數量是否達到糾刪碼閾值(也即k),若未達到糾刪碼閾值,則播放節點發送補充片段請求至邊緣伺服器;若在預設時間段內獲取的分發編碼片段的數量達到k個,則播放節點嘗試解碼恢復數據塊。邊緣伺服器在接收到補充片段請求時,將補充編碼片段發送至播放節點以進行糾刪碼補償。
從而,本發明大大減小了因網絡延時或丟包等原因造成的播放節點獲取編碼片段緩慢,致使數據塊不能恢復而導致流媒體播放過程中的卡頓現象。另外,由於補充編碼片段與分發編碼片段是不同的,從而減小了播放節點接收重複編碼片段的概率,進而減小了播放節點因獲取重複的編碼片段導致的卡頓風險。
本實施例中,補充片段請求包括片段補充個數,片段補充個數通過m表徵,計算公式為:m=k-l,其中k為糾刪碼閾值,l為預設時間段內播放節點獲取的分發編碼片段的數量。則邊緣伺服器在接收到補充片段請求時,將m個補充編碼片段發送至播放節點,避免傳輸浪費。
本實施例中也可設置每個播放節點向唯一對應的邊緣伺服器發送補充片段請求,也即每個播放節點只從一個邊緣伺服器獲取補充編碼片段,以避免獲取重複的補充編碼片段,進一步減小了播放節點獲取重複編碼片段的概率,減小了卡頓風險。
需要說明的是,直播系統中的節點可同時作為播放節點和供源節點,播放節點的數據可以包括從邊緣伺服器獲得的補充編碼片段和從供源節點獲得的分發編碼片段,供源節點的數據僅為從邊緣伺服器獲得的分發編碼片段,本實施例中,播放節點在獲得編碼片段後,不會將所得用於播放的數據發送給任何節點,即該播放節點不會將從邊緣伺服器獲得的補充編碼片段和從供源節點獲得的分發編碼片段上傳給其他節點,從而避免系統中其他播放節點獲得相同的補充編碼片段,進而減小了其他播放節點的視頻卡頓風險。
由於每個供源節點可以從多個邊緣伺服器獲取分發編碼片段(也即每個供源節點獲得的分發編碼片段可能有重複),每個播放節點也可以從不同的供源節點獲取分發編碼片段,因此,播放節點還是有可能獲取到重複的分發編碼片段。為了避免播放節點因獲得重複的分發編碼片段而引起的視頻播放卡頓現象,本實施例的播放節點在接收到分發編碼片段時還可判斷獲取的分發編碼片段是否有重複,並在判斷為是時,刪除重複的分發編碼片段,之後再進行數量判斷。從而,可避免因接收到重複的編碼片段導致的視頻卡頓問題。此時,片段補充個數還需要在m的基礎上加上刪除重複的分發編碼片段的個數。
本實施例中,劃分編碼片段時,最好使得補充編碼片段的數量m不小於糾刪碼閾值k。這是因為,若某個播放節點沒能獲取任何分發編碼片段時,則全部的編碼片段需要從邊緣伺服器補充,因此必須保證k<m<n。另外,劃分編碼片段時,最好使得分發編碼片段的數量遠大於補充編碼片段的數量,以在p2p交換時減小發生重複的概率。
實施例2
實施例2與實施例1基本相同,不同之處在於,本實施例提供了另一種避免播放節點獲得重複的分發編碼片段的方式。具體的,本實施例中,一個數據塊中的所有分發編碼片段具有不同的編碼id(補充編碼片段也具有不同的編碼id,與分發編碼片段各自獨立),但每個數據塊中的編碼id是相同的,例如數據塊1中的編碼id為:分發編碼片段1、分發編碼片段2,……,分發編碼片段n;數據塊2中的編碼id同樣為:分發編碼片段1、分發編碼片段2,……,分發編碼片段n。邊緣伺服器為每個供源節點分配一個固定的編碼id,且將與編碼id對應的分發編碼片段發送至相應的供源節點,也即供源節點只接收對應編碼id的分發編碼片段,從而避免了供源節點接收到重複的分發編碼片段,進而避免了播放節點從不同的供源節點獲取重複的分發編碼片段。
本實施例中,若系統出現故障,播放節點可能從不同的供源節點獲得具有相同編碼id的分發編碼片段,此時播放節點可從上述不同的供源節點中選擇一個供源節點獲取分發編碼片段,並斷開與其他供源節點的通信連接,以避免獲取重複的分發編碼片段。進一步的,播放節點也可判斷分發編碼片段是否有重複,並在判斷為是時,刪除重複的分發編碼片段。
實施例3
如圖2所示,本實施例的p2p直播方法包括以下步驟:
步驟110、邊緣伺服器將視頻數據切分成若干數據塊,並將每個數據塊切分、編碼成若干個編碼片段,且將若干編碼片段劃分為分發編碼片段和補充編碼片段。
其中,劃分編碼片段時,最好使得補充編碼片段的數量m不小於糾刪碼閾值k。這是因為,若某個播放節點沒能獲取任何分發編碼片段時,則全部的編碼片段需要從邊緣伺服器補充,因此必須保證k<m<n。另外,劃分編碼片段時,最好使得分發編碼片段的數量遠大於補充編碼片段的數量,以在p2p交換時減小發生重複的概率。
步驟120、邊緣伺服器將分發編碼片段分發至供源節點。
步驟130、播放節點從供源節點獲取分發編碼片段。
步驟140、判斷預設時間段內獲取的分發編碼片段的數量是否達到糾刪碼閾值。若否,則執行步驟150;若是,則執行步驟150』。
步驟150、發送補充片段請求至邊緣伺服器。
步驟160、邊緣伺服器在接收到補充片段請求時,將補充編碼片段發送至播放節點以進行糾刪碼補償。
步驟150』、嘗試解碼恢復數據塊。
本實施例中,補充片段請求包括片段補充個數;片段補充個數通過m表徵,其中計算公式為:m==k-l,其中k為糾刪碼閾值,l為預設時間段內播放節點獲取的分發編碼片段的數量。則步驟160中,邊緣伺服器將m個補充編碼片段發送至播放節點。
需要說明的是,直播系統中的節點可同時作為播放節點和供源節點,本實施例中,播放節點在獲得編碼片段後,不會將所得用於播放的數據發送給任何節點,即該播放節點不會將從邊緣伺服器獲得的補充編碼片段和從供源節點獲得的分發編碼片段上傳給其他節點,以避免系統中其他的播放節點獲得重複的編碼片段導致視頻播放卡頓。
本實施例中,每個播放節點向唯一對應的邊緣伺服器發送補充片段請求,從而避免了接收到重複的補充編碼片段。
實施例4
實施例4與實施例3基本相同,如圖3所示,不同之處在於,本實施例中,在步驟130之後,還包括:
步驟131、判斷接收到的分發編碼片段是否有重複。若是,則執行步驟132;若否,則執行步驟140;
步驟132、刪除重複的分發編碼片段。
從而,本實施例避免了播放節點獲得重複的編碼片段,進而避免了因編碼片段重複導致的視頻播放卡頓現象,保證了視頻的流暢播放。
實施例5
實施例5與實施例3基本相同,如圖4所示,不同之處在於,本實施例中,步驟110用步驟110』代替,步驟120用步驟120』代替。
步驟110』、邊緣伺服器將視頻數據切分成若干數據塊,並將每個數據塊切分、編碼成若干個編碼片段,且將若干編碼片段劃分為分發編碼片段和補充編碼片段邊緣,伺服器為每個分發編碼片段設置不同的編碼id。
步驟120』、邊緣伺服器為每個供源節點分配一個固定的編碼id,且將與編碼id對應的分發編碼片段發送至相應的供源節點。
進一步的,步驟130用步驟130』代替。
步驟130』、當播放節點從不同的供源節點獲得了具有相同編碼id的分發編碼片段時,播放節點從不同的供源節點中選擇其中一個供源節點獲取分發編碼片段,並斷開與其他供源節點的通信連接。
本實施例,也可避免播放節點獲得重複的編碼片段,進而避免了因編碼片段重複導致的視頻播放卡頓現象,保證了視頻的流暢播放。
雖然以上描述了本發明的具體實施方式,但是本領域的技術人員應當理解,這僅是舉例說明,本發明的保護範圍是由所附權利要求書限定的。本領域的技術人員在不背離本發明的原理和實質的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發明的保護範圍。