0

我的问题是获取 mp3 帧的实际数据。为此,我使用了 NAudio 并获取 RawData,但我认为在 RawData 属性中,它返回帧的所有字节,包括标题和边信息。

代码如下:

private void button1_Click(object sender, EventArgs e)
{
    Mp3FileReader reader = new Mp3FileReader("file.mp3");
    Mp3Frame mp3Frame = reader.ReadNextFrame();
    byte [] FrameByteArray =  mp3Frame.RawData;

    BitArray bits = new BitArray(FrameByteArray);
    Console.Write(mp3Frame.RawData.Length);
    foreach (bool b in bits)
    {
        if (b == true)
        {
            Console.Write(" 1");
        }
        else
        {
            Console.Write(" 0");
       }

    }
    reader.Close();
  }

它以位为单位返回所有帧数据,包括标题和边信息。但我只需要每一帧的实际数据,没有标题和边信息。

有人可以帮忙吗??

4

1 回答 1

0

NAudio 可以为您找到 MP3 帧,但除了识别一些基本信息(例如采样率、通道模式等)之外,它不会对内容进行任何更深层次的解析。

如果您需要更深入地探索,那么您需要熟悉 MP3 帧的内部结构。特别是,看看您是否可以获得这些文件:

  • MPEG 1 规范 (ISO/IEC 11172-3)。
  • MPEG 2 规范 (ISO/IEC 13818-3)。

这篇关于 codeproject的文章将是一个很好的起点(点击底部的链接)。如果您想要 C# 代码包含对 MP3 帧格式的更深入了解,那么您可以探索NLayer的源代码

于 2013-09-18T11:47:25.950 回答