将无序图片合并为视频(+MP3音频)

3

我曾经使用ffmpeg完成过一些工作,也创建了自己的.dll文件,直接使用ffmpeg API。但对于我的下一个项目,我需要使用ffmpeg将多个图像组合成一个视频,并添加MP3音频剪辑。

我知道可以这样做来制作有序图像视频:

image001.jpg image002.jpg image003.jpg etc...


ffmpeg -f image2 -i img%03d.jpg -i sound.mp3 output.mpg

但是在我们的项目中,我们没有按照那样的顺序来排序图片。相反,哪些图片以及它们的顺序将在运行时确定(每秒30帧视频需要一张图片)。例如,一个有10帧的视频可能需要由以下顺序的图片组成:

image001.jpg image002.jpg image111.jpg image012.jpg imageFun.jpg image001.jpg image002.jpg imageFun.jpg image055.jpg imageEnd.jpg

我该如何使用ffmpeg实现这个功能?文档中的这一部分对我并没有什么帮助。
我真的不想从C/C++直接使用ffmpeg API,但如果无法在“本地”实现,则必须这样做。
补充说明:
如果无法使用ffmpeg实现此操作,但可以使用其他软件(在Linux上运行,并可从命令行控制)- 我全神贯注!;)

这也在邮件列表上讨论过,似乎原生不支持将无序图像合并为视频MP3音频,我们必须先将图像复制到正确的顺序。虽然有些丑陋,但我们必须测试一下是否会对性能产生太大影响。 - TheSHEEEP
1个回答

1
你可以尝试使用cat并将输出导入到ffmpeg中。示例。该示例使用*.jpg,但你可以将其修改为列出的所有文件,例如cat image1.jpg image3.jpg imagedog.jpg等。

谢谢,那帮了我很多。现在我正在Windows上执行以下操作:type <jpeg图像列表> | ffmpeg -s 640x360 -f image2pipe -vcodec jpegls -r 5 -i - -i audioMp3.data -y video.mp4 然而,生成的视频只有正确的音频,但是我正在传输的图像只有上面20%,其余部分是灰色的。您有什么想法出了什么问题吗? - TheSHEEEP
明白了,我使用了错误的编解码器。mjpeg 应该是正确的。现在它可以工作了,谢谢! - TheSHEEEP
很高兴你找到了解决方案,尽管我忘记了你使用的是Windows而不是Linux。 - llogan
对于那些发现“type”命令无法正常工作的人,可以安装UnixUtils(http://unxutils.sourceforge.net/),将其添加到系统路径中,并获得可用的cat副本。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接