Audio FLAC文件开头附近的32位是什么?
我正试图编写一个解析器来从以下文件中提取信息: 现在,根据,格式如下(数字以位为单位): 从这些数字,我可以推断出以下几点:Audio FLAC文件开头附近的32位是什么?,audio,header,binary-data,flac,Audio,Header,Binary Data,Flac,我正试图编写一个解析器来从以下文件中提取信息: 现在,根据,格式如下(数字以位为单位): 从这些数字,我可以推断出以下几点: 66 4c 61 43 00 00 00 22 12 00 12 00 00 00 00 00 ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~ ~~~~~~~~ ~~ ^ ^ ^ ^ ^ ^ | | | |
66 4c 61 43 00 00 00 22 12 00 12 00 00 00 00 00
~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~ ~~~~~~~~ ~~
^ ^ ^ ^ ^ ^
| | | | | |
| | | | | + Etc.
| | | | + Minimum frame size
| | | + Maximum block size
| | + Minimum block size
| + What is that ?!?
+ FLAC stream marker
这32位是从哪里来的?我看到它们代表了页眉的长度,但是把它放在那里不是违反了标准吗(考虑到我们已经知道了长度:(32+16+16+24+20+3+5+36+128)/8) 下面是0x22(34)。在前8位(00)中,第7位表示后面有更多元数据块,接下来的7位表示它是STREAMINFO
块。以下3个字节(0022)是块内容的长度
16 + 16 + 24 + 24 + 20 + 3 + 5 + 36 + 128 = 272 bits
272 bits / 8 = 34 (0x22) bytes.
好的,我被这样一个事实弄糊涂了:单击规范中的链接会直接将我们带到元数据内容,跳过标题。谢谢你的澄清。
$ metaflac --list audio.flac
METADATA block #0
type: 0 (STREAMINFO)
is last: false
length: 34
minimum blocksize: 4608 samples
maximum blocksize: 4608 samples
minimum framesize: 0 bytes
maximum framesize: 0 bytes
sample_rate: 44100 Hz
channels: 2
bits-per-sample: 16
total samples: 7905072
MD5 signature: 00000000000000000000000000000000
66 4c 61 43 00 00 00 22 12 00 12 00 00 00 00 00
~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~ ~~~~~ ~~~~~~~~ ~~
^ ^ ^ ^ ^ ^
| | | | | |
| | | | | + Etc.
| | | | + Minimum frame size
| | | + Maximum block size
| | + Minimum block size
| + What is that ?!?
+ FLAC stream marker
16 + 16 + 24 + 24 + 20 + 3 + 5 + 36 + 128 = 272 bits
272 bits / 8 = 34 (0x22) bytes.