Android音視頻-存儲和解析音頻文件

對於PCM這個概念前面也看了一些,我現在最簡單直接的認識就是它就是音頻文件的原始數據,好像圖形文件的內容的原始二進制數據一樣。我們要把這些數據以文件來保存弄到文件裏面去。根據現在Android提供的API記錄下面兩種方式。

AudioRecord和AudioTrack存儲和解析音頻文件

簡介

在前面已經知道了使用這兩個類來工作了,它們是一個偏向底層的類,操作最原始的音頻數據PCM的。下面要引入一個概念wav文件,這是我們見過的一種音頻文件,也是最基礎簡單的音頻文件,因爲它差不多等同於PCM,因爲只是在文件上面添加了一些頭,然後把PCM數據在數據塊直接寫入。

  • 什麼是WAV格式?

    它是微軟開發的一種文件格式,把文件分爲兩部分,頭部記錄音頻的基本信息,數據部分記錄原始的PCM音頻數據。
    WAV文件的數據壓縮率小,所以會比較大,它就是純粹來說差不多都是音頻原始數據。

wav格式的音頻文件不要額外的編碼解碼的,很方便我們來使用AudioRecord和AudioTrack來採集和播放保存爲文件來處理的示例代碼,這裏唯一要做的就是如何操作爲一個正常的wav文件,存儲和解析那些頭部信息,然後播放原始音頻PCM數據。

小結

AudioRecord可以實現邊錄邊播以及對音頻實時處理功能這是MediaRecord和MediaPlayer無法做到的;可以通過代碼對音頻數據進行封裝,可擴展性很大;輸出的是PCM音頻數據,如果只保存這些數據,是不能被其他播放器播放的,所以要寫代碼進行編碼和壓縮處理。
示例的demo實現難點在於對於wav文件的生成和解析頭部。具體的解析文件介紹參考這裏

MediaRecorder和MediaPlayer存儲和解析音頻文件

簡介

MediaRecorder集成了錄音編碼,壓縮等功能,MediaPlayer集成了解碼播放功能,支持少量的音頻格式文件,例如aac,amr,3gp。它使用起來比上面的要簡單一些,畢竟是一個較上層一點的API。

小結

這兩個API使用起來相比較爲簡單;但是它們不能處理邊錄邊播;輸出的音頻格式不是很多,mp3就不能輸出。

音頻格式

音頻格式有很多種,我們開始的時候看着這麼多,頭很懵。格式簡介參考

demo代碼參考

參考資料:
使用的示例代碼參考這篇博客來的,寫的很詳細

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章