音频开发——录音与播放、音量调节

本文介绍了Android平台中实现录音的两种API——AudioRecord和MediaRecorder,对比了它们的特点和应用场景。AudioRecord适用于需要原始音频数据的场景,如语音识别应用,而MediaRecorder则更方便地处理音频压缩和编码。此外,还提到了如何使用AudioRecord进行录音,包括创建对象、确定缓冲区大小等步骤,并展示了使用MediaPlayer进行播放录音的操作,以及调整音量的方法。
摘要由CSDN通过智能技术生成

Android提供了两个API用于实现录音功能:
android.media.AudioRecord和android.media.MediaRecorder,对比如下:

API 应用场景 优点 缺点
AudioRecord 边录边播实时处理 可以用代码实现各种音频的封装 输出PCM语音数据,若保存成音频文件,不能被播放器识别的,必须开发者编写代码实现数据编码以及压缩。
MediaRecorder 普通录音 使用简单,已经集成了录音、编码、压缩等,支持少量音频格式 无法实时处理音频



会说话的汤姆猫,以及其他语音识别与处理的软件(如百度翻译、科大讯飞翻译),获取音源数据肯定是使用了AudioRecord。用AudioRecord录音,并实现WAV格式封装,未经过任何压缩,输出的音频文件很大。MediaRecorder由于已经实现了音频数据的压缩和编码,支持.aac(API = 16) .amr .3gp等,因此,输出的音频文件较小。
当然,这里说的文件大小跟采样率以及采集通道的选择还有直接关系。比如AudioRecord,16000的采用率,单声道,那么录制1秒获取的原始数据量为16000个short,也就是32000个字节;双通道就再乘以2,即64000个字节。

使用MediaRecorder比较简单:

public void startAudioRecord(String saveFilePath){
        mediaRecorder = new MediaRecorder();
        recordFile = new File(saveFilePath);
        // 判断,若当前文件已存在,则删除
        if (recordFile.exists()) {
            recordFile.delete();
        }
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mediaRecorder.setAudioChannels(2);
        mediaRecorder.setAudioSamplingRate(16000);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setOutputFile(recordFile.getAbsolutePath())
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值