【发布时间】:2012-06-11 05:19:00
【问题描述】:
我想询问每个 MP3 帧的标记字节?我们如何知道它是来自 MP3 的帧? 在一些文章中说每个帧头的标记是Hexa(FF FB)。这是真的吗?
【问题讨论】:
标签: mp3 file-format
我想询问每个 MP3 帧的标记字节?我们如何知道它是来自 MP3 的帧? 在一些文章中说每个帧头的标记是Hexa(FF FB)。这是真的吗?
【问题讨论】:
标签: mp3 file-format
所有 MP3 帧的开头都有一个同步字标记。该同步字长 11 位,全为 1。因此 MP3 帧将以 FFF 或 FFE 开头。有关 MP3 帧结构的更多details,请参阅下面的链接
这并不意味着任何以 0xFFE 或 0xFFF 开头的字节序列都是 MP3 帧头。可能还有很多其他情况
(a) 其他格式如 ADTS(AAC) 也有类似的同步字。 ADTS 框架的更多细节是here。
(b) MP3帧内的数据也可以包含FFF/FFE序列。
因此,确定字节序列是否为 MP3 的最佳方法是执行以下操作
(o) 搜索同步字(FFF 或 FFE)序列
(o) 通过解析同步字后的头块找到帧的长度
(o) 按帧长在文件中查找,看是否有另一个同步字。
如果它是一个 MP3 文件,那么您应该在将帧长度添加到当前同步字后找到另一个同步字。
【讨论】: