閆新惠
摘 要:隨著移動互聯(lián)網(wǎng)的興起,直播作為一種新型的互聯(lián)網(wǎng)交流方式近年來迅速發(fā)展,在娛樂,電動競技,教育,安防等領(lǐng)域有著廣泛應(yīng)用。自媒體利用網(wǎng)絡(luò)直播技術(shù),更是對傳統(tǒng)媒體有著具體沖擊。本文深入分析網(wǎng)絡(luò)視頻直播中“連麥”技術(shù),并給出一些解決方案及其實現(xiàn)。
關(guān)鍵詞:直播連麥技術(shù);研究;實現(xiàn)
1 視頻直播和連麥簡介
1.1 視頻直播
視頻直播分為主播和觀眾,可以有一個或幾個主播對應(yīng)多個觀眾。主播通過錄屏工具(一般為手機(jī)或個人電腦攝像頭),錄取聲音和視頻,然后及時的發(fā)送到觀眾的客戶端上,客戶端為手機(jī)或電腦。我們主要考慮移動設(shè)備(手機(jī))上直播的實現(xiàn)方案。
(1)音視頻的清晰程度:例如音頻采樣率和視頻壓縮率,分辨率。手機(jī)上音頻采樣率要達(dá)到16000以上,視頻達(dá)到720P高清格式;音視頻數(shù)據(jù)量比較大,主播端需要編碼壓縮,一般使用h264編碼,對應(yīng)的客戶端則需要解碼操作。
(2)信息的實時性:主播端音視頻需要實時傳送到觀眾段,時延要低,這個主要靠網(wǎng)絡(luò)傳輸和服務(wù)器性能保證。
音視頻編碼和解碼技術(shù)上有硬件和軟件2種實現(xiàn)方案,硬件方案是利用手機(jī)上的特殊硬件來執(zhí)行編解碼,目前手機(jī)一般都有編解碼硬件,這種方式性能高且開發(fā)方便;軟件方案則是利用第三方的軟件編解碼庫,例如ffmpeg來實現(xiàn),其效率低下而且容易影響手機(jī)性能,引起卡頓,作為直播方案不太合適。
一旦編碼完成,主播端則需要利用網(wǎng)絡(luò)將數(shù)據(jù)幀發(fā)送到視頻服務(wù)器(主播推流),服務(wù)器將數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端(觀眾拉流),客戶端解碼后顯示并播放聲音。
1.2 連麥簡介
“連麥”是視頻直播中的一個比較有趣的擴(kuò)展功能,是指同時可以有多個觀眾加入到主播中,觀眾端同時也作為主播端,觀眾端不僅僅拉流,自己也同時推流。但最終展示的只有一路數(shù)據(jù)流,所以這多路數(shù)據(jù)流需要做一個“合并”操作,例如主流合并方法主播端是主畫面,但是在右下角開出幾個小窗口,每個小窗口對應(yīng)一個觀眾端流??梢钥吹剑m然連麥功能擴(kuò)展不多,對技術(shù)上改變卻很大,普通觀眾端增了推流功能,多路流的合并功能,這些需求在簡單直播服務(wù)中是無法提供的,我們就連麥技術(shù)的實現(xiàn)做了一些分析,提出幾個解決方案實現(xiàn)。
2 連麥的技術(shù)實現(xiàn)
2.1 服務(wù)器多推流多拉流實現(xiàn)
服務(wù)器多推流多拉流方式對傳統(tǒng)方式做了擴(kuò)充,連麥用戶請求連麥并通過后,和主播用戶一樣,也推流到服務(wù)器,這樣服務(wù)器需要接受連麥用戶和主播2個推流,所有其它用戶需要接受這2個推流,并且在客戶端做解碼,然后將2路視頻流按需求定義混合。
這種實現(xiàn)方式適合多主播多用戶互動,系統(tǒng)復(fù)雜度與耦合性較低,便于擴(kuò)展。服務(wù)器端由于不需要混音、混屏,其壓力較低主要實現(xiàn)集中于服務(wù)器端,一個主播需要推送多個流,其帶寬占用比較大。對于觀眾端,連麥主觀眾和主播的媒體流時間上同步難度比較大,由于網(wǎng)絡(luò)原因,2路流不能做實時同步,這樣在觀眾端混合視頻的時候要考慮到其時間戳,如果相差太大則需要采用某些策略,例如丟棄某路流。
2.2 服務(wù)器多推流單拉流實現(xiàn)
服務(wù)器多推流單拉流實現(xiàn)方式和服務(wù)器多推流多拉流實現(xiàn)方式相類似,也是多個連麥用戶和主播同時向服務(wù)器推流,不同的是在服務(wù)器做混流操作,多路媒體流推送到服務(wù)器,服務(wù)器端完成多路音視頻的合并,觀眾端和傳統(tǒng)方式相比沒有變化,收到的只是一路流。這也是目前主流連麥技術(shù)采用的辦法,很多CDN服務(wù)商實現(xiàn)了此功能,對客戶端來說改變比較簡單。此方式操作簡單,但限制也比較多,難點部分放到服務(wù)器,服務(wù)器不僅僅要推拉流的網(wǎng)絡(luò)操作,還要實時對推流混碼合并,計算量很大,會有比較大的壓力。對于客戶端來說,雖然不做任何更改,但是也限制了其進(jìn)一步擴(kuò)展的能力,例如客戶端不能自行取消某連麥觀眾的音視頻。
2.3 P2P技術(shù)實現(xiàn)
P2P是peer to peer簡稱,也就是點對點通信,指客戶端之間直接通信,不需要通過服務(wù)器中轉(zhuǎn)。在直播中特指音視頻數(shù)據(jù)流在客戶端直接交互,這和傳統(tǒng)的直播方式差別比較大。P2P技術(shù)具體通過端口轉(zhuǎn)發(fā)實現(xiàn),此功能需要網(wǎng)關(guān)支持。
實現(xiàn)步驟:連麥用戶向視頻服務(wù)器發(fā)送連麥請求,服務(wù)器通知主播,主播接受后,雙方通過服務(wù)器交換對方的網(wǎng)絡(luò)信息(公網(wǎng)IP地址,端口號),雙方以P2P方式嘗試直接聯(lián)接對方的公網(wǎng)IP地扯(如果失敗還需通過服務(wù)器轉(zhuǎn)發(fā),保證直播能完成,但此時已屬于P2P范圍),然后主播和連麥用戶將自己編碼后的流以UDP發(fā)送所有其它用戶,同時所有用戶接受到其它用戶流媒體后解碼渲染到界面。
“點對點”的特點,除了在信令交互(連麥申請/接受)階段需要視頻服務(wù)器介入,連接一旦建立,就不需要服務(wù)器了。但是也顯然增加了各個客戶端的負(fù)擔(dān),假設(shè)主播1人,連麥者2人,觀眾3人,主播端和連麥端都需要接受2輸入流,同時輸出5路流。對于手機(jī)而言,這是一個不小的負(fù)擔(dān)。所以P2P方式只能適合人數(shù)比較少的直播。另外由于媒體流協(xié)議采用rtp/自定義的UDP協(xié)議,開發(fā)難度也比較大,但是其時延和服務(wù)器壓力是最小的。
3 結(jié)束語
本文探討了直播的連麥技術(shù),介紹了幾種連麥功能的實現(xiàn)方案,這些方案各有利弊,具體操作時需要結(jié)合其它客觀條件因地制宜的實施。
參考文獻(xiàn)
[1]張春元,文梅.流計算和視頻編碼[M].科學(xué)出版社,2012.
[2]哈渭濤.流媒體中關(guān)鍵技術(shù)研究[M].科學(xué)出版社,2019.
[3]蔡康.P2P對等網(wǎng)絡(luò)原理與應(yīng)用[M].科學(xué)出版社,2011