我正在使用AmrInputStream從PCM-16轉換爲AMR。 AmrInputStream的詳細信息可以在這裏找到http://hi-android.info/src/android/media/AmrInputStream.java.html使用AmrInputStream將PCM-16轉換爲AMR
我很新的編程,雖然它談論使用JNI和東西,我不知道什麼JNI是什麼,我不認爲這是討論所必需的。上面的AmrInputStream顯然也沒有在SDK和NDK中找到,但我已經能夠使用它了。
我一直在搜索互聯網上如何使用流,但還沒有找到任何示例。最後我進行了實驗,發現它與任何InputStream都相似。這裏有一個代碼片段
InputStream inStream;
inStream = new FileInputStream("abc.wav");
AmrInputStream aStream = new AmrInputStream(inStream);
File file = new File("xyz.amr");
file.createNewFile();
OutputStream out = new FileOutputStream(file);
byte[] x = new byte[1024];
int len;
while ((len=aStream.read(x)) > 0) {
out.write(x,0,len);
}
out.close();
我測試了這一點,它一直(編輯(需要添加#AMR \ n標籤用於播放輸出文件!):該AMR標籤必須是#AMR \ n )。
我的問題屬於,我只能設法得到這個工作在8000赫茲採樣的PCM-16文件。用於原始PCM-16文件的任何(更高)頻率都會導致(欠採樣)輸出。 AmrInputStream.java文件中有一個SAMPLES_PER_FRAME變量,我嘗試過,但它似乎沒有影響任何東西。
歡迎任何建議或相關的討論!
你有沒有找到任何解決方案將更高頻率的wav轉換爲android中的amr? –
@lan Low是否可以使用AmrInputStream轉換爲amr 16 khz? –
你如何編寫amr頭文件? –