混合从两个源文件中读取的音频

时间:2016-05-04 22:48:43

标签: c# audio naudio

我想将两个文件(1个mp3和1个wav(录制的语音)文件)的音频读取混合到一个文件(mp3或wav)中。

我已阅读了许多相关答案,但没有帮助我得到我想要的东西。

下面这段代码生成一个蒸汽作为输出。我不知道如何正确调用此函数以及如何在最后将输出流作为mp3 / wav文件。

    public static void Combine(string[] inputFiles, Stream output)
{
    foreach (string file in inputFiles)
    {
        Mp3FileReader reader = new Mp3FileReader(file);
        if ((output.Position == 0) && (reader.Id3v2Tag != null))
        {
            output.Write(reader.Id3v2Tag.RawData, 0, reader.Id3v2Tag.RawData.Length);
        }
        Mp3Frame frame;
        while ((frame = reader.ReadNextFrame()) != null)
        {
            output.Write(frame.RawData, 0, frame.RawData.Length);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

看起来你从http://mark-dot-net.blogspot.com/2010/11/merging-mp3-files-with-naudio-in-c-and.html获取了代码。查看http://markheath.net/post/mixing-and-looping-with-naudio。这涉及循环和混合。由于你没有循环,你不需要那个部分。

请注意,那里的示例将音频发送给扬声器。但是,您始终可以使用(例如)WaveFileWriter替换该输出。

另请注意,MixingWaveProvider32要求所有输入都在同一WaveFormat。如果情况并非如此,那么您将需要使用重新采样器。幸运的是,还有http://mark-dot-net.blogspot.com/2014/05/how-to-resample-audio-with-naudio.html来帮助你。