ffmpeg 使用简介

32 阅读1分钟

录屏

ffmpeg -y -t 20 -vframes 30 -r 30 -video_size 1920*1080 -c:v libx264 output.mp4

提取视频帧

提取单帧

从视频中提取某一特定时间点的单帧,可以使用以下命令

ffmpeg -i input_video.mp4 -ss 00:01:30 -vframes 1 output_image.jpg

提取多帧

若要每隔一段时间(比如每隔5秒)提取一帧,可以使用select滤镜:

ffmpeg -i input_video.mp4 -vf "select='not(mod(n\,120))'" -vsync vfr output_%03d.jpg

这里,select='not(mod(n\,120)) 意味着只选择每120帧的帧(假设视频的帧率为30fps,则大约是每5秒提取一帧)。

  • vsync vfr 保证了输出帧率与输入视频的实际帧率不强制同步,而是根据选择的帧来。

output_%03d.jpg 指定了输出图片的格式,其中 %03d 是一个占位符,会自动递增文件名(如 output_001.jpg, output_002.jpg 等)

提取全部帧

ffmpeg -i input_video.mp4 -vsync 0 output_%04d.png

使用 -vsync 0 可以按照视频的原始帧率输出所有帧,而不进行重复或丢帧处理

output_%04d.png 表示输出的每一帧将以PNG格式保存,且文件名自动递增

这里使用了四位数字 (%04d) 以适应更多的帧数