我理解为什么 2 的倍数由于其二进制性质而在计算机中如此频繁出现,但我无法弄清楚最常见的 mp3 比特率(64kbps、128kbps、160kbps、192kbps、256kbps、320kbps 等)也倾向于遵循此规则。
- 既然 MP3 只是声波的连续编码,那么每秒用能被 2 整除的千比特数来表示又有什么关系呢?
- 像 iTunes 这样的音乐播放器是否会一直读取文件并重现编码的声音,而不管秒边界在哪里,还是它们会一秒一秒地读取文件?
- 在后一种情况下,读取 256kbps 文件需要读取的内存页面比读取 257kbps 文件要少一些,但播放器总是可以不管它们的比特率如何,以 256 千比特的块为单位进行读取,然后逐渐处理,对吗?
- 128kbps 的 MP3 之所以流行,仅仅是因为这是普遍接受的比特率,还是它们实际上比 126kbps 和 131kbps 的文件有一些优势,除了非常质量/文件大小略有不同?
答案1
对于恒定比特率编码 (CBR),MPEG-1 音频第 III 层标准指定标准比特率为 32、40、48、56、64、80、96、112、128、160、192、224、256 和 320 kbit/s。MPEG-2 标准中还定义了其他比特率,但它们也都是 2 的倍数(实际上,8 到 160 范围内的所有 8 的倍数 - 请参阅上面链接中标有“比特率指数”的表格)。
从技术上讲,没有什么可以限制 MP3 的比特率为 2 的倍数,因为可以使用可变比特率编码,或者可以使用 MPEG 规范中的一些未使用的标志来实现自定义比特率(尽管这必须手动实现)。要使 MP3 符合 MPEG 规范,从而与大多数 MP3 解码器兼容,它必须具有规范定义的比特率 - 因此,所有 CBR 编码的 MP3 文件的比特率都是 2 的倍数。
根据资源,VBR 可以通过在每帧的固定速率之间切换比特率进行编码,也可以通过共享相邻帧中的可用比特率进行编码(实际上会产生两个组合帧的非标准比特率)。给定帧的长度取决于采样率,每帧有 1152 个样本。没有任何限制帧本身的大小,也没有限制帧必须是 2 进制大小(即采样率为 44.1 kHz 的 128 kbit/s MP3 的帧大小为 417 字节)。
最后,以 126 kbps 编码的文件听起来会比以 128 kbps 编码的文件更差,同样,以 131 kbps 编码的文件听起来会更好。 然而,MP3 是根据特定编码器的心理声学模型进行编码的。在给定比特率下,文件听起来“更好”或“更差”的程度在很大程度上取决于用于实现该模型的算法 - 但是,一般来说,更高的比特率允许更多的数据,大概可以重建更准确的原始音频信号流。
答案2
MPEG 1 Layer-III (mp3) 文件是帧流。
本网页e 详细描述了帧的数据结构。
如您所见,仅分配了 4 位来确定比特率。在为实时流式传输的内容设计格式时,您不想浪费比描述流式传输内容更多的空间。
不确定为什么 4 位被确定为消耗空间和“比特率分辨率”之间的良好权衡 - 并且关于所选择的具体速率,它们可能是根据工程师判断的 mp3 算法可接受的最低和最高质量范围来选择的。
很可能大多数 MP3 播放器都是一次读取一帧,并可能在解码/播放当前帧时尝试“提前”缓冲至少一帧。
帧的大小以及可能分配用于保存它的 RAM 如下:
FrameSize = 144 * BitRate / SampleRate
当填充位被清除时。FrameSize = (144 * BitRate / SampleRate) + 1
当设置填充位时。
更高的比特率/采样率 = 需要更多的 RAM。
128Kbps 可能很受欢迎,因为它是许多编码器的默认设置。
此外,一位同事在讨论中给了我一些见解:128Kbps 也大致相当于“每分钟一兆”(但尚未验证) - 可能也与此有关。
答案3
在记录“原始”数据时,数据将被分成块进行缓冲。这些块显然是 2 的幂。如果每秒有整数个块,那么概念上是最简单的。