揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
簡介:?RTS NetSDK是未來直播和通信一體化SDK的基石。在RTS NetSDK之上,加一個Multimedia Framework,以及QoS消息處理,就可以構成一個一體化SDK。這對于已經(jīng)有自己的Framework的客戶來說是個好消息,不需要為直播和通信分別開發(fā)軟件了,同時也簡化了直播連麥場景的實現(xiàn)。
這個夏天,沒什么能夠比一場酣暢淋漓的奧運比賽來的過癮。但是,在視頻平臺直播觀看比賽也有痛點:“卡頓”和“延時”。受限于不同地域、復雜的網(wǎng)絡情況、傳輸速度等原因,當您還在為賽點焦灼的時候,隔壁已經(jīng)傳來歡呼聲,觀賽興致瞬間全無。為了打造更加流暢穩(wěn)定低延時的直播體驗,越來越多企業(yè)關注低延時直播技術應用。
阿里云低延時直播RTS(Real-time Streaming)是在視頻直播的基礎上,進行全鏈路延時監(jiān)控、CDN傳輸協(xié)議改造、UDP等底層技術優(yōu)化,通過集成直播播放端SDK,支持千萬級并發(fā)場景下的節(jié)點間毫秒級延時直播能力,彌補了傳統(tǒng)直播3~6秒延時的問題,保障低延時、低卡頓、秒開流暢的極致直播觀看體驗。
為了能夠降低直播的端到端延時,2020年阿里云正式推出全球?qū)崟r傳輸網(wǎng)絡GRTN (Global Real Time Network) ,是部署在邊緣云節(jié)點之上的超低延時、全分布式下沉的通信級流媒體傳輸網(wǎng)絡,用于支持視頻會議、視頻直播、實時音視頻等服務。要使用GRTN提供的短延遲/實時傳輸服務,客戶端可以通過瀏覽器的webrtc能力接入,也可以自行開發(fā)客戶端協(xié)議棧來接入。
RTS NetSDK是什么?
低延時直播SDK是由RTS NetSDK、推流 SDK和播放器SDK組成。其中,推流SDK將編碼器輸出的音視頻幀發(fā)送給RTS NetSDK,播放器SDK從RTS NetSDK以幀的形式讀取音頻PCM數(shù)據(jù)和視頻H264/H265數(shù)據(jù)。?
Example: ffmpeg集成RTS NetSDK后拉ARTC流
RTS NetSDK是基于GRTN開發(fā)運行在客戶端的協(xié)議棧。RTS NetSDK通過UDP傳輸層協(xié)議和GRTN上的SFU通訊,收發(fā)音視頻數(shù)據(jù)。考慮網(wǎng)絡條件未知性,RTS NetSDK集成了WebRTC的QoS算法來適應網(wǎng)絡變化,從而提供優(yōu)質(zhì)的音視頻傳輸服務。RTS NetSDK的輕量化設計使其非常容易被諸如ffmpeg,obs一類的開源框架所集成。
?RTS客戶端構成
RTS NetSDK承擔推流拉流對接阿里云RTS服務橋梁,以包體積小、集成簡單、對現(xiàn)有業(yè)務沒有入侵為主要特點,幫助直播客戶簡單快速的升級傳統(tǒng)直播到阿里云RTS直播。
RTS NetSDK 支持多平臺,Android/iOS/MacOS/linux/Windows/RTOS, 支持多個開源項目集成的接入代碼,ijkPlayer、obs、FFmpeg,而且阿里云推流SDK和播放器SDK已經(jīng)內(nèi)置了RTS直播推拉流能力。
RTMP是基于TCP傳輸?shù)?#xff0c;RTS是基于UDP傳輸?shù)?。在網(wǎng)絡穩(wěn)定帶寬足夠條件下,RTS對比rtmp沒有多少優(yōu)勢,但這種理想情況是比較難以保證的。傳輸協(xié)議上的差異,使得RTMP對于變化的網(wǎng)絡沒有太多的QoS手段,完全依賴TCP的擁塞控制。這種擁塞控制不以低延遲為目標。阿里云的RTS引入WebRTC的QoS技術,對于網(wǎng)絡丟包有更好的容忍度。出色的帶寬估計和擁塞控制,提供了細膩的網(wǎng)絡使用策略。
另外,在Adobe Flash Player停止更新,RTMP在網(wǎng)頁上已經(jīng)無法再使用??蛻粢催x擇延遲非常大的HLS技術,或選擇WebRTC技術。RTS H5版本本質(zhì)上是WebRTC,可以在網(wǎng)頁上運行。
產(chǎn)品優(yōu)勢
低延遲
| 分發(fā)方案 | 特點 | 延遲 |
| HLS | 支持廣泛,類文件加速,分發(fā)技術比較成熟 | 一般10s以上 |
| RTMP | 多用于推流,國內(nèi)遍地開花。用于客戶端分發(fā)并不是主流 | 一般5s以上 |
| FLV | 多用于客戶端分發(fā),為目前國內(nèi)主流方案 | 一般5s以上 |
| 阿里云RTS直播 | 使用udp傳輸技術 | 500ms左右(基于實驗室數(shù)據(jù)) |
HLS 直播因為其TS文件切片--整片讀取的機制,其延遲至少都在一個gop以上。
RTMP、FLV直播,為了保證客戶端的播放順暢,往往會讓客戶端保持5秒以上的緩存。
阿里云RTS直播,基于udp傳輸技術,全鏈路針對延遲優(yōu)化,最新v1.8.0版本已經(jīng)可以將延遲降低到500毫秒左右。
抗弱網(wǎng)
阿里云RTS直播是基于UDP傳輸?shù)?#xff0c;通過應用WebRTC的先進技術(比如BWE、jitter buffer、NetEQ、FEC、NACK等QoS機制)以及自研的抗弱網(wǎng)技術,在復雜易變的用戶網(wǎng)絡環(huán)境中,比基于TCP傳輸?shù)闹辈ビ兄玫牧鲿扯群脱舆t。
包體積小
RTS NetSDK擁有輕巧的包體積,以最新版本Android 和iOS為例:
| 平臺 | 增量大小 |
| iOS | 755 KB(arm64) |
| Android | 0.9MB(arm64) |
易集成
直播客戶大多都已經(jīng)有了成型的直播推流和直播拉流能力。RTS NetSDK以庫的形式被集成進客戶現(xiàn)有的SDK,實現(xiàn)低成本升級,且兼容之前的業(yè)務邏輯。阿里云RTS直播已經(jīng)支持到傳統(tǒng)直播的基本所有特性。
| 能力類型 | RTS直播支持情況 |
| 視頻編碼 | h264、h265 |
| 音頻編碼 | aac、opus、g722 |
| 音頻采樣率 | 44100、48k、16000 (g722) |
| 視頻SEI | 支持 |
| 私有NAL 拓展 | 即便和rtp定義類型沖突,也做到了支持 |
| rtmp推流artc拉流 | 支持 |
| artc推流rtmp/hls拉流 | 支持 |
| artc推流artc拉流 | 支持 |
| 加密 | 阿里云KMS加密體系 |
產(chǎn)品應用架構
?RTS直播將支持傳統(tǒng)直播的基本全部能力,如直播錄制、防盜鏈、導播臺等。
RTS NetSDK可以被集成進拉流側(cè)的各種產(chǎn)品中去。另外提供了集成到ffplay、ijkPlayer的源碼,客戶可以直接使用或者參照著修改。阿里云播放器SDK已經(jīng)內(nèi)置了RTS NetSDK的拉流能力。
RTS NetSDK也可以被集成進端側(cè)的產(chǎn)品中去,RTS NetSDK賦予推流產(chǎn)品RTS直播的能力,同時也提供了集成到ffmpeg、obs的源碼。阿里云推流SDK已經(jīng)內(nèi)置了RTS NetSDK推流能力。
RTS NetSDK是未來直播和通信一體化SDK的基石。在RTS NetSDK之上,加一個Multimedia Framework,以及QoS消息處理,就可以構成一個一體化SDK。這對于已經(jīng)有自己的Framework的客戶來說是個好消息,不需要為直播和通信分別開發(fā)軟件了,同時也簡化了直播連麥場景的實現(xiàn)。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “云上企业”是企业面向未来的战略选择
- 下一篇: EMR StarRocks 极速数据湖分