仲裁视频会议H5

af587091a92791c247dd4e571eefa67273ac0a1f86b4bb46bea5ad1efe0cc4fa.json 28KB

1
  1. {"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\nimport { getUsersig, reserveConferenceList } from '@/api/home';\nimport { getWidth, getHeight, getWidthPhone, getModile } from \"@/utils/utils\";\nimport roomFooter from './components/roomFooter.vue';\nimport roomFooterPhone from \"./components/footerPhone.vue\";\nimport ASR from '../utils/asr.esm.js';\nimport TRTC from 'trtc-sdk-v5';\nlet trtc = null;\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport { quillEditor } from 'vue-quill-editor';\nexport default {\n name: 'App',\n components: {\n roomFooter,\n roomFooterPhone,\n quillEditor\n },\n data() {\n return {\n userClass: \"userVideo5\",\n userClassPhone: \"userVideoPhone\",\n userList: [],\n userHeight: '100%',\n userPhoneHeight: '92%',\n userSign: \"\",\n roomId: \"\",\n userId: null,\n showFlag: false,\n modileFlag: false,\n localStreamAsr: null,\n contentValue: '',\n textVisible: false,\n editorOption: {\n // Some Quill options...\n },\n asrList: {}\n };\n },\n methods: {\n // getauido(){\n // setTimeout(() => {\n // trtc.getAudioTrack(userId)\n // }, 3000);\n // },\n onEditorBlur(quill) {\n console.log('editor blur!', this.content, quill);\n },\n onEditorFocus(quill) {\n console.log('editor focus!', quill);\n },\n onEditorReady(quill) {\n console.log('editor ready!', quill);\n },\n onEditorChange({\n quill,\n html,\n text\n }) {\n console.log('editor change!', quill, html, text);\n this.content = html;\n },\n // 点击显示修改的文本框\n txtContent() {\n this.textVisible = true;\n },\n // 鼠标滑过显示操作栏\n mouseHover() {\n this.showFlag = true;\n setTimeout(() => {\n this.showFlag = false;\n }, 4000);\n },\n async exitRoom() {\n // 关闭识别\n Object.keys(this.asrList).forEach(key => {\n this.asrList[key].stop();\n });\n this.localStreamAsr.stop();\n await trtc.exitRoom();\n await trtc.updateLocalVideo({\n publish: false\n });\n await trtc.updateLocalAudio({\n publish: false\n });\n await trtc.destroy();\n this.$router.push({\n name: \"Home\"\n });\n },\n // 获取拉流信息\n getPushVideo() {\n asynctrtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, async event => {\n console.log(trtc.getAudioTrack(event.userId), \"ppppp\");\n console.log(trtc.getAudioTrack(), \"pppppp\");\n const userId = event.userId;\n const streamType = event.streamType;\n this.userList.push(userId);\n // this.asrList = {};\n // this.userList.forEach((item, index) => {\n debugger;\n let aoido = await trtc.getAudioTrack(userId);\n this.asrList[this.userList[this.userList.length - 1]] = new ASR({\n secretKey: 'INDrIXcT8YmomZBcsy0oNirnU0LTN4X7',\n secretId: 'AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv',\n appId: 1304001529,\n engine_model_type: '16k_zh',\n voice_format: 1,\n needvad: 1,\n audioTrack: aoido\n });\n\n // })\n if (this.modileFlag) {\n this.userClass = getWidth(this.userList);\n this.userHeight = getHeight(this.userList);\n } else {\n this.userClassPhone = getWidthPhone(this.userList);\n }\n setTimeout(() => {\n trtc.startRemoteVideo({\n userId,\n streamType,\n view: `${userId}`\n });\n });\n\n // Object.keys(this.asrList).forEach(key => {\n console.log(key + \":\" + this.asrList[key], \"llllllllllllll\");\n this.asrList[this.userList[this.userList.length - 1]].start();\n // 开始识别\n this.asrList[this.userList[this.userList.length - 1]].OnRecognitionStart = res => {\n console.log('远端流:开始识别', res);\n };\n this.asrList[this.userList[this.userList.length - 1]].OnError = res => {\n console.log('远端流:识别失败', res);\n };\n // 一句话结束\n this.asrList[this.userList[this.userList.length - 1]].OnSentenceEnd = res => {\n console.log('远端流:一句话结束', res);\n // this.contentValue = `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n this.contentValue = this.contentValue + `<h2>${key}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n };\n // })\n });\n },\n\n // 删除退出会议人员列表\n deletePushVideo() {\n trtc.on(TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE, event => {\n const userId = event.userId;\n if (this.hostId == userId) {\n alert('主持人已经解散会议');\n this.$router.push({\n name: 'Home'\n });\n this.userList = [];\n return;\n }\n let deleteIndex = this.userList.indexOf(userId);\n this.userList = this.userList.filter(item => item !== userId);\n if (deleteIndex !== -1) {\n this.userList.splice(deleteIndex, 1);\n }\n if (this.modileFlag) {\n this.userClass = getWidth(this.userList);\n this.userHeight = getHeight(this.userList);\n } else {\n this.userClassPhone = getWidthPhone(this.userList);\n }\n // Object.keys(this.asrList).forEach(key => {\n // this.asrList[key].stop();\n // })\n });\n },\n\n // 根据caseId查询房间相关信息\n reserveConferenceListFn(data) {\n reserveConferenceList(data).then(res => {\n this.hostId = res.data[0].userName;\n });\n }\n },\n computed: {\n editor() {\n return this.$refs.myQuillEditor.quill;\n }\n },\n async mounted() {\n // 判断设备类型\n this.modileFlag = getModile();\n let roomId = this.$route.query.roomId;\n this.roomId = this.$route.query.roomId;\n let userId = this.$route.query.userId;\n this.userId = this.$route.query.userId;\n this.caseId = this.$route.query.caseId;\n // 获取主持人的userId\n this.reserveConferenceListFn(this.caseId);\n const sdkAppId = 1600011167;\n // 获取usersign\n await getUsersig(userId).then(res => {\n this.userSign = res.msg;\n });\n this.getPushVideo();\n this.deletePushVideo();\n try {\n await trtc.enterRoom({\n roomId: Number(roomId),\n scene: 'rtc',\n sdkAppId,\n userId,\n userSig: this.userSign\n });\n await trtc.startLocalVideo({\n view: document.getElementById('localStream') // 在 DOM 中的 elementId 为 localStream 的标签上预览视频。\n });\n\n await trtc.startLocalAudio();\n console.log('进房成功');\n this.$message({\n message: \"进房成功\",\n type: 'success'\n });\n } catch (error) {\n console.error('进房失败 ' + error);\n this.$message({\n message: \"进房失败\",\n type: 'error'\n });\n this.$router.push({\n name: 'Home'\n });\n }\n this.localStreamAsr = new ASR({\n secretKey: 'INDrIXcT8YmomZBcsy0oNirnU0LTN4X7',\n secretId: 'AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv',\n appId: 1304001529,\n engine_model_type: '16k_zh',\n voice_format: 1,\n needvad: 1,\n audioTrack: trtc.getAudioTrack()\n });\n console.log(trtc.getAudioTrack('zhongcaibai'));\n this.localStreamAsr.start();\n // 开始识别\n this.localStreamAsr.OnRecognitionStart = res => {\n console.log('本地流:开始识别', res);\n };\n this.localStreamAsr.OnError = res => {\n console.log('本地流:识别失败', res);\n };\n // 一句话结束\n this.localStreamAsr.OnSentenceEnd = res => {\n console.log('本地流:一句话结束', res);\n // this.contentValue = `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n this.contentValue = this.contentValue + `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n };\n },\n created() {\n trtc = TRTC.create();\n }\n};","map":{"version":3,"names":["getUsersig","reserveConferenceList","getWidth","getHeight","getWidthPhone","getModile","roomFooter","roomFooterPhone","ASR","TRTC","trtc","quillEditor","name","components","data","userClass","userClassPhone","userList","userHeight","userPhoneHeight","userSign","roomId","userId","showFlag","modileFlag","localStreamAsr","contentValue","textVisible","editorOption","asrList","methods","onEditorBlur","quill","console","log","content","onEditorFocus","onEditorReady","onEditorChange","html","text","txtContent","mouseHover","setTimeout","exitRoom","Object","keys","forEach","key","stop","updateLocalVideo","publish","updateLocalAudio","destroy","$router","push","getPushVideo","asynctrtc","on","EVENT","REMOTE_VIDEO_AVAILABLE","event","getAudioTrack","streamType","aoido","length","secretKey","secretId","appId","engine_model_type","voice_format","needvad","audioTrack","startRemoteVideo","view","start","OnRecognitionStart","res","OnError","OnSentenceEnd","result","voice_text_str","deletePushVideo","REMOTE_VIDEO_UNAVAILABLE","hostId","alert","deleteIndex","indexOf","filter","item","splice","reserveConferenceListFn","then","userName","computed","editor","$refs","myQuillEditor","mounted","$route","query","caseId","sdkAppId","msg","enterRoom","Number","scene","userSig","startLocalVideo","document","getElementById","startLocalAudio","$message","message","type","error","created","create"],"sources":["src/views/room.vue"],"sourcesContent":["<template>\n <div class=\"page\">\n <div class=\"roompage\" @mouseover=\"mouseHover\" v-if=\"modileFlag\">\n <div class=\"txtContent\">\n <el-tag type=\"danger\" @click=\"txtContent\">会议内容</el-tag>\n </div>\n <div :class=\"userClass\" :style=\"{ height: userHeight }\" id=\"localStream\">\n <div class=\"userName\">{{ userId }}</div>\n </div>\n <div :class=\"userClass\" :style=\"{ height: userHeight }\" v-for=\"(item, index) in userList\" :key=\"index\"\n :id=\"item\">\n <div class=\"userName\">{{ item }}</div>\n </div>\n <div class=\"footer\" v-show=\"showFlag\">\n <roomFooter @exitRoom=\"exitRoom\" :roomId=\"roomId\"></roomFooter>\n </div>\n </div>\n <div class=\"roomPhone\" v-if=\"!modileFlag\">\n <div class=\"header\">\n <roomFooterPhone @exitRoom=\"exitRoom\"></roomFooterPhone>\n </div>\n <div class=\"bodyVideo\">\n <div :class=\"userClassPhone\" id=\"localStream\">\n <div class=\"userNamePhone\">{{ userId }}</div>\n </div>\n <div :class=\"userClassPhone\" v-for=\"(item, index) in userList\" :key=\"index\" :id=\"item\">\n <div class=\"userNamePhone\">{{ item }}</div>\n </div>\n </div>\n </div>\n <!-- 语音转文字弹窗 -->\n <el-drawer title=\"会议内容\" :visible.sync=\"textVisible\" :modal=\"false\">\n <quill-editor ref=\"myQuillEditor\" v-model=\"contentValue\" :options=\"editorOption\" @blur=\"onEditorBlur($event)\"\n @focus=\"onEditorFocus($event)\" @ready=\"onEditorReady($event)\" />\n </el-drawer>\n </div>\n</template>\n \n<script>\nimport { getUsersig, reserveConferenceList } from '@/api/home';\nimport { getWidth, getHeight, getWidthPhone, getModile } from \"@/utils/utils\";\nimport roomFooter from './components/roomFooter.vue';\nimport roomFooterPhone from \"./components/footerPhone.vue\";\nimport ASR from '../utils/asr.esm.js'\nimport TRTC from 'trtc-sdk-v5';\nlet trtc = null;\nimport 'quill/dist/quill.core.css'\nimport 'quill/dist/quill.snow.css'\nimport 'quill/dist/quill.bubble.css'\nimport { quillEditor } from 'vue-quill-editor'\nexport default {\n name: 'App',\n components: {\n roomFooter,\n roomFooterPhone,\n quillEditor\n },\n data() {\n return {\n userClass: \"userVideo5\",\n userClassPhone: \"userVideoPhone\",\n userList: [],\n userHeight: '100%',\n userPhoneHeight: '92%',\n userSign: \"\",\n roomId: \"\",\n userId: null,\n showFlag: false,\n modileFlag: false,\n localStreamAsr: null,\n contentValue: '',\n textVisible: false,\n editorOption: {\n // Some Quill options...\n },\n asrList: {}\n };\n },\n methods: {\n // getauido(){\n // setTimeout(() => {\n // trtc.getAudioTrack(userId)\n // }, 3000);\n // },\n onEditorBlur(quill) {\n console.log('editor blur!', this.content, quill)\n },\n onEditorFocus(quill) {\n console.log('editor focus!', quill)\n },\n onEditorReady(quill) {\n console.log('editor ready!', quill)\n },\n onEditorChange({ quill, html, text }) {\n console.log('editor change!', quill, html, text)\n this.content = html\n },\n // 点击显示修改的文本框\n txtContent() {\n this.textVisible = true;\n },\n // 鼠标滑过显示操作栏\n mouseHover() {\n this.showFlag = true;\n setTimeout(() => {\n this.showFlag = false;\n }, 4000)\n },\n async exitRoom() {\n // 关闭识别\n Object.keys(this.asrList).forEach(key => {\n this.asrList[key].stop();\n })\n this.localStreamAsr.stop();\n await trtc.exitRoom();\n await trtc.updateLocalVideo({ publish: false });\n await trtc.updateLocalAudio({ publish: false });\n await trtc.destroy();\n this.$router.push({\n name: \"Home\"\n })\n },\n // 获取拉流信息\n getPushVideo() {\n asynctrtc.on(TRTC.EVENT.REMOTE_VIDEO_AVAILABLE, async event => {\n console.log(trtc.getAudioTrack(event.userId), \"ppppp\");\n console.log(trtc.getAudioTrack(), \"pppppp\");\n const userId = event.userId;\n const streamType = event.streamType;\n this.userList.push(userId);\n // this.asrList = {};\n // this.userList.forEach((item, index) => {\n debugger\n let aoido = await trtc.getAudioTrack(userId)\n this.asrList[this.userList[this.userList.length - 1]] = new ASR({\n secretKey: 'INDrIXcT8YmomZBcsy0oNirnU0LTN4X7',\n secretId: 'AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv',\n appId: 1304001529,\n engine_model_type: '16k_zh',\n voice_format: 1,\n needvad: 1,\n audioTrack: aoido,\n })\n\n // })\n if (this.modileFlag) {\n this.userClass = getWidth(this.userList);\n this.userHeight = getHeight(this.userList);\n } else {\n this.userClassPhone = getWidthPhone(this.userList);\n }\n setTimeout(() => {\n trtc.startRemoteVideo({ userId, streamType, view: `${userId}` })\n })\n\n // Object.keys(this.asrList).forEach(key => {\n console.log(key + \":\" + this.asrList[key], \"llllllllllllll\");\n this.asrList[this.userList[this.userList.length - 1]].start();\n // 开始识别\n this.asrList[this.userList[this.userList.length - 1]].OnRecognitionStart = (res) => {\n console.log('远端流:开始识别', res);\n };\n this.asrList[this.userList[this.userList.length - 1]].OnError = (res) => {\n console.log('远端流:识别失败', res);\n };\n // 一句话结束\n this.asrList[this.userList[this.userList.length - 1]].OnSentenceEnd = (res) => {\n console.log('远端流:一句话结束', res);\n // this.contentValue = `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n this.contentValue = this.contentValue + `<h2>${key}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n };\n // })\n })\n },\n // 删除退出会议人员列表\n deletePushVideo() {\n trtc.on(TRTC.EVENT.REMOTE_VIDEO_UNAVAILABLE, event => {\n const userId = event.userId;\n if (this.hostId == userId) {\n alert('主持人已经解散会议')\n this.$router.push({\n name: 'Home'\n })\n this.userList = [];\n return\n }\n let deleteIndex = this.userList.indexOf(userId);\n this.userList = this.userList.filter(item => item !== userId);\n if (deleteIndex !== -1) {\n this.userList.splice(deleteIndex, 1)\n }\n if (this.modileFlag) {\n this.userClass = getWidth(this.userList);\n this.userHeight = getHeight(this.userList);\n } else {\n this.userClassPhone = getWidthPhone(this.userList);\n }\n // Object.keys(this.asrList).forEach(key => {\n // this.asrList[key].stop();\n // })\n })\n },\n // 根据caseId查询房间相关信息\n reserveConferenceListFn(data) {\n reserveConferenceList(data).then(res => {\n this.hostId = res.data[0].userName;\n })\n }\n },\n computed: {\n editor() {\n return this.$refs.myQuillEditor.quill\n }\n },\n async mounted() {\n // 判断设备类型\n this.modileFlag = getModile();\n let roomId = this.$route.query.roomId;\n this.roomId = this.$route.query.roomId;\n let userId = this.$route.query.userId;\n this.userId = this.$route.query.userId;\n this.caseId = this.$route.query.caseId;\n // 获取主持人的userId\n this.reserveConferenceListFn(this.caseId)\n const sdkAppId = 1600011167;\n // 获取usersign\n await getUsersig(userId).then(res => {\n this.userSign = res.msg;\n })\n this.getPushVideo();\n this.deletePushVideo();\n try {\n await trtc.enterRoom({ roomId: Number(roomId), scene: 'rtc', sdkAppId, userId, userSig: this.userSign });\n await trtc.startLocalVideo({\n view: document.getElementById('localStream'), // 在 DOM 中的 elementId 为 localStream 的标签上预览视频。\n });\n await trtc.startLocalAudio();\n console.log('进房成功');\n this.$message({\n message: \"进房成功\",\n type: 'success'\n })\n } catch (error) {\n console.error('进房失败 ' + error);\n this.$message({\n message: \"进房失败\",\n type: 'error'\n });\n this.$router.push({\n name: 'Home'\n })\n }\n this.localStreamAsr = new ASR({\n secretKey: 'INDrIXcT8YmomZBcsy0oNirnU0LTN4X7',\n secretId: 'AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv',\n appId: 1304001529,\n engine_model_type: '16k_zh',\n voice_format: 1,\n needvad: 1,\n audioTrack: trtc.getAudioTrack(),\n });\n console.log(trtc.getAudioTrack('zhongcaibai'),);\n this.localStreamAsr.start();\n // 开始识别\n this.localStreamAsr.OnRecognitionStart = (res) => {\n console.log('本地流:开始识别', res);\n };\n this.localStreamAsr.OnError = (res) => {\n console.log('本地流:识别失败', res);\n };\n // 一句话结束\n this.localStreamAsr.OnSentenceEnd = (res) => {\n console.log('本地流:一句话结束', res);\n // this.contentValue = `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n this.contentValue = this.contentValue + `<h2>${this.userId}</h2>` + `<span>${res.result.voice_text_str}</span>`;\n };\n },\n created() {\n trtc = TRTC.create();\n },\n};\n</script>\n \n<style scoped>\n.roompage {\n width: 100%;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: space-around;\n flex-wrap: wrap;\n position: relative;\n}\n\n.txtContent {\n width: 100px;\n height: 50px;\n position: absolute;\n right: 5px;\n top: 20px;\n z-index: 10;\n cursor: pointer;\n}\n\n.userVideo,\n.userVideo1,\n.userVideo2,\n.userVideo3,\n.userVideo4,\n.userVideo5 {\n position: relative;\n}\n\n.userVideo5 {\n width: 100%;\n}\n\n.userVideo {\n width: 48%;\n}\n\n.userVideo1 {\n width: 33%;\n}\n\n.userVideo2 {\n width: 33%;\n}\n\n.userVideo3 {\n width: 33%;\n}\n\n.userVideo4 {\n width: 100%;\n}\n\n.footer {\n width: 100%;\n height: 10%;\n background: rgb(46 43 43 / 90%);\n position: absolute;\n bottom: 0;\n z-index: 10;\n}\n\n.userName {\n border-radius: 10px;\n width: 90px;\n height: 40px;\n text-align: center;\n line-height: 40px;\n background-color: black;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 9;\n color: #ffffff;\n}\n\n.userNamePhone {\n border-radius: 10px;\n min-width: 20%;\n height: 30px;\n line-height: 30px;\n text-align: center;\n background-color: black;\n font-size: 12px;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 9;\n color: #ffffff;\n}\n\n.header {\n width: 100%;\n height: 8%;\n background-color: #716c6c;\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n}\n\n.roomPhone {\n width: 100%;\n height: 100vh;\n}\n\n.bodyVideo {\n width: 100%;\n height: 92%;\n display: flex;\n flex-wrap: wrap;\n /* justify-content: space-between; */\n}\n\n.userVideoPhone {\n width: 100%;\n height: 100%;\n background-color: yellow;\n position: relative;\n}\n\n.userVideoPhone1 {\n width: 50%;\n flex-basis: calc(33.333% - 3px);\n max-width: calc(33.333% - 3px);\n height: 200px;\n /* height: 0; */\n /* padding-bottom: calc(33.333% - 3px); */\n margin-bottom: 3px;\n position: relative;\n}\n</style>\n \n \n "],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}