2016-12-16 98 views
0

我使用Python3,subprocess和ffmpeg将多个PNG图像转换为单个视频。使用ffmpeg和Python3子进程将多个PNG图像转换为视频

我有400个PNG编号为“00001.png”。

此呼吁一个单一的特定图像AA一帧视频工作:但是

subprocess.call(["ffmpeg","-y","-r","24","-i", "00300.png","-vcodec","mpeg4", "-qscale","5", "-r", "24", "video.mp4"]) 

,当我尝试看到了一些网上的方法调用所有格式化为“###我的图片## PNG”使用 “%05d.png”,如下图,现在不工作:

subprocess.call(["ffmpeg","-y","-r","24","-i", "%05d.png","-vcodec","mpeg4", "-qscale","5", "-r", "24", "video.mp4"]) 

我收到错误:"%05d.png: No such file or directory"

我有这样的感觉,上面的语法适合于Python2,而不是在我的python3上工作,但无法在任何地方找到正确的python3语法。

在此先感谢您的帮助

+0

你在哪看到'“%05d.png”'?在Linux上可能会使用'* .png',因为'Bash'将它转换为名称匹配'* .png'的文件列表。我只在图像转换器'ImageMagic'中看到''%05d.png''。 – furas

+0

ffmpeg语法看起来不错。也许它需要以某种方式逃脱。 @furas ffmpeg接受图像序列的[语法](http://ffmpeg.org/ffmpeg-formats.html#Examples-1)。 – Mulvya

+0

我试过这个'subprocess',它适合我。因为我在子文件夹“test”中使用了短名称001.png - 003.png,因此我使用了''test /%03d.png“'。你是否在包含图像的文件夹中运行脚本? – furas

回答

1

好了,我终于找到了答案,并预期这是令人失望的简单:编号具有(在我的案件00001)以1开始,而实际上我的文件范围从00002.png到00301.png。

尽快添加了一个初始00001.png文件。

+1

您的Q声明否则:)。FFmpeg有一个start_number选项,所以''ffmpeg “,” - y“,” - r“,”24“,” - start_number“,”2“,” - i“,”%05d.png“' – Mulvya

+0

这完全是我的错!感谢提示Mulvya。 – ylnor