我想知道样本块与其时间当量之间的关系。到目前为止,鉴于我的粗略想法:
每秒播放的样本数 = 总文件大小 / 持续时间。
比如说,我有一个 1.02MB 的文件和 12 秒(平均)的持续时间,我每秒将播放大约 89,300 个样本。这是正确的吗?
还有其他方法可以计算这个吗?例如,我如何知道一个 byte[1024] 数组在时间上相当于多少?
一般来说,对于 PCM 样本,您可以将总长度(以字节为单位)除以持续时间(以秒为单位)以获得每秒的字节数(对于 WAV 文件,由于标头的原因会有些不准确)。这些如何转化为样本取决于
如果你知道 2) 和 3) 你可以确定 1)
在您的示例中 89300 字节/秒,假设立体声和每个样本 16 位将是 89300 / 4 ~= 22Khz 采样率
除了@BrokenGlass 的非常好的答案,我将补充一点,对于具有固定采样率、通道数和每个样本位数的未压缩音频,算法相当简单。例如,对于“CD 质量”音频,我们有 44.1 kHz 的采样率,每个采样 16 位,2 个通道(立体声),因此数据速率为:
44100 * 16 * 2
= 1,411,200 bits / sec
= 176,400 bytes / sec
= 10 MB / minute (approx)