HarmonyOS 鸿蒙Next ArkTS音频录制只能录制pcm格式的文件如何转成amr格式的文件

HarmonyOS 鸿蒙Next ArkTS音频录制只能录制pcm格式的文件如何转成amr格式的文件 ArkTS音频录制只能录制pcm格式的文件,如何转成amr格式的文件

2 回复

鸿蒙现在支持amr编码,录制的pcm,可以编码成amr格式的文件,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/audio-encoding-V5,另外伙伴也可以使用三方库来实现,FFmpeg三方库,参考链接:[https://ohpm.openharmony.cn/#/cn/detail/@sj%2Fffmpeg](https://ohpm.openharmony.cn/#/cn/detail/@sj%2Fffmpeg),可以通过执行FFmpeg指令来转成需要的格式

更多关于HarmonyOS 鸿蒙Next ArkTS音频录制只能录制pcm格式的文件如何转成amr格式的文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,ArkTS音频录制默认生成PCM格式文件。要将PCM文件转换为AMR格式,可以使用HarmonyOS提供的AudioEncoder API。以下是一个简单的步骤:

  1. 创建AudioEncoder实例:使用AudioEncoder类初始化一个编码器实例。
  2. 配置编码器参数:设置编码器的输出格式为AMR,并配置其他必要的参数如采样率、声道数等。
  3. 读取PCM数据:从PCM文件中读取音频数据。
  4. 编码PCM数据:将读取的PCM数据传递给编码器进行编码。
  5. 保存AMR文件:将编码后的AMR数据写入到输出文件中。

示例代码如下:

import audio from '@ohos.multimedia.audio';
import fileio from '@ohos.fileio';

async function convertPcmToAmr(pcmFilePath: string, amrFilePath: string) {
    // 创建AudioEncoder实例
    let audioEncoder = await audio.createAudioEncoder();

    // 配置编码器参数
    let encoderConfig = {
        format: audio.AudioEncoderFormat.AMR_NB, // 设置输出格式为AMR
        sampleRate: 8000, // 设置采样率
        channelCount: 1, // 设置声道数
        bitRate: 12200 // 设置比特率
    };
    await audioEncoder.configure(encoderConfig);

    // 读取PCM文件
    let pcmFile = await fileio.open(pcmFilePath, fileio.OpenMode.READ_ONLY);
    let pcmData = new ArrayBuffer(1024);
    let readLen = await fileio.read(pcmFile.fd, pcmData);

    // 编码PCM数据
    await audioEncoder.start();
    await audioEncoder.write(pcmData);
    let encodedData = await audioEncoder.read();

    // 保存AMR文件
    let amrFile = await fileio.open(amrFilePath, fileio.OpenMode.WRITE_ONLY | fileio.OpenMode.CREATE);
    await fileio.write(amrFile.fd, encodedData);

    // 释放资源
    await audioEncoder.stop();
    await audioEncoder.release();
    await fileio.close(pcmFile);
    await fileio.close(amrFile);
}

这段代码展示了如何将PCM文件转换为AMR格式。通过AudioEncoder API,可以实现音频数据的格式转换。

回到顶部