我想使用ffmpeg从8个不同的音频文件生成7.1声道音频文件。 但是我发现输出文件的持续时间由持续时间最短的输入文件决定。 我没有找到任何参数可以自动填充较短的音频文件或选择最长的持续时间作为最终持续时间。
我已经看过以下正式文件。 https://ffmpeg.org/ffmpeg-all.html https://trac.ffmpeg.org/wiki/AudioChannelManipulation 但是没有什么帮助。
这是我现在使用的命令:
ffmpeg -i fl.wav -i fr.wav -i fc.wav -i lfe.wav -i bl.wav -i bl.wav -i sl.wav -i sr.wav -filter_complex“ [0: a] [1:a] [2:a] [3:a] [4:a] [5:a] [6:a] [7:a] join = inputs = 8:channel_layout = 7.1 [a]“ -map“ [a]” output.wav
答案 0 :(得分:0)
查找持续时间最长的输入:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.wav
为所有其他输入添加apad过滤器:
ffmpeg -i fl.wav -i fr.wav -i fc.wav -i lfe.wav -i bl.wav -i bl.wav -i sl.wav -i sr.wav -filter_complex "[0:a]apad[a0];[1:a]apad[a1];[2:a]apad[a2];[3:a]apad[a3];[4:a]apad[a4];[5:a]apad[a5];[7:a]apad[a7];[a0][a1][a2][a3][a4][a5][6][a7]join=inputs=8:channel_layout=7.1[a]" -map "[a]" output.wav