video - 如何在我们的旧系统中使用 MPEG-DASH
问题描述
我有一个旧的视频分发原型,它允许用户在他们的设备上录制视频,将其(整个视频作为单个文件)上传到云,同时将其转码为特定格式,然后与其他设备共享玩。我们的用例是 1-2 分钟的用户自拍视频(所以不是电影,而且视频不是很长)。
现在我们想用自适应流(MPEG-DASH)升级我们的系统。我们需要对管道进行哪些更改?例如,我们需要分割视频(如何?),具有特定的持续时间(多长?),保留每个 segmnet 的各种质量版本(最好的方法?),适应播放等。
任何关于程序、需要做什么以及任何优化的指导都会有所帮助。
解决方案
您的问题非常广泛-我认为您基本上需要为 OTT 视频点播系统进行设计,但要解决您提出的各个问题:
例如,我们需要分割视频(如何?)
假设您的视频当前是 mp4,有多种工具可让您从中创建 DASH 清单和媒体片段,包括 ffmpeg:https ://ffmpeg.org/ffmpeg-formats.html#dash-2 。许多打包程序(见下文)也将支持这种类型的功能。
具有特定的持续时间(多长时间?)
段长度通常是延迟、编码开销和质量之间的权衡。这里有一个很好的总结:https ://bitmovin.com/mpeg-dash-hls-segment-length/
一般来说,如上篇文章所述,此时大多数应用程序选择 2-4 秒的段长度。
保留每个 segmnet 的各种质量版本(最好的方法?)
大多数视频流解决方案将使用源服务器来处理媒体流 - 如果您使用其中之一,那么它很可能适用于您的 DASH 文件。
对播放的适应
几乎所有标准的 HTML5、Android 和 iOS 播放器都支持 DASH 和自适应流媒体作为标准,因此您不必在播放器端开发任何自定义内容。
更笼统地说,大多数 OTT 视频解决方案通常同时支持 HLS 和 DASH 流协议。这是因为不同的设备和应用程序支持不同的协议,这提供了最佳覆盖范围。作为一个非常高级的一般规则,请注意有例外:
- Android、Chrome 浏览器、Edge 浏览器 - 使用 MPEG DASH
- iOS、Safari 浏览器 - 使用 HLS
出于这个原因,许多 OTT 解决方案将以“轮播”格式(例如 HLS)存储转码视频,然后根据需要即时重新打包到请求设备实际需要的任何内容(HLS 或 DASH)。'Just In Time' 打包程序用于此目的,这些打包程序通常与原始服务器结合使用。看一些例子:
- https://aws.amazon.com/mediapackage/
- https://www.unified-streaming.com/solutions/vod-dynamic-packaging
还值得一提的是新兴的行业标准 CMAF,它有望统一 HLS 和 DASH 流媒体的大部分复杂性。由于不同设备上的加密支持存在一些差异,因此推出的速度不如预期的那么快,但值得了解和计划:https ://www.cta.tech/Resources/Standards/CMAF-IF
推荐阅读
- python - 使用python脚本将(多个)TeX环境提取到csv
- regex - re 模式不识别逗号值
- python - 怎么说如果没有找到日期值
- html - 可以创建一个 HTML 链接,从给定的 doi 返回一个 bibtex 条目,该链接可以在 GitHub wiki 中工作吗?
- c - C上的人声计数功能
- python - waitinglist Class in Python
- ios - 如何解密 Unicode 十六进制字符“”
- c# - 将 json 字符串解析为填充其子类的类
- python - 图表中条形的颜色基于同一行数据帧中的布尔值
- php - php - 如何执行 sqlsrv 存储过程