作者| 阿里文娛技術專家 乾戒
一、行業的用戶體驗分析
互動直播場景中有主麥主播、輔麥主播、粉絲三個要素,這三者之間關係構成了直播間的 各種互動場景。
1)主麥主播、輔麥主播可以無障礙的進行音視頻通話,通常延時在 300ms 以內;
2)(主麥、輔麥)主播與粉絲互動場景;主播說話,而粉絲以文字、圖片、送禮物等方式 進行互動;這種差別造成一次互動的延時在 3000ms 以上,想象一下如下互動場景:
a)進場特效播放完依然沒有收到問候; b)當主播與粉絲一起玩“王者榮耀”時需要偷塔時,無法滿足; c)當主播與主播 PK 時,其中一個主播最後幾秒想拉票時,無法滿足。
如何提升直播過程中三個要素之間的互動,讓主播與主播之間、主播與粉絲之間達到一致 的用戶體驗?優酷直播流媒體團隊做了低延時流媒體技術的探索實踐,實現了在用戶體驗不下 降的基礎上,讓主播與主播延時<300ms,主播與粉絲延時<600ms,解決了直播間各類互動問題。
二、作繭自縛-傳統解決方案
傳統直播解決方案中主播之間以實時通信的方式傳輸延時小於 300ms,但是主播與觀眾之 間通過鏈路傳輸、CDN 分發整個延時往往在 3000ms 左右;如下圖:
從圖上我們可以看到產生延時的主要原因就是 RTMP 傳輸鏈路、CDN 環節、觀眾播放器緩 存三個環節產生;如果想要提升用戶的體驗,就必然從這三個環節上做改動,尤其是 CDN 把 持了傳輸鏈路環節,然而 CDN 不是你想改就能改的。
基於這樣的分析我們可以得出這樣的結論:
1)視頻 CDN 大大減少了開發人員的工作量;
2)你能做多好,取決於你控制的鏈路有多長;
3)CDN 側不可控,所以等待 CDN 的改變也遙遙無期;
4)CDN 側不可控,所以做一個和服務器交互的低延時播放器也沒戲;
5)傳統的解決方案是一張溫柔而又可怕的溫床。
三、蛻變之痛-低延時直播系統
針對上面的問題,我們解決方案簡單粗暴:做一個全鏈路都可以控制的流媒體傳輸系統, 如下圖:
1. 山重水複疑無路-項目挑戰
想好就做,但是蠻幹往往沒有好結果。這個設計使用 CDN 的思想改造了整個實時通信系 統,既兼顧 CDN 的大併發分發,又兼顧實時通信的低延時。無論是談實時通信系統還是談 CDN 都不是個小題目,何況兩個融合的系統,這裡面“水很深”“坑很多”。
然而挑戰還不止這些,實際的工程中,如何降低延時、如何保證流暢率往往有是相互矛盾 的話題,降低延時就要降低播放側 buffer 和服務側的 buffer,隨之卡頓率就會上升;而想流暢率 上升就要增大 buffer,隨之延時就變得更長;無論怎麼調整 buffer,問題都這裡,如何解決呢?
2.柳暗花明又一村-解決方案
低延時直播系統根據具體業務需求,融合 CDN、私有實時通信協議、WebRTC、雲原生等 技術完美解決了項目的各類苛刻要求,把問題模型轉換為技術角度看:
1)延時的產生及可控性分析:
從上圖我們可以看出來,可控的唯二也就是傳輸層、播放器 buffer 兩部分了。在低延時項 目中 RDN 系統控制了整個傳輸過程,優化了每一個細節,把延時降至 118ms 以內,低延時播 放器自適應動態控制 buffer 大小、嚴格控制音視頻加減速,保證流暢率的基礎上又使延時在 415ms 以內。通過控制播放側目標延時實現流暢優先、延時優先兩種策略,滿足主播連麥互動、 粉絲互動兩種業務場景。
2)CDN 進階為 RDN 系統
傳統的 CDN、視頻會議系統可以自行查看網上的方案,RDN 系統是一個融合 CDN 架構, 並以視頻會議媒體服務器為節點的系統。RDN 在進行媒體傳輸採用懶加載的方式進行,當主播 把流傳輸至接收的邊緣節點,此時如果有觀眾播放流,會通過 GSLB 返回最近的邊緣節點並進 行資源的索引把流快速的下發至播放側的傳輸 SDK。媒體流的分發示意圖如下:
3.唯快不破-傳輸延時如何降至最低
傳輸延時、播放側延時是唯二可控的部分,且看我們如何把傳輸降到最低:
1)播放器進階為低延時播放器 低延時播放器是系統中延時控制的重要環節,是系統中唯一延時可控且可調的部分。相比
於傳統播放器功能既要滿足流暢率、秒開率、音畫同步等用戶指標,又要保證延時足夠低。低
延時播放器架構圖:
4.用戶體驗第一-低延時場景下如何保證用戶體驗
低延時播放器通過定製優化後的 neteq,抵抗網絡的抖動、丟包等問題,顯著提升弱網情況 下的用戶體驗,通過濾波後的音畫同步方案,保證在音視頻快速加減速同時又能保證用戶的體驗。
1)扁鵲全鏈路監控系統 扁鵲系統收集端側、服務器側日誌,不但整個鏈路的服務質量,也用於排查各類線上問題。
四、羽化之美-數據報告
在流暢率、秒開率不低於傳統直播方案的場景下,互動延時指標大幅降低 86%。系統自 2017 年穩定運行至今,為直播用戶提供了低延時互動、點擊即見、清晰、流暢的高質量互動直播間。 並支撐了來瘋秀場 PK,低延時直播各類場景,保證了來瘋兩年多的各類比賽順利進行。
五、回顧歷史-我的思考
低延時直播系統是由傳統直播技術、實時通信技術、WebRTC 技術融合,專為互動直播而 生的系統。達到了文字和音視頻同步的效果,像“歡迎大哥”“拉拉票”、“打他”這些歡迎、拉票 等直播互動再也不需要等待。回顧整個系統的誕生,我的技術思想也在逐漸的變化,回想初次 接觸這三個技術:
1)傳統直播技術 = RTMP、CDN、ijkplayer 2)實時通信技術 = MCU、SIP、RTP/RTCP
3)WebRTC 技術 = JSEP、P2P 、SFU、ICE、SDP、neteq 後來深入瞭解這些技術細節、互動直播業務的需求、開發過程中的痛點,開始思考可以用
這些技術再往前走一步,自研一套低延時直播系統一勞永逸的解決這些問題。經過前期詳細論
證確定正確方向後,雖然過程困難重重,秉著“只要路對了就不怕遠”“只要精神不滑坡,方法總 比困難多的”精神,最終還是安全的抵達了對岸。
本章內容出自《智慧文娛》電子書,118篇精選文章,900頁豐富呈現,覆蓋8大技術棧,縱覽文娛技術全景。阿里文娛團隊匠心出品,點擊免費下載完整版!