AudioRecord

数字音频

数字音频通常分为三步:采样、量化、编码

采样:就是将获取的信号给数字化,其中有个概念就是采样频率,而人耳能听到的频率范围只有20Hz~20kHz,所以一般设置的都是44.1kHz

量化:就是如何去表达采样的数据,常用使用二进制来表示声音信号的幅度

编码:如何去保存采样和量化过后的数据,这就出现了很多格式,其中最基础的格式就是PCM(脉冲编码调制),就是裸数据格式完全没有压缩,PCM格式中有几个属性:量化格式采样率声道数

量化格式:即使用多少比特的二进制去进行量化,例如我们使用16比特的二进制信号来进行量化,16比特的二进制范围是-32768到32767,范围大小为65536,所以声音分层就比较多,但是对应的是数据大小会增大

采样率:即前面采样中所说的采样频率

声道数:即单声道还是双声道以及更多声道

比特率:

每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送数据速度越快。

采样率x采样大小x声道数
每秒钟采样的大小=16bit(位宽) * 2(双通道) * 44100(每次采样的次数hz) = 1411200b=1411.2kbps

Android中的音频采集——AudioRecord的使用

在android中我们使用AudioRecord来进行音频采集,采样量化编码全套服务最后输出PCM数据

权限

首先要申请android.permission.RECORD_AUDIO权限

AudioRecord的初始化

 audioSize = AudioRecord.getMinBufferSize(44100,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT);
        audioRecord = new AudioRecord(
                MediaRecorder.AudioSource.MIC,
                44100,
                AudioFormat.CHANNEL_IN_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                audioSize);

我们可以看见初始化AudioRecord的几个属性

streamType 音频来源,例如麦克风MediaRecorder.AudioSource.MIC

sampleRateInHz 采样频率

channelConfig 声道数

AudioFormat.CHANNEL_IN_MONO 单声道,一个声道进行采样
AudioFormat.CHANNEL_IN_STEREO 双声道,两个声道进行采样

audioFormat:量化格式

  • 音频采样精度

指定采样的数据的格式和每次采样的大小。

数据返回格式为 PCM 格式
每次采样的位宽为 16bit

一般都采用这个 AudioFormat.ENCODING_PCM_16BIT(官方文档表示,该采样精度保证所有设备都支持)

bufferSizeInBytes:通过 getMinBufferSize()方法可以获得,根据我们采样录制的过程中的参数来确定,每次从硬件读取数据所需要的缓冲区的大小。

getMinBufferSize()

返回成功创建AudioRecord对象所需的最小缓冲区大小(以字节为单位)。没有实际意义。

我们可以发现初始化所需要的属性基本就是PCM的属性

AudioRecord的使用

初始化完之后,AudioRecord使用就很简单了

 while (isRecording) {
                        int readResult = audioRecord.read(bytes, 0, audioSize);
                        for (int i = 0; i < readResult; i++) {
                            outputStream.write(bytes[i]);
                        }
                    }

我们用关键字来控制无限循环,当停止录制的时候就关键字就控制while循环停止,然后在while循环中我们使用read方法,read方法会把数据传入byte数组中并返回数组大小,我们用for循环将byte数组中的数据用文件输出流输出到文件中,这就完成了PCM数据的采集,最后记住关闭audioRecord就可以了

以上就是在android中音频的采集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值