javascript - 视频编码压缩中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 来实现的。但是,随着我们减小间隔,文件会变得更重。可以看出,在播放视频时,两种格式没有区别。
您可以使用按钮切换片段中的视频。
- 案例 1:当我们使用 -g 6 编码的视频时,视频滚动是可以接受的,但大小会增加:6.229 Mb。
使用的 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
- 情况 2:当我们使用 -g 24 编码的视频时,位移不平滑并且会出现跳跃,但大小会减小:4,477 Mb。
使用的 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还有一件事,如果搜索功能仅在关键帧中停止,是否有可能这一帧的质量比其他帧更高,以便在视频停止时质量提高?
解决方案
推荐阅读
- javascript - 如何使用php中的while循环和javascript显示从数据库中获取的多个图像中的特定点击图像?
- mysql - 检查mysql是否有index null
- python - 字典列表中的唯一元素有效
- c# - 将架构添加到 Avro 片段 .Net
- asp.net - 有条件地使用 ADFS 登录
- three.js - 在 Three.js 中移动和更改外观(过山车视图)时使相机沿 z 轴旋转
- c++ - 对于 AIFF 格式的数据块中的字节,二进制补码如何工作?
- java - 从 Json 文件调用单个对象
- python - 在启动时,我出现黑屏,并带有文本“Ubuntu 18.04.2 LTS localhost tty1”
- c# - 在单个 foreach 循环(或其他解决方案)中打印 2 个值