audio - MP3数据帧使用什么整数类型?

标签 audio blob mp3

作为个人项目的一部分,我正在用Rust为各种二进制格式编写一个通用解析器库。我已经开始研究MP3文件的文件结构。据我了解,MP3文件结构由 header 和数据帧组成。每个标题帧都提供有关进行中的数据帧的元信息。这是我正在引用的MP3 header 帧的diagramlisting of allowed values

我了解MP3 header 的格式。我的困惑或缺乏信息围绕着MP3数据帧。我似乎找不到找到指定整数类型样本像MP3文件的数据帧部分中那样编码的源。它们是8位,16位,32位,有符号,无符号等吗?

我能想到的最好的办法是结合使用采样率频率和比特率来计算每个样本大小。但是,这不能确定每个样本是带符号的还是无符号的整数。

我不是在尝试解码这些文件,而是在尝试解析它们。我很难找到这些信息。有人可以提供的任何信息或帮助将不胜感激。

最佳答案

尽管这与.mp3本身无关,但在Will C. Pirkle的书Designing Audio Effect Plugins in C++中可能有一些有用的信息。

他讨论了.wav音频格式存储其信息的方式。它使用从-32,768到32,767的有符号整数。它以双极性格式表示2 ^ 16的范围,其中指数对应于位深度(最常见的是16或24)。

还要注意的另一重要事项是,虽然反相在许多音频应用中很常见,但没有用于反相-32,768的相应整数。为了补偿,通常将值-32,768视为-32,767。这仅在您在处理中使用值0时才重要,这是最常见的情况。否则,可以将上限扩展到32,768。

他确实指出,音频处理应用程序处理0.0f和1.0f或-1.0f和1.0f之间的浮点数更为常见。原因是由于加法和乘法是DSP中的常见运算,因此如果使用这些浮点,我们可以避免该范围的溢出。在双极整数格式中,要找到两个导致乘积或总和超出该范围的数字太容易了。在-1.0f到1.0f的范围内,任何两个数字总是导致产品仍在该范围内。不幸的是,添加仍然需要谨慎,但是...

抱歉,我没有关于.mp3的更多信息,但是也许这仍然很有见地。

祝好运!

关于audio - MP3数据帧使用什么整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724096/

相关文章:

javascript - 如何在html5页面加载时找到系统的音频驱动状态

c# - WAV 文件修剪和添加静音

javascript - 不按鼠标或使用Javascript中的任何键将无法播放音频

php - 无需下载整个文件即可读取 ID3 标签

javascript - HTML 网站中的 mp3 播放器

linux - 如何在 Linux 上降低 wav 文件的质量和规范

c++ - 如何用 C++ 从 MySQL 获取 Blob 数据

image - 区分单连通图形?

azure - 使用Blob存储服务REST API创建容器和azure存储服务中的StorageClient类库创建容器有什么区别?

linux - 如何在 Linux 中创建 MP3 的波形图像?