鸿蒙Next如何使用base64解压后播放wav音频

在鸿蒙Next系统中,如何将Base64编码的字符串解压后转换为WAV音频文件并播放?我尝试了Base64解码得到二进制数据,但直接写入文件后无法正常播放。请问正确的处理流程是什么?需要用到哪些鸿蒙的API?是否有完整的代码示例可以参考?

2 回复

鸿蒙Next里用Base64解WAV?简单!先解码Base64得到二进制数据,再用AudioRenderer播放。注意检查WAV头别被坑,小心内存别炸。代码大概长这样:

// Base64解码
byte[] audioData = Base64.decode(base64Str, Base64.DEFAULT);

// 创建AudioRenderer
AudioRenderer renderer = new AudioRenderer(...);
renderer.write(audioData, 0, audioData.length);
renderer.play();

记住:WAV头别乱改,不然只能听个寂寞!

更多关于鸿蒙Next如何使用base64解压后播放wav音频的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,使用Base64解码并播放WAV音频的步骤如下:

1. Base64解码

将Base64字符串转换为字节数组:

import util from '@ohos.util';

let base64Str = '你的Base64字符串'; // 替换为实际Base64数据
let base64 = new util.Base64Helper();
let uint8Array = base64.decodeSync(base64Str); // 返回Uint8Array

2. 保存为临时文件(可选)

如果音频播放器需要文件路径,可将数据写入临时文件:

import fs from '@ohos.file.fs';

let tempDir = getContext().cacheDir; // 获取缓存目录
let filePath = tempDir + '/temp_audio.wav';
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
fs.writeSync(file.fd, uint8Array.buffer); // 写入数据
fs.closeSync(file);

3. 播放音频

使用AudioPlayer播放WAV文件:

import media from '@ohos.multimedia.media';

// 通过文件路径播放
let audioPlayer = media.createAudioPlayer();
audioPlayer.src = filePath; // 设置文件路径
audioPlayer.play(); // 开始播放

// 或直接通过URL播放(若支持)
// audioPlayer.src = 'data:audio/wav;base64,' + base64Str;

注意事项:

  1. 权限声明:在module.json5中添加存储权限:
    "requestPermissions": [
      { "name": "ohos.permission.READ_MEDIA" }
    ]
    
  2. 资源释放:播放完成后调用audioPlayer.release()
  3. 格式支持:确保WAV为系统支持的格式(通常PCM编码的WAV可直接播放)。

完整流程:

Base64解码 → 转存为临时文件 → 用AudioPlayer加载播放。若系统支持直接播放Base64 URL,可跳过文件保存步骤。

回到顶部