HarmonyOS 音频播放相关问题咨询?

业务需要播放接口实时返回的PCM转BASE64的音频流,麻烦咨询下需要怎么实现,文档中没有找到相关说明。

阅读 545
1 个回答

解决方案

下方是音频文件转换示例:

//文件转base64
readFileToBase64(path: string): string {
  // 打开文件
  let srcFile = fs.openSync(path, fs.OpenMode.READ_ONLY);
  console.info(`file.size=${fs.statSync(srcFile.fd).size}`)
  let bufSize = 4096;
  let readSize = 0;
  let arrayBuf = new ArrayBuffer(bufSize);
  class Option {
    public offset: number = 0;
    public length: number = bufSize;
  }
  let option = new Option();
  option.offset = readSize;
  let readLen = fs.readSync(srcFile.fd, arrayBuf, option);

  let buffs: buffer.Buffer[] = []
  while (readLen > 0) {
    buffs.push(buffer.from(arrayBuf, 0, readLen))
    readSize += readLen;
    option.offset = readSize;
    arrayBuf = new ArrayBuffer(bufSize);
    readLen = fs.readSync(srcFile.fd, arrayBuf, option);
  }
  let allBuff = buffer.concat(buffs)
  console.info(`readSize=${readSize} allbuff=${allBuff.buffer.byteLength}`)
  // 关闭文件
  fs.closeSync(srcFile);

  return new util.Base64Helper().encodeToStringSync(new Uint8Array(allBuff.buffer))
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进