uni-app Audio模块录音格式汇总(aac、mp3)

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app Audio模块录音格式汇总(aac、mp3)
新版本HBuilderX(0.1.50)中的5+应用已经支持录制aac和mp3格式文件: 目前Audio模板的通用录音格式有aac、mp3、amr。 另外Android支持录制为3gp,iOS支持录制为wav。 微信小程序里支持aac和mp3。 如需要跨端使用,则只能使用acc和mp3。 mp3在Android上的使用需要单独配一个模块,该模块大小为700k: 在manifest.json的plus->distribute->plugins节点中配置:

{
  "plus": {
    "distribute": {
      "plugins": {
        "audio": {
          "mp3": {
            "description": "Android平台录音支持MP3格式文件"
          }
        }
      }
    }
  }
}

5+API用法 调用录音时指定格式为mp3,示例:

var r = plus.audio.getRecorder();
r.record({filename:'_doc/audio/', format:'mp3'}, function(p) {
  console.log('录音完成:' + p);
}, function(e) {
  console.log('录音失败:' + e.message);
});

综上推荐使用acc格式,iOS、Android、微信小程序平台都支持,无需额外配置,Android安装包体积更小,录制后的文件体积更小。

项目 信息
开发环境 HBuilderX 0.1.50
版本号 0.1.50
项目创建方式 5+应用

1 回复

在uni-app中,使用Audio模块进行录音时,可以选择不同的音频格式,如AAC和MP3。以下是如何在uni-app中实现录音并保存为AAC和MP3格式的示例代码。

录音为AAC格式

首先,确保你已经在pages.json中配置了录音权限(如果需要):

"mp-weixin": {
    "permission": {
        "scope.record": {
            "desc": "你的位置信息将用于小程序录音功能"
        }
    }
}

然后,在页面的JavaScript代码中实现录音功能:

Page({
    data: {
        recorderManager: null
    },
    onLoad() {
        const recorderManager = uni.getRecorderManager();
        
        recorderManager.onStop((res) => {
            const tempFilePath = res.tempFilePath;
            console.log('录音文件路径:', tempFilePath);
            // 可以在这里上传文件或进行其他处理
        });

        this.setData({
            recorderManager
        });
    },
    startRecordAAC() {
        this.data.recorderManager.start({
            format: 'aac', // 设置录音格式为AAC
            sampleRate: 44100
        });
    },
    stopRecord() {
        this.data.recorderManager.stop();
    }
});

录音为MP3格式

对于MP3格式,由于uni-app原生RecorderManager API不支持直接录制MP3,你需要借助第三方库(如lamejs)在前端进行格式转换,或者在后端进行转换。以下是一个简单的示例,展示如何录制AAC格式然后在后端转换为MP3(这里不展示后端代码,仅前端部分):

Page({
    data: {
        recorderManager: null
    },
    onLoad() {
        const recorderManager = uni.getRecorderManager();
        
        recorderManager.onStop((res) => {
            const tempFilePath = res.tempFilePath;
            // 发送录音文件到后端进行MP3转换
            uni.uploadFile({
                url: 'https://your-backend-url/convert', // 后端转换接口
                filePath: tempFilePath,
                name: 'file',
                success: (uploadFileRes) => {
                    console.log('转换后的MP3文件URL:', uploadFileRes.data);
                }
            });
        });

        this.setData({
            recorderManager
        });
    },
    startRecordMP3() {
        // 实际上仍然录制AAC格式,后续在后端转换
        this.data.recorderManager.start({
            format: 'aac', // 录制为AAC格式
            sampleRate: 44100
        });
    },
    stopRecord() {
        this.data.recorderManager.stop();
    }
});

注意,直接在前端将AAC转换为MP3可能会增加应用的复杂性和资源消耗,因此推荐在后端进行格式转换。在前端,你只需要录制音频并发送到后端进行处理即可。

回到顶部