wav - RIFF/Wav 标头中的“LIST”块是什么?
问题描述
我正在编写一个 wav 播放器,我正在使用这个文件格式规范:http ://soundfile.sapp.org/doc/WaveFormat/ 。
如您所见,它期望:
- 一个初始的“Riff Chunk”(告诉我们这是 wav 文件还是其他 RIFF 文件类型)
- 后面是“格式”块(它告诉我们比特率和通道数等信息)。
- 后跟一个“数据”块,其中包含所有音频数据。
我有一个音频文件,它在格式块和数据块之间有一个“列表”块,当我对文件进行十六进制编辑时,您可以直观地看到:
这个 LIST 块是什么,它是某些标准化文件格式的一部分,是否有某个地方有解析它的信息?
解决方案
您的示例块包含一个包含创建软件 ( )LIST
的ration:INFO
ISFT
LIST
类型块INFO
在扩展 RIFF 的格式中很常见。当一个LIST
块带有列表类型 ID“INFO”时,该列表包含有关文件的版权、作者、工程师和其他类似文本的信息。
...
ISFT
用于创建文件的软件包名称
https://www.recordingblogs.com/wiki/list-chunk-of-a-wave-file
还有其他种类的列表,但信息列表很常见。上面的网站非常详细地介绍了预期内容,但简而言之:
- LIST 是基于 RIFF 的文件(如 WAVE 和 JPEG)中定义明确的容器类型。
- 不是每个文件都有一个 LIST 容器。
- 并非每个 LIST 都将包含相同类型的信息。例如,WAVE 可能包括持续时间;JPEG 尺寸;JPEG 和 WAVE 可能都有作者。
- DLS 类型文件依赖于 LIST 容器来注释文件的所有可延展属性:样本、区域、关节等。其中任何一个都可能是二进制数据。
推荐阅读
- java - 我无法在java程序中正确使用java.sql.date,结果集似乎有一些问题
- python - 安装 Tensorflow 2.0,我有 GPU 但没有启用 CUDA,这是否意味着我只能使用我的 CPU?
- javascript - 替换 SQL 中的变量
- css - CSS:在移动屏幕中启用键盘时卡片会跳起来
- react-native - React Native 中的 Clarifai 自定义模型
- javascript - jQuery按键事件侦听器无法识别按键输入
- angular - 如何使用渲染器渲染 Angular Material 组件
- tensorflow - TensorFlow Object Detection mAP - 在训练或验证数据集上计算?
- regex - 正则表达式效率
- javascript - 使用 vanilla js 读取 html 的数据属性