video-streaming - 在 WebRTC 视频播放器和 HLS 视频播放器之间切换
问题描述
我正在构建一个 Web 应用程序,它将执行以下任务
- 显示实时视图 - 使用 WebRTC 媒体频道。
- 显示视频点播 (VOD) - 用户 HLS。
用户有一个按钮,用于从实时切换到回放,反之亦然。WebRTC 和 HLS 使用不同的库来渲染媒体。
问题:
- 在同一页面上从 Live <-> Playback 切换是否可行?如果可行,是否需要重新加载页面?
- 两个不同的播放器可以同时播放视频吗?
解决方案
快速回答是,您可以在同一页面上有两个不同的播放器,并且您应该能够控制每个播放器,例如开始和停止播放,而无需加载页面。
但是,如果这两种流技术也有助于您的设计,那么看看这两种流技术有何不同可能会很有用。
- WebRTC 是一种(近乎)实时的,通常是两种方式的流式传输协议。它用于实时视频通话等应用程序,并利用实时协议、RTP 等流技术,这些技术通常配置为优先考虑延迟。请注意,视频通话中的低延迟通常为 200-500 毫秒。
- HLS 通常不是“接近实时的”。它是一种 ABR 流技术,通常会检查接收器是否有足够的流缓冲,以确保视频可以在没有“缓冲”中断的情况下播放。HLS 或 DASH 视频流中的低延迟通常以数秒为单位进行测量。
简而言之,WebRTC 优先考虑延迟,并准备允许一些视频伪像或丢帧以使视频尽可能接近实时。例如,这在双向视频通话中显然很重要。
另一方面,HLS 优先考虑视频质量并避免丢帧。它还尝试拥有足够的缓冲区以避免使用缓冲消息暂停视频。
请注意,这两种方法都支持协商传输期间流式传输的比特率的能力。
与许多技术一样,边界正在模糊,WebRTC 被建议用于现场娱乐视频流用例和 HLS 低延迟,以减少延迟,尽管目前还没有达到接近实时的水平。
将两种技术结合起来的一种方法是通过使用 HLS 流式传输录制的流来进行实时视频通话或流,您可以在其进行过程中捕获并使其可用于播放、追赶或“重新开始”。这也可以让您捕获尽可能高质量的录音,而不必担心实时延迟。
推荐阅读
- java - 如何根据启动标志启动@KafkaListener
- docker - Dockerfile 执行权限被拒绝
- javascript - 为什么javascript导入需要这么长时间?
- python - 文件执行错误 - 没有名为“pywinauto”的模块
- python - Python:对于每一行,获取下一个较早的日期,其中 value > 0
- javascript - 访问这种类型的 Json 对象
- java - 我在我的 JavaFX 项目中找不到这个问题的答案:java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- keras - 有什么方法可以将 weight.pt 模型转换为 weight.h5 或 weight.weights 转换为 weight.h5 格式
- java - Integer.toString() 行为怪异
- sql - 基于合并列的计数