直播协议、延迟和技术选项

视频直播在直播体育赛事和赛事直播、直播课堂、手术视频等方面有很多应用。RTMP 一直是一种流行的协议,用于从编码器和移动应用程序流式传输实时视频。对 RTMP 的编码器支持,以及用于 Android 和 iOS 的 RTMP 格式的流式视频库,有助于轻松地进行流式传输。

许多直播服务,例如 Twitch、YouTube 直播和 Facebook 直播,都支持 RTMP。然而,RTMP 是基于 flash 视频的,它已经走到了尽头。最近,主要用于实时视频通信的 WebRTC 使直接从浏览器流式传输成为可能。

在本文中,我们将了解可用于实时流式传输的各种选项、它们的延迟,并回顾一些用于实时流式传输的开源项目和 AWS 托管服务。

RTMP 直播

Live Srreming 协议 - RTMP

RTMP 到 HLS 流式传输

实时流媒体选项范围从亚秒级低延迟流媒体到几秒的延迟。其中每一个都有不同的用例,消耗不同的资源,并且具有不同的运营成本。对于视频直播,可能性取决于客户端/播放器的能力。

HLS 是一种通用流媒体格式,支持跨浏览器、移动设备(Android、iOS)和电视平台的播放器。但是,HLS 固有地具有更高的延迟,因为它是基于块的使用 HTTP 并且从片段的播放列表中提供服务。定义了低延迟 HLS 和 DASH 格式,但播放器对这些格式的支持仍在不断发展。RTMP已成为从编码器和移动应用程序发布实时流的事实标准。但是,由于播放器不再支持 flash 视频,因此需要将 RTMP 转换为 HLS 和 DASH 等格式。 

有可用于浏览器播放 FLV(通过 RTMP 或 websocket)和 MPEG-2 TS 流(通过 HTTP/websocket)的库,它们通过将 FLV/MPEG2-TS 转换为 ISO BMFF MP4 并将其提供给媒体源扩展(HTML5 MSE)来工作). 与 HLS 相比,它们提供更低的延迟,因为它们可以播放非分块的源代码。它们使用与基于浏览器的 HLS 播放器使用的相同的 MSE,因此支持相同范围的编解码器格式,仅受其容器格式支持的限制。flv.js 和 mpegts.js 是这些库的一些示例。尽管存在此类选项,但 RTMP 到 HLS/DASH 是更常见的直播选项,具有几秒的延迟。 

许多商业和开源编码器,例如 FFmpeg,都支持 RTMP。OBS Studio 是一种流行的开源广播软件,支持通过 RTMP 流式传输到多种预定义服务。

WebRTC 直播

WebRTC 是一种基于标准的低延迟实时流媒体选项。它主要是为视频会议而开发的。它不是基于块的,还可以选择通过 UDP 流式传输视频和音频数据包。WebRTC 还支持点对点视频流,但在向多个观众直播流媒体的情况下,点对点选项将无用,因此需要能够将 WebRTC 中继给用户的服务器。

屏幕截图 2022 10 18 下午 3 月 52 日 41 分

RTMP/WebRTC 转 WebRTC 直播

使用 WebRTC 向最终用户流式传输视频有很多限制。浏览器中的 WebRTC 堆栈缺乏 HLS 流中可用的相同支持。由于 WebRTC 主要用于实时视频通信,因此许多浏览器都支持基线配置文件 H.264。因此,需要更高的带宽才能以更好的质量水平流式传输视频,或者用户必须满足于中等带宽水平的较低质量流式传输。此外,WebRTC 需要更多的服务器资源,并且不像基于 HTTP 的 HLS 那样容易扩展。由于需要保持与服务器的 websocket 连接打开以进行数据传输,因此每个服务器只能为有限的最终用户提供服务。尽管如此,基于 WebRTC 的流式传输越来越受欢迎,并且出现了许多商业解决方案,将其作为一项服务提供。

屏幕截图 2022 10 18 下午 3.52.11

WebRTC 到 HLS 直播

对于需要在多种设备上播放并且可以容忍一定延迟的广播应用,可以使用HLS。有旨在将 WebRTC 转换为 HLS 的开源和商业项目。在浏览器 WebRTC 中没有设置 I 帧间隔的选项,I 帧间隔取决于浏览器。

通过使用较短的播放列表保持片段大小最小,可以减少延迟。然而,小段大小和短播放列表不能被大多数播放器很好地处理并且容易导致缓冲区停滞。因此,必须进行一些实验和调整,以确保播放器处理流并可以容忍小块大小和播放列表持续时间。 

HTML5 MediaRecorder 到 HLS 视频流

HTML5 MediaRecorder API 主要用于在浏览器上录制视频。然而,这也可以用于实时流媒体,通过记录小的持续时间块,上传到后端,并将它们转换为 HLS 片段,可选转码以流式传输给用户。此选项提供了一种经济高效且可扩展的路径,也可以在不需要 WebSocket 的情况下以无服务器方式实施。这里有一些注意事项,不同浏览器编码的 MediaRecorder 块具有不同的编解码器,并且都不适合直接转换为 HLS 片段,需要音频、视频或两者的转码才能在广泛的 HLS 上播放支持的设备。 

AWS 托管直播

AWS 提供交互式视频服务,支持 RTMP 到 HLS 直播。AWS 有两种选择——一种仅支持标清,仅从 RTMP 重新流式传输到 HLS,而另一种也支持高清并转码实时流,从而为用户提供多种质量。

AWS 还有一个 Elemental 堆栈——MediaConnect、MediaLive 和 MediaPackage,它们可以摄取 RTMP、转码为单一/多种质量并打包为具有 DRM 的 HLS/DASH/CMAF 并流式传输给用户。它是一个全面的管道,具有良好的广播视频功能,但成本很高。

AWS Kinesis Video Streams with WebRTC 是 AWS 提供的 WebRTC 托管服务。 

作者:Harinandan Srinivasamurthy

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论