Mp3 文件;恒定帧“规格”

Posted

技术标签:

【中文标题】Mp3 文件;恒定帧“规格”【英文标题】:Mp3 files; constant frame "specs" 【发布时间】:2013-12-31 16:48:18 【问题描述】:

我正在播放 mp3 文件,但在规范中找不到 除比特率外,帧的特征是否 允许变化。 在我测试程序的大约 17k 个文件中,我发现了一些 其中层和通道模式在中途切换。那些是 损坏的文件还是允许的? 从我的测试来看,采样率和帧持续时间保持不变 不变,但也许我测试的文件确实如此。

除了VBR之外,任何人都知道帧的可变特性吗?

谢谢

【问题讨论】:

【参考方案1】:

简短版:您的帧解析器正在失去同步并将压缩音频数据作为帧头读取,或者您看到的文件最初是两个不同的 MPEG 流,它们已连接在一起。

TL;DR: MP3 通常希望帧在层、通道数(注意我没有说“模式”)和任何给定流的采样率方面保持一致。规范没有说“这些在流中必须是一致的”或类似的东西,但它确实定义了一个解码器,它很好地要求它们保持一致以便正确操作。其他字段通常会因帧而异,但只有比特率索引和通道模式/子模式可能会发生变化。

【讨论】:

不能投票,因为我没有足够的代表,但我喜欢这个答案。我检查了帧解析,这不是问题。有一个大约 2 秒的序列,它从 mpeg 1 第 3 层切换到 mpeg 2 第 3 层,但帧序列没有中断。虽然声音变得断断续续,但我的程序只分析流,而不是音频内容。谢谢 很高兴它成功了。从 v1 切换到 v2 很奇怪;你确定他们没有位错误吗?无论哪种方式,您都应该能够接受答案,这将不胜感激。 :)

以上是关于Mp3 文件;恒定帧“规格”的主要内容,如果未能解决你的问题,请参考以下文章

逐帧播放mp3 [关闭]

MP3/wav 音频文件的持续时间

如何更改 mp3 比特率? (德尔福)

requestAnimationFrame JavaScript:恒定帧速率/平滑图形

MP3 文件格式解析

CADisplayLink 无法在模拟器中实现恒定帧速率