Android音频录制--AudioRecord
来源:互联网 发布:老年保健数据 编辑:程序博客网 时间:2024/06/04 22:32
最近公司有个项目,需要用到音频录制,就研究了一下这部分。
android的音频录制有2种方式,对应的是两个不同的类:AudioRecord和MediaRecord。
MediaRecord的特点是相对来说比较简单,它输出的是一个可播放的音频文件,但是对应的,它缺少对音频的控制(比如要对音频进行改变,变声,混音等)。
AudioRecord的使用相对复杂(其实基本功能的时候还是挺简单的),它输出的是一个音频流,通过这个流文件我们可以做很多事,比如实时的语音聊天,变声(汤姆猫),混音(唱吧)。我们也可以把流写入到文件中,格式一般为raw或者pcm,但是并不能直接播放(因为它是一个裸音频),如果要实现播放,我们还需要给文件加个编码头,这也是汤姆猫变声的原理。
在这篇里,我们主要讲一下AudioRecord的基本使用。
在使用AudioRecord录音之前,需要对它进行初始化,指定一系列的参数:
// 音频获取源,通常我们采集的是麦克风的音频,所以使用mic private int audioSource = MediaRecorder.AudioSource.MIC; // 设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025 private static int sampleRateInHz = 44100; // 设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道 private static int channelConfig = AudioFormat.CHANNEL_IN_STEREO; // 音频数据格式:PCM 16位每个样本。保证设备支持。PCM 8位每个样本。不一定能得到设备支持。 private static int audioFormat = AudioFormat.ENCODING_PCM_16BIT; // 缓冲区字节大小 private int bufferSizeInBytes = 0;
此外我们还需要定义缓冲区的大小,这个大小不能超过我们获取到的缓冲区大小,然后创建一个AudioRecord的对象
private void prepareAudioRecord() { // 获得缓冲区字节大小 bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat); // 创建AudioRecord对象 audioRecord = new AudioRecord(audioSource, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes); }
通过audioRecord.startRecording();
来开始录音。
通过audioRecord.stop();
来结束录音。
注意结束录音后,释放资源:
audioRecord.release();//释放资源audioRecord = null;
开始录音后,我们可以通过read方法来获取音频流:
//对应的三个参数,分别为用来存放音频流的字节数组,偏移量,和缓存大小,每次调用read方法,将bufferSizeInBytes大小的音频字节,放入到audiodata中audioRecord.read(audiodata, 0, bufferSizeInBytes);
具体代码如下,我写了一个线程,在UI线程直接录音,会堵塞主线程。
代码地址:AudioRecorder
0 0
- Android音频录制--AudioRecord
- Android AudioRecord录制wav格式的音频
- Android音频开发之使用AudioRecord录制
- android AudioRecord 音频录制 噪音消除
- Android MediaRecorder与AudioRecord音频录制
- AudioRecord 录制音频
- 使用AudioRecord录制音频
- Android Native C++ 层中使用AudioRecord录制PCM音频
- 《android多媒体api》之AudioRecord原始音频pcm录制api
- AudioRecord音频录制的IllegalStateException
- Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
- Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
- Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
- Android多媒体学习十:利用AudioRecord类实现自己的音频录制程序
- Android音频处理之通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
- Android使用AudioRecord录制pcm音频原始数据以及使用AudioTrack播放
- 使用AudioRecord和AudioTrack来录制和播放音频
- AudioRecord、AudioTractor实现音频的录制和播放
- 程序员如何持续提升自己的开发技能
- 单链表
- Linux系统邮件查看及清空
- 第六章 编程练习 6.1
- MVC Kendo总结之-----> CheckBox
- Android音频录制--AudioRecord
- http: get and response格式
- Archlinux安装vim并配置颜色
- 面相对象三大特性之继承
- jquery validate验证插件
- tomcat会话之持久化会话管理器
- 很迷茫
- 回车与换行的区别
- CF205E-Little Elephant and Furik and Rubik