ffmpeg(六):图片与视频互转命令

图像序列转视频(多张图片 ➜ 视频)

bash 复制代码
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:兼容大多数播放器。

补充选项

  • 指定起始编号:
bash 复制代码
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
  • 限制帧率(例如每秒提取一帧):
bash 复制代码
ffmpeg -i input.mp4 -vf fps=1 image_%03d.jpg
  • 只提取第一帧(封面图):
bash 复制代码
ffmpeg -i input.mp4 -frames:v 1 thumbnail.jpg

制作 GIF 动图(图像 ➜ GIF)

bash 复制代码
ffmpeg -framerate 10 -i frame_%03d.png output.gif
  • 优化色彩(避免颗粒感):
bash 复制代码
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 转视频

bash 复制代码
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

提取特定时间段的图片

bash 复制代码
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帧。
相关推荐
却道天凉_好个秋42 分钟前
音视频学习(八十七):AVCC、HVCC和VVCC
音视频·avcc·hvcc·vvcc
我的offer在哪里1 小时前
hdr格式视频的生成原理解析
音视频
小徐敲java2 小时前
视频推流服务器与FFmpeg 安装配置
服务器·ffmpeg·音视频
查无此人byebye2 小时前
从零解读CLIP核心源码:PyTorch实现版逐行解析
人工智能·pytorch·python·深度学习·机器学习·自然语言处理·音视频
我是ed.3 小时前
Vue3 音频标注插件 wavesurfer
前端·vue.js·音视频
查无此人byebye3 小时前
阿里开源Wan2.2模型全面解析:MoE架构加持,电影级视频生成触手可及
人工智能·pytorch·python·深度学习·架构·开源·音视频
却道天凉_好个秋3 小时前
音视频学习(八十八):mp4
音视频·mp4
假装我不帅17 小时前
ffmpeg操作mp3去除封面信息
ffmpeg
mit6.8241 天前
[solution] 关闭硬件加速解决导出视频绿屏
音视频
Minilinux20181 天前
Android音频系列(09)-AudioPolicyManager代码解析
android·音视频·apm·audiopolicy·音频策略