揭秘阿里云 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在网页上已经无法再使用。客户要么选择延迟非常大的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的客户来说是个好消息,不需要为直播和通信分别开发软件了,同时也简化了直播连麦场景的实现。

目录
相关文章
|
6月前
|
前端开发 JavaScript API
阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
【1月更文挑战第15天】【1月更文挑战第72篇】阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
178 6
|
6月前
|
弹性计算 Java API
阿里云OpenAPI的依赖文件通常在阿里云官方文档或者SDK的GitHub仓库中可以找到
【1月更文挑战第5天】【1月更文挑战第21篇】 阿里云OpenAPI的依赖文件通常在阿里云官方文档或者SDK的GitHub仓库中可以找到
200 1
|
26天前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
46 7
|
2月前
|
编解码 人工智能 安全
阿里云首批卓越级通过中国信通院超低延时直播性能分级评估
近期举办的2024“可信云大会”上,中国信通院正式发布了2024年上半年音视频领域最新评估结果。阿里云超低延时直播,以首批卓越级,通过中国信通院超低延时直播性能及服务质量分级测试。
阿里云首批卓越级通过中国信通院超低延时直播性能分级评估
|
3月前
|
Java 开发工具
通过Java SDK调用阿里云模型服务
在阿里云平台上,可以通过创建应用并使用模型服务完成特定任务,如生成文章内容。本示例展示了一段简化的Java代码,演示了如何调用阿里云模型服务生成关于“春秋战国经济与文化”的简短文章。示例代码通过设置系统角色为历史学家,并提出文章生成需求,最终处理并输出生成的文章内容。在实际部署前,请确保正确配置环境变量中的密钥和ID,并根据需要调整SDK导入语句及类名。更多详情和示例,请参考相关链接。
|
4月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
网络协议 安全 调度
阿里云公共DNS发布支持鸿蒙系统版的SDK
阿里云公共DNS发布支持鸿蒙系统版SDK,赋能鸿蒙开发者快速接入阿里云公共DNS服务。公共DNS将帮助接入的鸿蒙应用免除LocalDNS劫持困扰、解析加速、精准调度。
|
5月前
|
算法 小程序 开发工具
视觉智能开放平台操作报错合集之同样的图片路径(上海阿里云),sdk报错code.400,是什么原因
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
|
6月前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
116 4
|
开发工具 开发者
使用阿里云的 OpenAPI SDK 时经常遇到调用失败的问题
使用阿里云的 OpenAPI SDK 时经常遇到调用失败的问题
278 1