2011-04-11 17 views
1

我繼承了一些使用Java的SourceDataLine Sound API的代碼。關於使用Java Sound API的採樣率和幀頻大小的問題

下面是他們如何設置AudioFormat對象。看起來奇怪的是,幀率和採樣率被設置爲相同。這有任何意義嗎?另外,是否有任何意見有20000000幀率或採樣率?我們的耳朵不要超過20000?

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

是的,這看起來很奇怪。無論如何,沒有任何與音頻相關的採樣會以這些速度進行。 – Phonon 2011-04-11 19:44:37

+0

每秒幀數也沒有意義。你有沒有試過運行它? – Phonon 2011-04-11 19:47:20

+2

我們的耳朵大約在20kHz左右,但Nyquist定理指出,爲避免混疊,採樣率必須爲2 x帶寬。這是CD標準設計採樣率爲44.1kHz的主要原因。你的數字仍然沒有任何意義。 – 2011-04-11 21:22:25

回答

1

如果流在PCM格式編碼,沒有被壓縮,一幀包含將樣品針對每個信道,對於一個時間索引。如果流是壓縮的,則一個幀包含每個通道的採樣,但包含一個或多個時間索引。幀的確切結構取決於壓縮類型。

退房的AudioFormat類定義的更多細節: http://download.oracle.com/javase/6/docs/api/javax/sound/sampled/AudioFormat.html

大多數的音響系統考慮了人耳有22KHz的最高頻率,這就是爲什麼你得到的採樣頻率44KHz的(根據奈奎斯特規則)。