博客
关于我
RTSP协议视频结构化平台EasyNVR指定时间段录像时间缺失问题排查
阅读量:574 次
发布时间:2019-03-10

本文共 1042 字,大约阅读时间需要 3 分钟。

EasyNVR具备丰富的二次开发接口,用户可根据需求自由调用和开发。在EasyNVR的实际项目测试中,客户调用了录像回看接口,生成指定时间段录像播放及下载,但是向我们反馈出现录像时间缺失的情况。比如获取0-25S的录像,但是最终生成的录像是从2s开始的,缺少了最开始2s的录像。也就是如下图的情况,需要获取20210408160405到20210408160422之间的录像,但最终生成的录像是从20210408160406分开始的。

64.png

查看代码,程序在遍历文件的时候进行了如下判断:

if secFileTime >= start && secFileTime <= end {   readSecFile = true}

该判断的内容就是,如果文件的时间大于等于开始时间则读取对应的文件。而因为 hls 流的特性,上一个ts视频的时间为 20210408160402 不符合条件,因此被排除了。但是 20210408160405 正好在该切片中,所以导致总体的数据缺少时间。

65.png

我们需要修改代码如下:

// 从名称中获取对应的秒数secFileTime := strings.Split(secFileName, "-")[1]readSecFile := false// 如果第一个文件小于开始时间,则查看下一个文件夹是不是大于文件夹,如果大于if secFileTime < start {   // 有下一个数据   if secFileIndex < secFileLen-1 {      nextInfo := secFileInfos[secFileIndex+1]      nextName := strings.Split(nextInfo.Name(), "-")[1]      if start < nextName {         readSecFile = true      }   }} else if secFileTime >= start && secFileTime <= end {   readSecFile = true}

在每次读取的时候,如果小于开始时间,都同时读取两个文件,判断时间是不是在两个文件中间,如果开始时间在两个文件中间,则也将对应的文件读取,该问题就能得到解决。

但是因为hls流的特性,每个切片的大小是固定的,该种方案会导致获取的时间永远大于等于想获取的时间段。如果想做精确处理,则需要针对 ts 进行再次切片。

转载地址:http://tzfvz.baihongyu.com/

你可能感兴趣的文章
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
NetBeans之JSP开发环境的搭建...
查看>>
NetBeans之改变难看的JSP脚本标签的背景色...
查看>>
netbeans生成的maven工程没有web.xml文件 如何新建
查看>>
netcat的端口转发功能的实现
查看>>
NetCore 上传,断点续传,可支持流上传
查看>>
Netcraft报告: let's encrypt和Comodo发布成千上万的网络钓鱼证书
查看>>
Netem功能
查看>>
netfilter应用场景
查看>>
Netflix:当你按下“播放”的时候发生了什么?
查看>>
Netflix推荐系统:从评分预测到消费者法则
查看>>
netframework 4.0内置处理JSON对象
查看>>
Netgear WN604 downloadFile.php 信息泄露漏洞复现(CVE-2024-6646)
查看>>
Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(十一)备份
查看>>
netlink2.6.32内核实现源码
查看>>
netmiko 自动判断设备类型python_Python netmiko模块的使用
查看>>
NetMizer 日志管理系统 多处前台RCE漏洞复现
查看>>
NetMizer-日志管理系统 dologin.php SQL注入漏洞复现(XVE-2024-37672)
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
netron工具简单使用
查看>>