首页 > 解决方案 > 视频编码压缩中HTML5视频的Seek函数和Maximum Keyframe Interval

问题描述

这是一个非常具体的问题,关于(HTML5 视频元素的)搜索功能如何解释视频,在这种情况下是 WEBM 格式的视频,以及它与Maximum Keyframe Interval所述视频编码过程中的具体关系。

我做了这个小提琴来表达我的意思:

https://jsfiddle.net/sanxofon/hctuxo3e/

它的作用:这个想法是用鼠标的滚轮控制暂停视频的位置......此外,视频的每一帧都被复制到一个画布元素,但我认为这没有关系。我提一下以防万一。

看点:在 Chrome (v66) 和 Firefox (v59) 中,当视频以 6 或更少的最大关键帧间隔编码时,滚动看起来相当不错,但当间隔为每 24 帧或更多时,跳转会受到赞赏. 这在视频中很明显,在画布上更明显。

FFMPEG:当使用 FFMPEG 对视频进行编码时,这是通过最大关键帧间隔的选项 -g6 或 -g24 来实现的。但是,随着我们减小间隔,文件会变得更重。可以看出,在播放视频时,两种格式没有区别。

您可以使用按钮切换片段中的视频。

使用的 FFMPEG 字符串:

 ffmpeg -i INPUT.MOV -c: v libvpx -qmin 0 -deadline best -qmax 50 -crf 1 -b: v 100K -g 6 test / video_g6.webm

使用的 FFMPEG 字符串:

 ffmpeg -i INPUT.MOV -c: v libvpx -qmin 0 -deadline best -qmax 50 -crf 1 -b: v 100K -g 24 test / video_g24.webm

为什么会这样?

-keyint_min 或 -force_key_frames 怎么样?它们有什么积极作用吗?使用 cgop(封闭 gop)之类的东西会更好吗?

对于 WEBM 容器以及 MP4 和 OGG 视频,我将不胜感激有关此主题的一些咨询参考或对这种关系的或多或少的详细解释。

我并不是在寻找一个神奇的 ffmpeg 链(尽管我会很感激),而是解释关键帧与 javascript 视频搜索之间的这种关系如何工作。

非常感谢您阅读这里。

PS还有一件事,如果搜索功能仅在关键帧中停止,是否有可能这一帧的质量比其他帧更高,以便在视频停止时质量提高?

标签: javascripthtmlvideoffmpeghtml5-canvas

解决方案


推荐阅读