ffmpeg(六):图片与视频互转命令
图像序列转视频(多张图片 ➜ 视频)
ffmpeg -framerate 25 -i image_%03d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4
参数说明:
image_%03d.jpg
:文件名格式(如 image_001.jpg、image_002.jpg)。-framerate 25
:输入帧率(25fps)。-c:v libx264
:使用 H.264 编码。-pix_fmt yuv420p
:兼容大多数播放器。
补充选项:
- 指定起始编号:
ffmpeg -framerate 30 -start_number 100 -i frame_%03d.png -c:v libx264 -pix_fmt yuv420p out.mp4
视频转图像序列(视频 ➜ 多张图片)
ffmpeg -i input.mp4 image_%04d.png
- 限制帧率(例如每秒提取一帧):
ffmpeg -i input.mp4 -vf fps=1 image_%03d.jpg
- 只提取第一帧(封面图):
ffmpeg -i input.mp4 -frames:v 1 thumbnail.jpg
制作 GIF 动图(图像 ➜ GIF)
ffmpeg -framerate 10 -i frame_%03d.png output.gif
- 优化色彩(避免颗粒感):
ffmpeg -i frame_%03d.png -filter_complex "[0:v] palettegen" palette.png
ffmpeg -i frame_%03d.png -i palette.png -filter_complex "[0:v][1:v] paletteuse" optimized.gif
GIF 转视频
ffmpeg -i input.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4
注意:有些编码器(如 libx264)要求分辨率为偶数,所以用了 scale=trunc(iw/2)*2:trunc(ih/2)*2
。
提取特定时间段的图片
ffmpeg -ss 00:01:00 -i input.mp4 -t 5 -vf fps=2 img_%03d.jpg
说明:
-ss 00:01:00
:从第1分钟开始。-t 5
:持续5秒。-vf fps=2
:每秒提取2帧。