如何确定WAV文件SHA1校验时读取的特定数据块对应的时间范围
可以确定对应时间范围,前提是你能获取到该WAV文件的核心音频参数
- 首先从RIFF格式的fmt块中读取3个必要参数:采样率、位深度、声道数,这三个参数是所有标准WAV文件头都会存储的固定字段
- 先计算单采样帧的字节数:
单帧字节数 = 声道数 × 位深度 ÷ 8,单帧对应的时长是1 ÷ 采样率秒 - 代入42000字节的块大小计算总帧数:
块总帧数 = 42000 ÷ 单帧字节数 - 最终该数据块对应的时长为:
块时长(秒)= 块总帧数 ÷ 采样率
如果需要计算该块对应的绝对起止时间点,还要额外满足两个条件:
- 读取数据块时已经通过解析RIFF结构定位到了
data块的真实起始位置,跳过了所有文件头、附加信息块(比如LIST、INFO等非数据字段) - 记录了当前42000字节块是你从
data块起始位置开始读取的第N个块,前面N-1个块的总时长加上当前块的时长,就是该块的时间范围
举个常见场景的计算例子:如果是44.1kHz采样率、16位位深度、双声道的标准WAV,单帧字节数为 2×16÷8=4字节,42000字节对应总帧数为 42000÷4=10500帧,块时长为 10500÷44100≈0.238秒。
内容的提问来源于stack exchange,提问作者user16395253
相关产品推荐
相关产品推荐

