MP3帧的压缩数据可以小于一帧中可用的空间。发生这种情况时,我们将可用空间称为存储库。
如果将来的框架太大而无法容纳在一个框架中的可用空间中,则可以使用储水箱来补充其剩余空间。这样可以提供恒定的比特率,但压缩长度却可变,包括对于正常帧而言太大的长度。
我想知道的是储层距当前框架有多远?
例如,下面显示8个帧。当前帧(CF)及其之前的7帧。
+----+----+----+----+----+----+----+----+
| -7 | -6 | -5 | -4 | -3 | -2 | -1 | CF |
+----+----+----+----+----+----+----+----+
假设CF为第100,000帧,是否可以使用第0帧仍然可用的储液罐?
还是有诸如255帧的限制?
答案 0 :(得分:1)
据我所知,没有具体的帧数限制,但是有4,088位(511字节)的参考限制。因此,确切的位存储库帧限制取决于比特率。
我在LAME Technical FAQ上找到了以下信息:
第N帧的MP3数据未存储在第N帧中,但可以分布在多个帧上。在典型情况下,帧N的数据将有20%的数据存储在帧N-1中,而80%的数据将存储在帧N中。如果编码器建立了一个大的位存储库,则帧N的数据实际上可以存储4088位回到位流中。然后,如果出现非常难编码的段落,则编码器可以自由使用此帧的正常位,再加上多达4088个。然后,所得数据将占用几帧。与给定帧(以字节为单位)关联的数据在比特流中的起始负偏移量由main_data_begin给出。