505 lines
15 KiB
Vue
505 lines
15 KiB
Vue
<script lang="ts">
|
||
export default {
|
||
name: 'editvideo' //控制摄像机
|
||
};
|
||
</script>
|
||
|
||
<script setup lang="ts">
|
||
import { ref, onMounted } from "vue";
|
||
import { ElMessageBox, ElMessage } from "element-plus";
|
||
import axios from 'axios';
|
||
import JessibucaPlayer from '@/components/jessibuca/index1.vue'
|
||
import { useUserStore } from '@/store/modules/user';
|
||
const userStore = useUserStore();
|
||
const videoUrl = ref("")
|
||
const props = defineProps({
|
||
rowInfo: {
|
||
required: false,
|
||
type: Object,
|
||
default: false
|
||
},
|
||
online: {
|
||
required: false,
|
||
type: String,
|
||
default: false
|
||
},
|
||
|
||
});
|
||
const controSpeed = ref(100) // 摄像头转动速度默认值 30
|
||
function ptzCamera(command: any) { // 监控视频控制方法
|
||
isGaoliang.value = command
|
||
if (props.online != "1") {
|
||
return
|
||
}
|
||
if (channelId.value == "" || channelId.value == undefined) {
|
||
ElMessage({
|
||
type: 'error',
|
||
message: '暂时无法调试,请先检查视频监控是否正常!',
|
||
})
|
||
return
|
||
}
|
||
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
|
||
if (res.data.data == "0") {
|
||
axios.post(userStore.webApiMonitorUrl + '/api/ptz/control/' + deviceId.value + '/' + channelId.value + '?command=' + command +
|
||
'&horizonSpeed=' + controSpeed.value + '&verticalSpeed=' + controSpeed.value + '&zoomSpeed=' + controSpeed.value, {}).then((res: any) => { })
|
||
}
|
||
})
|
||
|
||
}
|
||
function condensationChang(command: any) { // 光聚方法
|
||
if (props.online != "1") {
|
||
return
|
||
}
|
||
if (channelId.value == "" || channelId.value == undefined) {
|
||
ElMessage({
|
||
type: 'error',
|
||
message: '暂时无法调试,请先检查视频监控是否正常!',
|
||
})
|
||
return
|
||
}
|
||
// 近(42H ) 66 远(41H) 65
|
||
const cmdCode = ref()
|
||
if (command == '加') {
|
||
cmdCode.value = 65
|
||
isGaoliang.value = '65'
|
||
} else if (command == '减') {
|
||
cmdCode.value = 66
|
||
isGaoliang.value = '66'
|
||
}
|
||
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
|
||
if (res.data.data == "0") {
|
||
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '¶meter1=80¶meter2=0&combindCode2=0', {}).then((res: any) => { })
|
||
}
|
||
})
|
||
|
||
}
|
||
function apertureChang(command: any) { // 光圈方法
|
||
if (props.online != "1") {
|
||
return
|
||
}
|
||
if (channelId.value == "" || channelId.value == undefined) {
|
||
ElMessage({
|
||
type: 'error',
|
||
message: '暂时无法调试,请先检查视频监控是否正常!',
|
||
})
|
||
return
|
||
}
|
||
// 缩小(48H ) 72 放大(44H) 70
|
||
const cmdCode = ref(72)
|
||
if (command == '加') {
|
||
cmdCode.value = 70
|
||
isGaoliang.value = '70'
|
||
} else if (command == '减') {
|
||
cmdCode.value = 72
|
||
isGaoliang.value = '72'
|
||
}
|
||
axios.get(userStore.webApiBaseUrl + '/basedata/substation-patroldevice/isWorkingOfPatrolDevice?stationcode=' + userStore.stationCode + "&devicecode=" + deviceId.value, {}).then((res: any) => {
|
||
if (res.data.data == "0") {
|
||
axios.post(userStore.webApiMonitorUrl + '/api/ptz/front_end_command/' + deviceId.value + '/' + channelId.value + '?cmdCode=' + cmdCode.value + '¶meter1=0¶meter2=80&combindCode2=0', {}).then((res: any) => { })
|
||
}
|
||
})
|
||
}
|
||
function videoRefresh() {
|
||
videoUrl.value = videoUrl.value + '?Math=' + Math.random()
|
||
}
|
||
const deviceId = ref("")
|
||
const channelId = ref("")
|
||
const videofmp4 = ref('')
|
||
onMounted(() => {
|
||
if (props.rowInfo.deviceId == undefined) {
|
||
deviceId.value = props.rowInfo.deviceid
|
||
channelId.value = props.rowInfo.channelid
|
||
} else {
|
||
deviceId.value = props.rowInfo.deviceId
|
||
channelId.value = props.rowInfo.channelId
|
||
}
|
||
axios.get(userStore.webApiMonitorUrl + '/api/play/start/' + deviceId.value + '/' + channelId.value, {}).then((ress: any) => {
|
||
if (ress.data.data != undefined) {
|
||
videoUrl.value = ress.data.data.ws_flv
|
||
videofmp4.value = ress.data.data.fmp4
|
||
}
|
||
}).catch(function (error: any) {
|
||
})
|
||
})
|
||
const isGaoliang: any = ref("")
|
||
function quxiao() {
|
||
isGaoliang.value = ''
|
||
}
|
||
</script>
|
||
<template>
|
||
<div class="editvideo-box">
|
||
<div style="width: 98%; height: 650px; margin: auto;">
|
||
<JessibucaPlayer :isClose="false" :_uid="'editvideo1'" :visible.sync="true" :videoUrl="videoUrl"
|
||
:videofmp4="videofmp4" :hasAudio="true" fluent autoplay live></JessibucaPlayer>
|
||
</div>
|
||
<div class="Camera-buttons-box1">
|
||
<div class="Camera-buttons-box">
|
||
<div class="Camera-left-button1" @mousedown="ptzCamera('up')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button2" @mousedown="ptzCamera('upright')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button3" @mousedown="ptzCamera('right')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button4" @mousedown="ptzCamera('downright')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button5" @mousedown="ptzCamera('down')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button6" @mousedown="ptzCamera('downleft')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button7" @mousedown="ptzCamera('left')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button8" @mousedown="ptzCamera('upleft')" @mouseup="ptzCamera('stop')"></div>
|
||
<div class="Camera-left-button9" @click="videoRefresh"></div>
|
||
</div>
|
||
<div>
|
||
<div class="focallengthbox">
|
||
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == 'zoomout' }"
|
||
@mousedown="ptzCamera('zoomout')" @mouseup="ptzCamera('stop')">
|
||
<img src="@/assets/videoimg/left.png" style="width:8px;height:12px" alt="">
|
||
</div>
|
||
<div class="focallength2">缩放</div>
|
||
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == 'zoomin' }"
|
||
@mousedown="ptzCamera('zoomin')" @mouseup="ptzCamera('stop')">
|
||
<img src="@/assets/videoimg/right.png" style="width:8px;height:12px" alt="">
|
||
</div>
|
||
</div>
|
||
<div class="focallengthbox">
|
||
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '66' }"
|
||
@mousedown="condensationChang('减')" @mouseup="quxiao">
|
||
<img src="@/assets/videoimg/left.png" style="width:8px;height:12px" alt="">
|
||
</div>
|
||
<div class="focallength2">光聚</div>
|
||
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '65' }"
|
||
@mousedown="condensationChang('加')" @mouseup="quxiao">
|
||
<img src="@/assets/videoimg/right.png" style="width:8px;height:12px" alt="">
|
||
</div>
|
||
</div>
|
||
<div class="focallengthbox">
|
||
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '72' }"
|
||
@mousedown="apertureChang('减')" @mouseup="quxiao">
|
||
<img src="@/assets/videoimg/left.png" style="width:8px;height:12px" alt="">
|
||
</div>
|
||
<div class="focallength2">光圈</div>
|
||
<div class="focallength1" :class="{ 'gaolaing': isGaoliang == '70' }"
|
||
@mousedown="apertureChang('加')" @mouseup="quxiao">
|
||
<img src="@/assets/videoimg/right.png" style="width:8px;height:12px" alt="">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</template>
|
||
<style scoped lang="scss">
|
||
.Camera-buttons-box1 {
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
.Camera-buttons-box {
|
||
position: relative;
|
||
width: 180px;
|
||
height: 165px;
|
||
// margin-top: 20px;
|
||
// margin-left: 50px;
|
||
// margin-bottom: 10px;
|
||
// display: flex;
|
||
// flex-wrap: wrap;
|
||
// justify-content: center;
|
||
}
|
||
|
||
.Camera-left-button1 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 29px;
|
||
left: 65px;
|
||
width: 44px;
|
||
height: 35px;
|
||
background: url(@/assets/navigation/sxj_01.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button2 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 33px;
|
||
left: 100px;
|
||
width: 44px;
|
||
height: 44px;
|
||
background: url(@/assets/navigation/sxj_02.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button3 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 65px;
|
||
left: 116px;
|
||
width: 34px;
|
||
height: 44px;
|
||
background: url(@/assets/navigation/sxj_03.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button4 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 100px;
|
||
left: 103px;
|
||
width: 44px;
|
||
height: 44px;
|
||
background: url(@/assets/navigation/sxj_04.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button5 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 117px;
|
||
left: 70px;
|
||
width: 44px;
|
||
height: 34px;
|
||
background: url(@/assets/navigation/sxj_05.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button6 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 103px;
|
||
left: 35px;
|
||
width: 43px;
|
||
height: 44px;
|
||
background: url(@/assets/navigation/sxj_06.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button7 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 69px;
|
||
left: 28px;
|
||
width: 35px;
|
||
height: 44px;
|
||
background: url(@/assets/navigation/sxj_07.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button8 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 35px;
|
||
left: 33px;
|
||
width: 43px;
|
||
height: 43px;
|
||
background: url(@/assets/navigation/sxj_08.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button9 {
|
||
cursor: pointer;
|
||
position: absolute;
|
||
top: 63px;
|
||
left: 63px;
|
||
width: 54px;
|
||
height: 54px;
|
||
background: url(@/assets/navigation/sxj_09.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button1:hover {
|
||
background: url(@/assets/navigation/sxj_01.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_011.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button2:hover {
|
||
background: url(@/assets/navigation/sxj_02.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_022.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button3:hover {
|
||
background: url(@/assets/navigation/sxj_03.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_033.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button4:hover {
|
||
background: url(@/assets/navigation/sxj_04.png) no-repeat center center;
|
||
background:url(@/assets/navigation/sxj_044.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button5:hover {
|
||
background: url(@/assets/navigation/sxj_05.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_055.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button6:hover {
|
||
background: url(@/assets/navigation/sxj_06.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_066.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button7:hover {
|
||
background: url(@/assets/navigation/sxj_07.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_077.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button8:hover {
|
||
background: url(@/assets/navigation/sxj_08.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_088.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.Camera-left-button9:hover {
|
||
background: url(@/assets/navigation/sxj_09.png) no-repeat center center;
|
||
background: url(@/assets/navigation/sxj_099.png) no-repeat center center;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.gaolaing {
|
||
background: rgba(50, 177, 245, 0.4)
|
||
}
|
||
|
||
.focallengthbox {
|
||
display: flex;
|
||
// padding-left: 40px;
|
||
padding-top: 5px;
|
||
|
||
.focallength1 {
|
||
border: 1px solid rgba(50, 177, 245, 0.4);
|
||
width: 30px;
|
||
height: 30px;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.focallength2 {
|
||
pointer-events: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
border-top: 1px solid rgba(50, 177, 245, 0.4);
|
||
border-bottom: 1px solid rgba(50, 177, 245, 0.4);
|
||
width: 120px;
|
||
height: 30px;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
font-size: 14px;
|
||
color: #B5D7FF;
|
||
}
|
||
}
|
||
|
||
.Camera-left-buttons {
|
||
position: relative;
|
||
width: 156px;
|
||
height: 156px;
|
||
margin-right: 10px;
|
||
|
||
.Camera-left-input {
|
||
width: 130px;
|
||
height: 36px;
|
||
}
|
||
|
||
.Camera-left-button {
|
||
position: absolute;
|
||
width: 44px;
|
||
height: 44px;
|
||
border-radius: 4px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
cursor: pointer;
|
||
|
||
.img {
|
||
width: 12px;
|
||
height: 12px;
|
||
}
|
||
}
|
||
|
||
.Camera1 {
|
||
top: 16px;
|
||
left: 16px;
|
||
}
|
||
|
||
.Camera2 {
|
||
top: 0px;
|
||
left: 54px;
|
||
}
|
||
|
||
.Camera3 {
|
||
top: 16px;
|
||
right: 16px;
|
||
}
|
||
|
||
.Camera4 {
|
||
top: 54px;
|
||
left: 0px;
|
||
}
|
||
|
||
.Camera5 {
|
||
top: 54px;
|
||
left: 54px;
|
||
}
|
||
|
||
.Camera6 {
|
||
top: 54px;
|
||
right: 0px;
|
||
}
|
||
|
||
.Camera7 {
|
||
bottom: 16px;
|
||
left: 16px;
|
||
}
|
||
|
||
.Camera8 {
|
||
bottom: 0px;
|
||
left: 54px;
|
||
}
|
||
|
||
.Camera9 {
|
||
bottom: 16px;
|
||
right: 16px;
|
||
}
|
||
|
||
.Camera-left-button:hover {
|
||
// background-color: rgba(33, 191, 149, 0.2);
|
||
}
|
||
}
|
||
|
||
.Camera-right-buttons {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex-wrap: wrap;
|
||
width: 102px;
|
||
height: 156px;
|
||
|
||
.buttonurl-box {
|
||
width: 100%;
|
||
height: 48px;
|
||
// background-color: rgba(53, 222, 176,0.4);
|
||
border: 1px solid rgba(0, 249, 162, 1);
|
||
border-radius: 4px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
cursor: pointer;
|
||
|
||
.buttonurl-imgbox {
|
||
width: 50%;
|
||
height: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
.buttonurl-imgbox:hover {
|
||
background-color: rgba(33, 191, 149, 0.2);
|
||
}
|
||
}
|
||
}
|
||
</style>
|