如何在我们的遗留系统中使用 MPEG-DASH

How to use MPEG-DASH in our legacy system

我有一个传统的视频分发原型,允许用户在他们的设备上录制视频,将其(整个视频作为一个文件)上传到云端,同时将其转码为特定格式,然后分享它与其他设备一起玩。我们的用例是用户的 1-2 分钟自拍视频(所以不是电影,视频也不是很长)。

现在我们想用自适应流媒体 (MPEG-DASH) 升级我们的系统。我们需要对管道进行哪些更改?例如,我们需要对视频进行分段(如何?),具有特定的持续时间(多长?),保持每个分段网的各种质量版本(最好的方法?),适应播放等

关于该过程、需要做什么以及任何优化的任何指导都会有所帮助。

你的问题很宽泛 - 我认为你本质上需要一个 OTT 视频点播系统的设计,但要解决你问的各个问题:

For instance, we need to segment the videos (how?)

假设您的视频目前是 mp4,有多种工具可以让您从中创建 DASH 清单和媒体片段,包括 ffmpeg:https://ffmpeg.org/ffmpeg-formats.html#dash-2。许多打包程序(见下文)也将支持此类功能。

with specific durations (what length?)

段长度通常是延迟、编码开销和质量之间的权衡。这里有一个很好的总结:https://bitmovin.com/mpeg-dash-hls-segment-length/

一般情况下,如上文所述,此时大多数应用选择2-4秒的段长。

keep various quality versions of each segmnet (best way to do it?)

大多数视频流解决方案将使用原始服务器作为媒体流 - 如果您使用其中之一,那么它很可能适用于您的 DASH 文件。

adaptations to the playback

几乎所有标准 HTML5、Android 和 iOS 播放器都将支持 DASH 和自适应流式传输作为标准,因此您不必在播放器端开发任何自定义内容。

更一般地说,大多数 OTT 视频解决方案通常都支持 HLS 和 DASH 流媒体协议。这是因为不同的设备和应用程序支持不同的协议,这提供了最佳覆盖范围。 作为一个非常高级别的一般规则,请注意也有例外:

  • Android、Chrome 浏览器、Edge 浏览器 - 使用 MPEG DASH
  • iOS,Safari 浏览器 - 使用 HLS

出于这个原因,许多 OTT 解决方案将以 'carousel' 格式存储转码视频,例如HLS,然后根据需要即时重新打包到请求设备实际需要的任何内容,HLS 或 DASH。 'Just In Time' 包装器用于此,这些通常与源服务器结合使用。查看一些示例:

新兴行业标准 CMAF 也值得一提,它有望统一大部分 HLS 和 DASH 流式处理的复杂性。由于不同设备上的加密支持存在一些差异,推出速度可能没有预期的那么快,但值得关注和规划:https://www.cta.tech/Resources/Standards/CMAF-IF