天天看點

如何建構低延時的直播體驗,讓互動更實時?

QuestMobile《2020中國移動直播行業“戰疫”專題報告》資料顯示, 疫情期間,看直播成為休閑娛樂、擷取資訊、上課學習的主要方式,一些高度依賴線下場景的行業也紛紛通過直播進行自救,線上轉型直播賣貨,政府部門也通過直播形式進行招商、推廣農産品等。電商平台在疫情期間加大對直播的支援力度,為滞銷農産品直播、雲賣車、雲賣房、實體店直播賣貨提供平台和支援。

直播破圈加速進行,除了各類網絡紅人外,國家博物館、知名酒吧、景點等線下主體為網民提供線上逛博物館、雲蹦迪、雲旅遊服務,吸引了大批年輕使用者參與。直播不再是線上娛樂内容的生産工具,而是與商業業務場景結合越來越緊密,逐漸演變為基礎的業務工具。

如何建構低延時的直播體驗,讓互動更實時?

直播的及時性和互動性讓他成為資訊觸達、互動溝通的新媒介,但直播的實時互動效果夠好了嗎?傳統的直播技術延遲非常大,從觀衆評論到看到主播給出回報一般要在5-10秒以上。

我們來看下幾個典型的尴尬場景:

  1. 線上教育,學生提問,老師都講到下一個知識點了,再傳回來回答。
  2. 電商直播,詢問寶貝資訊,主播“視而不理”。
  3. 打賞後遲遲聽不到主播的口播感謝。
  4. 在别人的呐喊聲知道球進了,你看的還是直播嗎?

高延時影響了直播互動體驗,阻礙了直播在一些場景的落地,特别在電商直播,直播間的評論提問是觀衆和主播互動的一個重要手段,主播的實時互動回報對直播間的活躍度和交易達成至關重要。

使用正常的直播方案(rtmp 推流,FLV/RTMP/HLS 播放),延遲大概在5-10秒左右,這些延遲主要來自以下幾個方面:

如何建構低延時的直播體驗,讓互動更實時?
如何建構低延時的直播體驗,讓互動更實時?
  1. 推流側buffer, 這部分來自于畫面從傳感器模數轉換到音視訊編碼以及輸出畫面到網絡的buffer。最主要的還是來自于編碼的延遲,這與推流軟體的編碼參數設定有關,如是否有B幀,幀參考關系設定,壓縮性能等。以OBS為例,當輸出設定如下圖時,延遲達到最低(1s以内):
    如何建構低延時的直播體驗,讓互動更實時?

不過,上圖的配置,在MAC和windows 平台上的效果也不一樣,mac 平台的延遲在幾百ms,而windows 可以做到50ms (實際案例資料)。推流網絡方面,主播的推流網絡一般都比較穩定,有的會拉專線,品質比較可靠。

  1. CDN鍊路延遲, 這分為兩部分,一部分是網絡傳輸延遲。CDN内部有四段網絡傳輸,假設每段網絡傳輸帶來的延遲是20ms,那這四段延遲便是100ms;此外,使用RTMP幀為傳輸機關,意味着每個節點都要收滿一幀之後才能啟動向下遊轉發的流程;CDN為了提升并發性能,會有一定的優化發包政策,會增加部分延遲。在網絡抖動的場景下,延遲就更加無法控制了,可靠傳輸協定下,一旦有網絡抖動,後續的發送流程都将阻塞,需要等待前序包的重傳。
  2. 播放端buffer,這個是延遲的主要來源。公網環境千差萬别,推流、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服務:

RTS目前提供兩種接入服務:

1、基于WebRTC開放協定更新網絡子產品

對于自研播放器或者使用開源播放器的使用者,阿裡雲提供與标準WebRTC協定對接方案,在現有的直播業務新增一個RTS播流域名,一個推流兩種方式拉流。推流側不用改造,僅更新播放器網絡子產品,拉取超低延時流播放,這樣讓底層網絡對接更透明開放,用戶端自主可控。

如何建構低延時的直播體驗,讓互動更實時?
如何建構低延時的直播體驗,讓互動更實時?

上圖是普通播放器的架構。播放器使用 FFmpeg 打開網絡連接配接,讀取音視訊幀後會放入播放器緩沖,之後會依次對它進行解碼、音視訊同步及渲染。

接入低延遲直播系統後,整體架構如圖下面部分:FFmpeg 增加低延遲直播插件支援私有協定;将播放器的緩沖設定為1秒,FFmpeg 輸出的音視訊幀直接送入解碼器進行解碼,然後同步,渲染。

另外,RTS網絡SDK為播放器接入阿裡雲低成本多協定低延時網絡傳輸基礎設施提接口。該SDK具有非常友好的API,非常穩定的設計,在音視訊同步,秒開,流暢度等名額也做了很多優化。API設計上提供了ffmpeg demux插件,可以像調用其他ffmpeg demux插件一樣被內建進應用程式,另外也提供非ffmpeg接口。

2. 內建阿裡雲RTS播放器

如何建構低延時的直播體驗,讓互動更實時?

使用第二種方法,可以更加快速的實作RTS服務,即在現有的直播業務新增一個RTS播流域名,然後內建

阿裡雲播放SDK

,使用者端通過不同URL參數播放器自動識别,即可實作低延時直播服務。阿裡雲播放器是一個通用的播放器sdk,除了支援點播和直播的播放功能外,深度融合視訊雲業務,如支援視訊的加密播放、安全下載下傳、清晰度切換、短視訊等業務場景,為使用者提供簡單、快速、安全、穩定的視訊播放服務。

結束語

經驗證,阿裡雲RTS直播核心名額表現優異:相同卡頓率下,RTS直播延時降低75%,并且在相同網絡延時和丢包率名額下,RTS直播播放成功率、卡頓率、秒開率等名額表現均有所提升,大幅優化直播體驗。RTS已經在淘寶直播中大規模應用,降低了淘寶直播的延遲,提升了使用者的互動體驗,經過線上驗證發現,低延遲直播對電商直播的成交有明顯的促進作用,其中 UV 轉化率提升4%,GMV 提升5%。目前在一些教育行業、電商、遊戲直播等領域,已經有衆多知名客戶接入RTS服務并上線。