本文实例为大家分享了小程序实现录音功能的具体代码,供大家参考,具体内容如下首先判断权限
getPermission: function() {

var that = this;

wx.getSetting({

success(res) {

console.log(res.authSetting)

if (res.authSetting["scope.record"] === false) {

wx.showModal({

title: '是否录音',

content: '是否录音',

success: function (tip) {

if (tip.confirm) {

wx.openSetting({

success: function (data) {

if (data.authSetting["scope.record"] === true) {

wx.showToast({

title: '授权成功',

icon: 'success',

duration: 1000

})

that.startLuYin()

//授权成功之后,再调用chooseLocation选择地方

} else {

wx.showToast({

title: '授权失败',

icon: 'success',

duration: 1000

})

}

}

})

}

}

})

}else{

that.startLuYin()

}

}

})
},
getPermission: function() {

var that = this;

wx.getSetting({

success(res) {

console.log(res.authSetting)

if (res.authSetting["scope.record"] === false) {

wx.showModal({

title: '是否录音',

content: '是否录音',

success: function (tip) {

if (tip.confirm) {

wx.openSetting({

success: function (data) {

if (data.authSetting["scope.record"] === true) {

wx.showToast({

title: '授权成功',

icon: 'success',

duration: 1000

})

that.startLuYin()

//授权成功之后,再调用chooseLocation选择地方

} else {

wx.showToast({

title: '授权失败',

icon: 'success',

duration: 1000

})

}

}

})

}

}

})

}else{

that.startLuYin()

}

}

})
},授权成功后开始录音
startLuYin(){

const options = {

duration: 10000 * 6 * 10, //指定录音的时长,单位 ms

sampleRate: 16000, //采样率

numberOfChannels: 1, //录音通道数

encodeBitRate: 96000, //编码码率

format: 'mp3', //音频格式,有效值 aac/mp3

frameSize: 50, //指定帧大小,单位 KB

}

//开始录音

recorderManager.start(options);

recorderManager.onStart(() => {

console.log('recorder start');

Countdown(this); //开始计时

});

//错误回调

recorderManager.onError((res) => {

console.log('recorder出错:' + res);

console.log(res);

clearTimeout(timer); //出错时停止计时

})
},
startLuYin(){

const options = {

duration: 10000 * 6 * 10, //指定录音的时长,单位 ms

sampleRate: 16000, //采样率

numberOfChannels: 1, //录音通道数

encodeBitRate: 96000, //编码码率

format: 'mp3', //音频格式,有效值 aac/mp3

frameSize: 50, //指定帧大小,单位 KB

}

//开始录音

recorderManager.start(options);

recorderManager.onStart(() => {

console.log('recorder start');

Countdown(this); //开始计时

});

//错误回调

recorderManager.onError((res) => {

console.log('recorder出错:' + res);

console.log(res);

clearTimeout(timer); //出错时停止计时

})
},暂停录音
// 暂停录音
pause: function() {

var that = this;

recorderManager.pause()

recorderManager.onPause((res) => {

console.log(res)

console.log('暂停录音')

clearTimeout(timer);

})
},
// 暂停录音
pause: function() {

var that = this;

recorderManager.pause()

recorderManager.onPause((res) => {

console.log(res)

console.log('暂停录音')

clearTimeout(timer);

})
},继续录音
//继续录音
jixu: function() {

var that = this;

recorderManager.resume()

Countdown(that); //开始计时

recorderManager.onResume((res) => {

})
},
//继续录音
jixu: function() {

var that = this;

recorderManager.resume()

Countdown(that); //开始计时

recorderManager.onResume((res) => {

})
},停止录音
//停止录音
stop: function() {

recorderManager.stop();

recorderManager.onStop((res) => {

this.tempFilePath = res.tempFilePath;

console.log('停止录音', res.tempFilePath)

clearTimeout(timer);

})
},
//停止录音
stop: function() {

recorderManager.stop();

recorderManager.onStop((res) => {

this.tempFilePath = res.tempFilePath;

console.log('停止录音', res.tempFilePath)

clearTimeout(timer);

})
},播放声音
//播放声音
play: function() {

innerAudioContext.autoplay = true

innerAudioContext.src = this.tempFilePath,

innerAudioContext.onPlay(() => {

console.log('开始播放')

})

innerAudioContext.onError((res) => {

console.log(res.errMsg)

console.log(res.errCode)

})
},
//播放声音
play: function() {

innerAudioContext.autoplay = true

innerAudioContext.src = this.tempFilePath,

innerAudioContext.onPlay(() => {

console.log('开始播放')

})

innerAudioContext.onError((res) => {

console.log(res.errMsg)

console.log(res.errCode)

})
},
// 倒计时
function Countdown(that) {
timer = setTimeout(function() {

console.log("----secondes----" + formatSeconds(secondes));

secondes++;

if (secondes >= 600) {

recorderManager.stop();

clearTimeout(timer);

}

that.setData({

times: formatSeconds(secondes)

});

Countdown(that);
}, 1000);
};
// 倒计时
function Countdown(that) {
timer = setTimeout(function() {

console.log("----secondes----" + formatSeconds(secondes));

secondes++;

if (secondes >= 600) {

recorderManager.stop();

clearTimeout(timer);

}

that.setData({

times: formatSeconds(secondes)

});

Countdown(that);
}, 1000);
};
// 时间展示
function formatSeconds(value) {
var secondTime = parseInt(value); // 秒
var minuteTime = 0; // 分
var hourTime = 0; // 小时
if (secondTime > 60) { //如果秒数大于60,将秒数转换成整数

//获取分钟,除以60取整数,得到整数分钟

minuteTime = parseInt(secondTime / 60);

//获取秒数,秒数取佘,得到整数秒数

secondTime = parseInt(secondTime % 60);

//如果分钟大于60,将分钟转换成小时

if (minuteTime > 60) {

//获取小时,获取分钟除以60,得到整数小时

hourTime = parseInt(minuteTime / 60);

//获取小时后取佘的分,获取分钟除以60取佘的分

minuteTime = parseInt(minuteTime % 60);

}
}
var result;
//时间的展示方式为00:00
if (secondTime < 10) {

result = "0" + parseInt(secondTime);
} else {

result = "" + parseInt(secondTime);
}
if (minuteTime > 0) {

if (minuteTime < 10) {

result = "0" + parseInt(minuteTime) + ":" + result;

} else {

result = "" + parseInt(minuteTime) + ":" + result;

}
} else {

result = "00:" + result;
}
//由于限制时长最多为三分钟,小时用不到
if (hourTime > 0) {

result = "" + parseInt(hourTime) + ":" + result;
}
return result;
}
// 时间展示
function formatSeconds(value) {
var secondTime = parseInt(value); // 秒
var minuteTime = 0; // 分
var hourTime = 0; // 小时
if (secondTime > 60) { //如果秒数大于60,将秒数转换成整数

//获取分钟,除以60取整数,得到整数分钟

minuteTime = parseInt(secondTime / 60);

//获取秒数,秒数取佘,得到整数秒数

secondTime = parseInt(secondTime % 60);

//如果分钟大于60,将分钟转换成小时

if (minuteTime > 60) {

//获取小时,获取分钟除以60,得到整数小时

hourTime = parseInt(minuteTime / 60);

//获取小时后取佘的分,获取分钟除以60取佘的分

minuteTime = parseInt(minuteTime % 60);

}
}
var result;
//时间的展示方式为00:00
if (secondTime < 10) {

result = "0" + parseInt(secondTime);
} else {

result = "" + parseInt(secondTime);
}
if (minuteTime > 0) {

if (minuteTime < 10) {

result = "0" + parseInt(minuteTime) + ":" + result;

} else {

result = "" + parseInt(minuteTime) + ":" + result;

}
} else {

result = "00:" + result;
}
//由于限制时长最多为三分钟,小时用不到
if (hourTime > 0) {

result = "" + parseInt(hourTime) + ":" + result;
}
return result;
}以上就是本文的全部内容,希望对大家的学习有所帮助。