一、概述
MediaRecorder 是 Android 平台 android.media.* 目录下对外提供的高级 API,它内部封装了采集、编码、封装的逻辑操作,最终生成的文件格式是多媒体容器格式,例如 mp4, ogg 等文件格式。如果您对录制格式不是很清楚的话,可以点击看下这篇文章:一文搞清多媒体格式(建议收藏)。
MediaRecorder 通常是音频、视频搭配一起使用,也可以单独使用。由于我们这篇主要来讲述音频采集相关的内容,我们将着重讲解音频相关的部分,最终提供的 samplecode 生成的文件格式也仅只有音频轨。
MediaRecorder 的使用场景通常是本地录制,如果您没有对音频、视频流有额外的处理操作,使用这个 API 无疑是最佳的解决方案。
上图是官方提供的 MediaRecorder 运行状态图。我们只要理解了 MediaRecorder 的运行机制,便能很好的使用它。下面详细的讲讲 MediaRecorder 的 API 调用过程中,MediaRecorder的状态切换以及完成了哪些工作。
二、工作流
下面贴出一段 MediaRecorder 初始化的代码,虽然很简洁,但是一点都不简单。执行这些代码的过程中,MediaRecorder 帮助我们完成了很多繁重的工作。
//初始化配置
recorder = MediaRecorder().apply {
setAudioSource(MediaRecorder.AudioSource