使用 ffmpeg 将 mp3 音频与 -itsoffset 合并:无效

mp3 audio merging with -itsoffset using ffmpeg: no effect

我使用 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
            }

        });

我也在我的电脑上试过,只是在终端上,它也遇到了同样的问题..

谢谢, 伊扎克

您可以在音频开头附加一段无声音频,而不是使用 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 filter. Finally all concatenated audios will be mixed using amix 过滤器与相应的音频流连接。

否则你可以试试 amerge and adelay 文档本身有明确的解释。

希望对您有所帮助!