如何使用NAudio将任何音频格式转换为mp3

时间:2013-08-03 06:31:59

标签: c# c#-4.0 mp3 converter naudio

public void AudioConvert()
{    
    FileStream fs = new FileStream(InputFileName, FileMode.Open, FileAccess.Read);            
    NAudio.Wave.WaveFormat format = new NAudio.Wave.WaveFormat();
    NAudio.Wave.WaveStream rawStream = new RawSourceWaveStream(fs, format);
    NAudio.Wave.WaveStream wsDATA = WaveFormatConversionStream.CreatePcmStream(rawStream);
    WaveStream wsstream = wst.CanConvertPcmToMp3(2, 44100);
    .....
}

// Here is the class 
public class WaveFormatConversionStreamTests
{
    public WaveStream CanConvertPcmToMp3(int channels,int sampleRate)
    {           
        WaveStream ws = CanCreateConversionStream(
            new WaveFormat(sampleRate, 16, channels),
            new Mp3WaveFormat(sampleRate, channels, 0, 128000/8));
        return ws;
    }
}

在这里,我试图将任何音频格式转换为mp3,但我的代码在ConvertPCMToMp3函数调用中抛出异常,如“ACMNotPossible”。我正在使用NAudio 1.6版本的dll。现在我正在使用Windows 7.请告诉我这段代码出错了。

1 个答案:

答案 0 :(得分:1)

WaveFormatConversionStream是Windows ACM API的包装器,因此如果安装了ACM MP3编码器,则只能使用它来制作MP3。 Windows不附带其中一个。制作MP3的最简单方法就是使用LAME.exe。我在this article中的C#中解释了如何执行此操作。

此外,如果您使用的是NAudio 1.7的alpha并且在Windows 8上,那么您可以使用MP3编码器,它似乎与Windows 8一起作为Media Foundation Transform。使用MediaFoundationEncoder(NAudio WPF演示显示如何执行此操作)。