goToPlayBack (cameraInfo, startTime, endTime, playTime) {
let arr = []
let nowAuthRange = []
if(cameraInfo.authObj && cameraInfo.authObj.playback.authValue == "1") {
// 根据权限过滤 存在权限的时间段
let timeSegments = cameraInfo.authObj.playback.timeSegments
let haveAuthList = new Array()
startTime = this.$moment(startTime).valueOf()
endTime = this.$moment(endTime).valueOf()
playTime = this.$moment(playTime).valueOf()
console.log('startTime',startTime,this.$moment(startTime).format('YYYY/MM/DD HH:mm:ss'))
console.log('endTime',endTime, this.$moment(endTime).format('YYYY/MM/DD HH:mm:ss'))
console.log('playTime',playTime, this.$moment(playTime).format('YYYY/MM/DD HH:mm:ss'))
console.log('timeSegments',timeSegments)
console.log('haveAuthList',haveAuthList)
timeSegments.forEach(item=>{
item = JSON.parse(JSON.stringify(item))
let startTimeItem = this.$moment(item.beginTime).valueOf()
let endTimeItem = this.$moment(item.endTime).valueOf()
if(endTime>=startTimeItem && startTime<=endTimeItem) {
let tempStartTime = (startTime > startTimeItem) ? startTime : startTimeItem
let tempEndTime = (endTime > endTimeItem) ? endTimeItem : endTime
let authTimeObj = {
startTime: this.$moment(tempStartTime).format('YYYY/MM/DD HH:mm:ss'),
endTime: this.$moment(tempEndTime).format('YYYY/MM/DD HH:mm:ss')
}
haveAuthList.push(authTimeObj)
}
})
console.log('所有录像权限段',haveAuthList)
if(!haveAuthList.length) {
console.log('时间点附近无权限')
arr.push(startTime,endTime,playTime)
return arr
}
// 有权限情况,获取定位播放时间点和播放时间段
let exitRange = false
haveAuthList.forEach(item=>{
let startTimeItem = this.$moment(item.startTime).valueOf()
let endTimeItem = this.$moment(item.endTime).valueOf()
if(exitRange) {
return
} else if (playTime>=startTimeItem && playTime<=endTimeItem) {
exitRange = true
nowAuthRange = item
console.log('定位时间点有权限')
}
})
if(!exitRange) {
let flippedHaveAuthList = haveAuthList.slice().reverse()
flippedHaveAuthList.forEach(item=>{
let startTimeItem = this.$moment(item.startTime).valueOf()
let endTimeItem = this.$moment(item.endTime).valueOf()
if(exitRange) {
return
} else if (playTime>=startTimeItem && playTime>=endTimeItem) {
exitRange = true
nowAuthRange = item
console.log('定位时间点无权限,选择了有权限的时间段')
playTime = this.$moment(nowAuthRange.startTime).valueOf()
}
})
}
console.log('nowAuthRange',nowAuthRange)
// 拿着确定的播放时间段查该时间段是否有录像
let videoSegments = this.nowVideoSegments?this.nowVideoSegments:cameraInfo.videoSegments
let flag1,flag2 = false
videoSegments.forEach(item=>{
let startTimeItem = this.$moment(item.beginTime).valueOf()
let endTimeItem = this.$moment(item.endTime).valueOf()
if(flag1&&flag2) {
return
} else {
if(startTimeItem<=this.$moment(nowAuthRange.startTime).valueOf()&&endTimeItem>=this.$moment(nowAuthRange.startTime).valueOf()){
flag1 = true
}
if(startTimeItem<=this.$moment(nowAuthRange.endTime).valueOf()&&endTimeItem>=this.$moment(nowAuthRange.endTime).valueOf()){
flag2 = true
}
}
})
if(flag1&&flag2) {
console.log('时间点有权限有录像,整段')
arr.push(this.$moment(nowAuthRange.startTime).valueOf(),this.$moment(nowAuthRange.endTime).valueOf(),playTime)
return arr
} else if(!flag1 && flag2){
let tempStartTime = this.$moment(videoSegments[0].beginTime).format('YYYY/MM/DD HH:mm:ss')
console.log('时间点有权限有录像,开始时间缩短')
if(!(playTime>=this.$moment(tempStartTime).valueOf() && playTime<=this.$moment(nowAuthRange.endTime).valueOf())) {
playTime = this.$moment(tempStartTime).valueOf()
} else if (this.$moment(nowAuthRange.endTime).diff(playTime,'seconds')<5*60*1000) {
playTime = this.$moment(nowAuthRange.endTime).valueOf() - 5*60*1000
}
arr.push(this.$moment(tempStartTime).valueOf(),this.$moment(nowAuthRange.endTime).valueOf(),playTime)
return arr
} else if(!flag2 && flag1){
let tempEndTime = this.$moment(videoSegments[videoSegments.length-1].endTime).format('YYYY/MM/DD HH:mm:ss')
console.log('时间点有权限有录像,结束时间缩短',this.$moment(tempEndTime).diff(playTime,'seconds'))
if(!(playTime>=this.$moment(nowAuthRange.startTime).valueOf() && playTime<=this.$moment(tempEndTime).valueOf())) {
playTime = this.$moment(nowAuthRange.startTime).valueOf()
} else if (this.$moment(tempEndTime).diff(playTime,'seconds')<5*60*1000) {
playTime = this.$moment(tempEndTime).valueOf() - 5*60*1000
}
arr.push(this.$moment(nowAuthRange.startTime).valueOf(),this.$moment(tempEndTime).valueOf(),playTime)
return arr
} else {
// 如果没有录像找到一个 有录像 有权限 的时间段 并将播放时间定位到该时间段的开始时间点
console.log('找其他有权限的时间段')
let flag3,flag4 = false
haveAuthList.forEach(item=>{
let startTimeItem = this.$moment(item.startTime).valueOf()
let endTimeItem = this.$moment(item.endTime).valueOf()
if(flag3||flag4) {
return
} else {
videoSegments.forEach(val=>{
let startTimeVal = this.$moment(val.beginTime).valueOf()
let endTimeVal = this.$moment(val.endTime).valueOf()
if(flag3||flag4){
return
} else {
if(startTimeVal<=startTimeItem&&endTimeVal>=startTimeItem){
flag3 = true
}
if(startTimeVal<=endTimeItem&&endTimeVal>=endTimeItem){
flag4 = true
}
if(flag3||flag4){
nowAuthRange = item
console.log('找到的其他有权限有录像的时间段', nowAuthRange)
}
}
})
}
})
if(flag3&&flag4) {
console.log('时间点有权限无录像,使用',nowAuthRange,'时间段播放,整段')
arr.push(this.$moment(nowAuthRange.startTime).valueOf(),this.$moment(nowAuthRange.endTime).valueOf(),playTime)
return arr
} else if(!flag3 && flag4){
let tempStartTime = this.$moment(videoSegments[0].beginTime).format('YYYY/MM/DD HH:mm:ss')
console.log('时间点有权限无录像,使用',nowAuthRange,'时间段播放,开始时间缩短')
if(!(playTime>=this.$moment(tempStartTime).valueOf() && playTime<=this.$moment(nowAuthRange.endTime).valueOf())) {
playTime = this.$moment(tempStartTime).valueOf()
} else if (this.$moment(nowAuthRange.endTime).diff(playTime,'seconds')<5*60*1000) {
playTime = this.$moment(nowAuthRange.endTime).valueOf() - 5*60*1000
}
arr.push(this.$moment(tempStartTime).valueOf(),this.$moment(nowAuthRange.endTime).valueOf(),playTime)
return arr
} else if(!flag4 && flag3){
let tempEndTime = this.$moment(videoSegments[videoSegments.length-1].endTime).format('YYYY/MM/DD HH:mm:ss')
console.log('时间点有权限无录像,使用',nowAuthRange,'时间段播放,结束时间缩短')
if(!(playTime>=this.$moment(nowAuthRange.startTime).valueOf() && playTime<=this.$moment(tempEndTime).valueOf())) {
playTime = this.$moment(nowAuthRange.startTime).valueOf()
} else if (this.$moment(tempEndTime).diff(playTime,'seconds')<5*60*1000) {
playTime = this.$moment(tempEndTime).valueOf() - 5*60*1000
}
arr.push(this.$moment(nowAuthRange.startTime).valueOf(),this.$moment(tempEndTime).valueOf(),playTime)
return arr
}
}
} else if(cameraInfo.authObj && cameraInfo.authObj.playback.authValue == "2" || cameraInfo && cameraInfo.activeName=='monitorCamera') {
nowAuthRange = {
startTime: this.$moment(startTime).format('YYYY/MM/DD HH:mm:ss'),
endTime: this.$moment(endTime).format('YYYY/MM/DD HH:mm:ss')
}
let flag1,flag2 = false
let videoSegments = this.nowVideoSegments?this.nowVideoSegments:cameraInfo.videoSegments
videoSegments.forEach(item=>{
let startTimeItem = this.$moment(item.beginTime).valueOf()
let endTimeItem = this.$moment(item.endTime).valueOf()
if(flag1&&flag2) {
return
} else {
if(startTimeItem<=this.$moment(nowAuthRange.startTime).valueOf()&&endTimeItem>=this.$moment(nowAuthRange.startTime).valueOf()){
flag1 = true
}
if(startTimeItem<=this.$moment(nowAuthRange.endTime).valueOf()&&endTimeItem>=this.$moment(nowAuthRange.endTime).valueOf()){
flag2 = true
}
}
})
if(!flag1){
nowAuthRange.startTime = videoSegments[0].beginTime
}
if(!flag2){
nowAuthRange.endTime = videoSegments[videoSegments.length-1].endTime
}
if(!(playTime>=this.$moment(nowAuthRange.startTime).valueOf() && playTime<=this.$moment(nowAuthRange.endTime).valueOf())) {
playTime = this.$moment(nowAuthRange.startTime).valueOf()
} else if (this.$moment(nowAuthRange.endTime).diff(playTime,'seconds')<5*60*1000) {
playTime = this.$moment(nowAuthRange.endTime).valueOf() - 5*60*1000
}
arr.push(this.$moment(nowAuthRange.startTime).valueOf(),this.$moment(nowAuthRange.endTime).valueOf(),playTime)
return arr
}
if(!arr.length) {
arr.push(startTime,endTime,playTime)
return arr
}
this.nowAuthRange = nowAuthRange
},