Ffmpeg 将音频文件与图像连接起来

Ffmpeg 将音频文件与图像连接起来,ffmpeg,Ffmpeg,我正在尝试使用一个命令将多个音频文件和单个图像连接到一个视频文件中。 我在目录中有mp3文件列表和播放列表文件.m3u 我成功地做到了这一点,但我的解决方案很糟糕: 读取播放列表文件并以ffmpeg所需格式创建新的.txt 使用.txt将音频文件连接到.mp3 将大型音频文件和静态图像连接到视频中 这将创建2个我必须删除的不必要文件 我尝试了不同的命令 ffmpeg -loop 1 -framerate 1 -i myImage.jpg -i file1.mp3 -i file2.mp3 -i

我正在尝试使用一个命令将多个音频文件和单个图像连接到一个视频文件中。 我在目录中有mp3文件列表和播放列表文件.m3u

我成功地做到了这一点,但我的解决方案很糟糕:

读取播放列表文件并以ffmpeg所需格式创建新的.txt 使用.txt将音频文件连接到.mp3 将大型音频文件和静态图像连接到视频中 这将创建2个我必须删除的不必要文件

我尝试了不同的命令

ffmpeg -loop 1 -framerate 1 -i myImage.jpg -i file1.mp3 -i file2.mp3 -i file3.mp3 -filter_complex '[0:0][1:0][2:0]concat=n=3:v=0:a=1' -tune stillimage -shortest output.mp4
但是,我在初始化复杂过滤器时出错。 无效参数错误

另一个致命的问题是,我正在使用的系统在文件夹名称中有空格。 我尝试使用-i concat:file1.mp3 | file2.mp3 |。。。但是,我不能使用双引号引用路径,因此我得到一个无效的参数错误

非常感谢您的帮助。

方法1: 使input.txt包含以下内容:

file 'file1.mp3'
file 'file2.mp3'
file 'file3.mp3'
运行ffmpeg:

输入到concat解复用器的所有MP3文件必须具有相同的频道布局和采样率。如果没有,则使用-ac和-ar选项对其进行转换,使其完全相同

方法2: 更新:似乎有一个bug-shortest不使用concat过滤器,我一直忘了这一点。使用concat解复用器查看上述方法,或将-shortest替换为-t。-t的值应等于所有三个MP3文件的总持续时间

ffmpeg -loop 1 -framerate 1 -i myImage.jpg -i file1.mp3 -i file2.mp3 -i file3.mp3 -filter_complex "[0]scale='iw-mod(iw,2)':'ih-mod(ih,2)',format=yuv420p[v];[1:a][2:a][3:a]concat=n=3:v=0:a=1[a]" -map "[v]" -r 15 -map "[a]" -tune stillimage -shortest -movflags +faststart output.mp4
选项说明 过滤器使图像具有均匀的宽度和高度,这是使用libx264输出YUV 4:2:0时所需的。 过滤器将色度子采样设置为4:2:0,否则libx264将尝试限制子采样,但大多数玩家只能处理4:2:0。 筛选器接受file1.mp3、file2.mp3和file3.mp3作为输入。原始命令试图将视频转换为音频,导致参数无效。 -map[v]从-filter_complex选择视频输出。 -r15将输出帧速率设置为15,因为大多数玩家无法处理1fps。这比设置-帧速率15快。 -map[a]从-filter_complex选择音频输出。 -映射1:a从输入1选择音频,第二个输入从0开始计数。 -movflags+faststart编码完成后此选项将一些数据从MP4输出文件的末尾移到开头。这样可以更快地开始播放,否则必须先下载完整的文件。
对不起,你能解释一下这是怎么回事吗?或者一个解释每个arg的来源-我很好奇。哇,非常感谢@llogan。它几乎可以工作,当音频结束时命令不会停止运行,因此它会继续生成没有声音的视频帧。
ffmpeg -loop 1 -framerate 1 -i myImage.jpg -i file1.mp3 -i file2.mp3 -i file3.mp3 -filter_complex "[0]scale='iw-mod(iw,2)':'ih-mod(ih,2)',format=yuv420p[v];[1:a][2:a][3:a]concat=n=3:v=0:a=1[a]" -map "[v]" -r 15 -map "[a]" -tune stillimage -shortest -movflags +faststart output.mp4