Linux ffmpeg将avi分割为具有已知帧速率的帧

Linux ffmpeg将avi分割为具有已知帧速率的帧,linux,image-processing,ffmpeg,Linux,Image Processing,Ffmpeg,我将此作为评论发布在下面。然而,他们似乎没有被注意到=( 我用过 ffmpeg -i myfile.avi -f image2 image-%05d.bmp 将myfile.avi分割成存储为.bmp文件的帧。这似乎有效,但效果不太好。在录制视频时,我以1000fps的速度录制,视频的长度为2min29秒如果我的数学正确,那么整个视频的总帧数应该是149000帧重新录制。但是,当我跑步时 ffmpeg -i myfile.avi -f image2 image-%05d.bmp 我只获得了4

我将此作为评论发布在下面。然而,他们似乎没有被注意到=(

我用过

ffmpeg -i myfile.avi -f image2 image-%05d.bmp
myfile.avi
分割成存储为
.bmp
文件的帧。这似乎有效,但效果不太好。在录制视频时,我以
1000fps
的速度录制,视频的长度为
2min29秒
如果我的数学正确,那么整个视频的总帧数应该是149000帧重新录制。但是,当我跑步时

ffmpeg -i myfile.avi -f image2 image-%05d.bmp
我只获得了4472个文件。我如何获得原来的149k帧

我还尝试通过执行以下操作将原始AVI的帧速率转换为1000fps

ffmpeg -i myfile.avi -r 1000 otherfile.avi
但这似乎并没有解决我的担忧

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

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

你的数学第一部分很好,2分29秒大约是149秒。1000 fps即149000帧。但是你的输出文件名只有5个位置,149000有6个位置,所以试试“image-%06d.bmp”

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

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

值得一提的是:我使用
ffmpeg-y-I“video.mpg”-sameq“video.%04d.jpg”
将我的视频分割为图片。sameq用于强制jpeg以合理的质量,而-y用于避免允许覆盖问题。对于您:


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

我认为,这里有一个误解:HS视频系统的输出不太可能具有1000 fps的输出帧速率,但相当正常,为30(或50/60)fps。除了用这种速度使大多数视频播放器过载外,以与录制速度相同的速度显示序列也会适得其反。 基本上:1000 fps时的1秒输入相当于30 fps时的33秒输出


场景的持续时间真的是记录了2:29分钟(导致视频以正常速率播放约82分钟)还是记录了4.5秒(4472帧),即正常播放时的2:29分钟?

我在ubuntu 18.04终端上尝试了这一点。

ffmpeg -i input_video.avi output_frame_path_images%5d.png
在哪里,


-i=Input

这对我用笔式摄像机录制的视频有效。使用
-r 1000
将迫使ffmpeg简单地复制(或删除帧,如果Input fps更高)帧以达到1000。可能不是您想要的。-sameq现在不推荐使用
ffmpeg -i input_video.avi output_frame_path_images%5d.png