鸿蒙Next录音功能如何使用

鸿蒙Next的录音功能在哪里开启?录音时如何暂停和继续?保存的录音文件默认存放在哪个文件夹?支持导出哪些音频格式?录音过程中能否实时调节音量或添加标记?

2 回复

鸿蒙Next录音?简单!打开“录音机”应用,点红色按钮开始录,再点暂停或停止。想找录音?去“文件管理”里翻“Recordings”文件夹。记住:别对着手机打喷嚏,不然录的全是你的“阿嚏”交响乐🎤😄

更多关于鸿蒙Next录音功能如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next(HarmonyOS NEXT)的录音功能主要通过AudioCapturer类实现。以下是使用步骤及示例代码:


1. 添加权限

module.json5中配置音频录制权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.MICROPHONE"
      }
    ]
  }
}

2. 初始化录音参数

设置采样率、声道数、编码格式等:

import audio from '@ohos.multimedia.audio';

let audioStreamInfo: audio.AudioStreamInfo = {
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, // 采样率
  channels: audio.AudioChannel.CHANNEL_1,                  // 单声道
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW    // 原始数据
};

3. 创建 AudioCapturer

let audioCapturer: audio.AudioCapturer | null = null;
let audioCapturerOptions: audio.AudioCapturerOptions = {
  streamInfo: audioStreamInfo,
  capturerInfo: {
    source: audio.SourceType.SOURCE_TYPE_MIC, // 音源为麦克风
    capturerFlags: 0 // 捕获标志
  }
};

// 创建实例
audioCapturer = await audio.createAudioCapturer(audioCapturerOptions);

4. 开始录音

await audioCapturer.start(); // 开始录制
console.log('录音开始');

5. 读取音频数据(可选)

如需处理原始数据,可通过循环读取缓冲区:

let bufferSize = await audioCapturer.getBufferSize();
let buffer = await audioCapturer.read(bufferSize, true);
// 处理buffer中的音频数据

6. 停止录音

await audioCapturer.stop();    // 停止录制
await audioCapturer.release(); // 释放资源
audioCapturer = null;
console.log('录音结束');

注意事项:

  1. 权限申请:需在应用中动态申请麦克风权限(仅配置不够)。
  2. 错误处理:使用try/catch封装可能异常的操作。
  3. 资源释放:录音完成后必须调用release()防止内存泄漏。
  4. 文件保存:若需保存为文件,需将读取的buffer数据写入指定路径(需使用@ohos.file.fs)。

完整流程示例:

async function recordAudio() {
  try {
    // 初始化参数
    let audioCapturer = await audio.createAudioCapturer(capturerOptions);
    await audioCapturer.start();
    
    // 录制5秒
    await new Promise(resolve => setTimeout(resolve, 5000));
    
    await audioCapturer.stop();
    await audioCapturer.release();
  } catch (err) {
    console.error(`录音失败: ${err.message}`);
  }
}

通过以上代码即可实现基础录音功能。如需扩展(如实时处理、格式转换),可结合具体业务逻辑调整。

回到顶部