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>
|