2015-10-01 79 views
1

我想知道從TargetDataLine.read()返回的字節格式。我收到號碼,但我不知道他們代表什麼。任何想法?我已經谷歌搜索並找出並閱讀API文檔,但無法解決......通過AudioSystem.read()讀取的字節格式

+0

請更具體地指出您引用的是哪種方法,例如,鏈接到JavaDoc。 – hotzst

+0

歡迎來到StackOverflow,請說明你迄今爲止所做的回答你的問題。你使用什麼類型的圖書館? –

+0

我使用標準的Java庫 – theRealCherry

回答

0

這取決於您嘗試讀取的音頻流的位深度和編碼。假設每個數據流代表單個音頻通道,則不會有交錯的通道擔心(即流是單聲道而不是立體聲或環繞聲)。其類實現TargetDataLine的對象的音頻格式將決定讀取時應如何解釋數據。

如果流代表最常見的音頻格式,即紅皮書音頻(採樣率爲44.1 kHz的16位採樣)中的音頻,則每兩個字節表示一個採樣;該樣本將是從正位移0 dBFS(最大正整數值)到負無窮分貝(整數值0)到負位移0 dBFS(最大負整數值)範圍內的線性分佈幅度值的帶符號16位整數)。同樣,如果位深度是24位,那麼每3個字節將代表一個LPCM樣本。

如果位深度是32位或更高,那麼格式將被標記爲浮點PCM採樣。

+0

謝謝,這就是我想知道的。對不起的問題。即使用我自己的語言,我也不知道Tod如何描述我的問題 – theRealCherry

+0

不用擔心,@Victor,這是一個有效的問題 - 我明白你在問什麼,我只是編輯過,所以其他人可以從額外的清晰度中受益,如果他們有相同的查詢在未來。如果您可以將我的答案標記爲_accepted_,我將不勝感激。 –

+0

如果你有一個理解dbfs單元更好的鏈接,你能給我留言嗎? – theRealCherry

相關問題