一种通过索引文件定位关键帧实现录像回放的方法和系统技术方案

技术编号:34810808 阅读:18 留言:0更新日期:2022-09-03 20:19
本发明专利技术涉及录像回放技术领域,特别是涉及一种通过索引文件定位关键帧实现录像回放的方法和系统,先生成录像索引文件A1,记录下当前放到缓存空间的录像文件A的详细信息、录像起止时间、I帧画面的偏移量;再通过查询当前缓存空间的播放时间的前面的关键帧,作为发送视频的起始位置;之后对缓存空间的视频数据加入flag标志位,遍历缓存空间里面的数据,将回放速度设置读取偏移量;进行倍速播放;本发明专利技术通过查询当前缓冲区的播放时间的前面的关键帧,作为发送视频的起始位置,保证数据完整性,不会出现短时间花屏;将播放的时间戳和在索引文件中记录下来视频坏区的开始时间作比较,直接跳过坏区的时间段;大大提高了视频回放的质量。量。量。

【技术实现步骤摘要】
一种通过索引文件定位关键帧实现录像回放的方法和系统


[0001]本专利技术涉及录像回放
,特别是涉及一种通过索引文件定位关键帧实现录像回放的方法和系统。

技术介绍

[0002]录像回放是监控领域的重要功能之一,通过回放包含指定目标的录像文件,可以针对与该目标相关的行为进行查看取证,如何高效的定位到指定的视频录像文件,成为现有技术中有待解决的问题。
[0003]目前录像回放的机制普遍是实时浏览的时候生成索引文件,在录像回放的时候检索索引文件,读取到指定的录像视频文件,生成视频流传输到客户端;这种方式确实减少了检索文件的时间,但是在我们在回放视频文件的时候经常遇到起始播放的时候会有1~3秒的黑屏,在正常播放的时候出现花屏和黑屏现象,导致这两种现象产生的原因是起始播放传输的视频流非I帧,或者视频帧不完整,或者在录制视频文件的时候出现了坏区导致。

技术实现思路

[0004]本专利技术目的是针对
技术介绍
中存在的问题,提出一种通过索引文件定位关键帧实现录像回放的方法,包括以下具体步骤:
[0005]S1、生成录像索引文件A1,记录下当前放到缓存空间的录像文件A的详细信息、录像起止时间、I帧画面的偏移量ClusterTotalLen;生成用于存放索引文件A1的中间件M;
[0006]S2、通过查询当前缓存空间的播放时间的前面的关键帧,作为发送视频的起始位置;
[0007]S3、对缓存空间m_pFileDataBuf_new的视频数据加入flag标志位,遍历缓存空间里面的数据,将回放速度设置读取偏移量;进行倍速播放。
[0008]优选的,S1包括以下具体步骤:
[0009]S11、客户端向录像服务器请求实时流,录像服务器接收到视频流请求命令后开始从前段镜头拉取视频流到本地;
[0010]S12、本地服务器接收到视频流后,解码视频帧,视频帧分为I帧、P帧、B 帧三种类型;
[0011]I帧是关键帧,又称全帧压缩编码帧,包含了一张图片的全部像素信息;
[0012]P帧被称作前向预测编码帧;
[0013]B帧被称作双向预测内插编码帧;
[0014]P帧和B帧是简化的视频帧;
[0015]S13、录像服务器本地生成一个录像索引文件A1,索引文件中记录了当前存储到本地的录像信息,录像文件的存储地址FilePath,相关视频的开始录制时间StartTime和结束时间StopTime,索引参数Index,并记录I帧画面的偏移量ClusterTotalLen和每一个I帧对应的时间戳写入到map表格中;
[0016]S14、接受到新的视频帧后,解码判断是否是I帧,如果是新的I帧,则服务器将视频帧写到本地录像文件中,同时更新索引文件,服务器会根据帧率计算一帧的数据的时间间隔timeNum,索引文件中的结束时间StopTime=StopTime+timeNum,视频帧的偏移量ClusterTotalLen=ClusterTotalLen+视频帧的大小,并更新map表格,填入当前的时间戳和I帧偏移量;
[0017]S15、出现CurrenTime大于10*timeNum,则在索引文件A1中记录下来坏区的开始时间,遇到新的I帧到来的时候,则记录下来坏区的结束时间;
[0018]S16、为存储的录像文件一个小时进行切割一次,通过StopTime

StartTime若大于一小时,则重新创建录像文件和录像索引文件。
[0019]优选的,S2和S3包括以下具体步骤,如图3所示:
[0020]S31、录像回放服务器接收到录像回放的RTSP信令后,格式: rtsp://ip:port/openUrl/?beginTime=202205071640&endTime=202205071725&playB ackModule=1/trackID=0;seq=1&scale=1;录像服务器解析rtsp信令后将录像开始时间beginTime、录像结束时间endTime和录像播放速率scale存放到内存中;
[0021]S32、通过beginTime来查询中间件M,并定位到指定的索引文件A1,打开保存到录像服务器的索引文件,将保存到索引文件中录像文件的存储地址FilePath,相关视频的开始录制时间StartTime和结束时间StopTime,视频画面的偏移量ClusterTotalLen,索引参数Index读取到录像回放服务器的内存中;
[0022]S33、调用linux的系统函数read读取存放在录像服务器中的录像文件,将录像文件存储到内存m_pFileDataBuf中,并且记录下录像文件的大小m_ulStatfileSize;
[0023]S34、根据索引文件中的信息和rtsp信令解码出来的信息对存储到内存m_pFileDataBuf的信息进行检索,如果beginTime和关键帧的时间信息相同,则定位到内存m_pFileDataBuf的关键帧的在整个内存文件中偏移位置;
[0024]S35、根据目标时间戳从存储的map表中查询到关键帧的时间戳,根据目标时间戳从给定的关键帧信息map缓冲区中查找关键帧,如果有相等的时间戳则记录该关键帧的文件偏移fileoffset,如果没有相等的时间戳,则记录与目标时间戳最接近的前一个关键帧的偏移fileoffset;
[0025]S36、调用linux的系统函数read读取存储文件ClusterTotalLen

fileoffset大小的视频数据,存放到缓存m_pFileDataBuf_new中;
[0026]S37、对缓存空间m_pFileDataBuf_new的视频数据加入flag标志位,遍历缓存空间里面的数据,将回放速度设置读取偏移量,当读取到第五个I帧的时候获取flag0偏移量,再读取后续5个I帧获取flag1偏移量
……
读取第5*n个I 帧的时候获取到flagn偏移量,直至读取完整缓存空间的视频数据;
[0027]S38、在播放过程中,将播放的时间戳和在索引文件中记录下来视频坏区的开始时间作比较,如果有相等的时间戳,将其舍弃,直接跳过坏区的时间段;
[0028]S39、当解析到的回放速度为1时,顺序读取m_pFileDataBuf_new缓存区的视频数据(flag0、flag1、flag2
……
);当解析到回放速度为2的时候则读取m_pFileDataBuf_new缓存区的视频数据(flag0+flag1、flag2+flag3、 flag4+flag5
……
)。
[0029]一种通过索引文件定位关键帧实现录像回放系统,包括存储器和处理器;
[0030]存储器中存储有在处理器上运行的程序;处理器运行程序时执行通过索引文件定位关键帧实现录像回放的方法的步骤。
[0031]优选的,显示器与处理器本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种通过索引文件定位关键帧实现录像回放的方法,其特征在于,包括以下具体步骤:S1、生成录像索引文件A1,记录下当前放到缓存空间的录像文件A的详细信息、录像起止时间、I帧画面的偏移量ClusterTotalLen;S2、通过查询当前缓存空间的播放时间的前面的关键帧,作为发送视频的起始位置;S3、对缓存空间m_pFileDataBuf_new的视频数据加入flag标志位,遍历缓存空间里面的数据,将回放速度设置读取偏移量;进行倍速播放。2.根据权利要求1所述的一种通过索引文件定位关键帧实现录像回放的方法,其特征在于,S1包括以下具体步骤:S11、客户端向录像服务器请求实时流,录像服务器接收到视频流请求命令后开始从前段镜头拉取视频流到本地;S12、录像服务器本地生成一个录像索引文件A1,索引文件中记录了当前存储到本地的录像信息,录像文件的存储地址FilePath,相关视频的开始录制时间StartTime和结束时间StopTime,索引参数Index,并记录I帧画面的偏移量ClusterTotalLen和每一个I帧对应的时间戳写入到map表格中;S13、本地生成中间件M,记录索引文件A1的保存地址信息;S14、本地服务器接收到视频流后,解码视频帧,视频帧分为I帧、P帧、B帧三种类型;I帧是关键帧,又称全帧压缩编码帧,包含了一张图片的全部像素信息;P帧被称作前向预测编码帧;B帧被称作双向预测内插编码帧;P帧和B帧是简化的视频帧;S15、接受到新的视频帧后,解码判断是否是I帧,如果是新的I帧,则服务器将视频帧写到本地录像文件中,同时更新索引文件,服务器根据帧率计算一帧的数据的时间间隔timeNum,索引文件中的结束时间StopTime=StopTime+timeNum,视频帧的偏移量ClusterTotalLen=ClusterTotalLen+视频帧的大小,并更新map表格,填入当前的时间戳和I帧偏移量;S16、出现CurrenTime

LastTime大于10*timeNum,则在索引文件A1中记录下来坏区的开始时间CurrenTime,遇到新的I帧到来的时候,则记录下来坏区的结束时间;CurrenTime为当前接收I帧的时间;LastTime为紧接上一I帧接收的时间;S17、为存储的录像文件一个小时进行切割一次,通过StopTime

StartTime进行计算,若间隔时间大于一小时,则重新创建录像文件和录像索引文件。3.根据权利要求1所述的一种通过索引文件定位关键帧实现录像回放的方法,其特征在于,S3包括以下具体步骤:S31、录像回放服务器接收到录像回放的RTSP信令后;录像服务器解析rtsp信令后将录像开始时间beginTime、录像结束时间endTime和录像播放速率scale存放到内存中;S32、通过beginT...

【专利技术属性】
技术研发人员:杨帆孟伸伸
申请(专利权)人:南京甄视智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1