如何用ffmpeg从视频中平均提取指定数量的帧图片?
文章摘要
HeoGPT
这篇文章介绍了如何使用ffmpeg提取特定数量的帧图从视频中,以满足动画的业务要求。首先提到了因为5MB的大小限制导致GIF图的质量差。然后,文章讲述了在macOS上安装ffmpeg的方法,使用homebrew来完成。接着,详细解释了如何先通过ffprobe获取视频的时长,然后使用ffmpeg均匀提取视频帧。文章中提供了相关的命令代码,并展示了提取帧的效果图片。
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结
投诉之前做动画的业务要求gif图不能超过5MB,这一个6秒多的视频压缩到5MB动图质量可就差太多了,后来询问发现他那支持64帧图,那可以试试,找了一圈发现ffmpeg支持提取,过程还是比较方便的。
安装ffmpeg
如果没有安装可以查看安装教程。
提取视频帧图
如果你想使用FFmpeg从视频中提取特定数量的帧(例如64帧),你可以利用其强大的滤镜和选项来实现。以下是一个方法:
获取视频的时长
首先,我们需要知道视频的时长,以便计算如何均匀提取94帧。执行以下命令获取视频的时长(单位为秒):
1 | video="input_video.mp4"; duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $video) |
确保替换input_video.mp4
为你的视频文件名。
提取帧数
在终端输入cd
,输入一个空格,然后将文件夹拖入到终端即可。例如:
1 | cd /Users/zhheo/Downloads |
(上面的命令每个人都不同,请勿直接使用)
例如,我们将使用ffmpeg提取94帧。执行以下命令:
1 | ffmpeg -i $video -vf "fps=1/($duration/94)" output_%04d.png |
这条命令会从视频的开始到结束均匀地提取94帧,输出文件名的格式为output_0001.jpg
、output_0002.jpg
等,输出的位置在终端的默认位置,如果需要更改输出路径,需要执行命令前先cd进文件夹。
- 感谢你赐予我前进的力量
打赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 张洪Heo
评论
生成评论
匿名评论
违规举报
✅ 你无需删除空行,直接评论以获取最佳展示效果