1. 程式人生 > 其它 >揭祕阿里雲 RTS SDK 是如何實現直播降低延遲和卡頓

揭祕阿里雲 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資料。


Example: ffmpeg整合RTS NetSDK後拉ARTC流

RTS NetSDK是基於GRTN開發執行在客戶端的協議棧。RTS NetSDK通過UDP傳輸層協議和GRTN上的SFU通訊,收發音視訊資料。考慮網路條件未知性,RTS NetSDK集成了WebRTC的QoS演算法來適應網路變化,從而提供優質的音視訊傳輸服務。RTS NetSDK的輕量化設計使其非常容易被諸如ffmpeg,obs一類的開源框架所整合。


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 多用於客戶端分發,為目前國內主流方案 一般5s以上
阿里雲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 直播將支援傳統直播的基本全部能力,如直播錄製、防盜鏈、導播臺等。

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 的客戶來說是個好訊息,不需要為直播和通訊分別開發軟體了,同時也簡化了直播連麥場景的實現。

「視訊雲技術」你最值得關注的音視訊技術公眾號,每週推送來自阿里雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。公眾號後臺回覆【技術】可加入阿里雲視訊雲產品技術交流群,和業內大咖一起探討音視訊技術,獲取更多行業最新資訊。