如何使用ffmpeg从视频中提取一帧

Lev*_*van 23 ffmpeg

我有一个视频,我想从这个视频中提取第35帧。

如果可能,我希望它是一个 png 图像。

我知道有很多这样的问题,但我找不到使用帧号的解决方案。

Ely*_*Ely 35

使用select过滤器

ffmpeg -i <input> -vf "select=eq(n\,34)" -vframes 1 out.png
Run Code Online (Sandbox Code Playgroud)

计数从 0 开始,因此第 35 个 = n 值为 34。


jig*_*jer 8

两种快速而肮脏的方法:

使用带有搜索选项的FFmpeg可执行文件。您需要先转换为时间,例如,如果我想要第 150 帧并且我的视频为 29.97 FPS,则命令将为ffmpeg -ss 00:00:05.01 -i myvideo.avi -frames:v 1 myimage.jpg. 这可能有点不准确。要按精确帧查找,您需要将 FFmpeg 库与C++ 一起使用

另一种“hacky”方式是使用VLC 媒体播放器。检查菜单 View -> Advanced controls。暂停视频并单击逐帧按钮 34 次。