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

时间:2010-10-12 18:01:14

标签: linux image-processing ffmpeg

我在this related thread下发布了此评论。然而,他们似乎没有引起注意=(

我用过

ffmpeg -i myfile.avi -f image2 image-%05d.bmp

myfile.avi拆分为存储为.bmp个文件的帧。它似乎工作除了不完全。录制我的视频时,我的录制速度为1000fps,视频结果为2min29sec长。如果我的数学运算正确,那么整个视频的总数应该达到 149,000帧。但是,当我跑了

ffmpeg -i myfile.avi -f image2 image-%05d.bmp

我只获得了4472个文件。如何获得原始的149k帧?

我还尝试通过

将原始AVI的帧速率转换为1000fps
ffmpeg -i myfile.avi -r 1000 otherfile.avi

但这似乎并没有解决我的问题。

4 个答案:

答案 0 :(得分:36)

ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png

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

答案 1 :(得分:11)

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

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

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

   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

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

ffmpeg -y -r 1000 -i“myfile.avi”-sameq“image。%06d.jpg”

答案 2 :(得分:0)

我认为,这里存在一个误解:HS视频系统的输出不太可能具有1000 fps的输出帧速率,而是30(或50/60)fps的正常情况。除了以这种速度超载大多数视频播放器之外,以与录制的速度相同的速度显示序列将适得其反。 基本上:1秒@ 1000 fps输入就像33秒@ 30 fps输出。

场景的持续时间是否真的是2:29分钟(以正常速率拍摄视频~82分钟)或拍摄约4.5秒(4472帧),这是正常播放时间的2:29分钟?

答案 3 :(得分:0)

我在ubuntu 18.04终端上尝试了此操作。

ffmpeg -i input_video.avi output_frame_path_images%5d.png

哪里

-i =输入