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

视频数据处理方法、装置、设备及存储介质与流程

2022-03-02 00:21:32 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及一种视频数据处理方法、装置、设备及存储介质。


背景技术:

2.在数据传输等应用场景中,需要对摄像头数据先进行解码处理,再进行编码处理,以满足不同用户对码率、分辨率等参数的需求。
3.现有技术中,使用硬件解码器对摄像头数据进行解码处理获得解码数据,再使用硬件编码器对解码数据进行编码处理,在硬件解码器和/或硬件编码器不足的情况下,无法对摄像头数据进行处理。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种视频数据处理方法、装置、设备及存储介质。
5.第一方面,本公开提供了一种视频数据处理方法,所述方法包括:
6.获取摄像头采集的摄像头数据,检测视频网关当前的硬件解码资源是否能够处理所述摄像头数据;
7.如果检测获知所述当前的硬件解码资源不能够处理所述摄像头数据,则检测所述视频网关当前的软件解码资源是否能够处理所述摄像头数据;
8.如果检测获知所述当前的软件解码资源能够处理所述摄像头数据,则根据所述摄像头数据的数据格式确定对应的目标软件解码器,并根据所述目标软件解码器对所述摄像头数据进行解码处理,生成对应格式的第一数据;
9.根据所述第一数据的数据格式确定对应的目标编码器,根据所述目标编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据;
10.根据预设的目标格式对所述第二数据进行格式转换的封装处理生成目标数据,将所述目标数据发送到目标设备。
11.一种可选的实施方式中,所述根据所述第一数据的数据格式确定对应的目标编码器,根据所述目标编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据,包括:
12.检测所述视频网关当前的硬件编码资源是否能够处理所述第一数据;
13.如果检测获知所述当前的硬件编码资源能够处理所述第一数据,则根据所述第一数据的数据格式确定对应的目标硬件编码器,根据所述目标硬件编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据;
14.如果检测获知所述当前的硬件编码资源不能够处理所述第一数据,则检测所述视频网关当前的软件编码资源是否能够处理所述第一数据;
15.如果检测获知所述当前的软件编码资源能够处理所述第一数据,则根据所述第一
数据的数据格式确定对应的目标软件编码器,根据所述目标软件编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据。
16.一种可选的实施方式中,还包括:
17.如果检测获知所述当前的硬件解码资源能够处理所述摄像头数据,则根据所述摄像头数据的数据格式确定对应的目标硬件解码器,并根据所述目标硬件解码器对所述摄像头数据进行解码处理,生成对应格式的第三数据;
18.检测所述视频网关当前的硬件编码资源是否能够处理所述第三数据;
19.如果检测获知所述当前的硬件编码资源能够处理所述第三数据,则根据所述第三数据的数据格式确定对应的目标硬件编码器,根据所述目标硬件编码器和预设的编码参数对所述第三数据进行编码处理,生成对应格式的第四数据。
20.一种可选的实施方式中,还包括:
21.如果检测获知所述当前的硬件编码资源不能够处理所述第三数据,则检测所述视频网关当前的软件编码资源是否能够处理所述第三数据;
22.如果检测获知所述当前的软件编码资源能够处理所述第三数据,则根据所述第三数据的数据格式确定对应的目标软件编码器,根据所述目标软件编码器和预设的编码参数对所述第三数据进行编码处理,生成对应格式的第四数据。
23.一种可选的实施方式中,在所述检测视频网关当前的硬件解码资源是否能够处理所述摄像头数据之前,还包括:
24.注册解码容器;其中,所述解码容器中包括至少一种预设解码数据格式;
25.所述根据所述摄像头数据的数据格式确定对应的目标软件解码器或目标硬件编码器,包括:
26.判断所述解码容器中预设的解码数据格式是否包括所述摄像头数据的数据格式;
27.如果所述解码容器中预设的解码数据格式包括所述摄像头数据的数据格式,根据所述解码容器中的预设解码数据格式和软件解码器或硬件解码器的对应关系确定所述摄像头数据对应的目标软件解码器或目标硬件解码器;
28.在所述根据所述第一数据的数据格式确定对应的目标编码器之前,还包括:
29.注册编码容器;其中,所述编码容器中包括至少一种预设编码数据格式;
30.所述根据所述第一数据的数据格式确定对应的目标编码器,包括:
31.判断所述编码容器中预设的编码数据格式是否包括所述第一数据的数据格式;
32.如果所述编码容器中预设的编码数据格式包括所述第一数据的数据格式,根据所述编码容器中的预设编码数据格式和目标编码器的对应关系确定所述第一数据对应的目标编码器。
33.一种可选的实施方式中,还包括:
34.调用所述解码器对应的应用程序接口api创建解码上下文信息,根据所述解码上下文信息进行解码处理;以及
35.调用所述编码器对应的应用程序接口api创建编码上下文信息,根据所述编码上下文信息进行编码处理。
36.第二方面,本公开还提供了一种视频数据处理装置,所述装置包括:
37.第一检测模块,用于获取摄像头采集的摄像头数据,检测视频网关当前的硬件解
码资源是否能够处理所述摄像头数据;
38.第二检测模块,用于如果检测获知所述当前的硬件解码资源不能够处理所述摄像头数据,则检测所述视频网关当前的软件解码资源是否能够处理所述摄像头数据;
39.第一解码模块,用于如果检测获知所述当前的软件解码资源能够处理所述摄像头数据,则根据所述摄像头数据的数据格式确定对应的目标软件解码器,并根据所述目标软件解码器对所述摄像头数据进行解码处理,生成对应格式的第一数据;
40.第一处理模块,用于根据所述第一数据的数据格式确定对应的目标编码器,根据所述目标编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据;
41.封装模块,用于根据预设的目标格式对所述第二数据进行格式转换的封装处理生成目标数据,将所述目标数据发送到目标设备。
42.第三方面,本公开提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现上述的方法。
43.第四方面,本公开提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述的方法。
44.第五方面,本公开提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
45.本公开实施例提供的技术方案与现有技术相比具有如下优点:
46.本公开实施例提供的网络地址的类别获取方法,获取摄像头采集的摄像头数据,检测视频网关当前的硬件解码资源是否能够处理摄像头数据;如果检测获知当前的硬件解码资源不能够处理摄像头数据,则检测视频网关当前的软件解码资源是否能够处理摄像头数据;如果检测获知当前的软件解码资源能够处理摄像头数据,则根据摄像头数据的数据格式确定对应的目标软件解码器,并根据目标软件解码器对摄像头数据进行解码处理,生成对应格式的第一数据;根据第一数据的数据格式确定对应的目标编码器,根据目标编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据;根据预设的目标格式对第二数据进行格式转换的封装处理生成目标数据,将目标数据发送到目标设备。可见,本公开实施例,在当前硬件资源的基础上,提高了能够处理的摄像头数据的数目。
附图说明
47.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
48.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
49.图1为本公开实施例提供的一种视频数据处理方法的流程示意图;
50.图2为本公开实施例提供的一种生成第二数据方法的流程示意图;
51.图3为本公开实施例提供的又一种视频数据处理方法的流程示意图;
52.图4为本公开实施例提供的一种视频数据处理装置的结构示意图;
53.图5为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
54.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
55.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
56.图1为本公开实施例提供的一种视频数据处理方法的流程示意图。该方法可以由视频数据处理装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。
57.如图1所示,该视频数据处理方法可以包括:
58.步骤101,获取摄像头采集的摄像头数据,检测视频网关当前的硬件解码资源是否能够处理摄像头数据。
59.在本公开实施例中,摄像头包括网络摄像头(ip camera,ipc),通过该摄像头采集的摄像头数据的数据格式包括:h.264格式、hevc(high efficiency video coding,高效率视频编码)格式。
60.通过视频网关能够实时展示多个摄像头采集的画面,视频网关中的硬件解码资源可以对摄像头数据硬件解码提供支持,该硬件解码资源包括集成显卡和/或独立显卡。一种可选的实施方式中,在网关系统启动时,可以将该摄像头数据进行拉流处理,并添加到共享内存中,在需要对该摄像头数据进行解码处理时,从共享内存中获取该摄像头数据。
61.为了确定该摄像头数据采用的解码方式,检测视频网关当前的硬件解码资源是否能够处理摄像头数据,即检测当前是否有足够的硬件解码资源对摄像头数据进行处理。
62.其中,检测视频网关当前的硬件解码资源是否能够处理摄像头数据的方法有多种,本实施例不作限制,示例说明如下:
63.一种可选的实施方式中,可以设置硬件解码阈值,将当前硬件解码资源的使用率与该硬件解码阈值进行比较,若当前硬件解码资源的使用率小于该硬件解码阈值,则当前的硬件解码资源能够处理摄像头数据;若当前硬件解码资源的使用率不小于该硬件解码阈值,则当前的硬件解码资源不能够处理摄像头数据。例如:设置硬件解码阈值为95%,若当前硬件解码资源的使用率为90%,该当前硬件解码资源的使用率小于硬件解码阈值,则当前的硬件解码资源能够处理摄像头数据。
64.另一种可选的实施方式中,可以根据摄像头数据的数据格式、数据大小等确定预估硬件解码占用空间,将预估硬件解码占用空间与当前空闲的硬件解码资源进行比较,若预估硬件解码占用空间小于当前空闲的硬件解码资源,则当前的硬件解码资源能够处理摄像头数据;若预估硬件解码占用空间不小于当前空闲的硬件解码资源,则当前的硬件解码资源不能够处理摄像头数据。例如:预估硬件解码占用空间为10%,当前空闲的硬件解码资源为5%,预估硬件解码占用空间大于当前空闲的硬件解码资源,则当前的硬件解码资源不能够处理摄像头数据。
65.可选地,在所述检测视频网关当前的硬件解码资源是否能够处理所述摄像头数据之前还包括:
66.注册解码容器。
67.其中,该解码容器中包括至少一种预设解码数据格式,该解码容器可以用来表征对应的软件解码器或硬件解码器的解码能力。因而在后续能够基于该解码容器确定对摄像头数据进行处理的目标解码器,该目标解码器包括目标软件解码器或目标硬件解码器。
68.步骤102,如果检测获知当前的硬件解码资源不能够处理摄像头数据,则检测视频网关当前的软件解码资源是否能够处理摄像头数据。
69.如果检测获知当前的硬件解码资源不能够处理摄像头数据,即当前没有足够的硬件解码资源对摄像头数据进行处理,为了确定该摄像头数据采用的解码方式,检测视频网关当前的软件解码资源是否能够处理该摄像头数据,即检测当前是否有足够的软件解码资源对摄像头数据进行处理。其中,该软件解码资源包括cpu(central processing unit,中央处理器)。
70.检测视频网关当前的软件解码资源是否能够处理该摄像头数据的方法有多种,本实施例不作限制,示例说明如下:
71.一种可选的实施方式中,可以设置软件资源阈值,将当前软件解码资源的使用率与该软件资源阈值进行比较,若当前软件解码资源的使用率小于该软件资源阈值,则当前的软件解码资源能够处理摄像头数据;若当前软件解码资源的使用率不小于该软件资源阈值,则当前的软件解码资源不能够处理摄像头数据。例如:设置软件资源阈值为90%,若当前软件解码资源的使用率为85%,该当前软件解码资源的使用率小于软件资源阈值,则当前的软件解码资源能够处理摄像头数据。
72.另一种可选的实施方式中,可以预设系统资源阈值,该系统资源阈值为系统正常运行对应的最小cpu使用率,该系统资源阈值可以根据cpu型号等进行设置,本实施例不作限制。并计算当前视频网关中的系统可使用资源,该系统可使用资源为当前环境下能够用于系统运行的资源,该系统可使用资源会根据软件解码对cpu的占用情况而变化,判断该系统可使用资源是否小于预设系统资源阈值,若系统可使用资源不小于预设系统资源阈值,说明当前可供系统运行使用的cpu资源足够,则当前的软件解码资源能够处理摄像头数据;若系统可使用资源小于预设系统资源阈值,说明当前可供系统运行使用的cpu资源不足够,则当前的软件解码资源不能处理摄像头数据。例如:预设系统资源阈值为10%,若系统可使用资源为15%,则软件解码资源能够处理摄像头数据。
73.步骤103,如果检测获知当前的软件解码资源能够处理摄像头数据,则根据摄像头数据的数据格式确定对应的目标软件解码器,并根据目标软件解码器对摄像头数据进行解码处理,生成对应格式的第一数据。
74.如果检测获知当前的软件解码资源能够处理摄像头数据,即当前有足够的软件解码资源对摄像头数据进行处理,则根据摄像头数据的数据格式确定对应的目标软件解码器。并根据目标软件解码器对摄像头数据进行软件解码处理,生成对应格式的第一数据。
75.在一些应用场景中,摄像头数据的数据格式为h.264格式,使用目标软件解码器对该摄像头数据进行解码处理之后,生成的第一数据的数据格式为yuv格式。
76.一种可选的实施方式中,若已经注册了解码容器,则该步骤可以包括:
77.步骤a,判断解码容器中预设的解码数据格式是否包括摄像头数据的数据格式。
78.在本实施例中,可以对摄像头数据进行探流,获取摄像头数据中的部分视频帧,解析该视频帧,从而确定该摄像头数据的数据格式,将该数据格式和解码容器中预设的解码数据格式进行匹配,判断解码容器中预设的解码数据格式是否包括摄像头数据的数据格式。
79.步骤b,如果解码容器中预设的解码数据格式包括摄像头数据的数据格式,根据解码容器中的预设解码数据格式和软件解码器的对应关系确定摄像头数据对应的目标软件解码器。
80.如果解码容器中预设的解码数据格式包括摄像头数据的数据格式,则说明能够对该摄像头数据进行处理,则根据摄像头数据的数据格式对解码容器中的预设解码数据格式和软件解码器的对应关系进行搜索,从而确定摄像头数据对应的目标软件解码器。可选的,若能够处理该数据格式的软件解码器有多个,可以随机选取其中的任一个作为目标软件解码器。
81.步骤104,根据第一数据的数据格式确定对应的目标编码器,根据目标编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据。
82.可选地,在所述根据第一数据的数据格式确定对应的目标编码器之前还包括:
83.注册编码容器。
84.其中,该编码容器中包括至少一种预设编码数据格式,该编码容器可以用来表征对应的软件编码器或硬件编码器的编码能力。因而在后续能够基于该编码容器确定对第一数据进行处理的目标编码器。
85.在本公开实施例中,目标编码器可以为目标软件编码器也可以为目标硬件编码器,对第一数据进行编码处理时的编码参数可以是根据用户的应用场景、用户的硬件条件等预设的,该编码参数包括但不限于:码率和/或分辨率。
86.一种可选的实施方式中,若视频网关中存在硬件编码器且不存在软件编码器,根据第一数据的数据格式从多个硬件编码器中确定能对第一数据的数据格式进行处理的目标硬件编码器,根据目标硬件编码器和预设的码率、分辨率等对第一数据进行编码处理,生成对应格式的第二数据。
87.另一种可选的实施方式中,若视频网关中存在硬件编码器和软件编码器,因而目标编码器可以为目标软件编码器或目标硬件编码器,图2为本公开实施例提供的一种生成第二数据方法的流程示意图,如图2所示,所述根据第一数据的数据格式确定对应的目标编码器,根据目标编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据,包括以下步骤:
88.步骤201,检测视频网关当前的硬件编码资源是否能够处理第一数据。
89.即,检测当前是否有足够的硬件编码资源对摄像头数据进行处理,该检测方法有多种,示例说明如下:
90.可以设置硬件编码阈值,将当前硬件编码资源的使用率与该硬件编码阈值进行比较,若当前硬件编码资源的使用率小于该硬件编码阈值,则当前的硬件编码资源能够处理第一数据;若当前硬件编码资源的使用率大于或等于该硬件编码阈值,则当前的硬件编码资源不能够处理第一数据。例如,若设置硬件编码阈值为90%,若当前硬件编码资源的使用
率为85%,则当前的硬件编码资源能够处理第一数据。
91.步骤202,如果检测获知当前的硬件编码资源能够处理第一数据,则根据第一数据的数据格式确定对应的目标硬件编码器,根据目标硬件编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据。
92.如果检测获知当前的硬件编码资源能够处理第一数据,即当前有足够的硬件编码资源对第一数据进行处理,则根据第一数据的数据格式确定对应的目标硬件编码器。进一步的,根据目标硬件编码器对第一数据进行硬件编码处理,生成对应数据格式的第二数据。
93.在一些应用场景中,第一数据的数据格式为yuv格式,对该摄像头数据进行编码处理之后,生成的第一数据对应的格式为h.264格式。
94.步骤203,如果检测获知当前的硬件编码资源不能够处理第一数据,则检测视频网关当前的软件编码资源是否能够处理第一数据。
95.如果检测获知当前的硬件编码资源不能够处理第一数据,即当前没有足够的硬件编码资源对第一数据进行处理,为了确定该第一数据采用的编码方式,检测视频网关当前的软件编码资源是否能够处理该第一数据,即检测当前是否有足够的软件编码资源对第一数据进行处理。
96.检测视频网关当前的软件编码资源是否能够处理该第一数据的方法有多种,本实施例不作限制,示例说明如下:
97.可以预设系统资源阈值,该系统资源阈值为系统正常运行对应的最小cpu使用率,该系统资源阈值可以根据cpu型号等进行设置,本实施例不作限制。并计算当前视频网关中的系统可使用资源,该系统可使用资源为当前环境下能够用于系统运行的资源,该系统可使用资源会根据软件编码对cpu的占用情况而变化,判断该系统可使用资源是否小于预设系统资源阈值,若系统可使用资源不小于预设系统资源阈值,则当前的软件解码资源能够处理摄像头数据;若系统可使用资源小于预设系统资源阈值,则当前的软件解码资源不能处理摄像头数据。例如:预设系统资源阈值为10%,若系统可使用资源为20%,则软件解码资源能够处理摄像头数据。
98.步骤204,如果检测获知当前的软件编码资源能够处理第一数据,则根据第一数据的数据格式确定对应的目标软件编码器,根据目标软件编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据。
99.如果检测获知当前的软件编码资源能够处理第一数据,即当前有足够的软件编码资源对第一数据进行处理,则根据第一数据的数据格式确定对应的目标软件编码器。并根据目标软件编码器对第一数据进行软件编码处理,生成对应数据格式的第二数据。
100.在一些应用场景中,第一数据的数据格式为yuv格式,使用目标软件编码器对该第一数据进行编码处理之后,生成的第二数据的数据格式为h.264格式。
101.一种可选的实施方式中,若已经注册了编码容器,则上述根据第一数据的数据格式确定对应的目标编码器可以包括:
102.步骤a,判断编码容器中预设的编码数据格式是否包括第一数据的数据格式。
103.在本实施例中,可以将第一数据的格式和编码容器中预设的编码数据格式进行匹配,判断编码容器中预设的编码数据格式是否包括第一数据的数据格式。
104.步骤b,如果编码容器中预设的编码数据格式包括第一数据的数据格式,根据编码
容器中的预设编码数据格式和编码器的对应关系确定摄像头数据对应的目标编码器。
105.如果编码容器中预设的编码数据格式包括第一数据的数据格式,则说明能够对该第一数据进行处理,则根据第一数据的数据格式对编码容器中的预设编码数据格式和编码器的对应关系进行搜索,从而确定第一数据对应的目标编码器。可选的,若能够处理该数据格式的编码器有多个,可以随机选取其中的任一个作为目标编码器。其中,编码器包括软件编码器或硬件编码器;目标编码器包括目标软件编码器或目标硬件编码器。
106.步骤105,根据预设的目标格式对第二数据进行格式转换的封装处理生成目标数据,将目标数据发送到目标设备。
107.本公开实施例中,为了能够将数据发送到目标设备,需要根据预设的目标格式对第二数据进行封装处理并完成格式转换,生成目标数据,其中该目标格式可以根据目标设备型号、数据传输方式等确定,本实施例不作限制。获得目标数据之后,将该目标数据发送到目标设备,在一些应用场景中,该目标设备可以为预设的流媒体服务器。
108.本公开实施例提供的视频数据获取方法,获取摄像头采集的摄像头数据,检测视频网关当前的硬件解码资源是否能够处理摄像头数据;如果检测获知当前的硬件解码资源不能够处理摄像头数据,则检测视频网关当前的软件解码资源是否能够处理摄像头数据;如果检测获知当前的软件解码资源能够处理摄像头数据,则根据摄像头数据的数据格式确定对应的目标软件解码器,并根据目标软件解码器对摄像头数据进行解码处理,生成对应格式的第一数据;根据第一数据的数据格式确定对应的目标编码器,根据目标编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据;根据预设的目标格式对第二数据进行格式转换的封装处理生成目标数据,将目标数据发送到目标设备。可见,本公开实施例在当前硬件资源的基础上,提高了视频网关的利用率,同时节约了成本,从而提升了能够处理的摄像头数据的数目。
109.基于上述实施例,图3为本公开实施例提供的又一种视频数据处理方法的流程示意图,如图3所示,该方法中还包括:
110.步骤301,如果检测获知当前的硬件解码资源能够处理摄像头数据,则根据摄像头数据的数据格式确定对应的目标硬件解码器,并根据目标硬件解码器对摄像头数据进行解码处理,生成对应格式的第三数据。
111.如果检测获知当前的硬件解码资源能够处理摄像头数据,即当前有足够的硬件解码资源对摄像头数据进行处理,则根据摄像头数据的数据格式确定对应的目标硬件解码器。并根据目标硬件解码器对摄像头数据进行硬件解码处理,生成对应格式的第三数据。
112.在一些应用场景中,摄像头数据的数据格式为h.264格式,使用目标硬件解码器对该摄像头数据进行解码处理之后,生成的第三数据的数据格式为nv12格式。
113.一种可选的实施方式中,若已经注册了解码容器,则该步骤可以包括:
114.步骤a,判断解码容器中预设的解码数据格式是否包括摄像头数据的数据格式。
115.在本实施例中,可以对摄像头数据进行探流,获取摄像头数据中的部分视频帧,解析该视频帧,从而确定该摄像头数据的数据格式,将该数据格式和解码容器中预设的解码数据格式进行匹配,判断解码容器中预设的解码数据格式是否包括摄像头数据的数据格式。
116.步骤b,如果解码容器中预设的解码数据格式包括摄像头数据的数据格式,根据解
码容器中的预设解码数据格式和硬件解码器的对应关系确定摄像头数据对应的目标硬件解码器。
117.如果解码容器中预设的解码数据格式包括摄像头数据的数据格式,则说明能够对该摄像头数据进行处理,则根据摄像头数据的数据格式对解码容器中的预设解码数据格式和硬件解码器的对应关系进行搜索,从而确定摄像头数据对应的目标硬件解码器。可选的,若能够处理该数据格式的硬件解码器有多个,可以随机选取其中的任一个作为目标硬件解码器。
118.步骤302,检测视频网关当前的硬件编码资源是否能够处理第三数据。
119.即,检测当前是否有足够的硬件编码资源对摄像头数据进行处理,该检测方法有多种,示例说明如下:
120.可以设置硬件编码阈值,将当前硬件编码资源的使用率与该硬件编码阈值进行比较,若当前硬件编码资源的使用率小于该硬件编码阈值,则当前的硬件编码资源能够处理第三数据;若当前硬件编码资源的使用率大于或等于该硬件编码阈值,则当前的硬件编码资源不能够处理第三数据。例如,若设置硬件编码阈值为90%,若当前硬件编码资源的使用率为85%,则当前的硬件编码资源能够处理第三数据。
121.步骤303,如果检测获知当前的硬件编码资源能够处理第三数据,则根据第三数据的数据格式确定对应的目标硬件编码器,根据目标硬件编码器和预设的编码参数对第三数据进行编码处理,生成对应格式的第四数据。
122.可选地,在所述根据第三数据的数据格式确定对应的目标硬件编码器之前还包括:
123.注册编码容器。
124.其中,该编码容器中包括至少一种预设编码数据格式,该编码容器可以用来表征对应的软件编码器或硬件编码器的编码能力。因而在后续能够基于该编码容器确定对第三数据进行处理的目标编码器。
125.在本公开实施例中,目标编码器可以为目标软件编码器也可以为目标硬件编码器,对第一数据进行编码处理时的编码参数可以是根据用户的应用场景、用户的硬件条件等预设的,该编码参数包括但不限于:码率和/或分辨率。
126.如果检测获知当前的硬件编码资源能够处理第三数据,即当前有足够的硬件编码资源对第三数据进行处理,则根据第三数据的数据格式确定对应的目标硬件编码器。进一步的,根据目标硬件编码器对第三数据进行硬件编码处理,生成对应数据格式的第四数据。
127.一种可选的实施方式中,若已经注册了编码容器,则上述根据第三数据的数据格式确定对应的目标硬件编码器可以包括:
128.步骤a,判断编码容器中预设的编码数据格式是否包括第一数据的数据格式。
129.在本实施例中,可以将第三数据的格式和编码容器中预设的编码数据格式进行匹配,判断编码容器中预设的编码数据格式是否包括第三数据的数据格式。
130.步骤b,如果编码容器中预设的编码数据格式包括第三数据的数据格式,根据编码容器中的预设编码数据格式和编码器的对应关系确定摄像头数据对应的目标硬件编码器。
131.如果编码容器中预设的编码数据格式包括第三数据的数据格式,则说明能够对该第三数据进行处理,则根据第三数据的数据格式对编码容器中的预设编码数据格式和硬件
编码器的对应关系进行检索,从而确定第三数据对应的目标硬件编码器。可选的若能够处理该数据格式的编码器有多个,可以随机选取其中的任一个作为目标硬件编码器。
132.在一些应用场景中,第三数据的数据格式为nv12格式,对该摄像头数据进行解码处理之后,生成的第四数据对应的数据格式为h.264格式。
133.步骤304,如果检测获知当前的硬件编码资源不能够处理第三数据,则检测视频网关当前的软件编码资源是否能够处理第三数据。
134.如果检测获知当前的硬件编码资源不能够处理第三数据,即当前没有足够的硬件编码资源对第三数据进行处理,为了确定该第三数据采用的编码方式,检测视频网关当前的软件编码资源是否能够处理该第三数据,即检测当前是否有足够的软件编码资源对第三数据进行处理。其中,检测视频网关当前的软件编码资源是否能够处理该第三数据的方法有多种,本实施例不作限制。
135.步骤305,如果检测获知当前的软件编码资源能够处理第三数据,则根据第三数据的数据格式确定对应的目标软件编码器,根据目标软件编码器和预设的编码参数对第三数据进行编码处理,生成对应格式的第四数据。
136.如果检测获知当前的软件编码资源能够处理第三数据,即当前有足够的软件编码资源对第三数据进行处理,则根据第三数据的数据格式确定对应的目标软件编码器。并根据目标软件编码器对第三数据进行软件编码处理,生成对应数据格式的第四数据。
137.在一些应用场景中,第三数据的数据格式为nv12格式,使用目标软件编码器对该第三数据进行编码处理之后,生成的第二数据的数据格式为h.264格式。
138.一种可选的实施方式中,若已经注册了编码容器,则上述根据第三数据的数据格式确定对应的目标软件编码器可以包括:
139.步骤a,判断编码容器中预设的编码数据格式是否包括第三数据的数据格式。
140.在本实施例中,可以将第三数据的格式和编码容器中预设的编码数据格式进行匹配,判断编码容器中预设的编码数据格式是否包括第三数据的数据格式。
141.步骤b,如果编码容器中预设的编码数据格式包括第一数据的数据格式,根据编码容器中的预设编码数据格式和软件编码器的对应关系确定摄像头数据对应的目标软件编码器。
142.如果编码容器中预设的编码数据格式包括第三数据的数据格式,则说明能够对该第三数据进行处理,则根据第三数据的数据格式对编码容器中的预设编码数据格式和软件编码器的对应关系进行搜索,从而确定第三数据对应的目标软件编码器。可选的,若能够处理该数据格式的软件编码器有多个,可以随机选取其中的任一个作为目标软件编码器。
143.可选地,在本实施例中,还可以通过调用api(application programming interface,应用程序接口)创建上下文进行编码或解码操作,具体的,基于上述实施例,还可以包括:
144.调用解码器对应的应用程序接口api创建解码上下文信息,根据解码上下文信息进行解码处理;以及调用编码器对应的应用程序接口api创建编码上下文信息,根据编码上下文信息进行编码处理。
145.在本实施例中,能够调用解码器对应的api创建解码上下文信息,从而根据解码上下文信息将摄像头数据传输到对应的目标解码器,对摄像头数据进行解码处理,获得解码
数据。类似的,还能够调用编码器对应的api创建编码上下文信息,从而根据编码上下文信息将解码数据传输到对应的目标编码器,对该数据进行编码处理。
146.其中,若目标解码器为目标硬件解码器,则对摄像头数据进行解码处理获得的解码数据为第一数据;若目标解码器为目标软件解码器,则对摄像头数据进行解码处理生成的解码数据为第三数据。处理该解码数据的目标编码器包括目标硬件编码器和目标软件解码器。
147.以本实施例中的创建解码上下文信息为例,若目标解码器为硬件解码器,且该硬件解码器为独立显卡,可以调用nvidia的提供的api创建独显解码上下文信息hw_device_ctx_ref;若目标解码器为硬件解码器,且该硬件解码器为集成显卡,可以调用intel提供的api创建集显解码上下文信息hw_device_ctx_ref;若目标解码器为软件解码器,可以调用第三方库提供的api创建软件解码上下文信息。其中,第三方库包括但不限于:ffmpeg(fast forward mpeg)软件。
148.本公开实施例提供的视频数据处理方法,在当前硬件编码资源的基础上,提高了视频网关的利用率,同时节约了成本,从而提升了能够处理的摄像头数据的数目。
149.图4为本公开实施例提供的一种视频数据处理装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。如图4所示,该视频数据处理装置400可以包括:
150.第一检测模块401,用于获取摄像头采集的摄像头数据,检测视频网关当前的硬件解码资源是否能够处理所述摄像头数据;
151.第二检测模块402,用于如果检测获知所述当前的硬件解码资源不能够处理所述摄像头数据,则检测所述视频网关当前的软件解码资源是否能够处理所述摄像头数据;
152.第一解码模块403,用于如果检测获知所述当前的软件解码资源能够处理所述摄像头数据,则根据所述摄像头数据的数据格式确定对应的目标软件解码器,并根据所述目标软件解码器对所述摄像头数据进行解码处理,生成对应格式的第一数据;
153.第一处理模块404,用于根据所述第一数据的数据格式确定对应的目标编码器,根据所述目标编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据;
154.封装模块405,用于根据预设的目标格式对所述第二数据进行格式转换的封装处理生成目标数据,将所述目标数据发送到目标设备。
155.一种可选的实施方式中,所述第一处理模块404,包括:
156.第一检测单元,用于检测所述视频网关当前的硬件编码资源是否能够处理所述第一数据;
157.第一编码单元,用于如果检测获知所述当前的硬件编码资源能够处理所述第一数据,则根据所述第一数据的数据格式确定对应的目标硬件编码器,根据所述目标硬件编码器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据;
158.第二检测模块,用于如果检测获知所述当前的硬件编码资源不能够处理所述第一数据,则检测所述视频网关当前的软件编码资源是否能够处理所述第一数据;
159.第二编码模块,用于如果检测获知所述当前的软件编码资源能够处理所述第一数据,则根据所述第一数据的数据格式确定对应的目标软件编码器,根据所述目标软件编码
器和预设的编码参数对所述第一数据进行编码处理,生成对应格式的第二数据。
160.可选地,所述装置,还包括:
161.第二解码模块,用于如果检测获知所述当前的硬件解码资源能够处理所述摄像头数据,则根据所述摄像头数据的数据格式确定对应的目标硬件解码器,并根据所述目标硬件解码器对所述摄像头数据进行解码处理,生成对应格式的第三数据;
162.第三检测模块,用于检测所述视频网关当前的硬件编码资源是否能够处理所述第三数据;
163.第一编码模块,用于如果检测获知所述当前的硬件编码资源能够处理所述第三数据,则根据所述第三数据的数据格式确定对应的目标硬件编码器,根据所述目标硬件编码器和预设的编码参数对所述第三数据进行编码处理,生成对应格式的第四数据。
164.可选地,所述装置,还包括:
165.第四检测模块,用于如果检测获知所述当前的硬件编码资源不能够处理所述第三数据,则检测所述视频网关当前的软件编码资源是否能够处理所述第三数据;
166.第二编码模块,用于如果检测获知所述当前的软件编码资源能够处理所述第三数据,则根据所述第三数据的数据格式确定对应的目标软件编码器,根据所述目标软件编码器和预设的编码参数对所述第三数据进行编码处理,生成对应格式的第四数据。
167.可选地,所述装置,还包括:
168.第一注册模块,用于注册解码容器;其中,所述解码容器中包括至少一种预设解码数据格式;
169.所述第一解码模块403,用于:
170.判断所述解码容器中预设的解码数据格式是否包括所述摄像头数据的数据格式;
171.如果所述解码容器中预设的解码数据格式包括所述摄像头数据的数据格式,根据所述解码容器中的预设解码数据格式和软件解码器的对应关系确定所述摄像头数据对应的目标软件解码器;
172.所述第二解码模块,用于:
173.判断所述解码容器中预设的解码数据格式是否包括所述摄像头数据的数据格式;
174.如果所述解码容器中预设的解码数据格式包括所述摄像头数据的数据格式,根据所述解码容器中的预设解码数据格式和硬件解码器的对应关系确定所述摄像头数据对应的目标硬件解码器;
175.所述装置,还包括:
176.第二注册模块,用于注册编码容器;其中,所述编码容器中包括至少一种预设编码数据格式;
177.所述第一处理模块404,用于:
178.判断所述编码容器中预设的编码数据格式是否包括所述第一数据的数据格式;
179.如果所述编码容器中预设的编码数据格式包括所述第一数据的数据格式,根据所述编码容器中的预设编码数据格式和编码器的对应关系确定所述第一数据对应的目标编码器。
180.可选地,所述装置,还包括:
181.第一调用模块,用于调用所述解码器对应的应用程序接口api创建解码上下文信
息,根据所述解码上下文信息进行解码处理;以及
182.第二调用模块,用于调用所述编码器对应的应用程序接口api创建编码上下文信息,根据所述编码上下文信息进行编码处理。
183.本公开实施例所提供的视频数据处理装置可执行本公开任意实施例所提供的视频数据处理方法,具备执行方法相应的功能模块和有益效果。
184.除了上述方法和装置以外,本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备实现本公开实施例所述的视频数据处理方法。
185.本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本公开任意实施例所提供的视频数据处理方法。
186.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
187.图5为本公开实施例提供的一种电子设备的结构示意图。
188.下面具体参考图5,其示出了适于用来实现本公开实施例中的电子设备500的结构示意图。本公开实施例中的电子设备500可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
189.如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储装置508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、rom 502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
190.通常,以下装置可以连接至i/o接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
191.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从rom 502被安装。在该计算机程序被处理装置501执行时,执行本公开
实施例的视频数据处理方法中限定的上述功能。
192.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
193.在一些实施方式中,客户端、服务器可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
194.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
195.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:检测视频网关当前的硬件解码资源是否能够处理摄像头数据;如果能够处理摄像头数据,则检测视频网关当前的软件解码资源是否能够处理摄像头数据;如果能够处理摄像头数据,则根据摄像头数据的数据格式确定对应的目标软件解码器,并对摄像头数据进行解码处理,生成对应格式的第一数据;根据第一数据的数据格式确定对应的目标编码器,根据目标编码器和预设的编码参数对第一数据进行编码处理,生成对应格式的第二数据;对第二数据进行格式转换的封装处理生成目标数据,将目标数据发送到目标设备。本公开实施例,在当前硬件资源的基础上,提高了能够处理的摄像头数据的数目。
196.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利
用因特网服务提供商来通过因特网连接)。
197.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
198.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
199.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
200.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
201.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
202.此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
203.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
204.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一
个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
205.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

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

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

相关文献