【问题标题】:Keyframes FFMPEG关键帧 FFMPEG
【发布时间】:2020-06-05 17:08:11
【问题描述】:

是否有一个 FFMPEG 命令,如果我们传递一个视频文件,在每个场景更改时它都应该为它生成一个关键帧。我理解的关键帧是视频的一系列文件(图像或视频)文件,可用于在视频悬停时播放。请告知我们是否可以这样做?

【问题讨论】:

标签: java ffmpeg


【解决方案1】:

是否有一个 FFMPEG 命令,如果我们传递一个视频文件,每个 场景改变它应该为它生成一个关键帧。

嗯,这取决于什么编解码器,以及你所称的场景。 x264 具有调整场景灵敏度的 scenecut 参数。但是,x264 所称的场景可能与您所称的场景不同。

例如,迈克尔·贝 (Michael Bay) 的电影每 4 或 5 秒就有一次硬切。 x264 可能会将每个“剪辑”视为一个场景。 ffmpeg 无法处理任何比剪切或淡化更聪明的事情。

我理解的关键帧是一系列文件(图像或视频) 视频文件,可用于在鼠标悬停时播放 视频。请告知我们是否可以这样做?

不,一点也不。

关键帧是单个帧,而不是一系列帧或文件。它也与“悬停”无关。关键帧只是一个独立的帧,这意味着您可以独立解码它,而无需首先解码它可能引用的任何帧。

视频压缩不只是对每一帧进行编码。它将对一帧进行编码,然后对于下一帧,仅对更改的部分进行编码。这称为“预测帧”,如果不对参考帧进行解码,则无法对其进行解码。关键帧只是一个不引用任何其他帧的帧。

有时一些玩家可能会进行优化,在悬停时预览关键帧,因为关键帧的解码速度比预测帧快。但这是 100% 的播放器优化,并非所有播放器都这样做。

对我来说,听起来像是xyproblem

【讨论】:

  • 感谢您的回复,正在做这样的事情,ffmpeg -i .\test.mp4 -filter:v "select='gt(scene,0.5)',showinfo" -f md5 -vsync 0 -s 120x68 keyframe%05d.jpeg 它给了我输出。现在它创建一个单独的文件。有什么方法可以创建附加 UUID 的输出文件。例如:ffmpeg 中的 keyframe_UUID
  • 新问题应该有新帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2012-12-16
  • 2018-11-05
  • 2014-01-17
相关资源
最近更新 更多