MediaRecord初解
在音訊處理方面,Android提供了AudioRecord和MediaRecorder兩種都可以錄製音訊,MediaRecorder的優勢是已實現大量的封裝,操作起來更加簡單,而AudioRecord的優勢是使用起來更加靈活,能實現更多的功能。
MediaRecorder是android中面向應用層的封裝,用於提供便捷的音影片編碼封裝操作,在使用的過程中要嚴格按照官方指定的生命週期呼叫順序,同時它的優點是
-
封裝度很高,操作簡單
缺點是
-
無法實現實時處理音訊,輸出的音訊格式少。
AudioRecord是基於位元組流錄音,其優點是
-
可以實現語音的實時處理,進行邊錄邊播,對音訊的實時處理。
缺點是
-
輸出是PCM的語言資料,如果儲存成音訊檔案是不能被播放器播放的。要用到AudioTrack進行處理。
所以,MediaRecorder是一個更為方便和可用性高的選項
在MediaRecorder的生命週期如下
- initial:在MediaRecorder被建立或者呼叫reset()方法後,處於的狀態
- initialized : 當呼叫setAudioSource()或者setVideoSource()後,處於該狀態。這兩個方法主要用於設定音影片的源配置,通常音訊是麥克風,影片是攝像頭。該狀態可以透過呼叫reset()方法回到initial狀態
- DataSourceConfigured : 當呼叫setOutputFormat()方法後,會處於該狀態。該方法主要用於設定輸出的檔案格式,可以是音影片如MP4,也可以是單獨的音訊如mp3。當處於該狀態之後,可以進一步設定音訊和影片的配置引數,例如音訊封裝格式,取樣率,影片位元速率,幀率等等該狀態可以透過呼叫reset()方法回到initial狀態
- Prepared :在執行完上面的操作之後,可以透過呼叫prepare()方法進入該狀態,必須先處於該狀態,才能呼叫start()
- Recording :透過呼叫start()方法進入該狀態,該狀態就是真正開始進行影片錄製編碼的階段,透過呼叫stop()或者reset()可以回到initial狀態
- error狀態 :當錄製過程中發生次錯誤時,會進入該狀態,呼叫reset()方法回到initial狀態。
- release : 只有在initial狀態才可以透過呼叫release()方法進入該狀態,釋放所佔用的系統資源
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2743793/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MediaExtractor初解
- WXSTranistion 初解
- 初識 Java 註解Java
- dojo.connect初解
- Terraform - 初解Terraform - 變數ORM變數
- 初略講解Flutter Widget庫Flutter
- Android MVVM探索(一) - DataBiding初解AndroidMVVM
- 【解構雲原生】初識Kubernetes Service
- 初略講解Flutter的包管理Flutter
- flutter安裝詳解--初體驗--問題解決Flutter
- 初略講解Flutter的狀態管理Flutter
- 初略講解Flutter的資源管理Flutter
- 瞭解Vuex方法的使用初級篇Vue
- 【IOS開發初學者】UINavigationController詳解iOSUINavigationController
- 初略講解Flutter的文字及樣式Flutter
- 初略講解如何除錯Flutter應用除錯Flutter
- 手遊PC發行那些事:Steam初瞭解
- 初識Python,我想你應該瞭解這些...Python
- Spring Boot第五彈,WEB開發初瞭解~Spring BootWeb
- Flutter開發實戰初級(一)ListView詳解FlutterView
- 初識SAP解決方案及其上雲優勢
- Kotlin——初級篇(三):資料型別詳解Kotlin資料型別
- 第一天,初瞭解銳捷網路
- 初略講解Flutter的Wrap和Flow(流式佈局)Flutter
- 藍橋杯2015初賽生命之樹 DFS圖解圖解
- 初略講解基礎Widgets之Widget、StatelessWidget和StatefulWidget
- Flutter開發實戰初級(一)ListView詳解2FlutterView
- NOIP 2017初賽普及組C/C++答案詳解C++
- Java四大知識點講解,初學者必看!Java
- Flutter Web初嘗試以及一些問題解決FlutterWeb
- 初略講解Flutter的Align(對齊與相對定位)Flutter
- 例項講解:我的強化學習初體驗!強化學習
- 初學者Mybatis的初級使用MyBatis
- 初試
- 2021騰訊PC客戶端初賽題解(對大佬解題手法的學習)客戶端
- 適合初學者的who 命令的解釋與示例指南
- Docker 入門概述(適合初學者瞭解相關概念)Docker
- SAP 幾款容易令初學者混淆的 HANA 解決方案