我一直在使用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)
答案 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文件,以便编号始终从零开始,并且没有间隙。