如何使用 Naudio 和 c# 修剪 mp3 帧的标题和边信息

Posted

技术标签:

【中文标题】如何使用 Naudio 和 c# 修剪 mp3 帧的标题和边信息【英文标题】:how to trim header and side information of mp3 frame using Naudio and c# 【发布时间】:2013-09-18 06:22:37 【问题描述】:

我的问题是获取 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();
  

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

谁能帮忙??

【问题讨论】:

【参考方案1】:

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

如果您需要更深入地探索,则需要熟悉 MP3 帧的内部结构。特别是,看看你是否能拿到这些文件:

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

This article on codeproject 是一个很好的起点(点击底部的链接)。如果你想要 C# 代码包含对 MP3 帧格式的更深入理解,那么你可以探索NLayer的源代码

【讨论】:

以上是关于如何使用 Naudio 和 c# 修剪 mp3 帧的标题和边信息的主要内容,如果未能解决你的问题,请参考以下文章

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

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

逐帧播放mp3 [关闭]

Naudio:如何播放 MP3 和 WAV 文件?

NAudio lame 将文本转换为 mp3 在服务器 c# Web 应用程序上无法正常工作?

如何使用内存流、NAudio 和 LameMP3 将音频 aiff 转换为 MP3