HarmonyOS 鸿蒙Next AudioCapturer录制文件已损坏,无法播放

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next AudioCapturer录制文件已损坏,无法播放

  1. 官方文档的代码,感觉应该是写入时的问题
  2. 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

回到顶部