介绍
AudioCapturer 是音频采集器,用于录制 PCM(Pulse Code Modulation)音频数据。是面向 底层音频裸数据采集 的核心 API,专为需要精准控制音频数据流的场景设计。
核心作用
从麦克风等音频输入设备抓取 原始 PCM 格式 音频数据流,不做任何编码、封装处理,为 实时音频处理、跨设备流转 等场景提供高灵活度的裸数据能力,是鸿蒙音频生态中‘轻量化、高可控’的核心采集组件。
特点
输出未经编码的 PCM(脉冲编码调制)原始音频数据(二进制流),开发者可直接操作数据流(如实时处理、传输、自定义编码),无封装层限制;
参数可定制:支持自定义采样率,适配不同场景的音频质量需求,如:
- 8kHz/16kHz/44.1kHz
- 声道数(单声道 / 立体声)
- 采样位深(16bit/24bit)
资源占用:仅负责数据采集,无编码、封装逻辑,内存占用比高层录制 API(如
AVRecorder)低 50% 以上,CPU 消耗减少 30%;设备适配:兼容鸿蒙全品类硬件(手机、平板、穿戴设备、智慧屏),尤其适配穿戴设备等低功耗场景;
步骤
配置文件中声明需要麦克风权限
向用户申请麦克风权限
调用
AudioCapturer录音
申请麦克风权限
详见:HarmonyOS NEXT鸿蒙开发:申请麦克风权限(user_grant权限)
在 Index.ets 文件中进行修改
导包
import {ReqAllPermissionsFromUser} from '../utils/RequestPermissions'
申请所有权限(这里根据业务情况选择多个授权或一个授权):
ReqAllPermissionsFromUser(this.context)
录音
工具类
详见 HarmonyOS NEXT鸿蒙开发:将 AudioCapturer 录音封装成工具类
代码
点击按钮,开始录音
在 Index.ets 文件中进行修改
import {init,start,stop,release,getFilePath} from '../utils/AudioCapturerUtil'
import {requestAllPermissionsFromUser} from '../utils/RequestPermissions'
@Entry
@Component
struct Index {
@State text: string = ''
@State eventType: string = ''
aboutToAppear() {
requestAllPermissionsFromUser(getContext(this))
init()
}
build() {
// 列示布局
Column(){
Button("录音")
.width(100)
.height(50)
.onTouch((event?: TouchEvent) => {
if(event){
if (event.type === TouchType.Down) {
this.eventType = '按下'
start() // 开始录音
}
if (event.type === TouchType.Up) {
this.eventType = '抬起'
stop() // 停止录音
const filePath = getFilePath() // 获取录音文件
console.log("---filePath:",filePath)
}
if (event.type === TouchType.Move) {
this.eventType = '按下时移动'
}
}
})
Text(this.text)
.width("100%")
.border({
width:1,
color:Color.Black,
})
.padding(5)
}.width('100%').padding(10)
}
}
