其他 sub-chunks 个 WAV 文件是什么?
What are the other sub-chunks of WAV files?
我正在编写一个程序来读取和处理数字信号处理 class 项目的 WAV 文件,并且我有两个测试文件。我可以正确读取 RIFF
、fmt
和 data
块。两个文件都有 fmt Chunk Size: 16
,但是文件 B 在 fmt
和 data
块之间有这个杂散的十六进制块。
我确定这不是随机数据。我推测它有一些关于该文件的元数据,所以我将其歌曲名称 Colors
转换为十六进制,发现 43 6f 6c 6f 72 73
位于该杂散块中。我觉得这不是巧合。我访问过的所有站点都只提到了一个 2 字节的变量,它告诉 fmt
块末尾的额外参数的大小。如果两个 fmt
块都声称只有 16 bytes
.
,那么文件 B 就不是这种情况
我推测文件 B 中还有其他块。我还没有找到关于这些可选(?)块的任何信息。我需要帮助以了解我可以在 wav 文件中查找其他 sub-chunks 的内容。我根本不知道 WAV 文件中可以存在的其他块的标签
文件 A ("i ran so far away.wav") 包含此 header。我从网上下载了这个文件。
5249 4646 24c0 c900 5741 5645 666d 7420
1000 0000 0100 0100 2256 0000 44ac 0000
0200 1000 6461 7461 00c0 c900
文件 B ("Colors.wav") 包含此 header。这是我从 .mp3 到 .wav 转换器下载的文件。
5249 4646 7c32 4a02 5741 5645 666d 7420
1000 0000 0100 0200 44ac 0000 10b1 0200
0400 1000 4c49 5354 5000 0000 494e 464f
4941 5254 0500 0000 466c 6f77 0000 494e
414d 0700 0000 436f 6c6f 7273 0000 4950
5244 0f00 0000 436f 6465 2047 6561 7373
204f 5031 0000 4953 4654 0e00 0000 4c61
7666 3537 2e32 362e 3130 3000 6461 7461
0032 4a02
如果有帮助,下面是我编写的程序的输出。
File A
File Descriptor: RIFF
RIFF Chunk Size: 13221924
File Format: WAVE
fmt Chunk Descriptor: fmt
fmt Chunk Size: 16
Audio Format: 1
Number of Channels: 1
Sampling Rate: 22050
Byte Rate: 44100
Block Align: 2
Bits Per Sample: 16
Data Chunk Descriptor: data
Data Chunk Size: 13221888
File B
File Descriptor: RIFF
RIFF Chunk Size: 38417020
File Format: WAVE
fmt Chunk Descriptor: fmt
fmt Chunk Size: 16
Audio Format: 1
Number of Channels: 2
Sampling Rate: 44100
Byte Rate: 176400
Block Align: 4
Bits Per Sample: 16
Data Chunk Descriptor: data
Data Chunk Size: 38416896
RIFF 文件规范允许程序想要的任何块 ID,但要注意的是,如果相同的块 ID 用于不同的目的,它可能会与另一个程序冲突。在编写处理 RIFF 文件的程序时,NOT 要求您能够理解每个块类型,因为那是不可能的。但是,您必须将 reader 写在这样它就可以跳过无法识别的块 ID。
您正在查看的文件中有一个预定义的可选 'INFO' 块。如果您将 ascii 从您发布的十六进制转储出来,您会发现:
INFO
IART Flow
INAM Colors
IPRD Code Geass OP1
ISFT Lavf57.26.100
这个块 ID 包含在 RIFF 的维基百科页面中 - https://en.wikipedia.org/wiki/Resource_Interchange_File_Format#Use_of_the_INFO_chunk
或这里
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info
它也包含在 RIFF 规范中。抱歉,我没有 link.
关于您关于 LIST P 的后续问题:
这不是 LISTP 块;它是一个数据大小为 80 字节的 LIST 块。 (当将该字节解释为 ASCII 字符时,它恰好是一个 'P'。)(块名称,也称为 FourCC 严格来说是四个字符。)在十六进制中再八十个字节,你会查看“数据”块的开头,其大小为 38416896 字节。
在包含80的数据大小字段之后,您会看到“form type ID”,即“INFO”。然后是 list of sub-chunks(这就是它被称为 LIST 块的原因)和实际数据:第一个 sub-chunk 是“IART”,后面是它的大小5 个字节,后面是 5 个字节,当解释为 ASCII 时,它是“Flow”加上一个空终止符,再加上一个填充字节,这样块就有了偶数个字节(整数个 WORD)。
然后是一个“INAM”sub-chunk,大小为 7,数据为“Colors[=27=]”,再填充一个字节。等等。
从@jaket的第二个link,http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info,可以看出这些是标准的sub-chunk标签:
IART: artist
INAM: title
IPRD: Product
ISFT: Software
我正在编写一个程序来读取和处理数字信号处理 class 项目的 WAV 文件,并且我有两个测试文件。我可以正确读取 RIFF
、fmt
和 data
块。两个文件都有 fmt Chunk Size: 16
,但是文件 B 在 fmt
和 data
块之间有这个杂散的十六进制块。
我确定这不是随机数据。我推测它有一些关于该文件的元数据,所以我将其歌曲名称 Colors
转换为十六进制,发现 43 6f 6c 6f 72 73
位于该杂散块中。我觉得这不是巧合。我访问过的所有站点都只提到了一个 2 字节的变量,它告诉 fmt
块末尾的额外参数的大小。如果两个 fmt
块都声称只有 16 bytes
.
我推测文件 B 中还有其他块。我还没有找到关于这些可选(?)块的任何信息。我需要帮助以了解我可以在 wav 文件中查找其他 sub-chunks 的内容。我根本不知道 WAV 文件中可以存在的其他块的标签
文件 A ("i ran so far away.wav") 包含此 header。我从网上下载了这个文件。
5249 4646 24c0 c900 5741 5645 666d 7420
1000 0000 0100 0100 2256 0000 44ac 0000
0200 1000 6461 7461 00c0 c900
文件 B ("Colors.wav") 包含此 header。这是我从 .mp3 到 .wav 转换器下载的文件。
5249 4646 7c32 4a02 5741 5645 666d 7420
1000 0000 0100 0200 44ac 0000 10b1 0200
0400 1000 4c49 5354 5000 0000 494e 464f
4941 5254 0500 0000 466c 6f77 0000 494e
414d 0700 0000 436f 6c6f 7273 0000 4950
5244 0f00 0000 436f 6465 2047 6561 7373
204f 5031 0000 4953 4654 0e00 0000 4c61
7666 3537 2e32 362e 3130 3000 6461 7461
0032 4a02
如果有帮助,下面是我编写的程序的输出。
File A
File Descriptor: RIFF
RIFF Chunk Size: 13221924
File Format: WAVE
fmt Chunk Descriptor: fmt
fmt Chunk Size: 16
Audio Format: 1
Number of Channels: 1
Sampling Rate: 22050
Byte Rate: 44100
Block Align: 2
Bits Per Sample: 16
Data Chunk Descriptor: data
Data Chunk Size: 13221888
File B
File Descriptor: RIFF
RIFF Chunk Size: 38417020
File Format: WAVE
fmt Chunk Descriptor: fmt
fmt Chunk Size: 16
Audio Format: 1
Number of Channels: 2
Sampling Rate: 44100
Byte Rate: 176400
Block Align: 4
Bits Per Sample: 16
Data Chunk Descriptor: data
Data Chunk Size: 38416896
RIFF 文件规范允许程序想要的任何块 ID,但要注意的是,如果相同的块 ID 用于不同的目的,它可能会与另一个程序冲突。在编写处理 RIFF 文件的程序时,NOT 要求您能够理解每个块类型,因为那是不可能的。但是,您必须将 reader 写在这样它就可以跳过无法识别的块 ID。
您正在查看的文件中有一个预定义的可选 'INFO' 块。如果您将 ascii 从您发布的十六进制转储出来,您会发现:
INFO
IART Flow
INAM Colors
IPRD Code Geass OP1
ISFT Lavf57.26.100
这个块 ID 包含在 RIFF 的维基百科页面中 - https://en.wikipedia.org/wiki/Resource_Interchange_File_Format#Use_of_the_INFO_chunk
或这里 http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info
它也包含在 RIFF 规范中。抱歉,我没有 link.
关于您关于 LIST P 的后续问题:
这不是 LISTP 块;它是一个数据大小为 80 字节的 LIST 块。 (当将该字节解释为 ASCII 字符时,它恰好是一个 'P'。)(块名称,也称为 FourCC 严格来说是四个字符。)在十六进制中再八十个字节,你会查看“数据”块的开头,其大小为 38416896 字节。
在包含80的数据大小字段之后,您会看到“form type ID”,即“INFO”。然后是 list of sub-chunks(这就是它被称为 LIST 块的原因)和实际数据:第一个 sub-chunk 是“IART”,后面是它的大小5 个字节,后面是 5 个字节,当解释为 ASCII 时,它是“Flow”加上一个空终止符,再加上一个填充字节,这样块就有了偶数个字节(整数个 WORD)。
然后是一个“INAM”sub-chunk,大小为 7,数据为“Colors[=27=]”,再填充一个字节。等等。
从@jaket的第二个link,http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info,可以看出这些是标准的sub-chunk标签:
IART: artist
INAM: title
IPRD: Product
ISFT: Software