MediaCodec 音頻編碼

MediaCodec 音頻編碼

本篇說明 Android 手機使用 AudioRecord 由 Mic 進行錄音,然後由 audioRecord.startRecording() 取得的聲音資料,放入 MediaCodec 軟体編碼成 aac 格式,最後再儲存成 .aac 檔。

PCM

PCM 全名為 Pulse-code modulation,中文叫做脈衝編碼調變,是數位聲音的原始檔,其實就類似 wav 檔,也就是完全沒有經過壓縮的原始檔。而 mp3/aac 是由 PCM 壓縮後的格式,將容量變小,方便儲存在硬碟。

jpg 是壓縮後儲存在硬碟的格式,而 bmp 是完全沒壓縮的狀態。所以如果要在電腦上修改圖片,一定要把 jpg 還原成未壓縮的 bmp 狀態,然後將資料置於 Ram 中,這樣才能修改。

所以如果是聲音,也要把 PCM 壓縮成 mp3 再儲存到硬碟。而若要修改聲音,就需讀取硬碟的 mp3 檔,然後 解壓縮成 PCM 置於 Ram 中,才能修改。

MediaCodec

MediaCodec 編碼音頻使用 OMX.google.aac.encoder,此編碼方式為軟体編碼。在小米手機裏,音頻沒有硬体編碼。

mediaCodec = MediaCodec.createByCodecName("OMX.google.aac.encoder")

MahalAudio

先產生 MahalAudio 類別,此類別用來控制聲音的錄製及停止,完整代碼如下。

🔒 更多內容,請登入會員繼續閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *