做流媒体视频开发的团队都知道,目前很多开发团队的视频流解决方案都喜欢使用 HTTP Live Streaming (HLS) 来直播视频。 我们经常被问到的另一项技术是 WebRTC。 这两种技术都很棒,但应用却截然不同。 在这篇文章中,我们将研究两者的特性和优势,以及它们适合的主要应用场景。
什么是HLS?
HTTP Live Streaming (HLS) 由 Apple 开发,目前是当今网络上流式传输视频的主要方式。 HLS 名称中的“直播流媒体”有点用词不当,因为视频不需要直播——油管、Netflix 和其他视频点播服务使用 HLS 来流式传输非直播视频。这是使用 HLS 进行实时流式传输的一个优势 - 用于实时传输视频的相同文件可用于稍后“按需”播放视频。
HLS 中的“HTTP”表示它使用传统的 Web 协议通过 TCP 连接传输数据。视频被切成小段并从服务器发送给用户。用户设备上的播放器根据与视频片段一起传输的基于文本的清单文件重新组合视频以进行播放。它的强大之处在于,如果用户有相同视频的不同版本(不同尺寸和比特率),播放器可以根据每个用户的实际情况(主要是网络速度和屏幕大小)优化交付。
当使用 HLS 传输实况视频时,视频被发送到服务器并转码为片段以传输给最终用户。这使得 HLS 非常适合在一对多流中进行直播——一旦文件被记录下来,文件就会像任何其他 HTTP 请求一样发送,并且限制本质上是托管视频的服务器。 (当然,使用 CDN 可以进一步减少这种开销)。
延迟:HLS 流确实会遭受大约 6-15 秒的延迟(并且取决于架构,它甚至可能更长)。由于视频被转码为有限长度的片段,因此视频必须至少保持与片段长度一样长。为了减少传输错误,一些播放器需要在播放开始之前将 2 个片段存储在播放缓冲区中,从而进一步将播放时间从确切的现场事件中推开。
HLS总结:一个强大的视频流传输解决方案,用于向许多用户进行流式传输。 HLS 的当前状态包括 10-20 秒的延迟,这使得 HLS 不适合交互式演示。 HLS 视频也可在现场活动结束后播放。
实时通信 WebRTC
“Web 实时通信”或 WebRTC 是所有浏览器都支持的 W3C 标准,允许 - 正如你可能已经猜到的 - 实时通信。 WebRTC 具有近乎即时的交互能力,通常在 300 毫秒以下,非常适合像网络会议解决方案中的交互式来回对话。
延迟的减少(部分)是由于使用了 UDP 而不是 TCP,并且因为所使用的格式在传输之前不需要任何转码。
但是,由于在对等点之间可以即时传输视频,因此可以共享视频的用户数量受到限制,通常在 6 人以下。 WebRTC 有一些实现,其中少量用户(5 岁以下)共享他们的视频,以及另一个用户可以实时观看(但这个数字通常很小 - 低于 300)。
每个共享视频的人使用大约 1 MBPS 的带宽。如果有 4 个人在流式传输,则每个观看者的视频速度为 4 MBPS - 服务器的带宽很快就会成为可能加入流的用户数量的限制因素。此外,低质量网络上的用户可能无法摄取 4MBPS 的视频,并且由于大小而无法播放视频。
为了保存视频供以后播放,WebRTC 实现将使用 MediaRecorder 属性将视频保存在本地计算机上。为了稍后播放,此视频必须上传到服务器。
WebRTC 是实时即时通信的理想选择,但适用于一小群观众——通常是 1-4 人共享视频,以及少量观众。
HLS 和 WebRTC 是独立的吗?
融合 HLS 和 WebRTC 实际上很常见。 例如,如果主持一个演讲者小组,他们可以通过 WebRTC(如视频会议通话)加入,然后通过 HLS 将通话流式传输给大量观众。
那么,在低延迟HLS或是WebRTC之间做选择时,哪种协议能够带来最佳的实时视频流体验呢?
我们曾经也讨论过关于WebRTC的发展史以及应用场景。首先,低延时已经是未来视频直播的发展方向。那么WebRTC作为即时交互通信,显示具有很大的优势。在安全性与拓展性方面,WebRTC也具有很强大的安全功能,内置的设备兼容性,以及无论网络强度如何都能保持高质量的性能。而且WebRTC是将实时延迟控制在500ms以内的唯一方式。
但这并不意味HLS不好。选择流协议,完全取决于应用场景。HLS是当前适配方式最广的一种,在PC上有vlc,Android/IOS原生播放器就支持播放HLS,HTML5里面的url可以写HLS地址。总之,在移动端是以HLS为主。
WebRTC的行业应用场景
如今WebRTC已经不仅仅局限于PC端的网页浏览器,很多Android、iOS应用都已经采用了该技术。这也是为什么近几年课程直播、企业培训、社交娱乐等等领域,视频业务发展迅速。
EasyRTC是基于webrtc开发的覆盖全球的实时音视频开发平台,支持一对一、一对多等视频通话。EasyRTC拥有MCU和SFU两种架构,无需安装客户端与插件,纯H5在线视频会议系统,支持小程序、H5页面、APP、PC客户端等接入方式,极大满足语音视频社交、在线教育和培训、视频会议和远程医疗等场景需求。
AIoT智慧物联网
AI、物联网已经是未来趋势,到2030年,全球预计将有5,000亿台移动互联网设备。我们需要一种快捷便利、低延迟的解决方案来实现实时音视频的传输和处理。例如智能家居设备:智能音箱、智能摄像头等等。想象一下,当所有的设备都可以在标准化平台上进行无缝通信时,世界将会是什么样。
这仅仅是其中WebRTC众多应用场景中的一个实例,例如在线教育、在线社交娱乐等等场景,开源的WebRTC技术同样也可以发挥巨大的作用。