HarmonyOS 鸿蒙Next AudioCapturer录制文件已损坏,无法播放
HarmonyOS 鸿蒙Next AudioCapturer录制文件已损坏,无法播放
- 官方文档的代码,感觉应该是写入时的问题
-
async start() {
if (this.audioCapturer !== undefined) {
let stateGroup = [audio.AudioState.STATE_PREPARED, audio.AudioState.STATE_PAUSED, audio.AudioState.STATE_STOPPED];
if (stateGroup.indexOf(this.audioCapturer.state.valueOf()) === -1) { // 当且仅当状态为STATE_PREPARED、STATE_PAUSED和STATE_STOPPED之一时才能启动采集
Logger.error(start failed
);
return;
}
await this.audioCapturer.start(); // 启动采集
let file: fs.File = fs.openSync(this.filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); // 如果文件不存在则创建文件
let fd = file.fd;
let numBuffersToCapture = 150; // 循环写入150次
let count = 0;
class Options {
offset: number = 0;
length: number = 0
}
while (numBuffersToCapture) {
let bufferSize = await (this.audioCapturer as audio.AudioCapturer).getBufferSize();
let buffer = await (this.audioCapturer as audio.AudioCapturer).read(bufferSize, true);
let options: Options = {
offset: count * bufferSize,
length: bufferSize
};
if (buffer === undefined) {
Logger.error(read buffer failed
);
} else {
let number = fs.writeSync(fd, buffer, options);
Logger.info(write date: ${number}
);
}
numBuffersToCapture–;
count++;
}
}
}
4 回复
HarmonyOS Next 纯血鸿蒙教程在线学习地址:https://www.bilibili.com/video/BV1fw2ZYSEk2
配套课件及涉及源码网盘下载地址:http://bbs.itying.com/topic/6568836e6a4621002b88a6f6
看着只写入PCM格式,是需要转一下吧
有解决吗?
针对HarmonyOS鸿蒙Next AudioCapturer录制文件已损坏、无法播放的问题,以下是一些专业分析:
首先,确认录制的文件格式是否为PCM。PCM数据无法直接用播放器播放,需要进行转码,如转换为WAV或MP3格式。若保存的文件后缀为MP3但实际编码非MP3,也会导致无法播放。
其次,检查录音过程中是否存在权限问题或配置错误。确保已正确申请并获取麦克风权限,且AudioCapturer配置无误。
再者,考虑文件系统或存储设备是否存在问题。尝试在不同的存储设备或文件系统上处理文件,看问题是否依然存在。
最后,若文件底层数据未完全损坏,可尝试使用视频修复软件(部分支持音频修复)进行修复。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。