天天看點

揭秘阿裡雲 RTS SDK 是如何實作直播降低延遲和卡頓

作者:予濤 途坦

阿裡雲低延時直播RTS(Real-time Streaming)是在視訊直播的基礎上,進行全鍊路延時監控、CDN傳輸協定改造、UDP等底層技術優化,通過內建直播播放端SDK,支援千萬級并發場景下的節點間毫秒級延時直播能力,彌補了傳統直播3~6秒延時的問題,保障低延時、低卡頓、秒開流暢的極緻直播觀看體驗。

為了能夠降低直播的端到端延時,2020 年阿裡雲正式推出全球實時傳輸網絡 GRTN (Global Real Time Network) ,是部署在邊緣雲節點之上的超低延時、全分布式下沉的通信級流媒體傳輸網絡,用于支援視訊會議、視訊直播、實時音視訊等服務。要使用 GRTN 提供的短延遲 / 實時傳輸服務,用戶端可以通過浏覽器的 webrtc 能力接入,也可以自行開發用戶端協定棧來接入。

RTS NetSDK是什麼?

低延時直播SDK是由RTS NetSDK、推流 SDK和播放器SDK組成。其中,推流SDK将編碼器輸出的音視訊幀發送給RTS NetSDK,播放器SDK從RTS NetSDK以幀的形式讀取音頻PCM資料和視訊H264/H265資料。

揭秘阿裡雲 RTS SDK 是如何實作直播降低延遲和卡頓

Example: ffmpeg內建RTS NetSDK後拉ARTC流

RTS NetSDK是基于GRTN開發運作在用戶端的協定棧。RTS NetSDK通過UDP傳輸層協定和GRTN上的SFU通訊,收發音視訊資料。考慮網絡條件未知性,RTS NetSDK內建了WebRTC的QoS算法來适應網絡變化,進而提供優質的音視訊傳輸服務。RTS NetSDK的輕量化設計使其非常容易被諸如ffmpeg,obs一類的開源架構所內建。

揭秘阿裡雲 RTS SDK 是如何實作直播降低延遲和卡頓

RTS用戶端構成

RTS NetSDK承擔推流拉流對接阿裡雲RTS服務橋梁,以包體積小、內建簡單、對現有業務沒有入侵為主要特點,幫助直播客戶簡單快速的更新傳統直播到阿裡雲RTS直播。

RTS NetSDK 支援多平台,Android/iOS/MacOS/linux/Windows/RTOS, 支援多個開源項目內建的接入代碼,ijkPlayer、obs、FFmpeg,而且阿裡雲推流SDK和播放器SDK已經内置了RTS直播推拉流能力。

RTMP是基于TCP傳輸的,RTS是基于UDP傳輸的。在網絡穩定帶寬足夠條件下,RTS對比rtmp沒有多少優勢,但這種理想情況是比較難以保證的。傳輸協定上的差異,使得RTMP對于變化的網絡沒有太多的QoS手段,完全依賴TCP的擁塞控制。這種擁塞控制不以低延遲為目标。阿裡雲的RTS引入WebRTC的QoS技術,對于網絡丢包有更好的容忍度。出色的帶寬估計和擁塞控制,提供了細膩的網絡使用政策。

另外,在Adobe Flash Player停止更新,RTMP在網頁上已經無法再使用。客戶要麼選擇延遲非常大的HLS技術,或選擇WebRTC技術。RTS H5版本本質上是WebRTC,可以在網頁上運作。

産品優勢

低延遲

分發方案 特點 延遲
HLS 支援廣泛,類檔案加速,分發技術比較成熟 一般10s以上
RTMP 多用于推流,國内遍地開花。用于用戶端分發并不是主流 一般5s以上
FLV 多用于用戶端分發,為目前國内主流方案
阿裡雲RTS直播 使用udp傳輸技術 500ms左右(基于實驗室資料)

HLS 直播因為其TS檔案切片--整片讀取的機制,其延遲至少都在一個gop以上。

RTMP、FLV直播,為了保證用戶端的播放順暢,往往會讓用戶端保持5秒以上的緩存。

阿裡雲RTS直播,基于udp傳輸技術,全鍊路針對延遲優化,最新v1.8.0版本已經可以将延遲降低到500毫秒左右。

抗弱網

阿裡雲RTS直播是基于UDP傳輸的,通過應用WebRTC的先進技術(比如BWE、jitter buffer、NetEQ、FEC、NACK等QoS機制)以及自研的抗弱網技術,在複雜易變的使用者網絡環境中,比基于TCP傳輸的直播有着更好的流暢度和延遲。

包體積小

RTS NetSDK擁有輕巧的包體積,以最新版本Android 和iOS為例:

平台 增量大小
iOS 755 KB(arm64)
Android 0.9MB(arm64)

易內建

直播客戶大多都已經有了成型的直播推流和直播拉流能力。RTS NetSDK以庫的形式被內建進客戶現有的SDK,實作低成本更新,且相容之前的業務邏輯。阿裡雲RTS直播已經支援到傳統直播的基本所有特性。

能力類型 RTS直播支援情況
視訊編碼 h264、h265
音頻編碼 aac、opus、g722
音頻采樣率 44100、48k、16000 (g722)
視訊SEI 支援
私有NAL 拓展 即便和rtp定義類型沖突,也做到了支援
rtmp推流artc拉流
artc推流rtmp/hls拉流
artc推流artc拉流
加密 阿裡雲KMS加密體系

産品應用架構

揭秘阿裡雲 RTS SDK 是如何實作直播降低延遲和卡頓

RTS 直播将支援傳統直播的基本全部能力,如直播錄制、防盜鍊、導播台等。

RTS NetSDK 可以被內建進拉流側的各種産品中去。另外提供了內建到 ffplay、ijkPlayer 的源碼,客戶可以直接使用或者參照着修改。阿裡雲播放器 SDK 已經内置了 RTS NetSDK 的拉流能力。

RTS NetSDK 也可以被內建進端側的産品中去,RTS NetSDK 賦予推流産品 RTS 直播的能力,同時也提供了內建到 ffmpeg、obs 的源碼。阿裡雲推流 SDK 已經内置了 RTS NetSDK 推流能力。

RTS NetSDK 是未來直播和通信一體化 SDK 的基石。在 RTS NetSDK 之上,加一個 Multimedia Framework,以及 QoS 消息處理,就可以構成一個一體化 SDK。這對于已經有自己的 Framework 的客戶來說是個好消息,不需要為直播和通信分别開發軟體了,同時也簡化了直播連麥場景的實作。

掃碼入群和作者一起探讨音視訊技術

擷取更多視訊雲行業最新資訊👇

揭秘阿裡雲 RTS SDK 是如何實作直播降低延遲和卡頓
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。公衆号背景回複【技術】可加入阿裡雲視訊雲産品技術交流群,和業内大咖一起探讨音視訊技術,擷取更多行業最新資訊。