HarmonyOS 鸿蒙Next 录音buffer文件转base64
HarmonyOS 鸿蒙Next 录音buffer文件转base64
// 开启录音
static async start(filePath:string) {
if (!AudioCapturer.audioCapturer) {
console.log(‘wechat’, ‘No AudioCapturer audioCapturer’)
return
}
console.log(‘wechat’, ‘AudioCapturer audioCapturer StartOpen’)
// 准备一个写入的文件
let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE || fileIo.OpenMode.CREATE)
let fd = file.fd
// 文件的大小(这里只读取一次)
let bufferSize: number = fileIo.statSync(fd).size
// 开启录音
AudioCapturer.isRecording = true
await AudioCapturer.audioCapturer.start()
// 如果没有等待开启,while没走进去
// 录着没?
while (AudioCapturer.isRecording) {
// 录着呢,把麦克风缓冲区的内容写入文件中
// 缓冲区读取的大小
let size = AudioCapturer.audioCapturer.getBufferSizeSync()
// 读取缓冲的内容
let buffer = await AudioCapturer.audioCapturer.read(size, true)
console.log(‘bufferData’, JSON.stringify(buffer))
// 1.buffer发送给voiceInput
// 2.将buffer可视化
if (buffer) {
// 写入文件
fileIo.writeSync(fd, buffer, {
// 已经写入的内容作为偏移量(不能覆盖写入,接着写)
offset: bufferSize, length: buffer.byteLength
})
emitter.emit(‘calcVoice’, {
data: { buffer }
})
// 写入后文件的大小是会发生变化的!!!
// 不改偏移量会覆盖
bufferSize += buffer.byteLength
}
}
}
这个是录音的buffer流往里面读,我需要把他转成base64,怎么把这个转成base64
let helper = new util.Base64Helper();
let buf: Uint8Array = new Uint8Array(buffer);
let base64 = ‘音频格式’ + helper.encodeToStringSync(buf, util.Type.MIME);
console.log(“音频格式=====================”,base64)
更多关于HarmonyOS 鸿蒙Next 录音buffer文件转base64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,将录音的buffer文件转换为base64编码通常涉及以下几个步骤:
-
读取Buffer数据:首先,确保你已经成功获取到录音的原始buffer数据。这通常是通过录音API获取的二进制数据流。
-
转换为字节数组:将buffer数据转换为Java中的byte数组。这一步是必要的,因为base64编码是对字节数组进行操作的。
-
使用Base64编码:利用Java的Base64类(如
java.util.Base64
)对字节数组进行编码。可以选择使用Base64.getEncoder().encodeToString()方法将字节数组转换为base64字符串。 -
处理结果:编码完成后,你将得到一个base64编码的字符串,可以将其用于存储、传输等目的。
示例代码(简化):
byte[] buffer = ...; // 录音的buffer数据
String base64String = Base64.getEncoder().encodeToString(buffer);
确保在实际应用中处理异常和错误情况,比如buffer为空或编码失败等。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html