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
AudioCapturer只能录制PCM码流,录制的wav只能通过AudioRenderer进行播放,可以手动把 pcm音频转成.wav格式头文件,需要将PCM数据前面加44字节的文件头,对应 fs.writeSync
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-access-V5
更多关于HarmonyOS鸿蒙Next中audio.AudioCapturer录音得到的wav文件播放功能实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
文件头怎么编写啊?
在HarmonyOS鸿蒙Next中,audio.AudioCapturer用于音频录制,录制的数据可以保存为WAV文件。要实现WAV文件的播放功能,可以使用audio.AudioPlayer组件。以下是一个简单的实现步骤:
-
创建
AudioCapturer并录制音频: 使用AudioCapturer录制音频数据,并将其保存为WAV文件。WAV文件需要包含正确的头信息,以确保播放器能够正确解析。 -
创建
AudioPlayer并播放WAV文件: 使用AudioPlayer加载并播放录制的WAV文件。AudioPlayer支持本地文件路径或URI,可以直接加载WAV文件进行播放。 -
代码示例:
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(); } }); -
注意事项:
- 确保WAV文件的头信息正确,包括采样率、声道数、采样格式等。
AudioPlayer在播放过程中可能会触发不同的事件,如播放完成、错误等,可以通过监听这些事件来处理播放状态。
通过上述步骤,可以在HarmonyOS鸿蒙Next中实现audio.AudioCapturer录制的WAV文件的播放功能。
在HarmonyOS鸿蒙Next中,实现audio.AudioCapturer录音并生成WAV文件的播放功能,可以按照以下步骤进行:
-
录音并保存为WAV文件:使用
audio.AudioCapturer进行录音,并将音频数据按照WAV文件格式进行封装。WAV文件头需包含采样率、声道数、位深等信息。 -
播放WAV文件:使用
audio.AudioPlayer组件加载并播放生成的WAV文件。通过设置AudioPlayer的src属性为WAV文件路径,调用play()方法即可播放。 -
代码示例:
const audioPlayer = new audio.AudioPlayer(); audioPlayer.src = 'path/to/your/recorded.wav'; audioPlayer.play();
确保WAV文件格式正确,AudioPlayer支持播放的音频格式包括WAV、MP3等。

