一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多路视频码流抓图方法、系统、设备及介质与流程

2022-07-31 07:32:01 来源:中国专利 TAG:


1.本发明涉及安防监控技术领域,尤其涉及一种多路视频码流抓图方法、系统、设备及介质。


背景技术:

2.ipc(网络摄像头)在拍摄监控区域得到监控视频后,为了后续分析更为方便,一般需要从监控视频中抓取若干张图片以供分析。
3.相关技术中,一般是通过ipc的监控后端产品如服务器、nvr(network video recorder,网络硬盘录像机)等实现视频通道抓图,需要为各个视频通道均开启分析处理任务,资源占用较大。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明提供一种多路视频码流抓图方法、系统、设备及介质,以解决上述技术问题。
5.本发明实施例提供的一种多路视频码流抓图方法,所述方法包括:
6.获取抓图消息,所述抓图消息包括目标码流标识和目标视频帧标识;
7.根据所述目标码流标识从多路视频码流中确定目标码流,以得到所述目标码流的目标最近画面组,所述目标最近画面组为所述目标码流中画面组生成时间与目标时间最近的一个画面组;
8.对所述目标最近画面组中的各待解码视频帧进行依次解码,并获取解码后的待解码视频帧的解码视频帧标识;
9.根据所述目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧;
10.对所述目标码流的目标视频帧进行编码,得到所述目标码流的编码图片,完成多路视频码流抓图。
11.可选的,对所述目标最近画面组中的各待解码视频帧进行依次解码之前,所述方法还包括:
12.获取解码模块的工作状态,所述工作状态包括占用或空闲,所述解码模块用于对所述目标最近画面组中的各待解码视频帧进行依次解码;
13.若所述工作状态包括空闲,将所述目标最近画面组中的各待解码视频帧进行依次解码;
14.若所述工作状态包括占用,继续获取所述解码模块的工作状态,直到所述工作状态包括空闲,将所述目标最近画面组中的各待解码视频帧进行依次解码。
15.可选的,获取抓图消息之后,所述方法还包括:
16.根据所述目标码流标识从多路视频码流中确定至少两个目标码流,以得到各所述目标码流的目标最近画面组;
17.将各所述目标最近画面组存入待解码队列,根据各所述目标最近画面组在所述待解码队列的排序通过对各所述目标最近画面组中的各待解码视频帧进行依次解码。
18.可选的,根据各所述目标最近画面组在所述待解码队列的排序通过对各所述目标最近画面组中的各待解码视频帧进行依次解码包括:
19.获取当前待解码画面组的当前解码参数,所述当前待解码画面组包括所述待解码队列中位于首位的所述目标最近画面组,所述解码参数包括分辨率和编码格式;
20.若所述当前解码参数与所述解码模块的目标解码参数不匹配,根据所述当前解码参数配置所述解码模块,所述解码模块用于对各所述目标最近画面组中的各待解码视频帧进行依次解码;
21.根据各所述目标最近画面组在所述待解码队列的排序通过配置后的解码模块分别对各所述目标最近画面组中的各待解码视频帧进行依次解码。
22.可选的,根据所述目标码流标识从多路视频码流中确定目标码流之前,所述方法还包括:
23.将各路视频码流的最近画面组缓存于各视频码流的通道缓存队列,所述最近画面组为视频码流中画面组生成时间与所述目标时间最接近的一个画面组。
24.可选的,将视频码流的最近画面组缓存于视频码流的通道缓存队列包括:
25.获取所述视频码流的码流视频帧,并将所述码流视频帧发送至所述视频码流对应的通道缓存队列;
26.若所述码流视频帧为i帧,清空所述通道缓存队列后,将所述码流视频帧缓存于所述通道缓存队列;
27.若所述码流视频帧不为i帧,将所述码流视频帧缓存于所述通道缓存队列。
28.可选的,获取解码后的待解码视频帧的解码视频帧标识之后,对所述目标视频帧进行编码之前,所述方法还包括:
29.基于对应关系规则确定所述解码视频帧标识与所述目标视频帧标识的对应关系,所述对应关系包括对应或不对应,所述对应关系规则通过预设所述解码视频帧标识与所述目标视频帧标识的对应关系得到;
30.若所述对应关系包括对应,停止通过所述解码模块对所述目标最近画面组中剩余待解码视频帧进行依次解码。
31.可选的,所述抓图消息的生成方式包括:
32.根据预设目标识别模型对各视频码流中的码流视频帧进行识别,若码流视频帧存在预设待识别目标,将所述码流视频帧的码流视频帧标识确定为目标视频帧标识,并将所述码流视频帧所在视频码流的码流标识确定为目标码流标识,根据所述目标视频帧标识和目标码流标识生成抓图消息;
33.或,
34.获取事件触发消息,所述事件触发消息包括目标码流标识和目标视频帧标识,根据所述事件触发消息生成抓图消息;
35.或,
36.获取目标码流标识、初始时间和预设间隔时间,并生成抓图时间,将所述抓图时间确定为目标视频帧标识,根据所述目标码流标识和目标视频帧标识生成抓图消息。
37.本发明实施例还提供了一种多路视频码流抓图系统,所述系统包括:
38.获取模块,用于获取抓图消息,所述抓图消息包括目标码流标识和目标视频帧标识;
39.画面组缓存模块,用于根据所述目标码流标识从多路视频码流中确定目标码流,以得到所述目标码流的目标最近画面组,所述目标最近画面组为所述目标码流中画面组生成时间与目标时间最近的一个画面组;
40.解码模块,用于对所述目标最近画面组中的各待解码视频帧进行依次解码,并获取解码后的待解码视频帧的解码视频帧标识;
41.帧定位模块,用于根据所述目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧;
42.编码模块,用于对所述目标码流的目标视频帧进行编码,得到所述目标码流的编码图片完成多路视频码流抓图。
43.本发明实施例还提供了一种电子设备,包括处理器、存储器和通信总线;
44.所述通信总线用于将所述处理器和存储器连接;
45.所述处理器用于执行所述存储器中存储的计算机程序,以实现如上述中任一项实施例所述的方法。
46.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,
47.所述计算机程序用于使计算机执行如上述任一项实施例所述的方法。
48.本发明的有益效果:本发明提出的一种多路视频码流抓图方法、系统、设备及介质,该方法通过获取抓图消息,根据目标码流标识从多路视频码流中确定目标码流,以得到目标码流的目标最近画面组,对目标最近画面组中的各待解码视频帧进行依次解码,并获取解码后的待解码视频帧的解码视频帧标识,根据目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧,对目标码流的目标视频帧进行编码,得到目标码流的编码图片完成多路视频码流抓图,能够实现通过对多路视频码流中需要抓图的目标码流统一进行抓图只有存在抓图需求时才进行对该路视频码流进行解码,资源占用更低。
附图说明
49.图1是本发明一实施例中提供的多路视频码流抓图方法实施环境的一种示意图;
50.图2是本发明一实施例中提供的多路视频码流抓图方法的一种流程示意图;
51.图3是本发明一实施例中提供的多路视频码流抓图方法的另一种流程示意图;
52.图4是本发明一实施例中提供的多路视频码流抓图方法的另一种流程示意图;
53.图5是本发明一实施例中提供的多路视频码流抓图方法的另一种流程示意图;
54.图6是本发明一实施例中提供的多路视频码流抓图方法的另一种流程示意图;
55.图7是本发明一实施例中提供的最近画面组的一种缓存实现方法的一种流程示意图;
56.图8是本发明一实施例中提供的解码模块的分时复用实现方法的一种流程示意图;
57.图9是本发明一实施例中提供的目标视频帧的确定实现方法的一种流程示意图;
58.图10是本发明一实施例中提供的画面组的一种结构示意图;
59.图11是本发明一实施例中提供的画面组的另一种结构示意图;
60.图12是本发明一实施例中提供的多路视频码流抓图系统的一种结构示意图;
61.图13是本发明一实施例提供的一种电子设备的结构示意图。
具体实施方式
62.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
63.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
64.在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
65.ipc(网络摄像头)在拍摄监控区域得到监控视频后,为了后续分析更为方便,一般需要从监控视频中抓取若干张图片以供分析。相关技术中,一般是通过ipc的监控后端产品如服务器、nvr(network video recorder,网络硬盘录像机)等实现视频通道抓图,需要为各个视频通道均开启分析处理任务,资源占用较大。
66.因此,本技术实施例提出了一种针对于多路视频码流抓图的方法,请参阅图1,图1是本技术一种实施例实施环境的示意图,该实施环境示意图包括视频采集终端101和多路视频码流抓图系统102,视频采集终端101和多路视频码流抓图系统102之间通过有线或者无线网络进行通信。
67.应该理解,图1中的视频采集终端101和多路视频码流抓图系统102的数目仅仅是示意性的。根据实际需要,可以具有任意数目的视频采集终端101和多路视频码流抓图系统102。
68.其中,视频采集终端101可以是如ipc网络摄像头等采集监控区域内的监控视频,多路视频码流抓图系统102可部署于终端或服务器等位置,服务器可以是提供各种服务的服务器,其可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器,本处不对此进行限制。
69.可选的,多路视频码流抓图系统也可以部署于一个或多个提供视频码流的ipc网络摄像头,此时,该ipc网络摄像头与提供多路视频码流的其他网络摄像头之间通过有线或者无线网络进行通信。多路视频码流抓图系统与一个或多个提供多路视频码流的网络摄像头通信连接。
70.在本技术的一些实施例中,多路视频码流抓图方法可以由多路视频码流抓图系统所在的服务器等实体结构进行执行。
71.结合上述实施环境示例,下面将对本技术中多路视频码流抓图方法进行介绍,请参阅图2,图2为本技术实施例提供的一种多路视频码流抓图方法的流程图,该方法可以是由搭载有多路视频码流抓图系统的服务器或终端执行的,如图2所示,多路视频码流抓图方法至少包括步骤s201至步骤s205,详细介绍如下:
72.如图2所示,本实施例提供了一种多路视频码流抓图方法,该方法包括:
73.步骤s201:获取抓图消息。
74.其中,抓图消息包括目标码流标识和目标视频帧标识。
75.在一个实施例中,抓图消息的生成方式包括以下至少之一:
76.智能抓图,该智能抓图的实现方式包括根据预设目标识别模型对各视频码流中的码流视频帧进行识别,若码流视频帧存在预设待识别目标,将码流视频帧的码流视频帧标识确定为目标视频帧标识,并将码流视频帧所在视频码流的码流标识确定为目标码流标识,根据目标视频帧标识和目标码流标识生成抓图消息;
77.事件抓图,该事件抓图的实现方式包括获取事件触发消息,事件触发消息包括目标码流标识和目标视频帧标识,根据该时间触发消息生成抓图消息;
78.定时抓图,该定时抓图的实现方式包括获取目标码流标识、初始时间和预设间隔时间,并生成抓图时间,将抓图时间确定为目标视频帧标识,根据目标码流标识和目标视频帧标识生成抓图消息。
79.预设识别模型为本领域技术人员根据需要所设定的模型,预设识别模型可以是本领域技术人员所预先配置的识别模型,如人脸识别模型、目标识别模型等。码流视频帧是否存在预设待识别目标的评定可以根据本领域技术人员所知晓的方式实现,比如上述识别模型成功识别到人脸或目标等,以上可以通过现有的相关技术实现,在此不做限定。通过对码流视频帧是否存在预设待识别目标的判定,可以提取满足预设识别条件的码流视频帧的视频帧标识作为目标视频帧标识。需要说明的是,每一个码流视频帧均具有在该码流上的唯一视频帧标识每一个视频码流均有全局唯一的码流标识。视频帧标识、码流视频帧标识、目标视频帧标识以及上述的解码视频帧标识可以是内容相同的标识,也可以是具有对应映射关系的不同的标识,本领域技术人员可以根据需要进行设定。视频帧标识也可以是该视频帧的时间戳,此时通过对各视频帧时间戳的提取及确定可以得到码流视频帧标识、目标视频帧标识以及解码视频帧标识,若某一个解码后的待解码视频帧的解码视频帧标识与目标视频帧标识一致,也即两个时间戳一致,则说明该待解码视频帧时我们需要进行抓图的视频帧。
80.事件触发消息可以是如报警消息等消息,基于该事件触发消息生成抓图指令,得到抓图消息,进行抓图。
81.在一个实施例中,可能需要对多路视频码流中的至少一部分码流定时进行抓图,各路码流的抓图频率可以是相同或不同的,此时可以获取需要进行抓图的目标码流标识,进而可以知晓哪一路视频码流需要被抓图(待抓图码流),然后根据初始时间和预设间隔时间可以知晓下一次抓图的视频帧的生成时间(抓图时间),将该生成时间(抓图时间)作为目标视频帧标识,也即目标视频帧标识为码流视频帧的时间戳,这样,可以通过获取待抓图码
流的最近画面组,并将该最近画面组中的待解码视频帧依次进行解码,每解码一个待解码视频帧得到一个解码视频帧标识(时间戳),当该解码视频帧标识的时间戳与目标视频帧标识的时间戳一致时,则说明该解码后的待解码视频帧作为目标视频帧。
82.当然,抓图消息还可以通过本领域技术人员所知晓的其他方式生成,在此不做限定。
83.步骤s202:根据目标码流标识从多路视频码流中确定目标码流,以得到目标码流的目标最近画面组。
84.其中,目标最近画面组为目标码流中画面组生成时间与目标时间最近的一个画面组。
85.一个视频码流中存在多个画面组(gop,group of pictures),各画面组中均包括i、p、b三种帧,其中,i是内部编码帧,p是前向预测帧,b是双向内插帧。可以根据某一画面组的某一帧(如i帧等)的时间戳作为该画面组生成时间,目标时间可以是当前时间,也即,最近画面组(目标最近画面组)为视频码流(目标码流)中生成时间与当前时间最近的一个画面组。
86.由于多路视频码流分属于不同的视频通道,可以将视频通道标识作为目标码流标识以便从多路视频码流中确定得到目标码流。
87.在一个实施例中,根据目标码流标识从多路视频码流中确定目标码流之前,该方法还包括:
88.将各路视频码流的最近画面组缓存于各视频码流的通道缓存队列,最近画面组为视频码流中画面组生成时间与目标时间最接近的一个画面组。
89.也即,预先为每一个视频通道配置对应配置一个唯一的通道缓存队列,该通道缓存队列用于缓存该视频通道的视频码流的最近画面组。此时,目标码流的目标最近画面组为目标码流对应视频码流的通道缓存队列中的最近画面组。
90.在一个实施例中,将视频码流的最近画面组缓存于视频码流的通道缓存队列包括:
91.获取视频码流的码流视频帧,并将码流视频帧发送至视频码流对应的通道缓存队列;
92.若码流视频帧为i帧,清空通道缓存队列后,将码流视频帧缓存于通道缓存队列;
93.若码流视频帧不为i帧,将码流视频帧缓存于通道缓存队列。
94.换句话说,通道缓存队列像一个漏斗一样,当所接收到的码流视频帧时i帧时,认为该码流视频帧为新的画面组(gop)的开始,先将通道缓存队列进行清理,清空通道缓存队列内的数据后,再将当前接收到的码流视频帧进行缓存,并且,在该码流视频帧之后所接收到的每一帧码流视频帧也会进行是否为i帧的判断,若不是i帧,则认为该码流视频帧仍然是前述画面组的帧,将按照接收的顺序依次缓存于通道缓存队列中,直到接收到新的码流视频帧被判定为i帧,此时,该通道缓存队列会再次进行清空,重新存入新的画面组。
95.需要说的是,最近画面组的确定方式、以及通道缓存队列的缓存规则也可以采用本领域技术人员所知晓的方式实现。
96.在一个实施例中,抓图消息包括至少两个目标码流标识和至少两个目标视频帧标识,根据抓图消息从多路视频码流中确定至少两路目标码流,获取各路目标码流的目标最
近画面组包括:
97.将各路视频码流的最近画面组缓存入各路视频码流的通道缓存队列,其中,最近画面组为视频码流中画面组生成时间与目标时间最近的一个画面组;
98.根据各目标码流标识从各路视频码流中确定至少两个目标码流;
99.将各目标码流的最近画面组确定为目标最近画面组。
100.也即,为每一路视频码流均配置有一个通道缓存队列,该通道缓存队列用于缓存其所对应的那路视频码流的最近画面组。在进行多路视频码流抓图时,通过预先对所有路码流的最近画面组进行缓存,再从中选择合适的一个或多个码流的最近画面组进行后续的解码和编码以完成抓图。
101.步骤s203:对目标最近画面组中的各待解码视频帧进行依次解码,并获取解码后的待解码视频帧的解码视频帧标识。
102.步骤s204:根据目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧。
103.各路视频码流所对应的解码模块为同一个解码模块,当存在多个目标码流,也即存在多个目标最近画面组时,则逐一对各目标最近画面组进行解码。通过解码得到各目标最近画面组的yuv数据,将该yuv数据与目标视频帧标识进行匹配,可以得到该待解码视频帧是否是目标视频帧。
104.在一个实施例中,对目标最近画面组中的各待解码视频帧进行依次解码之前,该方法还包括:
105.获取解码模块的工作状态,其中,工作状态包括占用或空闲,其中,解码模块用于对目标最近画面组中的各待解码视频帧进行依次解码;
106.若工作状态包括空闲,将目标最近画面组中的各待解码视频帧进行依次解码;
107.若工作状态包括占用,继续获取解码模块的工作状态,直到工作状态包括空闲,将目标最近画面组中的各待解码视频帧进行依次解码。
108.也即,解码模块为分时复用的,当其处于工作状态时,当下所确定得到的其他目标最近画面组需要等待,直到解码模块空闲后,其他目标最近画面组再被该解码模块依次进行解码。
109.在一个实施例中,获取解码后的待解码视频帧的解码视频帧标识之后,对目标视频帧进行编码之前,该方法还包括:
110.基于对应关系规则确定解码视频帧标识与目标视频帧标识的对应关系,对应关系包括对应或不对应,其中,对应关系规则通过预设解码视频帧标识与目标视频帧标识的对应关系得到;
111.若对应关系包括对应,停止通过解码模块对目标最近画面组中剩余待解码视频帧进行依次解码。
112.也即,由于解码模块是对一个目标最近画面组中的待解码视频帧进行逐一解码,每解码一个待解码视频帧均可以得到该待解码视频帧的解码视频帧标识,此时可以确定解码视频帧标识与标视频帧标识的对应关系,若对应关系为不对应,则说明还没有找到目标视频帧,此时需要对下一帧待解码视频帧进行解码,直到对应关系包括对应,则不再对剩余的尚未进行解码的待解码视频帧进行解码,完成该目标最近画面组的解码。这样可以避免
对不需要的其他待解码视频帧进行解码所造成的资源浪费,可以节约资源。
113.在一个实施例中,获取抓图消息之后,该方法还包括:
114.根据目标码流标识从多路视频码流中确定至少两个目标码流,以得到各目标码流的目标最近画面组;
115.将各目标最近画面组存入待解码队列,根据各目标最近画面组在待解码队列的排序通过解码模块对各目标最近画面组中的各待解码视频帧进行依次解码。
116.其中,多路视频码流均对应有一个解码模块,该解码模块又仅对应有一个待解码队列,每一个抓图消息所确定得到的目标最近画面组均依次存入该待解码队列,等待解码模块的解码。
117.可选的,将各目标最近画面组存入待解码队列包括:
118.获取各目标最近画面组的优先级参数;
119.根据所述优先级参数对各目标最近画面组进行排序,并按照排序序列将各目标最近画面组存入待解码队列。
120.其中,优先级参数包括但不限于目标最近画面组所来源的视频码流的预设基础权重、目标最近画面组的预设重要权重(抓图消息中包括目标视频帧权重,将该目标视频帧权重作为预设重要权重)、目标最近画面组所对应的抓图消息的生成时间等中至少之一。
121.在一个实施例中,根据各视频码流的目标最近画面组在视频码流待解码队列的排序通过对各视频码流目标最近画面组中的各待解码视频帧进行依次解码包括:
122.获取当前待解码画面组的当前解码参数,视频码流当前待解码画面组包括视频码流待解码队列中位于首位的视频码流目标最近画面组,视频码流解码参数包括分辨率和编码格式;
123.若视频码流当前解码参数与视频码流解码模块的目标解码参数不匹配,根据视频码流当前解码参数配置视频码流解码模块,视频码流解码模块用于对各视频码流目标最近画面组中的各待解码视频帧进行依次解码;
124.根据各视频码流目标最近画面组在视频码流待解码队列的排序通过配置后的解码模块分别对各视频码流目标最近画面组中的各待解码视频帧进行依次解码。
125.也即,在每一次对目标最近画面组进行解码之前,先对该目标最近画面组所在码流的分辨率(分辨率尺寸)和编码格式与解码模块的分辨率和编码格式进行匹配,若解码模块的分辨率和编码格式与目标最近画面组所在码流的分辨率(分辨率尺寸)和编码格式一致,则可以直接对该目标最近画面组进行解码,否则,需要根据目标最近画面组所在码流的分辨率(分辨率尺寸)和编码格式对解码模块重新进行配置,再通过配置后的解码模块对目标最近画面组中的每一帧待解码视频帧逐一进行解码。
126.需要说明的是,此处的具体的解码方式可以采用本领域技术人员所知晓的方式实现,在此不做限定。
127.根据目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧时也即找到了一个解码视频帧标识与目标视频帧标识之间的对应关系为对应,此时将该解码后的待解码视频帧作为目标视频帧。
128.可选的,对应关系规则可以是解码视频帧标识的内容与目标视频帧标识的内容相同,或者解码视频帧标识与目标视频帧标识内容存在预设映射关系,预设映射关系可以由
本领域技术人员根据需要预先设定。
129.目标视频帧标识、解码视频帧标识两者可以是内容相同的标识信息,此时,一旦解码视频帧标识和目标视频帧标识一致(如时间戳一致等),两者的对应关系为对应,则说明找到了目标视频帧。
130.目标视频帧标识、解码视频帧标识两者也可以是内容不相同的标识信息,此时,可以预先建立目标视频帧标识、解码视频帧标识的对应关系库,通过在对应关系库中进行比对以知晓目标视频帧标识、解码视频帧标识两者之间的对应关系,当对应关系为对应时,则说明找到了目标视频帧。
131.步骤s205:对目标码流的目标视频帧进行编码,得到目标码流的编码图片,完成多路视频码流抓图。
132.目标视频帧为一帧解码后的待解码视频帧,此时该解码后的待解码视频帧为yuv数据,通过将该yuv数据送入编码模块进行编码,可以得到编码图片,此时,完成了多路视频码流抓图。
133.可选的,编码图片可以是jpg图片等本领域技术人员所设置格式的图片。
134.编码模块、解码模块可以采用本领域现有的相关模块实现,在此不做限定。
135.本实施例提供了一种多路视频码流抓图方法,通过获取抓图消息,根据目标码流标识从多路视频码流中确定目标码流,获取目标码流的目标最近画面组,通过解码模块对目标最近画面组中的各待解码视频帧进行依次解码,并获取解码后的待解码视频帧的解码视频帧标识根据目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧,对目标视频帧进行编码,得到编码图片,完成多路视频码流抓图,能够实现通过一个解码模块对多路视频码流进行抓图,只有存在抓图需求时才进行对该路视频码流进行解码,资源占用更低。
136.下面通过一个具体的实施例示例性的对上述多路视频码流抓图方法进行说明。参见图3、图4和图5,该具体的方法的执行流程为:
137.抓图消息配置及获取。用户配置某路视频通道(某一路视频码流)的抓图消息生成方式为定时抓图、事件抓图或者智能抓图中至少之一,之后由对应事件触发生成一个抓图消息,请求一次抓图(其中,定时抓图、事件抓图和智能抓图的实现方式可参考上述实施例,在此不做赘述)。
138.画面组预缓存。参见图3和图4,各路待视频码流分别由不同的视频通道采集,如图4中所示的视频通道1、视频通道2、视频通道n分别对应着三路视频码流,为每一路视频码流预先配置好通道缓存队列(图3中的gop缓存),此时,每一路视频码流的最近画面组缓存于通道缓存队列中,以便后续调用。为了将视频中的i帧/p帧转码为jpg格式图片(图片格式也可以是本领域技术人员所需要的其他格式,在此仅为示例),需要首先解码视频得到yuv帧,yuv帧送编码器编码得到jpg图片。为了能解码得到完整的p帧,需要保留帧所在的画面组。通过通道缓存队列保存各个解码通道(视频码流)的最新gop图像组(最近画面组)。当事件到来(获取到抓图消息时),请求某通道w的抓图时,使用gop转码(对通道w的视频码流的最近画面组中的码流视频帧进行解码)得到目标帧。
139.视频解码。继续参见图3和图4,当获取到抓图消息,也即图4中的抓图事件后,可以从各通道缓存队列(图中的gop缓存)中确定目标最近画面组,将视频通道的gop缓存中的该
目标最近画面组通过图4中的解码通道0进行视频解码。由于设备解码资源很宝贵。结合实际的抓图业务需求,对多个视频通道(多路视频码流)抓图往往存在间隔,且是离散的。针对这种业务特性,可以只使用一个解码通道和编码通道,各个产生抓图事件的视频通道分时复用编解码通道资源。如图4所示,用户可以配置多个抓图通道(视频通道),在方法的实现只使用一个解码通道和编码通道。
140.定位目标帧。参见图5,图5为一种目标视频帧的确定方式的流程示意图。gop缓存模块缓存最近的gop图像组和帧序号(最近画面组),抓图事件(抓图消息)会产生目标帧序号(例如为定时抓图,时间到时会得到对应时刻的帧序号,也即目标视频帧标识)。如图5所示,抓图事件(抓图消息)使用目标帧序号(目标视频帧标识)请求抓图;将抓图通道的缓存gop和目标帧需要下发,解码器逐帧解码待解码视频帧,得到yuv数据,当帧序号和目标帧序号匹配时,停止解码。
141.图片编码。将该yuv数据送图4中的编码通道0进行图片编码,抓图完成。可选的,编码图片可以是jpg图片,抓图完成。
142.通过上述具体的实施例的方法,通过解码预先缓存的包含目标视频帧的gop图像组(目标最近画面组),通过匹配目标帧序号(对目标视频帧标识和解码视频帧标识记性匹配),实现码流中目标视频帧的定位,得到需要抓图的目标视频帧;由于各个视频通道缓存有最近的gop图像组,当有抓图需求时才进行分析抓图,可以节省资源开销;该方法只创建一路解码器,各路视频流分时复用,只有抓图需求时才对目标视频解码,可以节约资源占用。
143.上述实施例的方法适用于所有的ipc设备,与传统的抓图需要设备接入的ipc支持,由ipc抓图后送到nvr设备,该方法可以从ipc码流中精准定位目标视频帧并将目标视频帧转码为jpg图(编码图片),适用性更佳。
144.上述实施例的方法提供了一种在目标码流中精准抓图的方法,通过针对h.264/h.265的编码特性,缓存目标视频流一个最新的gop图像组(视频码流的最近画面组),同时抓图事件(抓图消息)记录目标帧序号(目标视频帧标识);将gop图像组逐帧送解码器解码,直至获取到匹配帧的yuv数据(目标视频帧),能高效、精准得从码流中抓取目标视频帧。
145.上述实施例的方法还提供了一种解码模块(可以是解码器)分时复用的机制,提高了资源利用率,通过缓存gop方式,使开启抓图的各路视频通道无需一直占用解码资源,仅在需要抓图时,取当前通道缓存的gop送解码,实现了抓图中解编码资源的最低消耗。
146.下面,再通过一个具体的实施例对上述实施例的方法进行再一次的示例性说明,参见图6,该具体的方法包括:
147.开启抓图功能的每个视频通道(图6中的视频通道1、视频通道2、视频通道n)均开辟一个缓存队列x(也即通道缓存队列,图6中的gop缓存x1、gop缓存x2、gop缓存xn),用于缓存最近的一个gop(最近画面组)。
148.当触发抓图事件(生成抓图消息),事件会产生一个目标帧的帧序号s1(目标视频帧标识)。
149.抓图事件对应通道的gop缓存x送解编码。此时根据抓图消息从各个视频通道的视频码流确定目标码流,并确定目标最近画面组,将这些目标最近画面组依次送入解码模块(后续的解码通道0)进行解码。可选的,视频码流可以是h.264/h.265码流。
150.需要说明的是,解码通道0分时复用,如果忙(占用)则等待,空闲则立即解码gop(一个目标最近画面组)。
151.目标最近画面组通过解码通道0对其中的视频帧逐帧进行解码得到yuv数据,每得到一个yuv数据就对yuv数据做帧序号匹配,如果与s1匹配则停止解码(后续的尚未解码的视频帧不再解码),将该yuv数据作为目标yuv数据。
152.将目标yuv数据送编码通道0进行编码,得到编码图片(jpg图片等),抓图完成;
153.参见图7,图7为最近画面组的一种缓存实现方法的流程示例图,对于开启抓图的视频通道(一路视频码流),配套创建一个gop缓存队列qn(通道缓存队列)。当接收到新的一帧码流数据时,判断其是不是i帧。如果是i帧,认为是新的gop开始,清空队列qn,将帧放入队列;非i帧,认为还是同一个gop的帧,直接放入队列qn。
154.参见图8,图8为解码模块的分时复用的一种实现方法流程示意图,当触发抓图时(获取到抓图消息),将通道对应的缓存qn(目标最近画面组)送解码器(解码模块)解码,若此时解码器忙(正在处理其他通道抓图,也即工作状态为占用),则等待;获得解码器后(解码器空闲),解析码流(目标最近画面组的视频码流)的分辨率和编码格式,如果解码器的分辨率和解码格式和解析码流的分辨率和编码格式不同,则重新配置解码器后,再将目标最近画面组的待解码视频帧送解码器逐帧解码。
155.参见图9,图9为一种目标视频帧的确定实现方法的流程示意图,抓图事件下发目标帧序号s1和gop图像组(也即抓图消息包括目标码流标识和目标视频帧标识),对待解码视频帧逐帧解码后,匹配帧序号s2(解码视频帧标识)是否与s1(目标视频帧标识)相同,如果相同则认为s2对应的待解码视频帧为目标视频帧,定位完成(目标视频帧确定完成);反之继续下一帧解码。
156.参见图10,图10为gop图像组(画面组)的示意图。h.264/h.265由i帧/p帧/b帧构成,一个gop图像组由i帧到下一个i帧之间的所有帧构成,如图10所示,idr为i帧,sp为b帧,p为p帧。
157.参见图11,视频码流(视频码流)由一个个gop(画面组)组成,每个gop从i帧开始,后面跟p帧。i帧可以独立解码,p帧需要参考之前的已解码的i帧或者p帧才能正确被解码。如图11所示,为了正确解码帧pn,需要先解码帧i~帧pn-1之间的帧。因此为了正确抓取第pn帧图,需要缓存视频通道的一个gop图像组。
158.参见图12,本发明实施例还提供了一种多路视频码流抓图系统1100,该系统包括:
159.获取模块1101,用于获取抓图消息,抓图消息包括目标码流标识和目标视频帧标识;
160.画面组缓存模块1102,用于根据目标码流标识从多路视频码流中确定目标码流,获取目标码流的目标最近画面组,目标最近画面组为目标码流中画面组生成时间与目标时间最近的一个画面组;
161.解码模块1103,用于通过解码模块对目标最近画面组中的各待解码视频帧进行依次解码,并获取解码后的待解码视频帧的解码视频帧标识;
162.帧定位模块1104,用于根据目标视频帧标识和解码视频帧标识从各解码后的待解码视频帧中确定目标视频帧;
163.编码模块1105,用于对目标码流的目标视频帧进行编码,得到目标码流的编码图
片,完成多路视频码流抓图。
164.可选的,画面组缓存模块还用于缓存开启抓图业务的视频通道最近一个gop图像组(多路视频码流的最近画面组)。视频码流可以是h.265/h.264视频码流等。
165.可选的,解码模块还用于解码h.265/h.264视频码流,得到yuv格式图片(yuv数据)。
166.可选的,帧定位模块还用于精准定位目标图片(目标视频帧,此时为yuv格式数据)。
167.可选的,编码模块还用于将yuv格式图片(目标视频帧,此时为yuv格式数据)编码为jpg图片(编码图片)。
168.在本实施例中,该系统实质上是设置了多个模块用以执行上述实施例中的方法,具体功能和技术效果参照上述方法实施例即可,此处不再赘述。
169.参见图13,本发明实施例还提供了一种电子设备1300,包括处理器1301、存储器1302和通信总线1303;
170.通信总线1303用于将处理器1301和存储器连接1302;
171.处理器1301用于执行存储器1302中存储的计算机程序,以实现如上述实施例一中的一个或多个的方法。
172.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,
173.计算机程序用于使计算机执行如上述实施例一中的任一项的方法。
174.本技术实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本技术实施例的实施例一所包含步骤的指令(instructions)。
175.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
176.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
177.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算
机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
178.附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
179.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献