1

我尝试每 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...等..

4

2 回答 2

3

select使用andscale过滤器的示例:

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可以接受算术表达式。此示例将选择最小距离为 15 秒的帧。

  • -vsync vfr防止重复帧。

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

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

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

另见:

于 2013-11-08T00:23:40.443 回答
0

尽管man页面上说了什么,但 ffmpeg在从视频文件生成缩略图时并不真正支持分数帧速率。我认为您唯一的选择可能是以每秒 1 的速率生成缩略图,然后简单地丢弃您不需要的缩略图。

编辑:我要收回那句话。我之前在这里的一个文件上尝试了 1/15 的帧速率,结果看起来不正确——前两个缩略图都显示了视频的标题页,它只出现了大约 2 秒。

但我只是仔细检查了一下,似乎间隔确实在此后接近 15 秒。

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

于 2013-11-07T23:29:58.750 回答