使用ffmpeg从视频制作拇指

时间:2013-11-07 23:04:08

标签: ffmpeg mp4

我尝试每隔15秒从视频中提取小拇指。

以下是我现在尝试的内容

ffmpeg -i movie.mp4 -r 1/15 -s 120x90 %03d.jpg

但是命令行有一些错误

[mjpeg @ 0x9e695c0] bitrate tolerance too small for bitrate
[mjpeg @ 0x9da9a60] ff_frame_thread_encoder_init failed
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

这里错了,以及如何每15秒获得一次拇指。并保存0.jpg,1jpg,2jpg,3jpg,4jpg,5jpg ......等等。

2 个答案:

答案 0 :(得分:3)

使用selectscale过滤器的示例:

ffmpeg -i input \
-vf "select='isnan(prev_selected_t)+gte(t-prev_selected_t,15)',scale=120:-1" \
-vframes vfr -q:v 2 %03d.jpg
  • select过滤器可以接受arithmetic expressions。此示例将选择最小距离为15秒的帧。

  • -vsync vfr可防止重复播放。

  • 然后使用scale过滤器调整输出大小。使用scale代替-s可以控制在过滤期间缩放发生的时间和位置。此外,您可以声明一个维度,而在另一个维度中使用-1来使scale自动计算正确的大小以维持方面,而不是强制使用特定大小。

  • 可以使用-q:v更改输出质量。有效范围是2-31。较低的值是较高的质量。如果输出到PNG,则可以省略此选项。

  • FFmpeg开发非常活跃。有关Linux,OS X或Windows的最新ffmpeg二进制文件的链接,请参阅FFmpeg download page

另见:

答案 1 :(得分:0)

尽管man页面显示了ffmpeg doesn't really support fractional frame rates从视频文件生成缩略图时的内容。我认为你唯一的选择可能是以每秒1的速度生成缩略图,然后简单地丢弃你不需要的缩略图。

编辑:我要撤回。我之前在一个文件上尝试过1/15的帧率,结果看起来并不正确 - 前两个缩略图都显示了视频的标题页,只出现了大约2秒钟。

但我只是仔细检查了一下,似乎间隔实际上接近15秒。

我在-f image2切换后添加了-s 160x120;我不知道这是否有所不同。