一种支持云平台采用双缓冲的实时视频流存储方法技术

技术编号:15522655 阅读:53 留言:0更新日期:2017-06-04 11:37
本发明专利技术公开了一种支持云平台采用双缓冲的实时视频流存储方法,包括如下步骤:获取云存储配置文件信息;连接数据库,获取部署ID对应的存储相机列表信息;获取调度服务器信息,同时启动存储管理主线程,为每个相机分配对应的双缓冲区,建立相机与双缓冲区之间的映射关系;遍历相机列表信息,创建视频流存储线程和视频流接收线程;向下级平台或设备发起视频点播请求,在接收到视频流后,将数据保存到对应的缓冲区中,存储线程根据缓冲区存满标志将视频流存储到云平台上。本发明专利技术能够在一定程度上提高了视频存储的效率,减少不可逆转的视频丢失问题,同时也可以在一定程度上提高视频存储的安全性。

A real-time video stream storage method with double buffering for supporting cloud platform

The invention discloses a real-time video support cloud platform uses a double buffered stream storage method comprises the following steps: acquiring the cloud storage configuration file information; connect to the database, get the deployment of ID corresponding to the camera storage list information; acquiring scheduling server information, storage management and start the main thread, double buffer distribution corresponding to each camera and to establish the mapping relationship between the camera and the double buffer; traverse camera list information, create video storage and video stream receiving thread thread; launched a video on demand request to the lower platform or device, upon receiving a video stream, save data to a corresponding buffer area, store thread according to the buffer is full marks video stream storage to the cloud platform. The invention can improve the efficiency of video storage to a certain extent, reduce the irreversible video loss problem, and also improve the security of video storage to a certain extent.

【技术实现步骤摘要】
一种支持云平台采用双缓冲的实时视频流存储方法
本专利技术涉及云存储
,尤其涉及一种支持云平台采用双缓冲的实时视频流存储方法。
技术介绍
随着整个安防行业技术水平的不断成熟以及社会治安事件复杂度的不断提高,原有的以硬盘存储视频的方式已经达不到破案的要求,视频在存储周期、访问效率以及安全性方面也有了更高的要求。在这个大的应用背景下,基于云存储的实现架构应运而生,如阿里云、百度云、华为云等。一般云存储分为:文件存储、块存储和对象存储,文件存储和块存储是传统的存储数据方式;对象存储服务是面向企业和个人开发者提供的高可用,高稳定,强安全的云端存储服务,对象存储是目前最常用的云存储方案,克服了块存储和文件存储的缺点。同原有的存储架构相比,使用云存储在可靠性、安全、成本以及数据处理能力方面都具有明显的优势。就可靠性而言,对象存储服务的可运行性不低于99.9%,规模自动扩展,不影响对外服务,同时采用了多重冗余备份机制来增强其安全性,而采用自建服务器存储,其可靠性受限于存储服务的硬件环境,相比于对象存储,易出现不可逆转的数据丢失问题;就安全性而言,对象存储提供企业级多层次安全防护,而用户自建存储需要单独实现;就成本而言,对象存储根据存储大小按需收费,成本低,而用户自建存储则是一次性投入、资源的利用率很低,存储受硬盘容量限制;就处理能力而言,采用对象存储架构,提供内容加速分发功能,其存储效率远高于用户自建存储服务模式。
技术实现思路
有鉴于现有技术的上述缺陷,本专利技术提供一种支持云平台采用双缓冲的实时视频流存储方法,由云存储服务自动向下级平台或前端设备进行点播请求,获取到视频流,采用自定义的存储模式进行视频流存储,能够在一定程度上提高了视频存储的效率,减少不可逆转的视频丢失问题,同时也可以在一定程度上提高视频存储的安全性。本专利技术所采用的技术方案是:一种支持云平台采用双缓冲的实时视频流存储方法,包括如下步骤:步骤1、获取云存储配置文件信息,所述信息包括服务部署ID、云平台配置信息、数据库配置信息;步骤2、初始化数据库连接,连接所述数据库,获取所述部署ID对应的存储相机列表信息;步骤3、获取调度服务器信息,同时启动存储管理主线程,为每个相机分配对应的双缓冲区,建立相机与双缓冲区之间的映射关系,进行内存的一次性申请;步骤4、遍历相机列表信息,创建视频流存储线程和视频流接收线程,每路视频对应一个存储线程和一个视频流接收线程,同时建立相机与存储线程、视频流接收线程之间的映射关系,并向调度服务发起实时视频播放请求;步骤5、所述调度服务向下级平台或设备发起视频点播请求,为每路视频开启一个存储线程和一个视频流接收线程;步骤6、所述视频流接收线程在接收到视频流后,将视频数据保存到对应的缓冲区中,所述存储线程根据缓冲区存满标志将所述视频数据存储到所述云平台上,并将时间节点信息保存至数据库中;步骤7、在存储完成后,重置所述相机的缓冲区,同时将视频流存储信息保存到所述数据库中;重复步骤3-7,直到接收到退出指令。在本专利技术较佳实施方式中,所述相机双缓冲区为主缓冲区和备用缓冲区,所述主缓冲区和所述备用缓冲区交替使用。在本专利技术另一较佳实施方式中,所述每个缓冲区的结构为{相机编号、存储状态、当前已经存储的数据大小、I帧列表信息(I帧偏移量、时间戳)}。在本专利技术较佳实施方式中,所述步骤6中所述存储接口根据所述云平台配置信息中的参数调用云平台接口进行初始化,所述存储线程通过所述云平台的存储接口将所述视频流保存到所述云平台上。在本专利技术另一较佳实施方式中,所述步骤6中所述视频流接收线程接收视频流的具体方式为:判断所述视频流的长度是否大于RTP包头长度,如果小于则直接丢弃;否则获取到视频流数据,获取视频帧类型;如果是I帧,判断临时接收缓冲区中是否有数据,如果没有,则直接将数据保存至所述临时缓冲区;如果有数据,则将所述临时缓冲区中的数据保存至所述缓冲区中,将接收到的I帧保存至所述临时缓冲区;如果是P帧,判断是否找到了I帧,如果没有找到,则丢弃掉,如果已经找到,则将视频流保存至临时缓冲区中;每次在处理完成后更新接收序号和接收时间戳信息。在本专利技术较佳实施方式中,所述I帧序列数据入双缓冲区实现步骤如下:步骤11、获取所述I帧序列数据、数据长度、I帧绝对时间信息;步骤12、获取所述主缓冲区的状态,判断所述备用缓冲区中是否有数据,如果有数据,则执行步骤13;否则执行步骤14;步骤13、获取所述备用缓冲区的剩余空间,判断所述备用缓冲区的剩余空间是否存够存储,如果是,则将数据拷贝至所述备用缓冲区,执行步骤15;否则将所述备用缓冲区的状态设置成已满,将剩下的空间进行占位填充,同时将数据拷贝至所述主缓冲区,执行步骤15;步骤14、判断所述主缓冲区的剩余空间是否足够存储,如果足够存储,则将数据拷贝至所述主缓冲区,执行步骤15;否则将所述主缓冲区的状态设置为已满,将剩下的空间进行占位填充,并将数据拷贝至所述备用缓冲区,执行步骤15;步骤15、处理完毕。在本专利技术另一较佳实施方式中,所述视频流存储线程实现步骤如下:步骤21、根据所述配置文件中的云平台配置信息初始化云平台接口、相机编号以及双缓冲区信息;步骤22、启动所述视频流存储线程;步骤23、判断是否接收到服务的退出命令,如果接收到退出命令,则退出循环,等待程序退出,否则执行步骤24;步骤24、判断所述主缓冲区是否已满,如果已满,则调用所述云平台存储接口将数据保存至云平台,如果存储成功,则将视频片段信息保存至数据库,重置缓冲区,执行步骤25;步骤25、判断所述备用缓冲区是否已经写满,如果所述备用缓冲区已经写满,则调用云平台存储接口将数据保存至云平台,如果存储成功,则将视频片段信息保存至数据库,重置缓冲区,执行步骤26;步骤26、进行下一轮的判断,执行步骤23。在本专利技术较佳实施方式中,所述视频流接收线程实现步骤如下:步骤31、初始化所述视频流接收线程,包括所述相机编号、双缓冲区;步骤32、生成视频流接收端口,并设置临时接收缓冲区;步骤33、启动所述视频流接收线程;步骤34、在所述视频流接收线程中判断是否接收到退出命令,如果接收到,则执行步骤35,否则执行步骤36;步骤35、停止接收视频流,并判断双缓冲区中是否有需要存储的视频数据,如果有,将缓冲区的存满标志置成已满,并进行数据占位填充(保证整个缓冲区都是填满的),如果没有,则退出循环,等待线程退出;步骤36、准备接收视频流,判断是否接收到所述视频流接收线程的退出信号,如果接收到,则执行步骤35;否则执行步骤37;步骤37、获取视频数据、帧类型,如果是I帧,判断基准时间是否存在,如果不存在,则将基准时间设置为当前时间,根据RTP数据的时间戳信息以及基准时间更新I帧绝对时间,执行步骤38;如果不是I帧,则执行步骤39;步骤38、将之前保存的整个I帧序列保存至双缓冲区,将新接收到I帧保存至临时接收缓冲区,并更新序号、时间戳信息,执行步骤36;步骤39、判断是否已经接收到I帧,如果已经收到了I帧,则将接收到的视频数据保存至临时接收缓冲区,并更新序号、时间戳信息,执行步骤36;否则数据丢弃,更新序号、时间戳信息,执行步骤36本专利技术能充分的提高视频的存储和访问效率,视频存储时每个片段里面都包含本文档来自技高网...
一种支持云平台采用双缓冲的实时视频流存储方法

【技术保护点】
一种支持云平台采用双缓冲的实时视频流存储方法,其特征在于,所述方法包括如下步骤:步骤1、获取云存储配置文件信息,所述信息包括服务部署ID、云平台配置信息、数据库配置信息;步骤2、初始化数据库连接,连接所述数据库,获取所述部署ID对应的存储相机列表信息;步骤3、获取调度服务器信息,同时启动存储管理主线程,为每个相机分配对应的双缓冲区,建立相机与双缓冲区之间的映射关系,进行内存的一次性申请;步骤4、遍历相机列表信息,创建视频流存储线程和视频流接收线程,每路视频对应一个存储线程和一个视频流接收线程,同时建立相机与存储线程、视频流接收线程之间的映射关系,并向调度服务发起实时视频播放请求;步骤5、所述调度服务向下级平台或设备发起视频点播请求,为每路视频开启一个存储线程和一个视频流接收线程;步骤6、所述视频流接收线程在接收到视频流后,将视频数据保存到对应的缓冲区中,所述存储线程根据缓冲区存满标志将所述视频数据存储到所述云平台上,并将时间节点信息保存至数据库中;步骤7、在存储完成后,重置所述相机的缓冲区,同时将所述视频流存储信息保存到所述数据库中;重复步骤3‑7,直到接收到退出指令。

【技术特征摘要】
1.一种支持云平台采用双缓冲的实时视频流存储方法,其特征在于,所述方法包括如下步骤:步骤1、获取云存储配置文件信息,所述信息包括服务部署ID、云平台配置信息、数据库配置信息;步骤2、初始化数据库连接,连接所述数据库,获取所述部署ID对应的存储相机列表信息;步骤3、获取调度服务器信息,同时启动存储管理主线程,为每个相机分配对应的双缓冲区,建立相机与双缓冲区之间的映射关系,进行内存的一次性申请;步骤4、遍历相机列表信息,创建视频流存储线程和视频流接收线程,每路视频对应一个存储线程和一个视频流接收线程,同时建立相机与存储线程、视频流接收线程之间的映射关系,并向调度服务发起实时视频播放请求;步骤5、所述调度服务向下级平台或设备发起视频点播请求,为每路视频开启一个存储线程和一个视频流接收线程;步骤6、所述视频流接收线程在接收到视频流后,将视频数据保存到对应的缓冲区中,所述存储线程根据缓冲区存满标志将所述视频数据存储到所述云平台上,并将时间节点信息保存至数据库中;步骤7、在存储完成后,重置所述相机的缓冲区,同时将所述视频流存储信息保存到所述数据库中;重复步骤3-7,直到接收到退出指令。2.根据权利要求1所述的实时视频流存储方法,其特征在于,所述相机双缓冲区为主缓冲区和备用缓冲区,所述主缓冲区和所述备用缓冲区交替使用。3.根据权利要求2所述的实时视频流存储方法,其特征在于,所述每个缓冲区的结构为{相机编号、存储状态、当前已经存储的数据大小、I帧列表信息(I帧偏移量、时间戳)}。4.根据权利要求1所述的实时视频流存储方法,其特征在于,所述步骤6中所述存储接口根据所述云平台配置信息中的参数调用云平台接口进行初始化,所述存储线程通过所述云平台的存储接口将所述视频流保存到所述云平台上。5.根据权利要求3所述的实时视频流存储方法,其特征在于,所述步骤6中所述视频流接收线程接收视频流的具体方式为:判断所述视频流的长度是否大于RTP包头长度,如果小于则直接丢弃;否则,获取到视频流数据,获取视频帧类型;如果是I帧,判断临时接收缓冲区中是否有数据,如果没有,则直接将数据保存至所述临时缓冲区;如果有数据,则将所述临时缓冲区中的数据保存至所述缓冲区中,将接收到的I帧保存至所述临时缓冲区;如果是P帧,判断是否找到了I帧,如果没有找到,则丢弃掉,如果已经找到,则将视频流保存至临时缓冲区中;每次在处理完成后更新接收序号和接收时间戳信息。6.根据权利要求5所述的实时视频流存储方法,其特征在于,所述I帧序列数据入双缓冲区实现步骤如下:步骤11、获取所述I帧序列数据、数据长度、I帧绝对时间信息;步骤12、获取所述主缓冲区的状态,判断所述备用缓冲区中是否有数据,如果有数据,则执行步骤13;否则执行步骤14;步骤13、获取...

【专利技术属性】
技术研发人员:李菲菲王夷刘其峰徐强王小虎王丹郭勇勇
申请(专利权)人:上海熙菱信息技术有限公司
类型:发明
国别省市:上海,31

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

1