WebRTC降低直播延迟优化
Posted Geek.Fan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebRTC降低直播延迟优化相关的知识,希望对你有一定的参考价值。
摘要
曾经点播在视频传输中占据很大的比例,但如今越来越多的平台希望能够通过直播的方式增加观众的兴奋程度和参与度,同时直播时的延迟成为了一个关键的挑战。在音视频传输的过程中,在不同阶段都会产生延时,有设备端上的延时,设备端与服务器之间的延时,服务器之间的延时,但是,不同的行业对于实时音视频的延迟也有不同的要求,需要找到画质、音质、延时和功耗等方面的平衡点。
在线视频传输行业的发展
从2016年到2017年,每周观看超过10小时在线视频的用户数量从9.8%增加到17%。而在同一时期,每周仅观看一到两小时视频的人数比例从49%降至29.1%。这也证明了人们对于在线视频的受欢迎程度。
虽然在线视频曾一度被视为就是视频点播,但实时在线直播正越来越流行。而且有一项调查显示,在过去的12个月中,有44%的企业已经尝试过实时视频传输,而且有20%的企业计划在未来几个月内采取行动。直播越来越火的原因也是很明显的:Facebook中超过五分之一的视频是现场直播的,绝大多数(80%)观众更喜欢观看实况视频,而不是阅读博客文章,这些直播视频的观看时间比点播视频长三倍。观看实时在线直播视频,观众更容易感受到兴奋和即时感。
延迟的挑战
许多实时在线流媒体视频服务通过互联网(Over the Top(OTT)流媒体服务)提供与传统电视广播机构一样流畅的观看体验。但是在线观看与电视广播相比的一个很大的区别是,实时视频流通常传输延迟会达到40秒或更多。
延迟是摄像机捕获视频直到在另一台设备上播放之间的时间。对于互联网流媒体应用,流媒体传输管道中的所有组件都会造成延迟:摄像机/编码器,上传网络,流媒体服务器,下载网络和观看者端的视频播放器等。
延迟的重要性
每个在线直播应用程序的延迟都不是问题。比如你在电视上看的一场现场直播的音乐会,如果有一分钟的延迟,它真的会能对你的观感体验造成什么损失吗?但是,延迟在有的场景中却是十分重要的,比如说:
- 体育和新闻 - 当你在智能手机上观看体育赛事的在线直播时,而您的朋友在电视上观看同一比赛直播,您最不想体验的就是您的朋友在您看到进球之前先说:“漂亮的进球!“。
- 在线游戏 - 当你玩在线扑克时,一分钟的延迟意味着玩家必须等待下一轮交易,直到所有玩家都看到他们的牌。高延迟减少了轮数,从而减少了游戏的收入。
- 实时拍卖 - 一些现场拍卖可以直播到在线竞标者。在线拍卖参与者可以通过双向渠道竞标物品。要及时出价,必须将在线视频实时发送给投标人。
- 实时视频传输的发展
20多年来,主要的实时视频流格式是Adobe Flash,它使用RTMP协议提供2到6秒的延迟。Flash一直以来有很大的缺点,包括巨大的安全风险,缺乏对Apple和ios的支持,不断更新使Flash难以使用,以及浏览器缺乏对Flash的支持。所以随着发展用户数量逐渐下降,Adobe公司最近宣布计划在2020年底之前停止改进和发布其Flash播放器。而用户必须找到能够提供低延迟流视频的替代方法,用户面临的挑战是转换到新的视频传输协议需要花费大量的时间和精力。
如今,HLS和DASH是通过Web提供视频的最主要最广泛支持的格式。HLS和DASH通过传输视频块(chunk)来工作,默认的块大小为10秒并且在播放开始之前要创建至少三个块。当考虑CDN摄取,转码,服务器和播放器之间的距离以及传送时,总的播放延迟通常会超过45秒,减少延迟的一种简单的方法是减小块(chunk)的时间长度。
Limelight 公司的MMD LIVE SMALL CHUNK传输就使用了减小块长度的方法,通过摄取RTMP直播流,并使用一秒大小的chunk将它们转码为HLS / DASH,并通过CDN将它们传送给各种设备,总延迟可以低至6秒,下图是该方案的一个简单示例。而新出现的Chunked CMAF协议将一个segment分成chunk后再传输,也可以大大降低延迟并且保证传输效果。这些方法都可以适用于网络电视等的实时传输,既不会有高的延迟也不会造成直播效果的不佳。
但是同时要注意的是不同用户的最佳的块大小很大一部分取决于当前的互联网连接。如果在最后一英里连接(last-mile connection)较差的区域中有较大的用户群,则不应该将chunk大小减少到一秒,因为这会使得丢包率很高,造成实时传输的效果不佳。
WebRTC(Web实时通信)于2011年5月发布,是一种开放标准,用于将安全的,受SSL保护的实时语音,视频和数据通信功能嵌入广泛的Web浏览器和移动应用程序中。它利用了Google创建的实时通信协议(RTC),可为需要最低延迟的用例提供接近实时的亚秒级延迟。虽然WebRTC最初用于点对点通信,但它有可能会泄露用户IP,所以近些年WebRTC也在努力维护一些漏洞。同时,许多浏览器支持该协议,Microsoft的Edge browser的出现也实现了对该协议的支持,该协议正广泛用于实时通信,许多企业通过该协议提供实时的通信服务,下图是Limelight公司的服务流程示意图。
近些年发展起来的WebRTC协议,能够实现亚秒级的延迟,它并不是通过分块传输降低延迟,使用的是UDP/IP协议传输,提供了在Web、iOS、android、Mac、Windows、Linux在内的所有平台的API,保证了API在所有平台的一致性,而且大多数的浏览器均支持,不需要额外的插件,支持自适应比特流的传输来适应复杂的网络状况。
而之前提到的Flash播放是基于RTMP协议的,从RTMP协议到WebRTC也是行业发展的进步,后者不仅延迟更低,还能够实现多平台的支持,应用的前景也将会更加广阔。但同时WebRTC也存在许多缺点,比如它使用的是点对点传输,在移动端缺少对H.264编解码器的支持导致体验较差,如果想要实现多人的场景,就要开发服务端的解决方案,还有就是一部分浏览器仍然没能够支持WebRTC。
总结-未来的发展
Flash格式应该会占据越来越小的份额,而HLS和DASH small chunk的低延迟流和实时流将会占据视频传输的主导地位,而WebRTC会在特定领域有着自己的一席之地并且肯定会是未来实时通信领域的一块重要拼图。
低延迟实时在线流媒体的真正影响将是广播电视无法实现的新用例和商业模式,一个关键优势就是互联网流媒体可以在世界任何地方提供视频流。
以上是关于WebRTC降低直播延迟优化的主要内容,如果未能解决你的问题,请参考以下文章