当前位置: 首页 > news >正文

Android MediaRecorder录音

1. 简介

在android中录制音频有两种方式,MediaRecorderAudioRecord。两者的区别如下:

  • MediaRecorder
    简单方便,不需要理会中间录制过程,结束录制后可以直接得到音频文件进行播放;录制的音频文件是经过压缩的,需要设置编码器;录制的音频文件可以用系统自带的播放器播放。
  • AudioRecord
    在声音录制过程中,可以处理采集的声音数据,如降噪、合成等。过程为一段一段进行录制然后得到数据分别进行处理。录制的是PCM格式的音频文件,需要用AudioTrack来播放,AudioTrack更接近底层。

添加录音权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />

2. MediaRecorder的使用

MediaRecorder的使用

// 开始录音
fun startRecord(filePath: String) {mMediaRecorder = MediaRecorder()try {// 音频来源,麦克风mMediaRecorder?.setAudioSource(MediaRecorder.AudioSource.MIC)// 采样率mMediaRecorder?.setAudioSamplingRate(44100)// 输出格式mMediaRecorder?.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)// 音频编码mMediaRecorder?.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)// 音质频率mMediaRecorder?.setAudioEncodingBitRate(96000)// 输出文件mMediaRecorder?.setOutputFile(filePath)mMediaRecorder?.prepare()mMediaRecorder?.start()} catch (e: Exception) {}
}// 结束录音
fun stopRecord() {mMediaRecorder?.stop()mMediaRecorder?.reset()mMediaRecorder?.release()mMediaRecorder = null
}

3. MediaRecorder的音量

使用MediaRecorder.getMaxAmplitude来获取一小段时间内音频源数据中的最大振幅,返回的是0到32767范围的16位整型。

//计算分贝
var amplitude = mMediaRecorder?.maxAmplitude ?: 0
var db = 0.0
if (amplitude > 1) {db = 20 * log10(ratio)
}
http://www.lryc.cn/news/157517.html

相关文章:

  • 软件提示vcruntime140_1.dll丢失的解决方法,以及丢失的原因总结
  • Datax抽取mysql的bit类型数据
  • git 后悔药
  • vue-cli搭建一个新项目及基础配置
  • 【C++】 C++11(右值引用,移动语义,bind,包装器,lambda,线程库)
  • 附录1-爬虫的一些技巧
  • 【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】HAL移植
  • DragGAN应运而生,未来在4G视频上都可能利用拖拽式编辑
  • 【C++技能树】多态解析
  • 【爬虫笔记】Python爬虫简单运用爬取代理IP
  • IP协议-NAT机制(理解网络结构的关键要点)
  • Python UI自动化 —— 关键字+excel表格数据驱动
  • AI:06-基于OpenCV的二维码识别技术的研究
  • Spring MVC Http Event Stream
  • 2023年亲测有效----树莓派启动时自动邮件上报ip
  • Direct3D颜色
  • LLM - 大模型速递 Baichuan2 快速入门
  • DB2和MYSQL的LOAD原理和比较测试
  • redisson常用api
  • MySQL——数据库以及数据表的创建
  • 智能配电房管理
  • php如何解决高并发的问题?
  • Linux操作系统
  • 华为OD:VLAN资源池
  • 大学大创项目:手机室内AR导航APP项目思路
  • OpenSSL加解密算法使用方法
  • Excel VSTO开发10 -自定义任务面板
  • 百度智能云千帆大模型丨未来人手必备的代码助手
  • 美客多平台经营秘籍:为何测评补单操作是必要的?
  • AArch64内存管理