Bläddra i källkod

Merge branch 'v5.9.3sdk' of http://192.168.32.253:3000/Software/android-cloud-H5 into v5.9.3sdk

t_finder 3 veckor sedan
förälder
incheckning
69a4ef276a
2 ändrade filer med 136 tillägg och 132 borttagningar
  1. 3 3
      static/rtcEngine/WXtrialInterfaceCopy.html
  2. 133 129
      static/rtcEngine/js/WXtrialInterfaceCopy.js

+ 3 - 3
static/rtcEngine/WXtrialInterfaceCopy.html

@@ -71,7 +71,7 @@
             <!-- 底部按钮 -->
             <div class="layout-footer" v-cloak @touchmove.prevent @mousemove.prevent>
                 <template v-for="item in footerBtn">
-                    <img :src="item.img" alt="" @click="footerBtnFun(item.key)">
+                    <img :src="item.img" alt="" @click="footerBtnFun(item.value)">
                 </template>
             </div>
 
@@ -82,8 +82,8 @@
                     <div class="flex-column-container">
                         <div>
                             <div v-for="item in definitionList" :key="item.key"
-                                :class="['tc drawer-item mb-15', {active: definitionValue === item.value}]"
-                                @click.prevent="definitionFun(item.value)">
+                                :class="['tc drawer-item mb-15', {active: definitionValue === item.name}]"
+                                @click.prevent="definitionFun(item.name)">
                                 {{item.name}}
                             </div>
                             <!-- <div class="tc drawer-item mb-15" @click.prevent="resolutionRatio">

+ 133 - 129
static/rtcEngine/js/WXtrialInterfaceCopy.js

@@ -13,28 +13,28 @@ document.addEventListener('visibilitychange', visibilitychanged);
 
 // 监听 页面显示或隐藏 执行的函数
 function visibilitychanged() {
-  // 获取当前环境
-  const env = isBrowserEnvironment();
+    // 获取当前环境
+    const env = isBrowserEnvironment();
 
-  // 获取当前页面的可见性状态
-  const visibilityState = document.visibilityState;
+    // 获取当前页面的可见性状态
+    const visibilityState = document.visibilityState;
 
-  if (visibilityState === 'visible') {
-    // 页面显示时的逻辑
-    // 网页重载
-    if (env.isBrowser && env.isTopWindow && env.isIPhone) {
-      location.reload();
+    if (visibilityState === 'visible') {
+        // 页面显示时的逻辑
+        // 网页重载
+        if (env.isBrowser && env.isTopWindow && env.isIPhone) {
+            location.reload();
+        }
+    } else if (visibilityState === 'hidden') {
+        // 页面隐藏时的逻辑
+        // video.pause();
+    } else if (visibilityState === 'prerender') {
+        // 页面预渲染时的逻辑
+        console.log('页面处于预渲染状态');
+    } else if (visibilityState === 'unloaded') {
+        // 页面即将卸载时的逻辑 移除监听
+        document.removeEventListener('visibilitychange', visibilitychanged);
     }
-  } else if (visibilityState === 'hidden') {
-    // 页面隐藏时的逻辑
-    // video.pause();
-  } else if (visibilityState === 'prerender') {
-    // 页面预渲染时的逻辑
-    console.log('页面处于预渲染状态');
-  } else if (visibilityState === 'unloaded') {
-    // 页面即将卸载时的逻辑 移除监听
-    document.removeEventListener('visibilitychange', visibilitychanged);
-  }
 }
 
 /**
@@ -42,28 +42,28 @@ function visibilitychanged() {
  * @return {Object} 返回当前页面运行环境
  */
 function isBrowserEnvironment() {
-  // 判断是否在浏览器环境中
-  const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
+    // 判断是否在浏览器环境中
+    const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
 
-  // 判断是否在微信环境中
-  const isWechat = /MicroMessenger/i.test(navigator.userAgent);
+    // 判断是否在微信环境中
+    const isWechat = /MicroMessenger/i.test(navigator.userAgent);
 
-  // 判断是否在微信小程序的 web-view 中
-  const isMiniProgramWebview = isWechat && /miniProgram/i.test(navigator.userAgent);
+    // 判断是否在微信小程序的 web-view 中
+    const isMiniProgramWebview = isWechat && /miniProgram/i.test(navigator.userAgent);
 
-  // 判断是否是 iPhone 设备
-  const isIPhone = /iPhone/i.test(navigator.userAgent);
+    // 判断是否是 iPhone 设备
+    const isIPhone = /iPhone/i.test(navigator.userAgent);
 
-  // 判断是否是顶级窗口(不是嵌套在 iframe 中)目前只有ios的浏览器中才会是顶级窗口
-  const isTopWindow = window.parent === window.self;
+    // 判断是否是顶级窗口(不是嵌套在 iframe 中)目前只有ios的浏览器中才会是顶级窗口
+    const isTopWindow = window.parent === window.self;
 
-  return {
-    isBrowser, // 是否在浏览器环境中
-    isWechat, // 是否在微信环境中
-    isMiniProgramWebview, // 是否在微信小程序的 web-view 中
-    isIPhone, // 是否是 iPhone 设备
-    isTopWindow, // 是否是顶级窗口
-  };
+    return {
+        isBrowser, // 是否在浏览器环境中
+        isWechat, // 是否在微信环境中
+        isMiniProgramWebview, // 是否在微信小程序的 web-view 中
+        isIPhone, // 是否是 iPhone 设备
+        isTopWindow, // 是否是顶级窗口
+    };
 }
 
 /**
@@ -73,34 +73,34 @@ function isBrowserEnvironment() {
  */
 function checkVideoBlackScreen(threshold = 20) { // 阈值,根据需要调整
     // 获取视频元素
-  const video = document.getElementById('playerVideo');
-  const canvas = document.createElement('canvas');
-  const context = canvas.getContext('2d');
-  canvas.width = video.videoWidth;
-  canvas.height = video.videoHeight;
-  // 绘制视频帧到画布上
-  context.drawImage(video, 0, 0, canvas.width, canvas.height);
-  // 获取图像数据
-  const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
-  const data = imageData.data;
-  let totalBrightness = 0;
-  // 遍历图像数据,计算亮度
-  for (let i = 0; i < data.length; i += 4) {
-    // 计算每个像素RGB(R:data[i], G:data[i + 1], B:data[i + 2])的亮度,这里使用简单的平均值
-    const brightness = (data[i] + data[i + 1] + data[i + 2]) / 3;
-    
-    // 累加亮度值
-    totalBrightness += brightness;
-  }
-
-  // 判断亮度是否低于阈值
-  const averageBrightness = totalBrightness / (data.length / 4); // 计算平均亮度
-  let isBlackScreen = averageBrightness < threshold;
-  console.log('平均亮度', averageBrightness);
-  // 释放资源
-  canvas.remove();
-  // 返回是否为黑屏
-  return isBlackScreen;
+    const video = document.getElementById('playerVideo');
+    const canvas = document.createElement('canvas');
+    const context = canvas.getContext('2d');
+    canvas.width = video.videoWidth;
+    canvas.height = video.videoHeight;
+    // 绘制视频帧到画布上
+    context.drawImage(video, 0, 0, canvas.width, canvas.height);
+    // 获取图像数据
+    const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
+    const data = imageData.data;
+    let totalBrightness = 0;
+    // 遍历图像数据,计算亮度
+    for (let i = 0; i < data.length; i += 4) {
+        // 计算每个像素RGB(R:data[i], G:data[i + 1], B:data[i + 2])的亮度,这里使用简单的平均值
+        const brightness = (data[i] + data[i + 1] + data[i + 2]) / 3;
+
+        // 累加亮度值
+        totalBrightness += brightness;
+    }
+
+    // 判断亮度是否低于阈值
+    const averageBrightness = totalBrightness / (data.length / 4); // 计算平均亮度
+    let isBlackScreen = averageBrightness < threshold;
+    console.log('平均亮度', averageBrightness);
+    // 释放资源
+    canvas.remove();
+    // 返回是否为黑屏
+    return isBlackScreen;
 }
 
 const { Dialog, Toast } = vant
@@ -129,12 +129,15 @@ const app = new Vue({
         // 底部按钮
         footerBtn: [{
             key: 'task',
+            value: 187,
             img: '../static/img/wx/gengduo_icon.png'
         }, {
             key: 'home',
+            value: 3,
             img: '../static/img/wx/home_icon.png'
         }, {
             key: 'onBack',
+            value: 4,
             img: '../static/img/wx/fanhui_icon.png'
         }],
         // 宽高
@@ -160,7 +163,7 @@ const app = new Vue({
             value: 1800,
         }],
         // 选中的清晰度
-        definitionValue: '',
+        definitionValue: '标清',
         // 分辨率
         resolutionRatioVisible: false,
         resolutionRatioList: [],
@@ -261,7 +264,7 @@ const app = new Vue({
     methods: {
         // 初始化
         initConfig() {
-            
+
             // 获取窗口尺寸
             this.getInitSize();
             // 获取缓存悬浮球位置
@@ -271,7 +274,8 @@ const app = new Vue({
             // 悬浮球位置
             this.levitatedSpherePositionData = levitatedSpherePositionData ? JSON.parse(levitatedSpherePositionData) : { right: '15px', top: '15px' }
             // 清晰度
-            this.definitionValue = definitionValue ? +definitionValue : 2200
+            this.definitionValue = definitionValue ? definitionValue : '标清'
+            console.log("清晰度", this.definitionValue)
             // 获取参数
             this.parametersData = getParameters()
             let { token, merchantSign } = this.parametersData
@@ -298,7 +302,7 @@ const app = new Vue({
             const ICEServerUrl = [
                 // 统一使用三网解析地址
                 { "CMNET": webrtcNetwork }, // 移动
-                { 'CHINANET-GD': webrtcNetwork  }, // 电信
+                { 'CHINANET-GD': webrtcNetwork }, // 电信
                 { 'UNICOM-GD': webrtcNetwork }, // 联通
             ];
 
@@ -315,23 +319,23 @@ const app = new Vue({
                 ip: internetIp, // 实例ip
                 controlToken: authToken, // 控制token
                 width: 720, // 推流视频宽度  必填
-                height: 1080,  // 推流视频高度  必填
+                height: 1280,  // 推流视频高度  必填
                 cardWidth: 0,  // 云机系统分辨率 宽  必填
                 cardHeight: 0, // 云机系统分辨率 高  必填
                 cardDensity: 0, // 云机系统显示 密度  必填
                 authToken,  //拉流鉴权 token  必填
-                quality: '高清',// 画质(码率)  超清 | 高清 | 标清 | 流畅
+                quality: '标清',// 画质(码率)  超清 | 高清 | 标清 | 极速
                 fps: 30, //必填
                 videoCodec: videoCode, // 视频编码格式  必填
                 videoCodecMethod: true, // 硬编true | 软编false
                 isMuted: false, // 是否静音
                 isAllowedOpenCamera: true, // 是否允许打开摄像头
                 sendFollow: true, // 是否允许主控转发文本到实例
-                callback: (event)=> {}
+                callback: (event) => { }
             }
 
             // 设置日志参数 推流质量
-            logReportObj.setParams({imageQuality: 6000}); // 6000在日志上报枚举中为高清
+            logReportObj.setParams({ imageQuality: 6000 }); // 6000在日志上报枚举中为高清
 
             // 初始化 SDK
             this.engine = new MediaSdk();
@@ -353,17 +357,17 @@ const app = new Vue({
                 Toast.clear();
                 // 设置日志 推流状态为成功
                 let now = new Date();
-                logReportObj.setParams({plugFowStatus: 1, linkWay: 1, timeConsuming: now.getTime() - logReportObj.timeStartTime, linkEndTime: logReportObj.formatDate(now)});
+                logReportObj.setParams({ plugFowStatus: 1, linkWay: 1, timeConsuming: now.getTime() - logReportObj.timeStartTime, linkEndTime: logReportObj.formatDate(now) });
                 // 日志上报
                 logReportObj.collectLog(`推流成功`);
 
                 if (r.code === 1005) {
-                    
+
                     // 重连
                     if (this.getUserCardInfoRequestNum > 1) {
-        
+
                         engine.setControlAudio(true); // 设置音频
-        
+
                         engine.changeTouchMode(true);
 
                         // 重连成功后重置请求次数
@@ -379,7 +383,7 @@ const app = new Vue({
             engine.on('CONNECT_ERROR', (r) => {
                 console.log("webrtc异常状态====★★★★★", r);
                 // 设置日志 推流状态为失败
-                logReportObj.setParams({plugFowStatus: 2, linkWay: 0, linkEndTime: logReportObj.formatDate(new Date())});
+                logReportObj.setParams({ plugFowStatus: 2, linkWay: 0, linkEndTime: logReportObj.formatDate(new Date()) });
                 // 日志上报
                 logReportObj.collectLog(
                     `webrtc异常状态
@@ -424,25 +428,25 @@ const app = new Vue({
                     10079: "获取三网配置失败时间",
                     10080: "获取三网配置超时时间"
                 };
-  
+
                 const message = statusMessages[r.code] || `未知的状态码: ${r.code}`;
                 console.log(`${message}:`, r);
             });
         },
 
         // 悬浮球click事件
-        onSphere(e){
+        onSphere(e) {
             this.levitatedSphereVisible = true
             e.preventDefault();
         },
         // 悬浮球按下事件
-        onSphereDown(e){
+        onSphereDown(e) {
             // 给元素设置鼠标按下状态
             e.target.isMousedown = true;
             e.preventDefault();
         },
         // 悬浮球抬起事件
-        onSphereUp(e){
+        onSphereUp(e) {
             // 给元素设置鼠标按下状态
             e.target.isMousedown = false;
             e.preventDefault();
@@ -450,13 +454,13 @@ const app = new Vue({
         // 悬浮球移动
         touchmoveLevitatedSphere(e) {
             // 过滤未按下时的移动事件
-            if(e.type === 'mousemove' && !e.target.isMousedown) return
+            if (e.type === 'mousemove' && !e.target.isMousedown) return
 
-            let pageX,pageY;
-            if(e.type === 'mousemove' && e.target.isMousedown){
+            let pageX, pageY;
+            if (e.type === 'mousemove' && e.target.isMousedown) {
                 pageX = e.pageX;
                 pageY = e.pageY;
-            }else if(e.type === 'touchmove'){
+            } else if (e.type === 'touchmove') {
                 // let { pageX, pageY } = e.targetTouches[0]
                 pageX = e.targetTouches[0].pageX;
                 pageY = e.targetTouches[0].pageY;
@@ -482,10 +486,10 @@ const app = new Vue({
         // 清晰度
         definitionFun(value) {
             this.definitionValue = value
-            this.engine.makeBitrate && this.engine.makeBitrate(value)
+            this.engine && this.engine.setMaxBitrate(value)
 
             // 设置日志参数 推流质量
-            logReportObj.setParams({imageQuality: value});
+            logReportObj.setParams({ imageQuality: value });
 
             localStorage.setItem('definitionValue', value)
             this.levitatedSphereVisible = false
@@ -567,7 +571,7 @@ const app = new Vue({
                 this.doConnectDirectivesWs.send(JSON.stringify({ type: 'getVsStatus' }))
                 this.doConnectDirectivesWs.send(JSON.stringify({ type: 'bitRate', data: { bitRate: 1243000 } }))
                 // 设置日志参数 推流质量
-                logReportObj.setParams({imageQuality: 1243000});
+                logReportObj.setParams({ imageQuality: 1243000 });
 
                 this.doConnectDirectivesWs.send(JSON.stringify({ type: 'InputMethod', data: { type: 2 } }))
                 this.doConnectDirectivesWs.send(JSON.stringify({ type: 'getPhoneSize' }))
@@ -607,10 +611,10 @@ const app = new Vue({
             // 链接报错的回调
             this.doConnectDirectivesWs.onerror = res => {
                 // 设置日志 推流状态为失败
-                logReportObj.setParams({plugFowStatus: 1, linkWay: 0, linkEndTime: logReportObj.formatDate(new Date())});
+                logReportObj.setParams({ plugFowStatus: 1, linkWay: 0, linkEndTime: logReportObj.formatDate(new Date()) });
                 // 日志上报
                 logReportObj.collectLog(
-`业务指令通道报错:
+                    `业务指令通道报错:
 url: ${res.target.url}
 type: ${res.type}
 消息: ${JSON.stringify(res)}`
@@ -760,15 +764,15 @@ type: ${res.type}
             let clientType = +isWeixin ? 'wx' : undefined;
 
             // 设置上报参数
-            logReportObj.setParams({userCardId});
-            clientType && logReportObj.setParams({clientType});
+            logReportObj.setParams({ userCardId });
+            clientType && logReportObj.setParams({ clientType });
 
             // 获取卡信息
             request.post('/api/resources/user/cloud/connect', { userCardId }).then(async res => {
                 try {
                     if (!res.success) {
                         // 设置日志 推流状态为失败,和链接状态
-                        logReportObj.setParams({plugFowStatus: 2, linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date())});
+                        logReportObj.setParams({ plugFowStatus: 2, linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date()) });
 
                         // 日志上报
                         logReportObj.collectLog(
@@ -780,11 +784,11 @@ type: ${res.type}
                         );
                         return;
                     }
-    
+
                     const data = res.data;
                     // 设置上报参数
-                    logReportObj.setParams({videoType: data.videoCode.toLowerCase(), resourceId: data.resourceId});
-    
+                    logReportObj.setParams({ videoType: data.videoCode.toLowerCase(), resourceId: data.resourceId });
+
                     switch (res.status) {
                         case 0:
                             getUserCardInfoRequestNum = 1
@@ -792,18 +796,18 @@ type: ${res.type}
                             if (!res.data.isWebrtc) {
                                 // 关闭日志上报
                                 logReportObj.destroy();
-    
+
                                 // 跳转指定页面
                                 location.replace(`${location.origin}/h5/webRtcYJ/WXtrialInterface.html${location.search}`)
                                 return
                             }
-    
+
                             if (!this.isSupportRtc) {
                                 // 设置日志 推流状态为失败
-                                logReportObj.setParams({plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date())});
+                                logReportObj.setParams({ plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date()) });
                                 // 日志上报
                                 logReportObj.collectLog(`${+isWeixin ? '微信小程序' : ''}当前版本暂不支持使用`);
-    
+
                                 Dialog.alert({
                                     title: '提示',
                                     message: `${+isWeixin ? '微信小程序' : ''}当前版本暂不支持使用,可下载谷歌浏览器或客户端进行使用`,
@@ -816,22 +820,22 @@ type: ${res.type}
                                 })
                                 return
                             }
-    
+
                             // webRtc连接,需获取连接中转地址
                             if (res.data.webrtcNetworkAnalysis) {
                                 // 如果有网络分析的请求地址, 则请求,则否失败
                                 const webrtcNetworkAnalysisReq = await request.get(res.data.webrtcNetworkAnalysis);
-    
+
                                 if (webrtcNetworkAnalysisReq !== null && webrtcNetworkAnalysisReq.success) {
                                     if (webrtcNetworkAnalysisReq.data) {
                                         // 保存获取的连接地址到上个请求的响应中, 方便后面使用
                                         res.data.webrtcNetwork = webrtcNetworkAnalysisReq.data;
-                                        
+
                                         // 设置上报参数
-                                        logReportObj.setParams({transferServerIp: webrtcNetworkAnalysisReq.data});
-                                    }else{
+                                        logReportObj.setParams({ transferServerIp: webrtcNetworkAnalysisReq.data });
+                                    } else {
                                         // 设置上报参数
-                                        logReportObj.setParams({linkWay: 4, plugFowStatus: 2});
+                                        logReportObj.setParams({ linkWay: 4, plugFowStatus: 2 });
                                         // 日志上报
                                         logReportObj.collectLog(
                                             `webRtc连接,获取中转地址成功,但返回数据为空:
@@ -841,9 +845,9 @@ type: ${res.type}
                                             响应: ${JSON.stringify(webrtcNetworkAnalysisReq)}`
                                         );
                                     }
-                                }else{
+                                } else {
                                     // 设置上报参数
-                                    logReportObj.setParams({linkWay: 4, plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date())});
+                                    logReportObj.setParams({ linkWay: 4, plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date()) });
                                     // 日志上报
                                     logReportObj.collectLog(
                                         `webRtc连接,获取中转地址失败:
@@ -853,9 +857,9 @@ type: ${res.type}
                                         响应: ${JSON.stringify(webrtcNetworkAnalysisReq)}`
                                     );
                                 }
-                            }else{
+                            } else {
                                 // 设置上报参数
-                                logReportObj.setParams({linkWay: 4, plugFowStatus: 2});
+                                logReportObj.setParams({ linkWay: 4, plugFowStatus: 2 });
                                 // 日志上报
                                 logReportObj.collectLog(
                                     `webRtc连接,获取请求中转地址为空:
@@ -865,9 +869,9 @@ type: ${res.type}
                                     响应: ${JSON.stringify(res)}`
                                 );
                             }
-                            
+
                             // 如果没有获取到连接地址, 则失败
-                            if(!res.data.webrtcNetwork) {
+                            if (!res.data.webrtcNetwork) {
                                 Dialog.alert({
                                     title: '提示',
                                     message: '访问失败,请稍后重试',
@@ -880,7 +884,7 @@ type: ${res.type}
                                 })
                                 return;
                             }
-    
+
                             this.userCardInfoData = res.data
 
                             // 进入连接云机准备阶段
@@ -892,9 +896,9 @@ type: ${res.type}
                         case 5204:
                             Toast(statusTips[res.status]);
                             // 设置上报参数
-                            logReportObj.setParams({linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date())});
+                            logReportObj.setParams({ linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date()) });
                             // 日志上报
-                            logReportObj.collectLog(statusTips[res.status] || 
+                            logReportObj.collectLog(statusTips[res.status] ||
                                 `webRtc连接,获取请求中转地址返回异常:
                                 url: /api/resources/user/cloud/connect
                                 method: post
@@ -904,33 +908,33 @@ type: ${res.type}
                             break
                         default:
                             // 设置上报参数
-                            logReportObj.setParams({linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date())});
-                            
+                            logReportObj.setParams({ linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date()) });
+
                             // 日志上报
-                            logReportObj.collectLog(statusTips[res.status] || 
+                            logReportObj.collectLog(statusTips[res.status] ||
                                 `webRtc连接,获取请求中转地址返回异常:
                                 url: /api/resources/user/cloud/connect
                                 method: post
                                 参数: ${JSON.stringify({ userCardId })}
                                 响应: ${JSON.stringify(res)}`
                             );
-                            
+
                             Toast('画面异常,请重新进入')
                             break
                     }
                     setTimeout(() => {
                         this.exit()
                     }, 3000)
-                    
+
                 } catch (error) {
 
                 }
             }).catch((error) => {
                 // 设置上报参数
-                logReportObj.setParams({linkWay: 4, plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date())});
+                logReportObj.setParams({ linkWay: 4, plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date()) });
                 // 日志上报
                 logReportObj.collectLog(
-`接口获取数据失败:
+                    `接口获取数据失败:
 url: /api/resources/user/cloud/connect
 method: post
 参数: ${JSON.stringify({ userCardId })}
@@ -1098,7 +1102,7 @@ method: post
 
         // 返回、主页、任务器
         footerBtnFun(key) {
-            this.engine[key] && this.engine[key]()
+            this.engine && this.engine.sendKey(key)
             this.noOperationSetTimeout()
         },
 
@@ -1115,10 +1119,10 @@ method: post
                 // 获取视口宽度,webRTC需要做成16:9的画面
                 let currentWidth = layoutView.clientWidth;
                 let currentHeight = layoutView.clientHeight;
-                
+
                 // 计算当前视口的宽高比
                 const currentRatio = currentWidth / currentHeight;
-            
+
                 // 9:16 的目标比例
                 const targetRatio = 9 / 16;
                 console.log(`当前视口的宽高比: ${currentRatio}`);
@@ -1144,7 +1148,7 @@ method: post
 
         // 音量
         volumeControl(value) {
-            this.engine.ExexuteKeyBoard && this.engine.ExexuteKeyBoard(value)
+            this.engine.sendKey && this.engine.sendKey(value)
             this.$refs.rtcMediaPlayer && (this.$refs.rtcMediaPlayer.muted = false)
         },
 
@@ -1152,10 +1156,10 @@ method: post
         initLogReport() {
             // 初始化日志上报实例
             logReportObj = new logReport({ request });
-            
+
             uni.getEnv((res) => {
                 // 设置上报参数
-                logReportObj.setParams({clientType: Object.keys(res)[0]});
+                logReportObj.setParams({ clientType: Object.keys(res)[0] });
             })
         }
     }
@@ -1181,7 +1185,7 @@ function playOnBtn() {
                     this.getResidueTime()
                     done()
                 })
-                
+
             }
         }
     });