0%

Taro学习-录音、播放功能

声音处理api的使用

初始化

1
2
const voiceReciver = Taro.getRecorderManager()
const voicePlayer = Taro.createInnerAudioContext()

增加录音事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
handleStartRecord = () => {
let option = {
duration: 60000, //录音的时长
format: 'mp3', //录音的格式,有aac和mp3两种
}
this.setState({
recording: true},()=> {
voiceReciver.start(option)
voiceReciver.onStart(() => {
console.log('录音开始事件') //这个方法是录音开始事件,你可以写录音开始的时候图片或者页面的变化
})
}
)
}

停止录音事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
handleStopRecord = () => {
this.setState({recording: false},
() => {
voiceReciver.stop()
voiceReciver.onStop((res) => {
console.log(res) //这里是必须写完成事件的,因为最后的文件,就在这里面;
let time = parseInt(res.duration / 1000);
console.log('长度:',time)
this.setState({
voice: res,
voiceTime: time,
})
})
}
)
}

播放音频

这里有个坑,ios如果开启了静音会没有声音。

1
2
3
4
5
6
7
8
9
10
11
12
13
handlePlayVoice = () => {
let voice = this.state.voice.tempFilePath;
voicePlayer.obeyMuteSwitch = false,
voicePlayer.autoplay = true
voicePlayer.src = voice,
voicePlayer.onPlay(() => {
console.log('开始播放')
})
voicePlayer.onError((res) => {
console.log(res.errMsg)
console.log(res.errCode)
})
}