Java Sound API中有关采样率和帧率大小的问题

3

我继承了一些使用Java的SourceDataLine声音API的代码。

以下是设置AudioFormat对象的方式。帧速率和采样速率设置为相同似乎很奇怪。这有意义吗?此外,是否有必要设置20000000帧速率或采样速率?我们的耳朵不是在20000左右停止听觉感知吗?

AudioFormat af = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 20000000, 16, 1, 2, 20000000, true);

是的,这看起来确实很奇怪。无论如何,与音频相关的东西不会以这样的速度进行采样。 - Phonon
每秒帧数也毫无意义。你试过运行它吗? - Phonon
2
我们的听觉上限约为20kHz,但奈奎斯特定理指出,为了避免混叠现象,采样率必须是带宽的两倍。这也是CD标准设计为44.1kHz采样率的主要原因。当然,你提供的数字仍然毫无意义。 - z7sg Ѫ
1
@z7sgѪ 当我读到这个问题时,我开始感到紧张,你的评论真的吓到了我。然后,我意识到那个单词是“top”,而不是“pop”。我很庆幸我的耳朵在20kHz左右不会突出来。 - Justin
1个回答

2
如果流以PCM格式编码且未经压缩,则每个帧包含每个通道的样本,针对一个时间索引。如果流被压缩,则每个帧包含每个通道的样本,但针对一个或多个时间索引。帧的确切结构取决于压缩类型。
要了解更多详细信息,请查看AudioFormat类定义: http://download.oracle.com/javase/6/docs/api/javax/sound/sampled/AudioFormat.html 大多数声音系统认为人类听觉的最高频率为22KHz,这就是为什么采样频率为44KHz(根据奈奎斯特定理)的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接