我有一个像这样的单声道 wav 文件列表
1 speaker1.wav
2 speaker2.wav
3 speaker1.wav
4 speaker2.wav
5 speaker1.wav
6 speaker2.wav
我想将它们连接起来以便得到一个文件,其中每个扬声器都位于立体声的左声道或右声道上:
left : 1 3 5
right: 2 4 6
音频文件应按顺序一个接一个地在扬声器之间交替播放,并且未播放的频道上保持静音。
这就是我用于单通道合并的内容:
ffmpeg -f concat -i filenames.txt output.wav -y
filenames.txt 是如下文件的列表
file 'speaker1.wav'
file 'speaker2.wav'
file 'speaker1.wav'
file 'speaker2.wav'
file 'speaker1.wav'
file 'speaker2.wav'
我曾尝试使用这样的连接
ffmpeg -f concat -i 1620655780045.txt -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo[a]" -map "[a]" 1620655780045.wav -y
但我遇到了一个错误Invalid file index 1 in filtergraph description [0:a][1:a]join=inputs=2:channel_layout=stereo[a].
,我不知道该如何解决
答案1
首先,使用anullsrc过滤器生成静音/填充/虚拟音频,然后加入过滤器将静音添加到每个输入的相应通道,最后使用连接过滤器连接所有内容。
ffmpeg -f lavfi -i anullsrc=cl=mono -i "1 speaker1.wav" -i "2 speaker2.wav" -i "3 speaker1.wav" -i "4 speaker2.wav" -i "5 speaker1.wav" -i "6 speaker2.wav" -filter_complex
"[0][1]join=inputs=2:channel_layout=stereo:map=1.0-FL|0.0-FR[a1];
[0][2]join=inputs=2:channel_layout=stereo:map=0.0-FL|1.0-FR[a2];
[0][3]join=inputs=2:channel_layout=stereo:map=1.0-FL|0.0-FR[a3];
[0][4]join=inputs=2:channel_layout=stereo:map=0.0-FL|1.0-FR[a4];
[0][5]join=inputs=2:channel_layout=stereo:map=1.0-FL|0.0-FR[a5];
[0][6]join=inputs=2:channel_layout=stereo:map=0.0-FL|1.0-FR[a6];
[a1][a2][a3][a4][a5][a6]concat=n=6:a=1:v=0"
output.wav