【问题标题】:Try to play MP3 audio file with NAudio尝试使用 NAudio 播放 MP3 音频文件
【发布时间】:2010-12-30 20:42:43
【问题描述】:

我正在关注this tutorial 使用 NAudio 播放 MP3 音频文件。要创建 WaveStream,我使用以下方法:

private WaveStream CreateInputStream(string fileName)
        {
            WaveChannel32 inputStream;
            if (fileName.EndsWith(".mp3"))
            {
                WaveStream mp3Reader = new Mp3FileReader(fileName);
                inputStream = new WaveChannel32(mp3Reader);
            }
            else
            {
                throw new InvalidOperationException("Unsupported extension");
            }
            volumeStream = inputStream;
            return volumeStream;
        }

不幸的是,我总是在

line inputStream = new WaveChanne32(mp3Reader):

块引用

System.ApplicationException was unhandled
  Message=Only PCM supported
  Source=NAudio
  StackTrace:

【问题讨论】:

    标签: c# .net mp3 naudio lame


    【解决方案1】:

    你可以使用

    var pStream = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(mp3Reader);
    var inputStream = new NAudio.Wave.BlockAlignReductionStream(pStream);
    

    【讨论】:

      【解决方案2】:

      PCM 是一种编码类型(脉冲编码调制)。好像 NAudio 只能处理 PCM 编码的文件。

      【讨论】:

      • 谢谢。以及如何确保我正在播放的文件是 PCM 编码的?我使用 Lame 对自己尝试在此处播放的 MP3 文件进行编码
      • 我看过那个例子......我觉得这很奇怪。据我所知,MP3 文件永远不会被 PCM 编码。所以那段代码行不通……我想……我不是音乐格式专家,只是一个碰巧会弹吉他的程序员。
      • 这不是真的。 NAudio 具有可以处理 MP3 文件的 MP3FileReader 类。问题是 WaveChannel32 类将 PCM 作为输入。即在传入 WaveStream32 之前,您需要将 MP3 转换为 PCM。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2013-10-21
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多