如何构建低延时直播体验,让互动更实时?
QuestMobile《2020中国移动直播行业“战疫”专题报告》数据显示, 疫情期间,看直播成为休闲娱乐、获取资讯、上课学习的主要方式,一些高度依赖线下场景的行业也纷纷通过直播进行自救,线上转型直播卖货,政府部门也通过直播形式进行招商、推广农产品等。电商平台在疫情期间加大对直播的支持力度,为滞销农产品直播、云卖车、云卖房、实体店直播卖货提供平台和支持。
直播破圈加速进行,除了各类网络红人外,国家博物馆、知名酒吧、景点等线下主体为网民提供线上逛博物馆、云蹦迪、云旅游服务,吸引了大批年轻用户参与。直播不再是线上娱乐内容的生产工具,而是与商业业务场景结合越来越紧密,逐渐演变为基础的业务工具。
直播的及时性和互动性让他成为信息触达、互动沟通的新媒介,但直播的实时互动效果够好了吗?传统的直播技术延迟非常大,从观众评论到看到主播给出反馈一般要在5-10秒以上。
我们来看下几个典型的尴尬场景:
- 在线教育,学生提问,老师都讲到下一个知识点了,再返回来回答。
- 电商直播,询问宝贝信息,主播“视而不理”。
- 打赏后迟迟听不到主播的口播感谢。
- 在别人的呐喊声知道球进了,你看的还是直播吗?
高延时影响了直播互动体验,阻碍了直播在一些场景的落地,特别在电商直播,直播间的评论提问是观众和主播互动的一个重要手段,主播的实时互动反馈对直播间的活跃度和交易达成至关重要。
使用常规的直播方案(rtmp 推流,FLV/RTMP/HLS 播放),延迟大概在5-10秒左右,这些延迟主要来自以下几个方面:
- 推流侧buffer, 这部分来自于画面从传感器模数转换到音视频编码以及输出画面到网络的buffer。最主要的还是来自于编码的延迟,这与推流软件的编码参数设置有关,如是否有B帧,帧参考关系设置,压缩性能等。以OBS为例,当输出设置如下图时,延迟达到最低(1s以内):
不过,上图的配置,在MAC和windows 平台上的效果也不一样,mac 平台的延迟在几百ms,而windows 可以做到50ms (实际案例数据)。推流网络方面,主播的推流网络一般都比较稳定,有的会拉专线,质量比较可靠。
- CDN链路延迟, 这分为两部分,一部分是网络传输延迟。CDN内部有四段网络传输,假设每段网络传输带来的延迟是20ms,那这四段延迟便是100ms;此外,使用RTMP帧为传输单位,意味着每个节点都要收满一帧之后才能启动向下游转发的流程;CDN为了提升并发性能,会有一定的优化发包策略,会增加部分延迟。在网络抖动的场景下,延迟就更加无法控制了,可靠传输协议下,一旦有网络抖动,后续的发送流程都将阻塞,需要等待前序包的重传。
- 播放端buffer,这个是延迟的主要来源。公网环境千差万别,推流、CDN传输、播放接收这几个环节任何一个环节发生网络抖动,都会影响到播放端。为了对抗前边链路的抖动,播放器的常规策略是保留6s 左右的媒体buffer。
阿里云低延时直播(Real-time Streaming)
传统的直播技术,已经不能满足对互动要求更高的直播要求,为此,2019年阿里云与淘宝直播共同推出超低延时直播服务RTS(Real-time Streaming),该方案基于WebRTC实现,采用UDP传输协议打造,实现可以承载大规模并发,端到端延时1秒内的低延时直播体验。由于RTS服务部署于阿里云CDN节点,复用CDN的节点和网络资源,在接入成本、节点覆盖、承载能力上实现了平衡。经过一年多的不断磨炼,整体体验和服务也更为完善和成熟。
阿里云低延时直播的技术架构:
从传输的细节来看,如下图所示:
上图与现在直播系统的架构图并无大的区别,改变的地方在于客户端到CDN节点进行播放的链路,由RTMP协议切换为RTP协议,TCP协议换成UDP协议。RTS服务进行了服务与节点双重升级,同时针对全链路直播指标进行监控和针对性优化,以及通过智能调度系统以及网络拥塞、抗弱网优化、缓冲策略等进行一系列底层核心技术优化,实现RTP over UDP更好地对抗公网的丢包,使得播放器上收到的流质量相对RTMP over TCP更加稳定,这样一来,播放器就可以降低buffer,不用像以前那样设置6s 的buffer来对抗抖动,现在只需要设置1秒左右就OK了,整体延时可以控制在1-1.5S左右。
如何接入RTS服务:
RTS目前提供两种接入服务:
1、基于WebRTC开放协议升级网络模块
对于自研播放器或者使用开源播放器的用户,阿里云提供与标准WebRTC协议对接方案,在现有的直播业务新增一个RTS播流域名,一个推流两种方式拉流。推流侧不用改造,仅升级播放器网络模块,拉取超低延时流播放,这样让底层网络对接更透明开放,客户端自主可控。
上图是普通播放器的架构。播放器使用 FFmpeg 打开网络连接,读取音视频帧后会放入播放器缓冲,之后会依次对它进行解码、音视频同步及渲染。
接入低延迟直播系统后,整体架构如图下面部分:FFmpeg 增加低延迟直播插件支持私有协议;将播放器的缓冲设置为1秒,FFmpeg 输出的音视频帧直接送入解码器进行解码,然后同步,渲染。
另外,RTS网络SDK为播放器接入阿里云低成本多协议低延时网络传输基础设施提接口。该SDK具有非常友好的API,非常稳定的设计,在音视频同步,秒开,流畅度等指标也做了很多优化。API设计上提供了ffmpeg demux插件,可以像调用其他ffmpeg demux插件一样被集成进应用程序,另外也提供非ffmpeg接口。
2. 集成阿里云RTS播放器
使用第二种方法,可以更加快速的实现RTS服务,即在现有的直播业务新增一个RTS播流域名,然后集成阿里云播放SDK,用户端通过不同URL参数播放器自动识别,即可实现低延时直播服务。阿里云播放器是一个通用的播放器sdk,除了支持点播和直播的播放功能外,深度融合视频云业务,如支持视频的加密播放、安全下载、清晰度切换、短视频等业务场景,为用户提供简单、快速、安全、稳定的视频播放服务。
结束语
经验证,阿里云RTS直播核心指标表现优异:相同卡顿率下,RTS直播延时降低75%,并且在相同网络延时和丢包率指标下,RTS直播播放成功率、卡顿率、秒开率等指标表现均有所提升,大幅优化直播体验。RTS已经在淘宝直播中大规模应用,降低了淘宝直播的延迟,提升了用户的互动体验,经过线上验证发现,低延迟直播对电商直播的成交有明显的促进作用,其中 UV 转化率提升4%,GMV 提升5%。目前在一些教育行业、电商、游戏直播等领域,已经有众多知名客户接入RTS服务并上线。
原文链接
本文为云栖社区原创内容,未经允许不得转载。
如何构建低延时直播体验,让互动更实时?相关推荐
- 基于 RTS 超低延时直播优化强互动场景体验
RTS 在阿里云视频直播的基础上进行底层技术优化,通过集成阿里云播放器 SDK,支持在千万级并发场景下节点间毫秒级延时直播的能力,弥补了传统直播存在 3~6 秒延时的问题,确保了超低延时.低卡顿.秒开 ...
- 低延时直播系统开发技术方案
直播系统开发 背景和需求 在直播系统开发刚刚兴起时,直播中的互动环节较少,主播单方面控场,因此延迟十几秒对用户体验影响较小.常见的直播大部分采用RTMP.HLS.FLV协议,技术成熟.兼容性较好.支持 ...
- 这么好用的低延时直播,网易云信将它开源了
谈起直播,没有人会感到陌生. 自上世纪末,流媒体直播技术兴起以来,伴随着网络基础设施的发展脚步,直播也同频共振般地起势.而近年来 AI.云计算.音视频等技术日趋成熟,以及新冠肺炎疫情带来的" ...
- 火山引擎、阿里云、腾讯云联合发布“超低延时“直播技术标准
2 月 25 日,在火山引擎举办的视频云科技原力峰会上,火山引擎与阿里云.腾讯云联合发布一项"超低延时直播协议信令标准".该标准首次正式定义了直播"客户端-服务器&quo ...
- 如何构建低延时的直播体验?摩杜云视频直播来帮忙!
从去年年底,因为受疫情的影响,看直播成为了休闲娱乐.获取资讯.上课学习的主要方式.一些高度依赖线下场景的行业也都纷纷通过直播进行自救,因此直播不在是线上娱乐内容的生产工具,而是与商业业务场景结合越来越 ...
- RTS超低延时直播技术:保障大型赛事直播零时差互动
2022卡塔尔世界杯呼啸而来. 11月20日开幕,28天赛期.64场比赛,国际足联主席因凡蒂诺预计,卡塔尔世界杯将吸引全球50亿观众,可以说2022卡塔尔世界杯是这个冬天当之无愧的「超级流量场」. 世 ...
- 低延时直播流媒体传输技术评谈
还是那句话,通用协议保证的是可用性,通用协议从不为特长而生.若目标是制造特长,就不能受限于通用协议的约束. "低延时"直播流媒体传输,包含特长,若重新设计传输协议,它需要满足: 传 ...
- 低延时直播与RTC融合架构设计②:直播与RTC低延时方案
本文整理自网易云信多媒体资深技术架构师吴桐在 QCon 全球软件开发大会上海站的演讲内容<超高清4K视频低延时直播与RTC融合架构设计>,为该系列的第二篇文章. 回顾该系列第一篇文章< ...
- 直播报名 | 超低延时直播架构解析
超低延时直播架构解析|百度智能视频云3.0全场景音视频技术解析第 4 期 直播详情 第4期:超低延时直播架构解析 时至今日,互联网直播经历了 4 年的高速期发展,用户对体验的要求也越来越高,传统的 5 ...
最新文章
- 禁止windows系统的自动运行功能
- IT职场人生系列之二十二:如何学习新语言(二)
- python定制框架知识点_我的第一个python web开发框架(25)——定制ORM(一)
- 使用HAproxy为阿里中间件做负载均衡。
- JavaFX仿windows文件管理器目录树
- C语言和设计模式(之模板模式)
- 利用 Python 插件 xlwings 读写 Excel
- 在asp.net 中实现只允许数字输入的文本框
- Ubuntu 截屏(或截图)
- office设置保护色
- 保护眼睛——设置WIN7和XP 窗体、Chrome、IE网页背景颜色
- angular2 路由ajax,angular2路由切换改变页面title的示例代码
- 计算机的拓扑 树状结构图,树状网络拓扑图模板分享
- linux解压apk文件,关于ipa和apk文件的解压
- 运用Python 模拟太阳-地球-月亮运动模型
- R语言绘图:条形图——barplot
- python判断是否为变位词_[python]变位词的判别与分类
- 数据科学与大数据技术——软科中国大学专业排名
- vscode代码索引_VS Code:自定义代码片断(Snippets)
- 7行代码制作一个超声波测距仪
热门文章
- 马冬晗学习计划表_一年时间提升学习和工作能力,我做对了这3点
- 蒙特卡洛分析_随机模拟:马尔科夫链蒙特卡洛采样MCMC与EM算法「2.3」
- linux 百度地图离线sdk,Android开放百度地图集成
- 使用sqlserver连接mysql服务_Sqlserver创建连接MySql的链接服务器
- java解析excel文件_1.3.1 python解析excel格式文件
- 打开多个界面_如何创建用户界面
- post 请求 argument type mismatch_Flask-RESTful 请求解析
- pep8 python 编码规范_如何用好python编码规范,写一手漂亮的代码
- 同比 数据模型 环比_历史数据模型解决方案-历史数据模型解决方案
- java jlist checkbox_JCheckBox检查Java中的JList中的切换逻辑时遇到问题