9

我想知道样本块与其时间当量之间的关系。到目前为止,鉴于我的粗略想法:

每秒播放的样本数 = 总文件大小 / 持续时间。

比如说,我有一个 1.02MB 的文件和 12 秒(平均)的持续时间,我每秒将播放大约 89,300 个样本。这是正确的吗?

还有其他方法可以计算这个吗?例如,我如何知道一个 byte[1024] 数组在时间上相当于多少?

4

2 回答 2

20

一般来说,对于 PCM 样本,您可以将总长度(以字节为单位)除以持续时间(以秒为单位)以获得每秒的字节数(对于 WAV 文件,由于标头的原因会有些不准确)。这些如何转化为样本取决于

  1. 采样率
  2. 每个样本使用的位数,即常用的是 16 位 = 2 字节
  3. 通道数,即立体声,这是 2

如果你知道 2) 和 3) 你可以确定 1)

在您的示例中 89300 字节/秒,假设立体声和每个样本 16 位将是 89300 / 4 ~= 22Khz 采样率

于 2011-02-16T14:09:53.950 回答
17

除了@BrokenGlass 的非常好的答案,我将补充一点,对于具有固定采样率、通道数和每个样本位数的未压缩音频,算法相当简单。例如,对于“CD 质量”音频,我们有 44.1 kHz 的采样率,每个采样 16 位,2 个通道(立体声),因此数据速率为:

  44100 * 16 * 2
= 1,411,200 bits / sec
= 176,400 bytes / sec
= 10 MB / minute (approx)
于 2011-02-16T14:17:12.220 回答