更多关于如何录音呢?HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/using-audiocapturer-for-recording#开发步骤及注意事项 参考这个可以实现HarmonyOS Next录音功能
在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
是鸿蒙系统提供的音频采集接口,用于录制音频数据。以下是一个简单的录音实现步骤:
-
导入相关模块: 首先,确保在代码中导入鸿蒙系统的音频相关模块:
import audio from '[@ohos](/user/ohos).multimedia.audio';
-
创建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);
-
启动录音: 调用
start()
方法开始录音:audioCapturer.start();
-
读取音频数据: 在录音过程中,可以通过
read()
方法读取音频数据,并将其保存到文件中或进行其他处理:let bufferSize = 1024; let buffer = new ArrayBuffer(bufferSize); audioCapturer.read(buffer, bufferSize);
-
停止录音: 录音完成后,调用
stop()
方法停止录音,并释放资源:audioCapturer.stop(); audioCapturer.release();
通过以上步骤,你可以在HarmonyOS中实现基本的录音功能。录音数据可以保存为文件或进行进一步处理。
在HarmonyOS(鸿蒙Next)中录音,可以通过以下步骤进行:
- 打开录音应用:在主屏幕或应用列表中找到并打开“录音机”应用。
- 开始录音:点击应用界面中的“录音”按钮(通常是一个圆形按钮),开始录音。
- 暂停/停止录音:录音过程中,可以点击“暂停”按钮暂时停止录音,或点击“停止”按钮结束录音。
- 保存录音:停止录音后,系统会提示你保存录音文件,输入文件名并确认保存。
- 查看录音:保存后,录音文件会存储在“录音机”应用的录音列表中,可以随时播放或管理。
确保设备麦克风正常工作,并在录音时保持环境安静以获得最佳效果。