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

2 回复
请参考这个使用:
    let helper = new util.Base64Helper();

    let buf: Uint8Array = new Uint8Array(buffer);

    let base64 = ‘音频格式’ + helper.encodeToStringSync(buf, util.Type.MIME);

    console.log(“音频格式=====================”,base64)

链接地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-util-V5#encodetostringsync9

更多关于HarmonyOS 鸿蒙Next 录音buffer文件转base64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,将录音的buffer文件转换为base64编码通常涉及以下几个步骤:

  1. 读取Buffer数据:首先,确保你已经成功获取到录音的原始buffer数据。这通常是通过录音API获取的二进制数据流。

  2. 转换为字节数组:将buffer数据转换为Java中的byte数组。这一步是必要的,因为base64编码是对字节数组进行操作的。

  3. 使用Base64编码:利用Java的Base64类(如java.util.Base64)对字节数组进行编码。可以选择使用Base64.getEncoder().encodeToString()方法将字节数组转换为base64字符串。

  4. 处理结果:编码完成后,你将得到一个base64编码的字符串,可以将其用于存储、传输等目的。

示例代码(简化):

byte[] buffer = ...; // 录音的buffer数据
String base64String = Base64.getEncoder().encodeToString(buffer);

确保在实际应用中处理异常和错误情况,比如buffer为空或编码失败等。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

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