Xamarin Android 将音频文件与 FFMpeg 合并

Xamarin Android merge audio files with FFMpeg

我正在为 FFMpeg 使用这个绑定库: https://github.com/gperozzo/XamarinAndroidFFmpeg

我的目标是混合两个音频文件。

String s = "-i " + "test.wav" + " -i " + test2.mp3 + " -filter_complex amix=inputs=2:duration=first " + "result.mp3";

Device.BeginInvokeOnMainThread(async () =>
{
   await FFMpeg.Xamarin.FFmpegLibrary.Run(Forms.Context, s);
});

所以我有 2 个输入文件:一个是 .mp3,另一个是 .wav。

我也尝试了下一个命令:

String s= "-i "+ "test.wav" +" -i "+ "test2.mp3" + " -filter_complex [0:0][1:0]concat=n=2:v=0:a=1[out] -map [out] " + "result.mp3";
String s = "-i " + "test.wav" + " -i " + "test2.mp3" + " -filter_complex [0:a][1:a]amerge=inputs=2[aout] -map [aout] -ac 2 " + "result.mp3";

1) 我可以混合两种不同的音频格式(在我的例子中是 .mp3 和 .wav)还是它们应该是等价的? 2) 正确的混合命令行是什么?

提前致谢。

1) Could I mix two different audio formats (in my case .mp3 & .wav)?

是的。输入格式无关紧要,因为它会在馈送到过滤器之前完全解码为 PCM 音频,但您必须了解各种输入通道将如何混合以创建输出通道布局。阅读有关 amerge and amix 过滤器的文档以获取更多信息。

2) What is the correct command line for the mixing?

您使用 amerge 的命令应该有效:

ffmpeg -i test.wav -i test2.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" -ac 2 result.mp3

或使用 amix:

ffmpeg -i test.wav -i test2.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=shortest[aout]" -map "[aout]" result.mp3