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

Posted

技术标签:

【中文标题】如何使用 NAudio 将任何音频格式转换为 mp3【英文标题】:How to convert any audio format to mp3 using NAudio 【发布时间】:2013-08-03 06:31:58 【问题描述】:
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】:

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

另外,如果您使用的是 NAudio 1.7 的 alpha 版本并且在 Windows 8 上,那么您也许可以使用 Windows 8 随附的 MP3 编码器作为媒体基础转换。使用 MediaFoundationEncoder(NAudio WPF 演示展示了如何执行此操作)。

【讨论】:

嗨@Mark Heath,我正在关注您的文章,但不明白如何使用ACM 将任何格式的音频转换为mp3。我只想用 NAudio 完成这项任务。

以上是关于如何使用 NAudio 将任何音频格式转换为 mp3的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 中的 NAudio 将 M4A 音频文件转换为 MP3 的问题/错误

如何使用 C# NAudio 操作字节?

即时将原始音频字节从 NAudio 转换为 wav 字节

如何使用 c#.net 解码 amr 文件

如何将flac格式的音频文件转换为MP3格式?

使用 NAudio 将 g722 音频转换为 WAV