本發(fā)明屬于p2p流媒體技術領域,涉及一種基于dash優(yōu)化的p2p流媒體視頻播放方法。
背景技術:
p2p流媒體技術采用p2p的對等網(wǎng)絡架構,利用p2p的文件交換技術,實現(xiàn)數(shù)字媒體內容多節(jié)點同時流式傳輸并播放。在p2p流媒體系統(tǒng)(流媒體播放系統(tǒng))中,服務器只需向少量結點發(fā)送數(shù)據(jù),而這些節(jié)點可以把得到的數(shù)據(jù)分享給其他結點,每個結點都可以通過流媒體系統(tǒng)得到高質量的視頻服務。p2p流媒體技術分為點播和直播。在p2p流媒體系統(tǒng)的點播服務中,播放的媒體數(shù)據(jù)已經(jīng)錄制好、存儲在固定服務器上,對實時性要求不高,用戶可對點播的視頻節(jié)目施加各種控制,如停止、暫停、快進等。
然而,在用戶需求以及終端設備多元化的推動下,互聯(lián)網(wǎng)結構特別是接入網(wǎng)形態(tài)越來越豐富,網(wǎng)絡的動態(tài)變化性不可避免,網(wǎng)絡差異對用戶的播放體驗有很大影響。雖然p2p流媒體技術在流媒體系統(tǒng)中的應用降低了服務器壓力,提高了系統(tǒng)的服務能力,而且改善了用戶體驗,但是這也無法掩蓋它存在的不足,如版權問題、安全問題、消耗大量帶寬的問題;另外,一個關鍵的問題是,p2p流媒體系統(tǒng)的視頻數(shù)據(jù)塊在格式上并非公有格式,不能使用一些現(xiàn)成的視頻播放技術,如html5的mse擴展(mediasourceextensions、媒體源擴展)等進行解碼播放,而是需要一套自己的解碼播放組件。
針對上述問題,采用dash(dynamicadaptivestreamingoverhttp,動態(tài)自適應流媒體)技術可有效解決這些問題,這是因為已經(jīng)制定和公開的dash標準,支持同一視頻內容的多種碼流,支持音視頻技術、支持直播和點播、支持數(shù)字版權安全。
dash技術是一個跨平臺的標準,而不是僅僅只支持有限的平臺和瀏覽器,它幾乎被所有流行的瀏覽器所支持。dash標準規(guī)定視頻按照一定的規(guī)則分割成獨立的塊,這些塊分為包含編解碼信息初始塊和媒體數(shù)據(jù)塊,初始塊為媒體數(shù)據(jù)塊提供了解碼信息,而每個塊則是公開統(tǒng)一的結構;dash還會生成一個描述文件對該視頻流進行描述,這些技術特點與p2p流媒體技術的特點非常契合。dash技術可以為媒體文件提供多個碼率的視頻分片組,以覆蓋不同的網(wǎng)絡帶寬需求;從而在保證觀看效果的同時,減少客戶端的卡頓和緩沖,具有網(wǎng)絡自適應的能力。dash技術的數(shù)字版權保護規(guī)則,則為解決p2p流媒體技術視頻播放的版權問題,提供了一個新的可能。
對于標準的dash視頻播放系統(tǒng)而言,服務器承擔系統(tǒng)所有負載,當客戶端不斷增多的時候,服務器明顯會效率降低;對于傳統(tǒng)的p2p流媒體系統(tǒng),雖然達到了負載均衡,但隨著網(wǎng)絡的不斷變化,peer在接收播放的時候也會出現(xiàn)播放卡頓及停播的情況,連續(xù)的卡頓對于用戶是不能容忍的。如果將dash和p2p流媒體技術結合,既解決了dash技術對中心服務器的負載壓力和故障風險,也解決了p2p流媒體技術利用的一些難點,如簡化p2p視頻客戶端的開發(fā)等,這使得二者結合的系統(tǒng)顯得具有明顯的優(yōu)勢。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種基于dash優(yōu)化的p2p流媒體視頻播放方法,解決了用戶端網(wǎng)絡環(huán)境不穩(wěn)定引起的播放卡頓及停播的問題。
本發(fā)明所采用的技術方案是,一種基于dash優(yōu)化的p2p流媒體視頻播放方法,按照以下步驟實施:
步驟1、硬件系統(tǒng)包括服務器、種子節(jié)點組和用戶節(jié)點三部分,用戶節(jié)點又稱為peer;
步驟2、服務器和種子節(jié)點組準備視頻分片
2.1)服務器生成分片的初始mpd文件
服務器根據(jù)dash協(xié)議將視頻文件切割分片,生成初始mpd文件;
2.2)種子節(jié)點組從服務器獲取視頻資源
種子節(jié)點組向服務器注冊并請求初始mpd文件,解析初始mpd文件獲取視頻資源信息,根據(jù)自身能力選擇視頻資源進行下載,一旦選擇了某視頻,就將其整套視頻分片全部下載到本地;
2.3)服務器生成多訪問位置的mpd文件
服務器監(jiān)控種子節(jié)點組,待種子節(jié)點組下載初始mpd文件完畢后,匯總種子節(jié)點組擁有的視頻資源信息,生成多訪問位置的mpd文件,等待peer下載;
步驟3、peer獲取視頻分片并進行自適應播放
3.1)peer開始下載時,先向服務器請求視頻,收到服務器發(fā)來的mpd文件后,解析獲取到視頻分片的碼率、最大帶寬及最小帶寬、分辨率以及分片的若干個訪問位置信息,然后根據(jù)網(wǎng)絡環(huán)境選擇合適的碼率及訪問位置開始下載視頻分片;
3.2)peer緩存少量視頻分片后開始播放,邊播放邊下載后續(xù)視頻分片,并將其緩存在本地的分片統(tǒng)計到一張資源表中,以便與其他peer交互;以視頻資源標識和分片基本信息屬性為列來建立資源表;
3.3)peer每次下載下一個分片時,根據(jù)資源表生成統(tǒng)一的查詢消息,發(fā)送給鄰居peers進行分片的查詢,并根據(jù)查詢結果,從其鄰居peer和mpd文件中解析出的訪問位置中確定下載位置,通過http協(xié)議進行下載。
本發(fā)明的有益效果是,將dash的分片方法應用到p2p流媒體系統(tǒng)中,與傳統(tǒng)p2p流媒體系統(tǒng)相比,本方法的使用可以將dash的碼率自適應技術引入p2p流媒體系統(tǒng),不改變p2p流媒體系統(tǒng)的負載均衡特性,不僅解決了單一負載的問題,而且使得p2p流媒體系統(tǒng)中peer播放視頻時也可以隨著網(wǎng)絡環(huán)境的變化進行碼率自適應,解決了用戶端網(wǎng)絡環(huán)境不穩(wěn)定引起的播放卡頓及停播等問題,提高了播放流暢度,改善了用戶播放體驗。最重要的,本發(fā)明的方法使得在web環(huán)境里無需安裝任何插件和客戶端,實現(xiàn)在p2p流媒體系統(tǒng)中視頻播放成為一種可能。
附圖說明
圖1為本發(fā)明方法的整體結構總圖;
圖2為本發(fā)明方法中的分片下載原理示意圖。
具體實施方式
下面結合附圖和具體實施方式對本發(fā)明進行詳細說明。
一般情況下,在dash系統(tǒng)中,視頻資源都存儲在服務器,視頻分片只可在服務器訪問,但也有可能為了減緩服務器壓力,將視頻資源存儲在多個服務器上,這樣,相同的視頻分片可以在多個位置訪問。而在p2p流媒體系統(tǒng)中,視頻資源不僅可以存儲在服務器上,還可以存儲在用戶節(jié)點上,恰好符合dash系統(tǒng)中相同分片有多個訪問位置的情況。
在mpd中,baseurl元素可以為分片和其他資源指定一個或者多個公共位置信息。根據(jù)dash標準中的描述可知,baseurl可以出現(xiàn)在mpd文件中的mpd級、period級、adaptationset級和representation級。如果在任何級別的baseurl元素中提供了備用的基本分片url,則相同的分片可以在多個位置訪問;那么,通過在mpd文件中某幾個等級的baseurl中提供備用分片url來實現(xiàn)多位置訪問。系統(tǒng)中服務器和種子節(jié)點組都有視頻數(shù)據(jù),同一個分片有多個訪問位置,由于種子節(jié)點一旦下載了某視頻,就會將該視頻的整套分片全部下載下來,所以種子節(jié)點上存儲的視頻數(shù)據(jù)是完整且與服務器上完全相同的,所以能夠在mpd級別的baseurl中提供多個分片url。
本發(fā)明基于dash優(yōu)化的p2p流媒體視頻播放方法,基于上述的原理,按照以下步驟具體實施:
步驟1、硬件系統(tǒng)包括服務器、種子節(jié)點組和用戶節(jié)點三部分
如圖1所示,服務器提供視頻播放的原始多媒體資源,負責將視頻分片生成mpd文件,為種子節(jié)點組和用戶節(jié)點服務;種子節(jié)點組包括多個種子節(jié)點(比如圖1中的種子節(jié)點1、種子節(jié)點2、種子節(jié)點3),各個種子節(jié)點從服務器處獲取部分視頻資源,保存在本地,供用戶節(jié)點下載;用戶節(jié)點在p2p系統(tǒng)中稱為peer,包括多個peer(比如圖1中的peera、peerb、peerc),用戶節(jié)點是接收、解碼和播放視頻的終端,各個peer從服務器、種子節(jié)點組或者其相鄰的peer處獲取視頻分片進行播放;
步驟2、服務器和種子節(jié)點組準備視頻分片
2.1)服務器生成分片的初始mpd文件
服務器根據(jù)dash協(xié)議將視頻文件切割分片,生成初始mpd文件;
2.2)種子節(jié)點組從服務器獲取視頻資源
種子節(jié)點組向服務器注冊并請求初始mpd文件,解析初始mpd文件獲取視頻資源信息,根據(jù)自身能力選擇視頻資源進行下載,一旦選擇了某視頻,就將其整套視頻分片(包括多種碼率)全部下載到本地;
2.3)服務器生成多訪問位置的mpd文件
服務器監(jiān)控種子節(jié)點組,待種子節(jié)點組下載初始mpd文件完畢后,匯總種子節(jié)點組擁有的視頻資源信息,生成多訪問位置的mpd文件,等待peer下載;
步驟3、peer獲取視頻分片并進行自適應播放
3.1)peer開始下載時,先向服務器請求視頻,收到服務器發(fā)來的mpd文件后,解析獲取到視頻分片的碼率、最大帶寬及最小帶寬、分辨率以及分片的若干個訪問位置等信息,然后根據(jù)網(wǎng)絡環(huán)境選擇合適的碼率及訪問位置開始下載視頻分片;
3.2)peer緩存少量視頻分片后開始播放,邊播放邊下載后續(xù)視頻分片,并將其緩存在本地的分片統(tǒng)計到一張資源表中,以便與其他peer交互;以視頻資源標識和分片基本信息屬性為列來建立資源表;
分片基本信息屬性包括:碼率、分辨率、分片名和分片url,資源表用于鄰居peer之間相互查詢自己所需的視頻分片。
3.3)peer每次下載下一個分片時,根據(jù)資源表生成統(tǒng)一的查詢消息,發(fā)送給鄰居peers進行分片的查詢,并根據(jù)查詢結果,從其鄰居peer和mpd文件中解析出的訪問位置中確定下載位置,通過http協(xié)議進行下載。
本發(fā)明方法的工作原理是,將視頻資源分散到系統(tǒng)中,由種子節(jié)點組和普通的用戶節(jié)點來分擔服務器的負擔:服務器按照dash協(xié)議對視頻進行分片,分發(fā)到種子節(jié)點組,并生成多訪問位置的mpd文件,供給peer下載播放;peer從服務器下載多訪問位置的mpd文件,解析獲取所需分片的多個碼率和多個訪問位置,同時向其鄰居節(jié)點查詢是否有所需分片,然后根據(jù)網(wǎng)絡選擇合適的碼率,并從服務器、種子節(jié)點組或者其鄰居節(jié)點處通過http協(xié)議下載播放視頻分片,具體過程如圖2所示。在圖2中顯示了p2p網(wǎng)絡中的某一個peer如何從服務器、種子主機和其他的peer獲取視頻分片來進行播放的全過程。
實施例
1、多訪問位置的mpd文件
本實施例中,mpd文件描述的內容來源有三個(seed1、seed2和seed3),并提供視頻的不同碼率和分辨率的五個版本,比特率在512kbit/s和2mbit/s之間。一個有三個訪問位置的mpd文件部分內容示例如下:
2、資源表
由于peer的緩存是有限的,所以表中記錄不會很多,維護并不困難。表1是一個資源表的具體設置。
表1、資源表的具體設置結構
從表1可以看出,該peer緩存了兩種視頻資源的部分視頻分片,視頻1緩存了第三和第四兩個視頻分片,兩個視頻分片的碼率和分片率不同;視頻2緩存了第七、第八和第九個視頻分片,第七和第八兩個視頻分片的碼率和分辨率相同,第九個視頻分片的碼率分辨率比較高。在接收到查詢視頻分片信息時,根據(jù)碼率、分辨率和視頻分片名來確定唯一分片。查找到對應視頻分片,返回其分片url信息,否則查找失敗。