ITPub博客

首页 > 移动开发 > ANDROID > MediaRecord初解

MediaRecord初解

原创 ANDROID 作者:山有木xi 时间:2020-12-20 17:20:03 0 删除 编辑

在音频处理方面,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()方法进入该状态,释放所占用的系统资源
在使用过程中需要注意的是,必须先处理相关信息,在prepare,然后start,在结束以后stop然后选择reset或者release,其中任何一个步骤不对就会报异常


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917874/viewspace-2743793/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: MediaExtractor初解
请登录后发表评论 登录
全部评论
Oracle OCA(Java),IBM高级工程师认证,中国软件行业人才(高级c语言),高级Android工程师,对数据库并发与性能调优也有一定了解

注册时间:2019-04-25

  • 博文量
    147
  • 访问量
    390787