我尝试每隔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 ......等等。
答案 0 :(得分:3)
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
;我不知道这是否有所不同。