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进行视频录制。

相关文章
相关标签/搜索