本文假设等间隔PCM采样,按正常采样率播放。W3C对AudioBuffer时长的定义为采样帧数除以采样率;变速播放、压缩格式和端到端延迟需另行分析。
用1024除以每秒帧数
若每秒采集48,000帧,则1024帧的音频块对应1024÷48,000秒,约为0.021333秒,即21.333毫秒。若采样率为44,100帧每秒,则约为23.220毫秒。同样的1024帧,在较高采样率下覆盖的时间更短。算式的分子是帧,分母是帧每秒,约去后留下秒,单位能够帮助检查公式方向。
双声道不会自动让这段声音变长
一个采样帧包含同一时刻各声道的样本。双声道的1024帧包含左声道1024个样本和右声道1024个样本,总计2048个标量样本,但播放时长仍按1024除以采样率。如果题目只给“1024个样本”而没有说明是每声道还是总和,就应补充条件。把全部声道样本数直接代入时长公式可能得到两倍的错误结果。
时长与原始数据量分别计算
假设双声道、每个样本16位,即2 B,1024帧的原始样本数据量是1024×2×2=4096 B。这个乘法与48,000的采样率无关,因为已经给定帧数;采样率只决定这些帧覆盖多长时间。这里没有计入文件头、元数据或压缩编码,所以不能直接宣称任何保存出的音频文件都恰好4096 B。
可执行检查单
- 01先记录采样率和声道数,并确认1024指每声道的帧数还是全部样本数。
- 02用帧数÷采样率求秒,再乘1000换成毫秒;保留足够小数用于比较。
- 03若需要估算字节数,另用帧数×声道数×每样本字节数,并注明未计文件开销。
一个常见问题
为什么第一个点到最后一个点不是1024个间隔?
若把第一帧的时间标为0,最后一帧的时间位置是1023除以采样率,两点之间只有1023个间隔。音频块的持续时间则按1024帧所对应的1024个采样周期计算。时间戳跨度与块时长回答的是不同问题;题目问哪一个,就使用相应定义,不能靠“点数”直接猜测。
一个音频块不等于全部延迟
21.333毫秒是上述48,000帧每秒条件下一个1024帧块的覆盖时长。真实系统还可能有输入、输出、排队与处理时间,也可能采用不同处理块结构,因此不能把这个数字当作整套音频设备的实测延迟。讨论延迟时要说明测量的起点、终点和方法;本页没有对任何设备或浏览器进行性能测试。
定义来源
资料用于核对定义;算例与解释由本站编写。