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

Image 使用FFMPEG将所有视频帧提取为图像,image,batch-file,video,command-line,ffmpeg,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@000000 37F5A811A0]无法打开文件: frames/out-C:\Applications\FFMPEG\toGIF.bat3d.jpg av_交错_写入_帧():输入/输出错误帧=1 fps=0.0 q=5.9 Lsize=

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

mkdir frames
ffmpeg -i "%1" -r 1 frames/out-%03d.jpg
但是我不断地犯这样的错误

[image2@000000 37F5A811A0]无法打开文件: frames/out-C:\Applications\FFMPEG\toGIF.bat3d.jpg av_交错_写入_帧():输入/输出错误帧=1 fps=0.0 q=5.9 Lsize=N/A时间=00:00:01.00比特率=N/A视频:63kB音频:0kB 字幕:0kB其他流:0kB全局头:0kB多路复用开销: 未知转换失败

如果我取出%03d部分,转换工作,但它只输出第一帧,程序会错误地停止

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

使用

ffmpeg -i "%1" frames/out-%03d.jpg
图像文件序列没有帧速率。如果要对视频文件进行欠采样,请在输入之前使用
-r

编辑

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

注:

  • 要在
    -i
    之前更改帧速率,请输入
    -framerate
    。要在
    -i
    之后指定输出的帧速率,请输入
    -r

  • -filter:v-fps=fps=…
    -vf-fps=…
    -r
    更精确
  • 例如

    ffmpeg-i myvideo.avi-vf fps=/img%0d.jpg
    
    %04d将生成4位数字的图像名称,如0001、0002等,%03d将生成名称为001、002等的图像。

    好的,最后找到了问题,Windows似乎需要%%,因为在out-%%03d.jpgYes中,它是一个Windows.bat文件是的,在脚本中,您需要转义特殊字符。如何将帧获取为.h264?在
    -I
    之前,输入
    -framerate
    。要在
    -i
    之后为输出指定帧速率,请输入
    -r
    在%04d和%03d之间有什么区别?
    ffmpeg -i file.mpg -r 1/1 $filename%03d.bmp
    
    ffmpeg\ffmpeg -i file.mpg test\thumb%04d.jpg -hide_banner
    
    ffmpeg -i myvideo.avi -vf fps=<NO. of images>/<per no. of seconds> img%0<padding No. of digits>d.jpg