android音視頻指南-MediaRecorder概述

翻譯自MediaRecorder overviewhtml

Android多媒體框架支持捕獲和編碼各類常見的音頻和視頻格式。若是設備硬件支持,您可使用MediaRecorder api。java

本文檔向您展現瞭如何使用MediaRecorder編寫一個應用程序,該應用程序從設備麥克風捕獲音頻,保存音頻並回放(使用MediaPlayer)。要錄製視頻,你須要使用設備的攝像頭和MediaRecorder。這是在Camera指南中描述的。android

注意:Android模擬器沒法錄製音頻。必定要在能夠錄製的真實設備上測試代碼。git

請求容許錄製音頻

爲了可以錄製,你的應用程序必須告訴用戶它將訪問設備的音頻輸入。你必須在應用程序的清單文件中包含這個權限標籤:github

<uses-permission android:name="android.permission.RECORD_AUDIO" />
複製代碼

RECORD_AUDIO被認爲是一個「危險的」權限,由於它可能會對用戶的隱私構成威脅。從Android 6.0 (API level 23)開始,使用危險權限的應用程序必須在運行時請求用戶批准。用戶得到許可後,應用程序應記住並再也不詢問。使用ActivityCompat.requestPermissions()實現此行爲。api

建立和運行一個MediaRecorder

用如下調用初始化MediaRecorder的新實例:bash

  • 使用setAudioSource()設置音頻源。你可能會用麥克風。

注意:大多數音頻源(包括DEFAULT)會對音頻信號進行處理。要錄製原始音頻選擇UNPROCESSED。有些設備不支持未處理的輸入。首先調用AudioManager.getProperty(AudioManager.PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)以驗證其可用性。若是不是,嘗試使用VOICE_RECOGNITION替代,它不使用AGC或噪聲抑制。即便不支持屬性,也能夠將未處理的信號用做音頻源,但在這種狀況下,沒法保證信號是否會被未處理。app

  • 使用setOutputFormat()設置輸出文件格式。注意,從Android 8.0 (API級別26)開始MediaRecorder支持MPEG2_TS格式,這對於流媒體頗有用:
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
複製代碼
  • 使用setOutputFile()設置輸出文件名。必須指定表示實際文件的文件描述符。
  • 使用setAudioEncoder()設置音頻編碼器。
  • 經過調用prepare()來完成初始化。

分別調用Start()和stop()來啓動和中止記錄器。框架

用完MediaRecorder實例後,經過調用release()儘快釋放其資源。ide

注意:在運行Android 9 (API level 28)或更高的設備上,後臺運行的應用程序沒法訪問麥克風。所以,您的應用程序應該只在前臺或前臺服務中包含MediaRecorder實例時錄製音頻。

使用MediaMuxer錄製多個通道

從Android 8.0 (API級別26)開始,您可使用MediaMuxer錄製多個同步音頻和視頻流。在早期的Android版本中,你一次只能錄製一個音軌和/或一個視頻軌。

使用addTrack()方法將多軌道混合在一塊兒。

您還能夠爲每一個frame添加一個或多個metadata跟蹤,並提供定製信息,但僅限於MP4容器。您的應用程序定義元數據的格式和內容。

添加metadata

metadata能夠用於離線處理。例如,從陀螺傳感器捕獲的數據能夠用來穩定視頻。

當添加metadata跟蹤時,跟蹤的mime格式必須之前綴‘application/’開始。編寫metadata與編寫視頻或音頻數據是同樣的,只是數據不是來自MediaCodec。相反,應用程序將帶有相關時間戳的ByteBuffer傳遞給writeSampleData()方法。時間戳必須與視頻和音頻軌道在同一時間基礎上。

生成的MP4文件使用ISO BMFF規範12.3.3.2節中定義的TextMetaDataSampleEntry做爲metadata的mime格式的信號。當您使用MediaExtractor提取包含metadata跟蹤的文件時,metadata的mime格式將做爲MediaFormat的實例出現。

示例代碼

Android MediaRecorder示例演示瞭如何使用MediaRecorder和Camera API進行視頻錄製。

相關文章
相關標籤/搜索