ffmpeg将avi分成具有已知帧速率的帧

Myx*_*Myx 21 linux ffmpeg image-processing

我在此相关主题下发布了此评论.然而,他们似乎没有注意到=(

我用过

ffmpeg -i myfile.avi -f image2 image-%05d.bmp
Run Code Online (Sandbox Code Playgroud)

分成myfile.avi存储为.bmp文件的帧.它似乎工作除了不完全.在录制我的视频时,我以一定的速度录制,1000fps视频结果很2min29sec长.如果我的数学是正确的,整个视频总共应该有149,000帧.但是,当我跑

ffmpeg -i myfile.avi -f image2 image-%05d.bmp
Run Code Online (Sandbox Code Playgroud)

我只获得了4472个文件.我怎样才能获得原始的149k帧?

我还尝试将原始AVI的帧速率转换为1000fps

ffmpeg -i myfile.avi -r 1000 otherfile.avi
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有解决我的担忧.

Dat*_*Chu 36

ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png
Run Code Online (Sandbox Code Playgroud)

我不确定输出150k bmp文件是个好主意.也许png足够好了吗?


小智 12

你的数学的第一部分是好的,2分29秒约为149秒.1000 fps,可生成149000帧.但是,您的输出文件名只有5个位置,其中149000有6个位置,所以请尝试"image-%06d.bmp".

然后是磁盘大小:你的图像是否适合磁盘?使用bmp,每个图像都使用自己的大小.您可能尝试使用jpeg图片,它们压缩大约10倍.

另一个想法:如果ffmpeg没有找到(合理的)帧速率,它会降低到每秒25或30帧.您可能需要指定它.对源和目标都这样做,请参见手册页(man ffmpeg在unix上):

   To force the frame rate of the input file (valid for raw formats
   only) to 1 fps and the frame rate of the output file to 24 fps:
           ffmpeg -r 1 -i input.m2v -r 24 output.avi
Run Code Online (Sandbox Code Playgroud)

对于它的价值:我用ffmpeg -y -i "video.mpg" -sameq "video.%04d.jpg"我的视频分割成图片.-sameq是以合理的质量强制jpeg,-y是为了避免允许覆盖问题.为了你:

ffmpeg -y -r 1000 -i"myfile.avi"-sameq"image.%06d.jpg"