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