一种缓存视频数据及读取视频数据的方法及装置制造方法及图纸

技术编号:12698002 阅读:94 留言:0更新日期:2016-01-13 17:02
本发明专利技术提供了一种缓存视频数据及读取视频数据的方法及装置。其中,缓存视频数据的方法包括:接收待存储视频帧;在预先创建的流式环形队列中动态地为待存储视频帧分配存储节点;将待存储视频帧缓存在存储节点中。本发明专利技术中创建了静态内存的流式环形队列,在流式环形队列中动态地为待存储视频帧分配存储节点,既避免产生内存碎片,又根据待存储视频帧的大小来按需分配内存,在静态内存中按需动态分配内存,融合了静态内存与动态内存两者的优势,提高了缓存视频数据的系统性能。

【技术实现步骤摘要】

本专利技术涉及视频缓存
,具体而言,涉及一种缓存视频数据及读取视频数据的方法及装置
技术介绍
目前,视频监控对视频流的实时性要求很高,为了提高视频监控的服务质量,需要对视频监控产生的视频数据进行缓存,以便在网络不稳定时通过缓存的视频数据来支持用户浏览监控视频的需求。当前,相关技术中通过缓冲池来缓存视频数据,缓冲池中事先划分了多个缓冲区。在缓存视频数据时,接收监控设备传输的视频帧,根据该视频帧的大小,从缓冲池中的空闲缓冲区中选择存储空间大于或等于该视频帧的大小的空闲缓冲区,将该视频帧缓存到选择的空闲缓冲区中。但是由于不同类型的视频帧的大小不固定,1(1 frame,内部画面)帧的大小大于P(P frame)帧和B(B frame)帧的大小,缓冲池的空闲缓冲区中并不一定有适合存储当前视频帧的空闲缓冲区,且需要耗时耗资源的去选择适合的空闲缓冲区,导致缓存视频数据的系统性能很低。
技术实现思路
有鉴于此,本专利技术实施例的目的在于提供一种缓存视频数据及读取视频数据的方法及装置,实现在静态内存的流式环形队列中动态地为待存储视频帧分配存储节点,在静态内存中按需动态分配内存,提高了缓存视频数据的系统性能。第一方面,本专利技术实施例提供了一种缓存视频数据的方法,所述方法包括:接收待存储视频帧;在预先创建的流式环形队列中动态地为所述待存储视频帧分配存储节点;将所述待存储视频帧缓存在所述存储节点中。结合第一方面,本专利技术实施例提供了上述第一方面的第一种可能的实现方式,其中,所述在预先创建的流式环形队列中动态地为所述待存储视频帧分配存储节点之前,还包括:根据预设的视频分辨率、每秒帧数和预设的视频延迟时间,确定所需的存储空间的大小,创建确定的所述大小的流式环形队列;或者,获取预设的内存地址和内存值,将内存中所述内存地址对应的大小为所述内存值的存储空间创建为流式环形队列。结合第一方面,本专利技术实施例提供了上述第一方面的第二种可能的实现方式,其中,所述在预先创建的流式环形队列中动态地为所述待存储视频帧分配存储节点,包括:根据预设的数据头长度和所述待存储视频帧,确定存储所述待存储视频帧所需的内存大小;获取预先创建的流式环形队列的内存状态;根据所述内存状态和确定的所述内存大小,确定所述流式环形队列中所述待存储视频帧对应的起始位置;将从所述起始位置开始且大小为所述内存大小的内存空间确定为所述待存储视频帧对应的存储节点。结合第一方面的第二种可能的实现方式,本专利技术实施例提供了上述第一方面的第三种可能的实现方式,其中,所述根据所述内存状态和确定的所述内存大小,确定所述流式环形队列中所述待存储视频帧对应的起始位置,包括:当所述内存状态指示所述流式环形队列的头尾指针均为空时,将所述流式环形队列的头部位置确定为所述待存储视频巾贞对应的起始位置;当所述内存状态指示所述流式环形队列的头指针和/或尾指针不为空时,获取所述流式环形队列中空闲缓冲区的长度,根据所述内存大小和所述空闲缓冲区的长度,确定所述待存储视频帧对应的起始位置。结合第一方面,本专利技术实施例提供了上述第一方面的第四种可能的实现方式,其中,所述将所述待存储视频帧缓存在所述存储节点中,包括:从所述待存储视频帧的帧头信息中获取所述待存储视频帧的帧数据长度;获取所述待存储视频帧的上一帧指针和下一帧指针;将所述帧数据长度、所述上一帧指针、所述下一帧指针及写标志组成所述待存储视频帧的数据头;将所述数据头和所述待存储视频帧存储在所述存储节点中。结合第一方面的第四种可能的实现方式,本专利技术实施例提供了上述第一方面的第五种可能的实现方式,其中,所述方法还包括:根据所述流式环形队列中存储的每个视频帧的数据头包括的上一帧指针和下一帧指针,确定所述流式环形队列中存储的视频帧的先后顺序;根据所述流式环形队列中存储的视频帧的先后顺序,为每个视频帧生成帧索引标识;将所述每个视频帧对应的帧索引标识及每个视频帧的存储节点对应的存储指针对应存储在帧索引指针队列中。结合第一方面的第四种可能的实现方式,本专利技术实施例提供了上述第一方面的第六种可能的实现方式,其中,所述方法还包括:根据所述流式环形队列中存储的每个视频帧的帧数据长度和存储所述每个视频帧的先后顺序,分别生成每个视频帧对应的首字节索引;将所述每个视频帧的首字节索引及每个视频帧的存储节点对应的存储指针对应存储在字节索引指针队列中。第二方面,本专利技术实施例提供了一种读取视频数据的方法,所述方法包括:接收用户的终端发送的读取视频数据的请求;从流式环形队列中读取视频数据包括的视频帧;将读取的所述视频帧发送给所述用户的终端。结合第二方面,本专利技术实施例提供了上述第二方面的第一种可能的实现方式,其中,所述从流式环形队列中读取视频数据包括的视频帧,包括:按照顺序读取方式,根据每个视频帧的存储节点中数据头包括的上一帧指针和下一帧指针,从流式环形队列的头节点开始顺序读取视频数据包括的每个视频帧。结合第二方面,本专利技术实施例提供了上述第二方面的第二种可能的实现方式,其中,所述从流式环形队列中读取视频数据包括的视频帧,包括:按照帧索引随机读取方式,根据所述读取视频数据的请求包括的帧索引标识,从帧索引指针队列中获取所述帧索引标识对应的第一存储指针;从所述帧索引指针队列中获取位于所述帧索引标识之后的帧索引标识对应第二存储指针;从流式环形队列中读取所述第一存储指针对应的视频帧,以及从所述流式环形队列中依次读取所述第二存储指针对应的每个视频帧。结合第二方面,本专利技术实施例提供了上述第二方面的第三种可能的实现方式,其中,所述从流式环形队列中读取视频数据包括的视频帧,包括:按照字节流随机读取方式,根据所述读取视频数据的请求包括的首字节索引,从字节索引指针队列中获取所述首字节索引对应的第三存储指针;从所述字节索引指针队列中获取位于所述首字节索引之后的首字节索引标识对应第四存储指针;从流式环形队列中读取所述第三存储指针对应的视频帧,以及从所述流式环形队列中依次读取所述第四存储指针对应的每个视频帧。结合第二方面,本专利技术实施例提供了上述第二方面的第四种可能的实现方式,其中,所述方法还包括:在接收到用户的终端发送的读取视频数据的请求时,在流式环形队列存储的每个视频帧的数据头中添加所述用户对应的用户读操作信息;当监测到所述流式环形队列创建缓冲区、销毁缓冲区、清空缓冲区、增加存储节点或删除存储节点时,根据视频帧的数据头中的所述用户读操作信息,通过回调函数向所述用户的终端发送回调通知消息。第三方面,本专利技术实施例提供了一种缓存视频数据的装置,所述装置包括: 接收模块,用于接收待存储视频帧;分配模块,用于在预先创建的流式环形队列中动态地为所述待存储视频帧分配存储节点;缓存模块,用于将所述待存储视频帧缓存在所述存储节点中。结合第三方面,本专利技术实施例提供了上述第三方面的第一种可能的实现方式,其中,所述装置还包括:创建模块,用于根据预设的视频分辨率、每秒帧数和预设的视频延迟时间,确定所需的存储空间的大小,创建确定的所述大小的流式环形队列;或者,所述创建模块,用于获取预设的内存地址和内存值,将内存中所述内存地址对应的大小为所述内存值的存储空间创建为流式环形队列。结合第三方面,本专利技术实施例提供了上述第三方面的第二种可能的实现方式,本文档来自技高网...

【技术保护点】
一种缓存视频数据的方法,其特征在于,所述方法包括:接收待存储视频帧;在预先创建的流式环形队列中动态地为所述待存储视频帧分配存储节点;将所述待存储视频帧缓存在所述存储节点中。

【技术特征摘要】

【专利技术属性】
技术研发人员:唐春燕郭军
申请(专利权)人:东方网力科技股份有限公司
类型:发明
国别省市:北京;11

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

1