資安

揭祕阿里雲 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數據。

image

Example: ffmpeg集成RTS NetSDK後拉ARTC流

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

image

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加密體系

產品應用架構

image

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

Leave a Reply

Your email address will not be published. Required fields are marked *