|
@@ -142,15 +142,18 @@ const app = new Vue({
|
|
|
|
|
|
rtcMediaPlayerStyle() {
|
|
|
let obj = {
|
|
|
- objectFit: "fill"
|
|
|
+ objectFit: "fill",
|
|
|
+ width: `${this.layoutViewWidth}px`,
|
|
|
+ height: `${this.layoutViewHeight}px`,
|
|
|
}
|
|
|
if (this.isLandscape) {
|
|
|
obj = {
|
|
|
width: `${this.layoutViewHeight}px`,
|
|
|
height: `${this.layoutViewWidth}px`,
|
|
|
- left: '50%',
|
|
|
- top: '50%',
|
|
|
- transform: 'translate(-50%, -50%) rotate(90deg)'
|
|
|
+ // left: '50%',
|
|
|
+ // top: '50%',
|
|
|
+ // transform: 'translate(-50%, -50%) rotate(90deg)'
|
|
|
+ transform: 'rotate(90deg)'
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -237,7 +240,7 @@ const app = new Vue({
|
|
|
switch (event.type) {
|
|
|
case "screenChange":
|
|
|
// 0:横屏 1:竖屏
|
|
|
- // console.log("屏幕方向变化事件:" + event.val);
|
|
|
+ console.log("屏幕方向变化事件:" + event.val);
|
|
|
this.isLandscape = event.val === 0;
|
|
|
break;
|
|
|
case "wsState":
|
|
@@ -246,7 +249,7 @@ const app = new Vue({
|
|
|
const status = ["TIMEOUT", "failed"]
|
|
|
if (status.includes(event.val)) {
|
|
|
// 设置日志 推流状态为失败
|
|
|
- logReportObj.setParams({plugFowStatus: 2, linkWay: 0});
|
|
|
+ logReportObj.setParams({plugFowStatus: 2, linkWay: 0, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
|
`信令服务地址nats失败:
|
|
@@ -281,8 +284,9 @@ url: ${this.engine.options.url}
|
|
|
// this.pushflowPopup()
|
|
|
// this.getResidueTime()
|
|
|
|
|
|
- // 设置日志 推流状态为失败
|
|
|
- logReportObj.setParams({plugFowStatus: 1, linkWay: 1});
|
|
|
+ // 设置日志 推流状态为成功
|
|
|
+ let now = new Date();
|
|
|
+ logReportObj.setParams({plugFowStatus: 1, linkWay: 1, timeConsuming: now.getTime() - logReportObj.timeStartTime, linkEndTime: logReportObj.formatDate(now)});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(`推流成功`);
|
|
|
playOnBtn.bind(this)()
|
|
@@ -291,7 +295,7 @@ url: ${this.engine.options.url}
|
|
|
if (event.val === "connecting") return
|
|
|
if (event.val === 'failed') {
|
|
|
// 设置日志 推流状态为失败
|
|
|
- logReportObj.setParams({plugFowStatus: 2, linkWay: 1});
|
|
|
+ logReportObj.setParams({plugFowStatus: 2, linkWay: 1, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
|
`rtc链接失败:
|
|
@@ -300,7 +304,7 @@ url: ${this.engine.options.url}
|
|
|
}
|
|
|
if(event.val === 'disconnected') {
|
|
|
// 设置日志 推流状态为失败
|
|
|
- logReportObj.setParams({plugFowStatus: 2, linkWay: 1});
|
|
|
+ logReportObj.setParams({plugFowStatus: 2, linkWay: 1, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
|
`rtc链接超时:
|
|
@@ -336,19 +340,50 @@ url: ${this.engine.options.url}
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 悬浮球click事件
|
|
|
+ onSphere(e){
|
|
|
+ this.levitatedSphereVisible = true
|
|
|
+ e.preventDefault();
|
|
|
+ },
|
|
|
+ // 悬浮球按下事件
|
|
|
+ onSphereDown(e){
|
|
|
+ // 给元素设置鼠标按下状态
|
|
|
+ e.target.isMousedown = true;
|
|
|
+ e.preventDefault();
|
|
|
+ },
|
|
|
+ // 悬浮球抬起事件
|
|
|
+ onSphereUp(e){
|
|
|
+ // 给元素设置鼠标按下状态
|
|
|
+ e.target.isMousedown = false;
|
|
|
+ e.preventDefault();
|
|
|
+ },
|
|
|
// 悬浮球移动
|
|
|
touchmoveLevitatedSphere(e) {
|
|
|
- let { pageX, pageY } = e.targetTouches[0]
|
|
|
+ // 过滤未按下时的移动事件
|
|
|
+ if(e.type === 'mousemove' && !e.target.isMousedown) return
|
|
|
+
|
|
|
+ let pageX,pageY;
|
|
|
+ if(e.type === 'mousemove' && e.target.isMousedown){
|
|
|
+ pageX = e.pageX;
|
|
|
+ pageY = e.pageY;
|
|
|
+ }else if(e.type === 'touchmove'){
|
|
|
+ // let { pageX, pageY } = e.targetTouches[0]
|
|
|
+ pageX = e.targetTouches[0].pageX;
|
|
|
+ pageY = e.targetTouches[0].pageY;
|
|
|
+ }
|
|
|
+
|
|
|
let min = 20
|
|
|
let MaxPageX = this.width - 20
|
|
|
let MaxPageY = this.height - 20
|
|
|
pageX = pageX <= min ? min : (pageX >= MaxPageX ? MaxPageX : pageX)
|
|
|
pageY = pageY <= min ? min : (pageY >= MaxPageY ? MaxPageY : pageY)
|
|
|
+
|
|
|
this.levitatedSpherePositionData = {
|
|
|
left: `${pageX}px`,
|
|
|
top: `${pageY}px`,
|
|
|
transform: 'translate(-50%, -50%)'
|
|
|
}
|
|
|
+ e.preventDefault();
|
|
|
},
|
|
|
touchendLevitatedSphere(e) {
|
|
|
localStorage.setItem('levitatedSpherePositionData', JSON.stringify(this.levitatedSpherePositionData))
|
|
@@ -481,7 +516,7 @@ url: ${this.engine.options.url}
|
|
|
// 链接报错的回调
|
|
|
this.doConnectDirectivesWs.onerror = res => {
|
|
|
// 设置日志 推流状态为失败
|
|
|
- logReportObj.setParams({plugFowStatus: 1, linkWay: 0});
|
|
|
+ logReportObj.setParams({plugFowStatus: 1, linkWay: 0, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
|
`业务指令通道报错:
|
|
@@ -640,7 +675,7 @@ type: ${res.type}
|
|
|
try {
|
|
|
if (!res.success) {
|
|
|
// 设置日志 推流状态为失败,和链接状态
|
|
|
- logReportObj.setParams({plugFowStatus: 2, linkWay: logReportObj.RESPONSE_CODE[res.status] || 0});
|
|
|
+ logReportObj.setParams({plugFowStatus: 2, linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
@@ -672,7 +707,7 @@ method: post
|
|
|
|
|
|
if (!this.isSupportRtc) {
|
|
|
// 设置日志 推流状态为失败
|
|
|
- logReportObj.setParams({plugFowStatus: 2});
|
|
|
+ logReportObj.setParams({plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(`${+isWeixin ? '微信小程序' : ''}当前版本暂不支持使用`);
|
|
|
|
|
@@ -715,7 +750,7 @@ method: get
|
|
|
}
|
|
|
}else{
|
|
|
// 设置上报参数
|
|
|
- logReportObj.setParams({linkWay: 4, plugFowStatus: 2});
|
|
|
+ logReportObj.setParams({linkWay: 4, plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
|
`webRtc连接,获取中转地址失败:
|
|
@@ -769,7 +804,7 @@ method: post
|
|
|
break
|
|
|
default:
|
|
|
// 设置上报参数
|
|
|
- logReportObj.setParams({linkWay: logReportObj.RESPONSE_CODE[res.status] || 0});
|
|
|
+ logReportObj.setParams({linkWay: logReportObj.RESPONSE_CODE[res.status] || 0, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(statusTips[res.status] ||
|
|
@@ -792,7 +827,7 @@ method: post
|
|
|
}
|
|
|
}).catch((error) => {
|
|
|
// 设置上报参数
|
|
|
- logReportObj.setParams({linkWay: 4, plugFowStatus: 2});
|
|
|
+ logReportObj.setParams({linkWay: 4, plugFowStatus: 2, linkEndTime: logReportObj.formatDate(new Date())});
|
|
|
// 日志上报
|
|
|
logReportObj.collectLog(
|
|
|
`接口获取数据失败:
|
|
@@ -974,10 +1009,39 @@ method: post
|
|
|
this.height = window.innerHeight
|
|
|
this.width = window.innerWidth
|
|
|
this.$nextTick(() => {
|
|
|
+
|
|
|
// 云机画面宽高
|
|
|
let layoutView = document.querySelector('.layout-view')
|
|
|
- this.layoutViewWidth = layoutView.offsetWidth
|
|
|
- this.layoutViewHeight = layoutView.offsetHeight
|
|
|
+ // 获取视口宽度,webRTC需要做成16:9的画面
|
|
|
+ let currentWidth = layoutView.clientWidth;
|
|
|
+ let currentHeight = layoutView.clientHeight;
|
|
|
+
|
|
|
+ // this.layoutViewWidth = layoutView.offsetWidth;
|
|
|
+ // this.layoutViewHeight = layoutView.offsetHeight;
|
|
|
+
|
|
|
+ // 计算当前视口的宽高比
|
|
|
+ const currentRatio = currentWidth / currentHeight;
|
|
|
+
|
|
|
+ // 9:16 的目标比例
|
|
|
+ const targetRatio = 9 / 16;
|
|
|
+ console.log(`当前视口的宽高比: ${currentRatio}`);
|
|
|
+ // 判断当前视口的宽高比与目标比例的关系
|
|
|
+ if (currentRatio > targetRatio) {
|
|
|
+ // 当前视口的宽高比大于目标比例,说明宽度“过宽”,需要以高度为基准
|
|
|
+ console.log("当前视口宽度过宽,应以高度为基准调整宽度");
|
|
|
+ this.layoutViewWidth = currentHeight * targetRatio;
|
|
|
+ this.layoutViewHeight = currentHeight;
|
|
|
+ console.log(`1目标: 宽${this.layoutViewWidth},高${this.layoutViewHeight}`);
|
|
|
+ } else {
|
|
|
+ // 当前视口的宽高比小于目标比例,说明高度“过高”,需要以宽度为基准
|
|
|
+ console.log("当前视口高度过高,应以宽度为基准调整高度");
|
|
|
+ this.layoutViewHeight = currentWidth / targetRatio;
|
|
|
+ this.layoutViewWidth = currentWidth;
|
|
|
+ console.log(`2目标: 宽${this.layoutViewWidth},高${this.layoutViewHeight}`);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 悬浮球位置设置为默认位置
|
|
|
+ this.levitatedSpherePositionData = { right: '15px', top: '15px' }
|
|
|
})
|
|
|
},
|
|
|
|