如何获得FLAC帧长度

时间:2016-01-13 04:55:18

标签: frame decode flac

我研究FLAC解码问题,但无法弄清楚如何获得FLAC帧长度。请帮忙。 https://xiph.org/flac/format.html 我对METADATA_BLOCK_STREAMINFO进行了编码,并得到以下数据:

mMinBlock: 4096
mMaxBlock: 4096
mMinFrame: 1201
mMaxFrame: 12804
mSampleRate: 44100
mBitPerSample: 16
mTotalSample: 14170212

然后我开始分析第一帧,下面是第一帧标题的信息:

isFixBlock = true
blockSize = 12
sampleRate = 9
channel = 10
sampleSize = 4
number = 0
Blocking strategy is fixed-blocksize;
Block size: 1100, it means 256 * (2^(12-8)) samples = 4096 samples;
Sample rate: 1001 : 44.1kHz;
Channel: 2;
Sample size: 100 : 16 bits per sample;

因此,根据以上信息,我们知道该帧具有4096个样本,并且样本大小为每个样本16位。这意味着该帧长度至少是(忽略子帧头和帧尾等)4096 * 16/8 = 8192字节。但是如果我手动检查FLAC文件,第一帧和第二帧的偏移间隙仅为2976字节,这意味着第一帧的帧长度仅为2976字节。我的计算有什么不对吗?

我的目的是获得每帧的帧偏移和帧长度,有什么好方法吗?我知道有同步代码0xFF F8,但它的效率非常低。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

来自http://lists.xiph.org/pipermail/flac-dev/2016-February/005845.html

  

您计算的帧长度(8192字节)是已解码的帧长度   框架,而不是FLAC框架。因为它是压缩的,它确实应该是   小于8192字节。

     

没有直接的方法来找到帧长度,除了找到   下一帧开始。