使用FFMPEG将所有视频帧提取为图像

时间:2016-01-14 10:05:44

标签: image batch-file video command-line ffmpeg

我正在尝试使用FFMPEG将MP4视频文件转换为一系列jpg图像(out-1.jpg,out-2.jpg等),

mkdir frames
ffmpeg -i "%1" -r 1 frames/out-%03d.jpg

但是我不断收到错误,

  

[image2 @ 00000037f5a811a0]无法打开文件:   帧/出-C:\应用\ FFMPEG \ toGIF.bat3d.jpg   av_interleaved_write_frame():输入/输出错误帧= 1 fps = 0.0   q = 5.9 Lsize = N / A时间= 00:00:01.00比特率= N / A视频:63kB音频:0kB   副标题:0kB其他流:0kB全局标头:0kB多路复用开销:   未知转换失败!

如果我取出%03d部分,则转换有效,但只输出第一帧,程序会因错误而停止。

如何使用FFMPEG正确提取视频的所有帧?

3 个答案:

答案 0 :(得分:21)

使用

ffmpeg -i "%1" frames/out-%03d.jpg

一系列图像文件没有帧率。如果您要对视频文件进行欠采样,请在输入前使用-r

修改

ffmpeg -i "C:\Applications\FFMPEG\aa.mp4" "frames/out-%03d.jpg"

答案 1 :(得分:0)

试试:

ffmpeg -i file.mpg -r 1/1 $filename%03d.bmp

ffmpeg\ffmpeg -i file.mpg test\thumb%04d.jpg -hide_banner

注意:

  1. 要在 -i 之前更改帧速率,请输入 -framerate。要在 -i 后指定输出的帧率,请输入 -r
  2. -filter:v -fps=fps=...-vf fps=...-r
  3. 更准确

例如

ffmpeg -i myvideo.avi -vf fps=<NO. of images>/<per no. of seconds> img%0<padding No. of digits>d.jpg

答案 2 :(得分:0)

%04d 将生成 4 位数字的图像名称,如 0001、0002 等。%03d 将生成名称为 001、002 等的图像。