如何录音呢?HarmonyOS 鸿蒙Next

如何录音呢?HarmonyOS 鸿蒙Next

图片

按照文档里的弄了一下,但什么显示都没有,该怎么录音,如果录音成功应该是什么样子的啊

7 回复

在HarmonyOS鸿蒙Next系统中,录音功能可以通过以下步骤实现:

1. 申请录音权限

在HarmonyOS中,使用麦克风录音属于敏感权限,需要先在module.json5配置文件中声明ohos.permission.MICROPHONE权限,然后在代码中动态请求用户授权。示例代码如下:

import abilityAccessCtrl from '@kit.AbilityKit';

// 请求麦克风权限
let permissions: Array<string> = ['ohos.permission.MICROPHONE'];
let atManager = abilityAccessCtrl.createAtManager();
atManager.requestPermissionsFromUser(context, permissions).then((data) => {
    if (data.authResults[0] === 0) {
        console.log('麦克风权限已授权');
    } else {
        console.log('麦克风权限被拒绝');
    }
});

2. 使用AudioCapturer进行录音

获得权限后,可以使用ohos.multimedia.audio模块的AudioCapturer进行音频采集。以下是一个简单的录音示例:

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

// 创建音频采集器
let audioCapturer: audio.AudioCapturer;
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
};
let audioCapturerOptions: audio.AudioCapturerOptions = {
    streamInfo: audioStreamInfo,
    capturerInfo: {
        source: audio.SourceType.SOURCE_TYPE_MIC,
        capturerFlags: 0
    }
};
audio.createAudioCapturer(audioCapturerOptions, (err, capturer) => {
    if (err) {
        console.error('创建AudioCapturer失败');
        return;
    }
    audioCapturer = capturer;
    audioCapturer.start(); // 开始录音
});

// 停止录音
audioCapturer.stop();
audioCapturer.release();

3. 实时获取录音音量

如果需要实时显示录音音量,可以通过AudioCapturer的回调获取音频数据并计算音量值:

audioCapturer.on('dataAvailable', (buffer) => {
    // 计算当前音频数据的音量(RMS)
    let sum = 0;
    for (let i = 0; i < buffer.length; i += 2) {
        let sample = buffer.readInt16LE(i);
        sum += sample * sample;
    }
    let rms = Math.sqrt(sum / (buffer.length / 2));
    console.log(`当前音量: ${rms}`);
});

4. 保存录音文件

录音数据可以写入文件,例如PCM格式或转换为MP3/AAC格式。如果使用AVRecorder,默认生成M4A文件,但可以通过修改文件后缀尝试保存为MP3:

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

let avRecorder: media.AVRecorder;
let avConfig: media.AVRecorderConfig = {
    audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
    videoSourceType: media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
    profile: {
        audioCodec: media.CodecMimeType.AUDIO_AAC,
        fileFormat: media.ContainerFormatType.CFT_MPEG_4,
    },
    url: 'file:///data/storage/el2/base/files/record.mp3' // 尝试保存为MP3
};
avRecorder.prepare(avConfig);
avRecorder.start();

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS(鸿蒙Next)中,录音功能可以通过系统提供的AudioCapturer类来实现。AudioCapturer是鸿蒙系统提供的音频采集接口,用于录制音频数据。以下是一个简单的录音实现步骤:

  1. 导入相关模块: 首先,确保在代码中导入鸿蒙系统的音频相关模块:

    import audio from '[@ohos](/user/ohos).multimedia.audio';
  2. 创建AudioCapturer实例: 使用AudioCapturer类创建一个音频采集器实例,并配置音频参数,如采样率、声道数、音频格式等:

    let audioCapturerInfo = {
        audioStreamInfo: {
            samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
            channels: audio.AudioChannel.CHANNEL_2,
            sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
            encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
        },
        capturerFlags: 0
    };
    let audioCapturer = audio.createAudioCapturer(audioCapturerInfo);
  3. 启动录音: 调用start()方法开始录音:

    audioCapturer.start();
  4. 读取音频数据: 在录音过程中,可以通过read()方法读取音频数据,并将其保存到文件中或进行其他处理:

    let bufferSize = 1024;
    let buffer = new ArrayBuffer(bufferSize);
    audioCapturer.read(buffer, bufferSize);
  5. 停止录音: 录音完成后,调用stop()方法停止录音,并释放资源:

    audioCapturer.stop();
    audioCapturer.release();

通过以上步骤,你可以在HarmonyOS中实现基本的录音功能。录音数据可以保存为文件或进行进一步处理。

在HarmonyOS(鸿蒙Next)中录音,可以通过以下步骤进行:

  1. 打开录音应用:在主屏幕或应用列表中找到并打开“录音机”应用。
  2. 开始录音:点击应用界面中的“录音”按钮(通常是一个圆形按钮),开始录音。
  3. 暂停/停止录音:录音过程中,可以点击“暂停”按钮暂时停止录音,或点击“停止”按钮结束录音。
  4. 保存录音:停止录音后,系统会提示你保存录音文件,输入文件名并确认保存。
  5. 查看录音:保存后,录音文件会存储在“录音机”应用的录音列表中,可以随时播放或管理。

确保设备麦克风正常工作,并在录音时保持环境安静以获得最佳效果。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!