MediaRecorder和AudioRecord的区别和联系

MediaRecorder和AudioRecord都可以录制音频,区别是MediaRecorder录制的音频文件是经过压缩后的,需要设置编码器。并且录制的音频文件可以用系统自带的Music播放器播放。
而AudioRecord录制的是PCM格式的音频文件,需要用AudioTrack来播放,AudioTrack更接近底层。
在用MediaRecorder进行录制音视频时,最终还是会创建AudioRecord用来与AudioFlinger进行交互。
C++层MediaRecorder创建AudioRecord类的代码位于AudioSource类构造函数中,代码如下:
    mRecord = new AudioRecord(
                inputSource, sampleRate, AudioSystem::PCM_16_BIT,
                channels > 1? AudioSystem::CHANNEL_IN_STEREO: AudioSystem::CHANNEL_IN_MONO,
                16 * kMaxBufferSize / sizeof(int16_t), /* Enable ping-pong buffers */
                flags);
AudioSource对象的创建位于StagefrightRecorder::createAudioSource()函数中,而createAudioSource函数又是在StagefrightRecorder类开始录音或录像时被创建的。

可参考:
AudioRecord录音framework层的处理流程参考: 录音相关的处理流程

MediaRecorder的用法参考: Android音视频录制类MediaRecorder用法举例

AudioRecord实现录音的例子可参考: 利用AudioRecord类实现自己的音频录制程序

MediaRecorder和AudioRecord的录制音频的关系,与MediaPlayer和AudioTrack的播放音频的关系类似。
参考:MediaPlayer和AudioTrack播放Audio的区别与联系


  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值