使用ffmpeg与-itsoffset合并的mp3音频:没有效果

时间:2015-08-11 11:56:24

标签: audio merge ffmpeg mp3

我使用ffmpeg在我的节点服务器中合并mp3。它工作但偏移没有任何影响.. 我看不出有什么问题,我想得到你的帮助:)。

var command = "ffmpeg -i "+ input1+ " -itsoffset 40 -i " + input2 +" -filter_complex amerge -c:a libmp3lame -q:a 4 "+ output;

        exec(command, function (error, stdout, stderr) {
            if (stdout) console.log(stdout);
            if (stderr) console.log(stderr);

            if (error) {
                console.log('exec error: ' + error);
                response.statusCode = 404;
                response.end();

            } else {
                // Do something
            }

        });

我也在终端上的电脑上尝试了它,它也可以解决同样的问题..

谢谢, 伊萨克

1 个答案:

答案 0 :(得分:10)

您可以将无声音频附加到音频的开头,而不是使用itsoffset。假设我们有三个音频要合并,每个10秒长。所以你可以按如下方式添加无声音频。

  • 第一个音频:没有无声音频
  • 第二个音频:将10秒无声音频添加到开头
  • 第三音频:将(10秒)x 2无声音频添加到开头

在您将所有这些音频混合在一起之后。要创建无声音频,您可以使用aevalsrc过滤器filter_complex。以下将适用于上述示例。

ffmpeg -i 0.mp3 -i 1.mp3 -i 2.mp3 -filter_complex 
"aevalsrc=0:d=10[s1];
aevalsrc=0:d=20[s2];
[s1][1:a]concat=n=2:v=0:a=1[ac1];
[s2][2:a]concat=n=2:v=0:a=1[ac2];
[0:a][ac1][ac2]amix=3[aout]" -map [aout] out.mp3

此处[s1][s2]是第二和第三输入音频流的相应静音音频源。然后使用concat过滤器将每个静音源与相应的音频流连接起来。最后,所有连接的音频将使用amix过滤器进行混合。

另外,您可以尝试amergeadelay,其中doc本身有明确的解释。

希望这有帮助!