audiorecord怎么释放_Android音视频之AudioRecord录音(一)

在音视频开发中,录音当然是必不可少的。首先我们要学会单独的录音功能,当然这里说的录音是指用AudioRecord来录音,读取录音原始数据,读到的就是所谓的PCM数据。对于录音来说,最重要的几个参数要搞明白:

1、simpleRate采样率,采样率就是采样频率,每秒钟记录多少个样本。

2、channelConfig通道配置,其实就是所谓的单通道,双通道之类的,AudioFormat.CHANNEL_IN_MONO单通道,AudioFormat.CHANNEL_IN_STEREO双通道,这里只列了这两种,还有其它的,可自行查阅。

3、audioFormat音频格式,其实就是采样的精度,每个样本的位数,AudioFormat.ENCODING_PCM_8BIT每个样本占8位,AudioFormat.ENCODING_PCM_16BIT每个样本占16位,这里也只用了这两个,别的没研究。

在学习过程中会用到的一些参数,我这里封装了一个类,如下

public classAudioParams {enumFormat {

SINGLE_8_BIT, DOUBLE_8_BIT, SINGLE_16_BIT, DOUBLE_16_BIT

}privateFormat format;intsimpleRate;

AudioParams(intsimpleRate, Format f) {this.simpleRate =simpleRate;this.format =f;

}

AudioParams(int simpleRate, int channelCount, intbits) {this.simpleRate =simpleRate;

set(channelCount, bits);

}intgetBits() {return (format == Format.SINGLE_8_BIT || format == Format.DOUBLE_8_BIT) ? 8 : 16;

}intgetEncodingFormat() {return (format == Format.SINGLE_8_BIT || format == Format.DOUBLE_8_BIT) ?AudioFormat.ENCODING_PCM_8BIT :

AudioFormat.ENCODING_PCM_16BIT;

}int getChannelCount() {return (format == Format.SINGLE_8_BIT || format == Format.SINGLE_16_BIT) ? 1 : 2;}intgetChannelConfig() {return (format == Format.SINGLE_8_BIT || format == Format.SINGLE_16_BIT) ?AudioFormat.CHANNEL_IN_MONO :

AudioFormat.CHANNEL_IN_STEREO;

}intgetOutChannelConfig() {return (format == Format.SINGLE_8_BIT || format == Format.SINGLE_16_BIT) ?AudioFormat.CHANNEL_OUT_MONO :

AudioFormat.CHANNEL_OUT_STEREO;

}void set(int channelCount, intbits) {if ((channelCount != 1 && channelCount != 2) || (bits != 8 && bits != 16)) {throw new IllegalArgumentException("不支持其它格式 channelCount=$channelCount bits=$bits");

}if (channelCount == 1) {if (bits == 8) {

format=Format.SINGLE_8_BIT;

}else{

format=Format.SINGLE_16_BIT;

}

}else{if (bits == 8) {

format=Format.DOUBLE_8_BIT;

}else{

format=Format.DOUBLE_16_BIT;

}

}

}

}

这里固定使用了单通道8位,双通道8位,单通道16位,双通道16位,所以用了枚举来限制。

为了方便把录音数据拿出来显示、存储,这里写了一个回调方法如下

public interfaceRecordCallback {/*** 数据回调

*

*@parambytes 数据

*@paramlen 数据有效长度,-1时表示数据结束*/

void onRecord(byte[] bytes, intlen);

}

有了这些参数,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值