国标GB28181协议视频推流平台EasyGBD手机推流如何实现音频采集功能?

原标题:国标GB28181协议视频推流平台EasyGBD手机推流如何实现音频采集功能?
在之前的博文中 , 我们和大家分享了国标EasyGBD视频推流组件在开发过程中 , 实现了视频采集功能(EasyGBD搜集视频采集数据功能是如何实现的) , 那么同样 , 音频采集也是我们需要完善的地方 。

国标GB28181协议视频推流平台EasyGBD手机推流如何实现音频采集功能?
文章图片
EasyGBD音频采集是基于AudioRecord实现的 。
1、权限申请
【国标GB28181协议视频推流平台EasyGBD手机推流如何实现音频采集功能?】<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>
2、初始化
/*
*1、配置参数 , 初始化AudioRecord构造函数
*audioSource:音频采集的输入源 , DEFAULT(默认) , VOICE_RECOGNITION(用于语音识别 , 等同于DEFAULT) , MIC(由手机麦克风输入) , VOICE_COMMUNICATION(用于VoIP应用)等等
*sampleRateInHz:采样率 , 注意 , 目前44.1kHz是唯一可以保证兼容所有Android手机的采样率
*channelConfig:通道数的配置 , CHANNEL_IN_MONO(单通道) , CHANNEL_IN_STEREO(双通道)
*audioFormat:配置“数据位宽”的,ENCODING_PCM_16BIT(16bit) , ENCODING_PCM_8BIT(8bit)
*bufferSizeInBytes:配置的是AudioRecord内部的音频缓冲区的大小 , 该缓冲区的值不能低于一帧“音频帧”(Frame)的大小
**/
mAudioRecord=newAudioRecord(MediaRecorder.AudioSource.MIC,
samplingRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize);
3、开始采集
mAudioRecord.startRecording();
4、读取采集到的声音数据
/*
*不断的读取采集到的声音数据 , 放进编码器的输入缓存inputBuffers中进行编码
*audioBuffer存储写入音频录制数据的缓冲区
*sizeInBytes请求的最大字节数
*publicintread(ByteBufferaudioBuffer,intsizeInBytes)
**/
len=mAudioRecord.read(inputBuffers[bufferIndex],BUFFER_SIZE);
5、停止采集 , 释放资源
if(mAudioRecord!=null){
mAudioRecord.stop();
mAudioRecord.release();
mAudioRecord=null;
}