使用ffmpeg转换图像序列

我一直在使用ffmpeg使用以下语法将jpegs序列转换为video

ffmpeg -f image2 -i frame%d.jpg -vcodec mpeg4 -b 800k video.avi 

它是一种享受,但如果文件名不是从0开始然后按照加入顺序追求我得到奇怪的结果。 例如,目录中的第一个文件是frame1,最后一个文件是fram 61.I应该指出我总是使用以递增顺序加入的jpeg列表。 例如一个名为frame1,fram2,fram3等的文件列表。

以下工作正常

 frame1.jpg to frame9.jpg 

frame1.jpg到frame10.jpg frame2.jpg到frame8.jpg frame2.jpg到frame10.jpg frame2.jpg到frame11.jpg frame2.jpg到frame17.jpg frame2.jpg到frame20.jpg frame2.jpg到frame30.jpg frame2 .jpg到frame61.jpg

以下不起作用

 26 to 57 fail 

11至61失败10至61失败20至61失败24至61失败

我可以修改ffmpeg的参数,以便它可以制作video,而不管文件名是什么? (帧%d)

您可以重命名所有jpeg文件,以便编号始终从零开始,并且没有间隙。

我使用它的唯一方法是为帧计数器命名具有恒定固定宽度的帧文件。 如果您从网络摄像头拍摄帧检查是否可以通过网络摄像头本身完成,否则,您必须自己重命名。 您可以开发一个使用C#中的FileWatcher类的Windows服务,该类“侦听”要用框架写入的文件夹,然后将其重命名为具有beforemention格式的另一个文件夹。 这对我有用。

 frame01.jpg frame02.jpg ... frame10.jpg frame11.jpg ... frame61.jpg 

然后用这个:

 ffmpeg.exe -r 1 -f image2 -i frame%02d.jpg -r 16 -vcodec mpeg4 -b 800k -y video.avi 

-i frame%02d.jpg:表示帧计数器的2位数

我添加了-r 1和-r 16作为可选的帧率,我测试它对我有效。