import httpRequestApi from '../../../utils/APIClient'; Page({ data: { title: '', id: '', img: '', fullScreenBtn: false, playBtn: false, gesture: true, muted: false, gesture: false, centerBtn: false, recordFlag: 0, recordSource: '', videoCtr: 'recordingVideoEnd', btnFlag: false, btnImgFlag: false, microphonePng: '../../../static/image/microphone.png', recordingGif: '../../../static/image/readingNow.gif', videoUrl: '', readingText: '' }, onLoad: function (option) { console.log(option); this.videoCtx = null; const uid = wx.getStorageSync('uid') httpRequestApi.getClassDetail(uid, option.id).success(res => { console.log(res) wx.setNavigationBarTitle({ title: res.data.data.title //页面标题为路由参数 }) let reg = /\\n/g this.setData({ title: res.data.data.lesson.title, videoUrl: res.data.data.lesson.accompany || res.data.data.playUrl, img: res.data.data.lesson.iconImg, id: res.data.data.lesson.id, // readingText: res.data.data.lessonText.replace(reg,'') readingText: res.data.data.lesson.lessonText, grade: res.data.data.lesson.gradeClassify, productId: res.data.data.product.id }) console.log(this.data.readingText) console.log(this.data.img) httpRequestApi.userIntoPage('pages/main/reading/reading','朗读页面').success((res)=>{ }) }) this.recorderManager = wx.getRecorderManager(); // 监听录音部分 // 录音开始 this.recorderManager.onStart(() => { // this.saveVideo(); this.setData({ btnImgFlag: true, btnFlag: false }) console.log('recorder start') }) // this.recorderManager.onPause(() => { // wx.showToast({ // title: '录音被暂停', // icon: 'fail', // duration: 500 // }) // }) // this.recorderManager.onInterruptionBegin(() => { // wx.showToast({ // title: '录音被应用中断开始', // icon: 'fail', // duration: 500 // }) // }) // this.recorderManager.onInterruptionEnd(() => { // wx.showToast({ // title: '录音中断结束', // icon: 'fail', // duration: 500 // }) // }) let dialogFlag = true; this.recorderManager.onError(() => { wx.getSetting({ success(res) { if (!res.authSetting['scope.record'] && dialogFlag) { wx.showModal({ title: '无法开启您的录音权限', content: '点击右上角浮点按钮->设置,进行授权', confirmText: '我知道了', showCancel: false, success(res) { console.log('用户点击确定') dialogFlag = false; } }) dialogFlag = false; setTimeout(() => { dialogFlag = true; },1000) } // else { // wx.showToast({ // title: 'onError', // icon: 'fail', // duration: 500 // }) // } } }) }) // 录音结束 this.recorderManager.onStop((res) => { // wx.showToast({ // title: 'onStop', // icon: 'fail', // duration: 500 // }) this.videoCtx.stop(); console.log('recorder stop', res) const recordFile = res.tempFilePath; this.setData({ recordFlag: 0, recordSource: recordFile, btnFlag: true, btnImgFlag: false }) }) }, onHide: function () { console.log('onhide') // if (this.data.btnImgFlag) { // this.recorderManager.stop(); // } // if (this.innerAudioContext) { // this.innerAudioContext.stop(); // } this.setData({ recordFlag: 0 }) }, onUnload: function () { console.log('onUnload') // if (this.recorderManager) { // this.recorderManager.stop(); // } // if (this.innerAudioContext) { // this.innerAudioContext.stop(); // } }, // onShow:function(){ // }, // 视频缓冲 // videoWaiting: function () { // this.recorderManager.pause(); // }, // //视频播放 // videoPlay: function () { // this.recorderManager.resume(); // }, // 录音中视频播放结束 (控制录音同时结束) recordingVideoEnd: function () { console.log(this.data.videoCtr) console.log('recordingVideoEnd'); // if (this.data.recordFlag === 0) { // this.recordStop(); this.playingVideoEnd(); return; } // 录音结束 if (this.data.recordFlag === 1) { this.recordStop(); } }, // 播放中视频播放结束 (控制录音同时结束) playingVideoEnd: function () { console.log('playingVideoEnd') this.innerAudioContext.stop(); }, /*** * recordFlag: * 0 初始状态 * 1 录音中 * 2 录音结束 ***/ audioRecord: function () { console.log(this.data.recordFlag) if (this.data.recordFlag === 0) { // this.recordStart(); // this.saveVideo(); if (this.videoCtx) { this.videoCtx.stop(); } if (this.recorderManager) { this.recorderManager.stop(); } if (this.innerAudioContext) { this.innerAudioContext.stop(); } const that = this; wx.getSetting({ success(res) { if (res.authSetting['scope.record']) { that.videoComplete(); } // else { // wx.showToast({ // title: 'onError', // icon: 'fail', // duration: 500 // }) // } } }) return; } // 录音结束后 if (this.data.recordFlag === 1) { wx.showLoading({ title: '作品转码中', mask: true }) this.recordStop(); } }, // 录音开始 /** * duration: 时长 最长10分钟 sampleRate: 44100, 采样率 numberOfChannels: 1, 录音通道 encodeBitRate: 192000, 码率 format: 'mp3', 格式 frameSize: 50 制定帧大小 */ recordStart: function () { console.log('录音开始'); const options = { duration: 600000, sampleRate: 44100, numberOfChannels: 1, encodeBitRate: 192000, format: 'mp3', frameSize: 50 } this.recorderManager.start(options); }, // 录音结束 recordStop: function () { console.log('录音结束') this.recorderManager.stop(); wx.hideLoading() }, // 播放录音 audioPlay: function () { console.log('音频播放'); if (this.innerAudioContext) { this.innerAudioContext.stop(); this.videoCtx.stop(); } this.innerAudioContext = wx.createInnerAudioContext(); this.innerAudioContext.src = this.data.recordSource; // 这里可以是录音的临时路径 console.log(this.innerAudioContext.src); this.videoCtx.play(); this.innerAudioContext.play(); }, videoComplete: function () { // let videoUrl = 'http://efunimgs.ai160.com/ott/test/002tPr2Xlx07oP7B4ro40104120022hP0k010.mp4'; this.setData({ recordFlag: 1 }, () => { }) this.videoCtx = wx.createVideoContext('myVideo', this); this.videoCtx.play(); this.recordStart(); }, // 上传 upload: function () { if (this.videoCtx) { this.videoCtx.stop(); } if (this.recorderManager) { this.recorderManager.stop(); } if (this.innerAudioContext) { this.innerAudioContext.stop(); } wx.showLoading({ title: '作品分享中', mask: true }) const recordSource = this.data.recordSource; wx.uploadFile({ url: 'https://reader.lingjiao.cn/readerBase/file/upload', filePath: recordSource, name: '朗读录音', header: { uid: wx.getStorageSync('uid') }, success: (res) => { const formateRes = JSON.parse(res.data); let audioPath = formateRes.data; let uid = wx.getStorageSync('uid'); shareWorks(uid, audioPath); } }) let shareWorks = (uid, audio) => { if (this.innerAudioContext) { this.innerAudioContext.stop(); } const data = { "lessonId": this.data.id, "originVideo": this.data.videoUrl, "audioPath": audio, "title": this.data.title, "iconImg": this.data.img, "summary": this.data.grade, productId: this.data.productId }; httpRequestApi.postWork(uid, data).success(res => { wx.hideLoading({ success: () => { wx.showToast({ title: '上传成功', icon: 'success', duration: 1000, success: () => { console.log(res); wx.redirectTo({ url: `../../social/works/works?id=${res.data.data.id}&flowerCount=${res.data.count}` }) } }) } }); }) }; } })