参考示例:import { BusinessError } from '@ohos.base'; import { common } from '@kit.AbilityKit'; import { util } from '@kit.ArkTS'; import fs from '@ohos.file.fs'; @Entry @Component struct base64video{ private context = getContext(this) as common.UIAbilityContext private base: string = '' private base_1: string = '' encodeAudio() { try { this.context.resourceManager.getRawFileContent("ttt.m4a").then((value: Uint8Array) => { let rawFile = value; this.base = new util.Base64Helper().encodeToStringSync(rawFile) }).catch((error: BusinessError) => { console.error("getRawFileContent promise error is " + error); }); } catch (error) { let code = (error as BusinessError).code; let message = (error as BusinessError).message; console.error(`promise getRawFileContent failed, error code: ${code}, message: ${message}.`); } } decodeAudio() { let pathDir = this.context.filesDir; let filePath = pathDir + `/test.m4a` let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) let result = new util.Base64Helper().decodeSync(this.base); let writeLen = fs.writeSync(file.fd, result.buffer) fs.close(file) } async encodeAgain() { let pathDir = this.context.filesDir; let filePath = pathDir + `/test.m4a` let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) let stat = fs.statSync(file.fd) let buf = new ArrayBuffer(stat.size) await fs.read(file.fd, buf) this.base_1 = new util.Base64Helper().encodeToStringSync(new Uint8Array(buf)) fs.close(file) } decodeAgain() { let pathDir = this.context.filesDir; let filePath = pathDir + `/test_1.m4a` let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) let result = new util.Base64Helper().decodeSync(this.base_1); let writeLen = fs.writeSync(file.fd, result.buffer) fs.close(file) } build(){ Column(){ Button('音频编码').onClick(()=>{ this.encodeAudio() }) Button('音频解码并保存').onClick(()=>{ this.decodeAudio() }) Button('重复编码').onClick(()=>{ this.encodeAgain() }) Button('重复解码并保存').onClick(()=>{ this.decodeAgain() }) } } }
参考示例: