You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据音频时长、采样率计算sampleCount?理论值与实际值不符求解

正确计算WAV音频sampleCount的方法

为什么直接用「采样率×时长」会出错

你遇到的偏差是因为音频显示的时长(850ms)是实际采样数÷采样率后四舍五入的近似值,并非精确值。比如你的实际采样数40681,除以48000采样率得到的精确时长约为847.52ms,显示的850ms是简化后的结果,直接反向计算自然会和实际值不符。

两种可靠的计算方法

1. 读取WAV文件头(最精确)

标准WAV文件的RIFF结构中,Subchunk2Size字段(通常在文件起始后36字节处,4字节无符号整数)记录了音频数据的总字节数。通过这个值可以直接计算采样数:

sampleCount = Subchunk2Size / (字节深度 × 声道数)

举个例子:如果是16位(2字节)立体声(2声道)的WAV,每个采样占4字节,那采样数就是Subchunk2Size / 4。

2. 通过文件大小推导(近似但实用)

如果无法直接读取文件头,可以用文件总大小减去WAV头大小得到音频数据字节数,再计算采样数:

音频数据字节数 = 文件总字节数 - WAV头大小
sampleCount = 音频数据字节数 / (字节深度 × 声道数)

注意:标准PCM WAV的头大小通常是44字节,若包含扩展头则需要调整头大小数值。

用你的案例验证

你的实际采样数40681,假设是8位单声道(1字节/采样)的WAV:
音频数据字节数 = 40681 × 1 = 40681字节
加上标准头44字节,总文件大小约为40725字节(≈39.7KB),和你给出的37KB近似值的偏差是因为文件大小的表述做了简化,核心计算逻辑是成立的。

内容的提问来源于stack exchange,提问作者user338062

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:10:24