本文实例为大家分享了小程序实现录音功能的具体代码,供大家参考,具体内容如下
首先判断权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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()
}
}
})
},
|
授权成功后开始录音
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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); //出错时停止计时
})
},
|
暂停录音
1
2
3
4
5
6
7
8
9
10
|
// 暂停录音
pause: function () {
var that = this ;
recorderManager.pause()
recorderManager.onPause((res) => {
console.log(res)
console.log( '暂停录音' )
clearTimeout(timer);
})
},
|
继续录音
1
2
3
4
5
6
7
8
|
//继续录音
jixu: function () {
var that = this ;
recorderManager.resume()
Countdown(that); //开始计时
recorderManager.onResume((res) => {
})
},
|
停止录音
1
2
3
4
5
6
7
8
9
|
//停止录音
stop: function () {
recorderManager.stop();
recorderManager.onStop((res) => {
this .tempFilePath = res.tempFilePath;
console.log( '停止录音' , res.tempFilePath)
clearTimeout(timer);
})
},
|
播放声音
1
2
3
4
5
6
7
8
9
10
11
12
|
//播放声音
play: function () {
innerAudioContext.autoplay = true
innerAudioContext.src = this .tempFilePath,
innerAudioContext.onPlay(() => {
console.log( '开始播放' )
})
innerAudioContext.onError((res) => {
console.log(res.errMsg)
console.log(res.errCode)
})
},
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 倒计时
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);
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
// 时间展示
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;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/psfalse/article/details/99290072