2010-02-23 86 views
0

與8位編碼使用AudioRecord我已經從使用AudioRecord和16位編碼的手機麥克風記錄的應用程序,並且我能夠回放記錄。由於某些兼容性原因,我需要使用8位編碼,但是當我嘗試使用該編碼運行相同的程序時,我總是收到無效音頻格式。我的代碼是:在android系統

int bufferSize = AudioRecord.getMinBufferSize(11025, 
AudioFormat.CHANNEL_CONFIGURATION_MONO, 
AudioFormat.ENCODING_PCM_8BIT); 
AudioRecord recordInstance = new AudioRecord(
MediaRecorder.AudioSource.MIC, 11025, 
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_8BIT, 
bufferSize); 

任何人都知道是什麼問題?根據文件AudioRecord能夠進行8位編碼。

+0

一個簡單的版本,我認爲有這意味着目前只有16位編碼,可 – 2010-02-23 16:43:04

+0

這是相當錯誤如果這就是你所需要的,很容易將16位音頻採樣轉換爲8位? – 2010-02-23 17:53:51

+0

是的,這是我所需要的,但不知道如何,你可以發佈代碼或鏈接到教程?謝謝maxsap – maxsap 2010-02-23 23:14:41

回答

0

如果你看看源,它僅支持小端,但Android是寫出大端。所以你必須轉換成小端,然後是8位。這爲我工作,你也許可以將二者結合起來:

for (int i = 0; (offset + i + 1) < bytes.length; i += 2) { 
    lens[i] = bytes[offset + i + 1]; 
    lens[i + 1] = bytes[offset + i]; 
} 
for (int i = 1, j = 0; i < length; i += 2, j++) { 
    lens[j] = lens[i]; 
} 

這裏是沒有端

for (int i = 0, j = 0; (offset + i) < bytes.length; i += 2, j++) { 
    lens[j] = bytes[offset + i]; 
}