【发布时间】:2022-01-17 20:21:53
【问题描述】:
我有一个用例,我需要为视频提供高达 100 倍的播放速度。由于大多数现代浏览器不支持此功能并提供开箱即用的最大 4x,因此我使用速度为 10x、25x、50x 和 100x 的 FFmpeg 编码了多个视频文件。我想为这些文件生成一个 MPEG dash 流并使用 videojs 播放它。
这就是问题所在。据我所知,MPEG dash 的设计和开发是为了支持 ABR 流式传输,其基本假设是视频流长度不会改变(除了 MPD 流生成是动态的实时流式传输的情况)。然而,就我而言,唯一改变的是视频速度或 fps,而不是比特率。这样做的结果是,虽然视频播放得更快或更慢,但当从速度选择器切换流并随着视频继续缓冲而不断更新时,videojs 播放器中显示的持续时间是不正确的。搜索栏也会相应地不断更新,这对用户体验很不利,因为它看起来像一个小故障,更重要的是,用户无法在视频缓冲点之外搜索视频。
我想到的最简单的解决方案是我放弃 MPEG 破折号并直接在 videojs 播放器中切换视频源,但这不是无缝体验,原因有两个:
- 视频将从头开始加载,在较慢的网络上可能需要更长时间。
- 在加载视频之前,持续时间再次缺失
此外,MPEG dash 是全球流媒体的标准,如果我将来需要添加 DRM,无论如何我都需要 MPEG dash。
对此有什么可能的解决方案?
【问题讨论】:
标签: video ffmpeg video.js mpeg-dash