了解 Mp3 文件结构

Understanding Mp3 file structure

我正在从事一个 mp3 隐写术项目,我想通过定期操作最低有效位 (LSB) 来对 mp3 文件中的文本进行编码。我想在不对音频进行任何重大更改的情况下对该文本进行编码。根据这个 link http://www.datavoyage.com/mpgscript/mpeghdr.htm 有 mp3 headers 携带前导 mp3 块的信息。所以我想要一个关于如何使这成为可能的指导?

Mp3 文件由 "Frames" 的序列组成(播放 4 分钟的 mp3 文件大约有 11000 帧)。在每个 MP3 文件的前端和末尾都有两个信息字段 (Id3 Tag v1, v2) 包含有关 Mp3 文件的信息——这两个字段是可选的,可以存在或不存在对 Mp3 文件的质量没有任何影响。您不应在此处隐藏 staga-message,因为它们很容易被发现。帧由帧 header(32 位)和帧 body(包含压缩声音)组成。根据你的问题,隐写术会影响帧header(32位),所以我会关注帧header!

在 32 位帧 header 中仍然存在一些 "unimportant bit" 由于它们的功能(阅读有关它们功能的更多详细信息)。总之你可以使用 bit in index of: 24, 27, 28, 29, 30, 31, 32 (bit 27 和 28 会对音质有一点影响) with index in this picture in this link: https://en.wikipedia.org/wiki/MP3#/media/File:Mp3filestructure.svg.

所以这取决于您是否只需要每帧 5 位或每帧 7 位。由于我的工作(理论和源代码测试),7 位是您可以在每帧上使用的最大位数,但其他人可以找到更大的位!

为了访问每个帧的字节数组,您可以编写自己的 class,但互联网上有许多免费的 classes - NAudio.dll by Mark Heath - (我不能 post link 由于论坛法律,你可以搜索 Google) - 很有用。

访问每个帧的字节数组后,您可以embed/extract数据in/fromMp3文件。注意:每帧字节数组的前32位就是FrameHeader,所以可以很容易的识别出不重要位的精确索引!

我最近完成了关于这个主题的毕业论文(图像隐写术 -LSB、奇偶编码和 MP3 - 未使用的位 Header)。我论文中的以下源代码(用 C# 编写)是一个可运行的隐写术程序。希望对您有所帮助:http://www.mediafire.com/download/aggg33i5ydvgrpg/ThesisSteganography%2850900483%29.rar

Ps: 我是越南人,所以我的句子可能存在一些错误!