uni-app Audio模块录音格式汇总(aac、mp3)
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+应用 |
在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可能会增加应用的复杂性和资源消耗,因此推荐在后端进行格式转换。在前端,你只需要录制音频并发送到后端进行处理即可。