我想将两个文件(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);
}
}
}
答案 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来帮助你。