使用 ImageMagick 从 MPEG4 中提取每第 n 帧
Posted
技术标签:
【中文标题】使用 ImageMagick 从 MPEG4 中提取每第 n 帧【英文标题】:Extract every nth frame from a MPEG4 using ImageMagick 【发布时间】:2021-12-13 08:47:31 【问题描述】:我想尝试从超过 6 分钟的大型 MPEG4 文件 (20.1MB) 中提取第 n 帧。但是,如果我尝试这样的事情:
convert video.mp4 *.png
我的整个计算机完全崩溃了。因此,我想尝试通过仅从 MPEG4 文件中提取每第 n 帧而不是提取超过 8000 张图像来节省一些时间和计算能力。如何实现?
【问题讨论】:
我认为使用ffmpeg
会更简单,请参阅superuser.com/a/391749
【参考方案1】:
我会使用“ffmpeg”来做到这一点。以 X 间隔提取 PNG 图像的命令可以这么简单...
ffmpeg -i input.mp4 -r 1 out%04d.png
使用选项-r 1
会将输出帧速率设置为每秒1。假设输入视频的帧速率为每秒 25 帧,则选项 -r 1
将大约每 25 帧输出一次。根据输入的帧率计算你需要的间隔。例如,要获取大约每 10 帧,请使用 -r 2.5
。
此示例中的输出文件名包含%04d
,它创建了一个四位数字的编号序列,并用前导零填充。
【讨论】:
【参考方案2】:VLC 媒体播放器可以做到这一点:
以管理员身份运行 VLC。
单击工具 - VLC 中的首选项。
在“显示设置”下,点击“全部”。
在“视频”下,选择“过滤器”,但不要展开它。勾选“场景视频过滤器”复选框。
展开“滤镜”并选择“场景滤镜”,
给出输出路径。
设置“记录比率”框,例如 10,20 等。
点击“保存”。
单击媒体 - 打开视频并找到您的视频。耐心地让整个事情发挥作用。 VLC 会自动抓帧并保存到输出路径。
禁用:单击工具 - 首选项。在“显示设置”下,单击“全部”。 在“视频”下,选择“过滤器”。取消选中“场景视频过滤器”。点击“保存”。
【讨论】:
以上是关于使用 ImageMagick 从 MPEG4 中提取每第 n 帧的主要内容,如果未能解决你的问题,请参考以下文章