【播放器时间权限控制】--通过权限段,设置开始结束定位时间,得到权限内有录像的开始结束定位时间

 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

    },

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

engineer_z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值