之前做动画的业务要求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.jpgoutput_0002.jpg等,输出的位置在终端的默认位置,如果需要更改输出路径,需要执行命令前先cd进文件夹。

生成的图片