Re: [問題] AudioRecord音訊儲存成檔案

看板AndroidDev作者 (LCamel)時間13年前 (2011/07/05 16:25), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《fatby (fatby)》之銘言: : → fatby:謝謝L大的幫忙,昨晚找到一個能播放純數據的程式,不過聽的 : → fatby:時候完全都只有雜音...是哪裡出了問題嗎?? 可能播放的參數和錄製時給的參數不同, mplayer / ffmpeg 都可以試試看. : → fatby:另外有沒有音訊檔表頭資訊的相關資料可以參考呢 Header 格式可以 google 找, 或者生幾個.wav來觀察. 以下 size 為原本 raw data 的長度, header 輸出完再複製 raw data. 程式僅勉強堪用, 請斟酌使用... private static void writeWaveHeader(OutputStream os, long size) throws IOException { os.write(new byte[] { 0x52, 0x49, 0x46, 0x46 }); write4BytesOfLong(os, size + 36); // 16-bit / 16K os.write(new byte[] { 0x57, 0x41, 0x56, 0x45, 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, (byte) 0x80, 0x3e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x64, 0x61, 0x74, 0x61 }); write4BytesOfLong(os, size); } private static void write4BytesOfLong(OutputStream os, long l) throws IOException { byte[] buff = new byte[4]; buff[0] = (byte) l; buff[1] = (byte) (l >> 8); buff[2] = (byte) (l >> 16); buff[3] = (byte) (l >> 24); os.write(buff); } LCamel -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.59.89

07/06 01:25, , 1F
謝謝L大 我吸收研究一下...
07/06 01:25, 1F
文章代碼(AID): #1E4ifcFC (AndroidDev)
文章代碼(AID): #1E4ifcFC (AndroidDev)