HarmonyOS鸿蒙Next中audio.AudioCapturer录音得到的wav文件播放功能实现

HarmonyOS鸿蒙Next中audio.AudioCapturer录音得到的wav文件播放功能实现 我们是使用audio.AudioCapturer框架进行录音得到的wav文件,audioStreamInfo如下

const audioStreamInfo: audio.AudioStreamInfo = {
  samplingRate: sampleRate ?? audio.AudioSamplingRate.SAMPLE_RATE_16000, // 采样率
  channels: channel ?? audio.AudioChannel.CHANNEL_1, // 通道
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式
}

现在我们所得到的wav文件,目前只能通过audio.AudioRenderer文件进行播放,但是这个播放器无法获取到wav文件播放完的监听,

可以给我们一个demo,来实现录音的wav格式文件的播放器吗,希望可以有播放开始、被打断(电话等)、播放结束的监听。


更多关于HarmonyOS鸿蒙Next中audio.AudioCapturer录音得到的wav文件播放功能实现的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

AudioCapturer只能录制PCM码流,录制的wav只能通过AudioRenderer进行播放,可以手动把 pcm音频转成.wav格式头文件,需要将PCM数据前面加44字节的文件头,对应 fs.writeSync

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-access-V5

沙箱位置:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-device-file-explorer-V5#section675334122615

更多关于HarmonyOS鸿蒙Next中audio.AudioCapturer录音得到的wav文件播放功能实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


文件头怎么编写啊?

在HarmonyOS鸿蒙Next中,audio.AudioCapturer用于音频录制,录制的数据可以保存为WAV文件。要实现WAV文件的播放功能,可以使用audio.AudioPlayer组件。以下是一个简单的实现步骤:

  1. 创建AudioCapturer并录制音频: 使用AudioCapturer录制音频数据,并将其保存为WAV文件。WAV文件需要包含正确的头信息,以确保播放器能够正确解析。

  2. 创建AudioPlayer并播放WAV文件: 使用AudioPlayer加载并播放录制的WAV文件。AudioPlayer支持本地文件路径或URI,可以直接加载WAV文件进行播放。

  3. 代码示例:

    import audio from '[@ohos](/user/ohos).multimedia.audio';
    
    // 1. 创建AudioCapturer并录制音频
    let audioCapturer = audio.createAudioCapturer();
    // 配置AudioCapturer参数
    let audioCapturerOptions = {
        streamInfo: {
            samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
            channels: audio.AudioChannel.CHANNEL_1,
            sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
            encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
        },
        capturerInfo: {
            source: audio.SourceType.SOURCE_TYPE_MIC,
            capturerFlags: 0
        }
    };
    audioCapturer.init(audioCapturerOptions);
    
    // 开始录制
    audioCapturer.start();
    // 录制音频数据并保存为WAV文件
    // ...
    
    // 2. 创建AudioPlayer并播放WAV文件
    let audioPlayer = audio.createAudioPlayer();
    let audioPlayerOptions = {
        streamUsage: audio.StreamUsage.STREAM_USAGE_MEDIA,
        renderMode: audio.RenderMode.RENDER_MODE_NORMAL
    };
    audioPlayer.init(audioPlayerOptions);
    
    // 加载WAV文件
    audioPlayer.load('/path/to/recorded/audio.wav', (err) => {
        if (!err) {
            // 开始播放
            audioPlayer.play();
        }
    });
    
  4. 注意事项:

    • 确保WAV文件的头信息正确,包括采样率、声道数、采样格式等。
    • AudioPlayer在播放过程中可能会触发不同的事件,如播放完成、错误等,可以通过监听这些事件来处理播放状态。

通过上述步骤,可以在HarmonyOS鸿蒙Next中实现audio.AudioCapturer录制的WAV文件的播放功能。

在HarmonyOS鸿蒙Next中,实现audio.AudioCapturer录音并生成WAV文件的播放功能,可以按照以下步骤进行:

  1. 录音并保存为WAV文件:使用audio.AudioCapturer进行录音,并将音频数据按照WAV文件格式进行封装。WAV文件头需包含采样率、声道数、位深等信息。

  2. 播放WAV文件:使用audio.AudioPlayer组件加载并播放生成的WAV文件。通过设置AudioPlayersrc属性为WAV文件路径,调用play()方法即可播放。

  3. 代码示例:

    const audioPlayer = new audio.AudioPlayer();
    audioPlayer.src = 'path/to/your/recorded.wav';
    audioPlayer.play();
    

确保WAV文件格式正确,AudioPlayer支持播放的音频格式包括WAV、MP3等。

回到顶部