android IM模块-语音-录制篇2

android IM模块-语音-录制篇1
https://www.jianshu.com/p/5cccb0a9e740
android IM模块-语音-录制篇2
https://www.jianshu.com/p/1527e6d4840d
android IM模块-语音-播放篇1
https://www.jianshu.com/p/214a433f3f40
android IM模块-语音-播放篇2
https://www.jianshu.com/p/66727521e2eb

明天就放假啦,好开心,啦啦啦啦。这次我们讲AudioRecord ,一个录音的api,相对MediaRecorder用起来麻烦一点,但是更灵活一些。他俩之间区别一个是基于文件,一个是流。/*虽然也没人看我写的东西 */

AudioRecord 基于流操作的录音

第一件事肯定是先把界面搭建出来,注意权限问题,详情可以看上一篇


android IM模块-语音-录制篇2_第1张图片

其实AudioRecord很简单,我们常用的API无非也就是开始(start()),停止(stop),释放(release())
那我们就从他的构造函数看一眼

public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes);

参数解析
audioSource

the recording source. See MediaRecorder.AudioSource for recording source definitions.
音频源:指的是从哪里采集音频。这里我们当然是从麦克风采集音频,所以此参数的值为MIC

sampleRateInHz

the sample rate expressed in Hertz. Examples of rates are (but not limited to) 44100, 22050 and 11025.
采样率:音频的采样频率,每秒钟能够采样的次数,采样率越高,音质越高。给出的实例是44100、22050、11025但不限于这几个参数。例如要采集低质量的音频就可以使用4000、8000等低采样率,其中44100所有安卓手机都支持。

channelConfig

describes the configuration of the audio channels. See CHANNEL_IN_MONO andCHANNEL_IN_STEREO
声道设置:android支持双声道立体声和单声道。MONO单声道,STEREO立体声

audioFormat

the format in which the audio data is represented. See ENCODING_PCM_16BIT andENCODING_PCM_8BIT
编码制式和采样大小:采集来的数据当然使用PCM编码(脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。) android支持的采样大小16bit 或者8bit。当然采样大小越大,那么信息量越多,音质也越高,现在主流的采样大小都是16bit,在低质量的语音传输的时候8bit足够了。

bufferSizeInBytes

the total size (in bytes) of the buffer where audio data is written to during the recording. New audio data can be read from this buffer in smaller chunks than this size. SeegetMinBufferSize(int, int, int) to determine the minimum required buffer size for the successful creation of an AudioRecord instance. Using values smaller than getMinBufferSize() will result in an initialization failure.
采集数据需要的缓冲区的大小,如果不知道最小需要的大小可以在getMinBufferSize()查看。


看懂了构造参数我们就可以编写我们的代码了
上篇说到 我们建议大家在一个独立线程里进行录音操作,这次我们初始化一个线程池



设置AudioRecord的配置参数

android IM模块-语音-录制篇2_第2张图片
image.png

创建保存文件路径,因为是采用的是脉冲代码调制编码。即PCM编码,所以后缀是pcm


android IM模块-语音-录制篇2_第3张图片
image.png

创建一个安全的标示,保证线程观察到的都是一样的


涉及IO流读写问题,我们创建一个读取buffer



点击按钮开始录音,并不断将录音录到到保存到路径中去


android IM模块-语音-录制篇2_第4张图片

点击按钮停止录音
android IM模块-语音-录制篇2_第5张图片

去文件夹查看文件,保存成功


android IM模块-语音-录制篇2_第6张图片

PCM格式不能直接被我们自带播放器播放,接下来我们会讲怎么播放普通音频文件和pcm格式的文件

android IM模块-语音-播放篇1
https://www.jianshu.com/p/214a433f3f40

你可能感兴趣的:(android IM模块-语音-录制篇2)