QuestMobile《2020中國移動直播行業「戰疫」專題報告》數據顯示, 疫情期間,看直播成爲休閒娛樂、獲取資訊、上課學習的主要方式,一些高度依賴線下場景的行業也紛紛經過直播進行自救,線上轉型直播賣貨,政府部門也經過直播形式進行招商、推廣農產品等。電商平臺在疫情期間加大對直播的支持力度,爲滯銷農產品直播、雲賣車、雲賣房、實體店直播賣貨提供平臺和支持。windows
直播破圈加速進行,除了各種網絡紅人外,國家博物館、知名酒吧、景點等線下主體爲網民提供線上逛博物館、雲蹦迪、雲旅遊服務,吸引了大批年輕用戶參與。直播再也不是線上娛樂內容的生產工具,而是與商業業務場景結合愈來愈緊密,逐漸演變爲基礎的業務工具。安全
直播的及時性和互動性讓他成爲信息觸達、互動溝通的新媒介,但直播的實時互動效果夠好了嗎?傳統的直播技術延遲很是大,從觀衆評論到看到主播給出反饋通常要在5-10秒以上。網絡
在線教育,學生提問,老師都講到下一個知識點了,再返回來回答。
電商直播,詢問寶貝信息,主播「視而不理」。
打賞後遲遲聽不到主播的口播感謝。
在別人的吶喊聲知道球進了,你看的仍是直播嗎?
高延時影響了直播互動體驗,阻礙了直播在一些場景的落地,特別在電商直播,直播間的評論提問是觀衆和主播互動的一個重要手段,主播的實時互動反饋對直播間的活躍度和交易達成相當重要。架構
使用常規的直播方案(rtmp 推流,FLV/RTMP/HLS 播放),延遲大概在5-10秒左右,這些延遲主要來自如下幾個方面:併發
這部分來自於畫面從傳感器模數轉換到音視頻編碼以及輸出畫面到網絡的buffer。最主要的仍是來自於編碼的延遲,這與推流軟件的編碼參數設置有關,如是否有B幀,幀參考關係設置,壓縮性能等。以OBS爲例,當輸出設置以下圖時,延遲達到最低(1s之內):ide
不過,上圖的配置,在MAC和windows 平臺上的效果也不同,mac 平臺的延遲在幾百ms,而windows 能夠作到50ms (實際案例數據)。推流網絡方面,主播的推流網絡通常都比較穩定,有的會拉專線,質量比較可靠。工具
這分爲兩部分,一部分是網絡傳輸延遲。CDN內部有四段網絡傳輸,假設每段網絡傳輸帶來的延遲是20ms,那這四段延遲即是100ms;此外,使用RTMP幀爲傳輸單位,意味着每一個節點都要收滿一幀以後才能啓動向下游轉發的流程;CDN爲了提高併發性能,會有必定的優化發包策略,會增長部分延遲。在網絡抖動的場景下,延遲就更加沒法控制了,可靠傳輸協議下,一旦有網絡抖動,後續的發送流程都將阻塞,須要等待前序包的重傳。性能
這個是延遲的主要來源。公網環境千差萬別,推流、CDN傳輸、播放接收這幾個環節任何一個環節發生網絡抖動,都會影響到播放端。爲了對抗前邊鏈路的抖動,播放器的常規策略是保留6s 左右的媒體buffer。
阿里雲低延時直播(Real-time Streaming)學習
傳統的直播技術,已經不能知足對互動要求更高的直播要求,爲此,2019年阿里雲與淘寶直播共同推出超低延時直播服務RTS(Real-time Streaming),該方案基於WebRTC實現,採用UDP傳輸協議打造,實現能夠承載大規模併發,端到端延時1秒內的低延時直播體驗。因爲RTS服務部署於阿里雲CDN節點,複用CDN的節點和網絡資源,在接入成本、節點覆蓋、承載能力上實現了平衡。通過一年多的不斷磨鍊,總體體驗和服務也更爲完善和成熟。優化
從傳輸的細節來看,以下圖所示:
上圖與如今直播系統的架構圖並沒有大的區別,改變的地方在於客戶端到CDN節點進行播放的鏈路,由RTMP協議切換爲RTP協議,TCP協議換成UDP協議。RTS服務進行了服務與節點雙重升級,同時針對全鏈路直播指標進行監控和針對性優化,以及經過智能調度系統以及網絡擁塞、抗弱網優化、緩衝策略等進行一系列底層核心技術優化,實現RTP over UDP更好地對抗公網的丟包,使得播放器上收到的流質量相對RTMP over TCP更加穩定,這樣一來,播放器就能夠下降buffer,不用像之前那樣設置6s 的buffer來對抗抖動,如今只須要設置1秒左右就OK了,總體延時能夠控制在1-1.5S左右。
RTS目前提供兩種接入服務:
一、基於WebRTC開放協議升級網絡模塊
對於自研播放器或者使用開源播放器的用戶,阿里雲提供與標準WebRTC協議對接方案,在現有的直播業務新增一個RTS播流域名,一個推流兩種方式拉流。推流側不用改造,僅升級播放器網絡模塊,拉取超低延時流播放,這樣讓底層網絡對接更透明開放,客戶端自主可控。
上圖是普通播放器的架構。播放器使用 FFmpeg 打開網絡鏈接,讀取音視頻幀後會放入播放器緩衝,以後會依次對它進行解碼、音視頻同步及渲染。
接入低延遲直播系統後,總體架構如圖下面部分:FFmpeg 增長低延遲直播插件支持私有協議;將播放器的緩衝設置爲1秒,FFmpeg 輸出的音視頻幀直接送入解碼器進行解碼,而後同步,渲染。
另外,RTS網絡SDK爲播放器接入阿里雲低成本多協議低延時網絡傳輸基礎設施提接口。該SDK具備很是友好的API,很是穩定的設計,在音視頻同步,秒開,流暢度等指標也作了不少優化。API設計上提供了ffmpeg demux插件,能夠像調用其餘ffmpeg demux插件同樣被集成進應用程序,另外也提供非ffmpeg接口。
使用第二種方法,能夠更加快速的實現RTS服務,即在現有的直播業務新增一個RTS播流域名,而後集成阿里雲播放SDK,用戶端經過不一樣URL參數播放器自動識別,便可實現低延時直播服務。阿里雲播放器是一個通用的播放器sdk,除了支持點播和直播的播放功能外,深度融合視頻雲業務,如支持視頻的加密播放、安全下載、清晰度切換、短視頻等業務場景,爲用戶提供簡單、快速、安全、穩定的視頻播放服務。
經驗證,阿里雲RTS直播核心指標表現優異:相同卡頓率下,RTS直播延時下降75%,而且在相同網絡延時和丟包率指標下,RTS直播播放成功率、卡頓率、秒開率等指標表現均有所提高,大幅優化直播體驗。RTS已經在淘寶直播中大規模應用,下降了淘寶直播的延遲,提高了用戶的互動體驗,通過線上驗證發現,低延遲直播對電商直播的成交有明顯的促進做用,其中 UV 轉化率提高4%,GMV 提高5%。目前在一些教育行業、電商、遊戲直播等領域,已經有衆多知名客戶接入RTS服務並上線。