MediaRecorder和AudioRecord的区别和联系
MediaRecorder和AudioRecord都可以录制音频,区别是MediaRecorder录制的音频文件是经过压缩后的,需要设置编码器。并且录制的音频文件可以用系统自带的Music播放器播放。
而AudioRecord录制的是PCM格式的音频文件,需要用AudioTrack来播放,AudioTrack更接近底层。
在用MediaRecorder进行录制音视频时,最终还是会创建AudioRecord用来与AudioFlinger进行交互。
C++层MediaRecorder创建AudioRecord类的代码位于AudioSource类构造函数中,代码如下:
[cpp] view plaincopy
-
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的区别与联系
转载于:https://blog.51cto.com/romain810/1551651
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109734.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...