Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio MP3数据帧使用哪种整数类型?_Audio_Blob_Mp3 - Fatal编程技术网

Audio MP3数据帧使用哪种整数类型?

Audio MP3数据帧使用哪种整数类型?,audio,blob,mp3,Audio,Blob,Mp3,作为个人项目的一部分,我正在为Rust中的各种二进制格式编写一个通用解析器库。我已经开始研究MP3文件的文件结构。据我所知,MP3文件结构由头文件和数据帧组成。每个标题帧提供有关正在进行的数据帧的元信息。这里是我正在引用的MP3头帧的一个和一个 我理解MP3头的格式。我的困惑,或缺乏信息,围绕着MP3数据帧。我似乎找不到一个源来指定在MP3文件的数据帧部分编码的整数类型样本。它们是8位、16位、32位、有符号、无符号等吗 我能想到的最好的方法是,使用采样率频率和比特率的组合来计算每个样本大小应该

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

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

我能想到的最好的方法是,使用采样率频率和比特率的组合来计算每个样本大小应该是多少。但是,这并不能确定每个样本是有符号整数还是无符号整数


我不是在解码这些文件,我只是在解析它们。我很难找到这些信息。如果有人能提供任何信息或帮助,我们将不胜感激。

尽管这与.mp3本身无关,但威尔·C·皮尔克尔的书中可能会有一些有用的信息

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

另一个需要注意的重要事项是,虽然相位反转在许多音频应用中很常见,但反转-32768并没有相应的整数。为了补偿,通常将值-32768视为-32767。但这仅在处理过程中使用值0时才重要,通常情况下是这样。否则,可以将上限扩大到32768

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

很抱歉,我没有更多关于MP3的信息,但这可能还是很有见地的


祝你好运

MP3不包含您所指的示例。这是有损压缩,在频域内完成。一旦你通过了标题,我想你必须看源代码,以便解码器更深入。此外,频域转换和量化的结果要么是哈夫曼编码,要么是算术编码(不记得第3层使用的是哪个)。根据定义,编码数据在比特流中是可变长度的。我知道MP3是压缩的,数据帧的物理格式不会直接转换为比特流。我只是试图解析MP3文件的内容,而不是解码它。要解析MP3文件,只有指定了数据帧的布局才有意义。为了对其进行解码,解码器必须同意布局/格式。