audiorecord怎么释放_Android 开发 AudioRecord音频录制

前言

Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。

实现流程

获取权限

初始化获取每一帧流的Size

初始化音频录制AudioRecord

开始录制与保存录制音频文件

停止录制

给音频文件添加头部信息,并且转换格式成wav

释放AudioRecord,录制流程完毕

获取权限

如果是Android5.0以上,以上3个权限需要动态授权

初始化获取每一帧流的Size

privateInteger mRecordBufferSize;private voidinitMinBufferSize(){//获取每一帧的字节流大小

mRecordBufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO

, AudioFormat.ENCODING_PCM_16BIT);

}

第一个参数sampleRateInHz 采样率(赫兹),方法注释里有说明

只能在4000到192000的范围内取值

在AudioFormat类里

public static final int SAMPLE_RATE_HZ_MIN = 4000; 最小4000

public static final int SAMPLE_RATE_HZ_MAX = 192000; 最大192000

第二个参数channelConfig 声道配置 描述音频声道的配置,例如左声道/右声道/前声道/后声道。

在AudioFormat类录public static final int CHANNEL_IN_LEFT = 0x4;//左声道

public static final int CHANNEL_IN_RIGHT = 0x8;//右声道

public static final int CHANNEL_IN_FRONT = 0x10;//前声道

public static final int CHANNEL_IN_BACK = 0x20;//后声道

public static final int CHANNEL_IN_LEFT_PROCESSED = 0x40;

public static final int CHANNEL_IN_RIGHT_PROCESSED = 0x80;

public static final int CHANNEL_IN_FRONT_PROCESSED = 0x100;

public static final int CHANNEL_IN_BACK_PROCESSED = 0x200;

public static final int CHANNEL_IN_PRESSURE = 0x400;

public static final int CHANNEL_IN_X_AXIS = 0x800;

public static final int CHANNEL_IN_Y_AXIS = 0x1000;

public static final int CHANNEL_IN_Z_AXIS = 0x2000;

public static final int CHANNEL_IN_VOICE_UPLINK = 0x4000;

public static final int CHANNEL_IN_VOICE_DNLINK = 0x8000;

public static final int CHANNEL_IN_MONO = CHANNEL_IN_FRONT;//单声道

public static final int CHANNEL_IN_STEREO = (CHANNEL_IN_LEFT | CHANNEL_IN_RIGHT);//立体声道(左右声道)

第三个参数audioFormat 音频格式 表示音频数据的格式。

注意!一般的手机设备可能只支持 16位PCM编码,如果其他的都会报错为坏值.

public static final int ENCOD

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值