使用ffmpeg转换图像序列

时间:2010-07-18 14:24:01

标签: c#

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

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的参数,以便无论文件名如何都可以制作视频? (框架%d)

2 个答案:

答案 0 :(得分:3)

我使用它的唯一方法是为帧计数器命名具有恒定固定宽度的帧文件。如果您从网络摄像头拍摄帧检查是否可以通过网络摄像头本身完成,否则,您必须自己重命名。您可以开发一个使用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作为我测试为我工作的可选帧率。

答案 1 :(得分:1)

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