揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
簡介:?RTS NetSDK是未來直播和通信一體化SDK的基石。在RTS NetSDK之上,加一個Multimedia Framework,以及QoS消息處理,就可以構成一個一體化SDK。這對于已經有自己的Framework的客戶來說是個好消息,不需要為直播和通信分別開發軟件了,同時也簡化了直播連麥場景的實現。
這個夏天,沒什么能夠比一場酣暢淋漓的奧運比賽來的過癮。但是,在視頻平臺直播觀看比賽也有痛點:“卡頓”和“延時”。受限于不同地域、復雜的網絡情況、傳輸速度等原因,當您還在為賽點焦灼的時候,隔壁已經傳來歡呼聲,觀賽興致瞬間全無。為了打造更加流暢穩定低延時的直播體驗,越來越多企業關注低延時直播技術應用。
阿里云低延時直播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在網頁上已經無法再使用??蛻粢催x擇延遲非常大的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的客戶來說是個好消息,不需要為直播和通信分別開發軟件了,同時也簡化了直播連麥場景的實現。
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “云上企业”是企业面向未来的战略选择
- 下一篇: EMR StarRocks 极速数据湖分