1.本公开的实施例涉及计算机技术领域,具体涉及用于视频编解码的分布式服务器集群。
背景技术:2.随着网络的升级换代、网络数据承载能力的升级,为更高清、更多方位的监控提供了可能。数据的倍增必然要求更高效的编解码处理能力。目前,大多数解码器一般为单台独立运行,对硬件的性能要求比较高。然而,在一个视频监控系统中,若某台解码器上的视频未被访问,便造成了系统资源的闲置浪费。此外,一旦某台解码器出现故障,往往会导致监控系统中多路资源无法在大屏显示,直至这台解码器的故障消除。
技术实现要素:3.本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。本公开的一些实施例提出了用于视频编解码的分布式服务器集群,来解决以上背景技术部分提到的技术问题中的一项或多项,从而满足大型视频监控系统中视频编码、解码的分析需求。
4.本公开的一些实施例提供了一种用于视频编解码的分布式服务器集群,包括:主服务器,响应于接收到客户端的视频请求,获取视频请求所指示的原视频数据;对原视频数据进行分析,划分编解码处理的子任务;根据各子服务器的属性信息,选取目标子服务器,以及向目标子服务器发送对应的子任务信息;目标子服务器,响应于接收到子任务信息,对原视频数据进行子任务处理。
5.在一些实施例中,对原视频数据进行分析,划分编解码处理的子任务,包括:根据原视频数据的参数信息,确定对原视频数据进行编解码处理的子任务,其中,参数信息包括以下至少一项:输入视频编码参数、输出视频编码参数、分辨率、编解码算法。
6.在一些实施例中,向目标子服务器发送对应的子任务信息,包括:根据各子任务的处理顺序,将原视频数据和首个子任务内容发送给首个目标子服务器;以及响应于接收到首个目标子服务器处理完成的中间视频数据,将中间视频数据和下个子任务内容发送给下个目标子服务器。
7.在一些实施例中,响应于接收到子任务信息,对原视频数据进行子任务处理,包括:确定接收到的子任务是否为最终子任务;响应于确定不是,对主服务器发送的视频数据进行子任务处理,生成中间视频数据,并发送给主服务器;响应于确定是,对主服务器发送的视频数据进行子任务处理,生成最终视频数据,并发送给客户端;其中,子任务信息中还包括用于指示该子任务是否为最终子任务的信息。
8.在一些实施例中,向目标子服务器发送对应的子任务信息,包括:根据各子任务的处理顺序,生成任务信息表,其中,任务信息表包括各子任务内容、处理各子任务的目标子
服务器的标识信息;将原视频数据和任务信息表发送给首个目标子服务器。
9.在一些实施例中,响应于接收到子任务信息,对原视频数据进行子任务处理,包括:根据任务信息表中的标识信息,确定子任务内容以及该子任务是否为最终子任务;响应于确定不是,对接收到的视频数据进行子任务处理,生成中间视频数据,将中间视频数据和任务信息表发送给下个目标子服务器;响应于确定是,对接收到的视频数据进行子任务处理,生成最终视频数据,并发送给客户端。
10.在一些实施例中,目标子服务器在处理完子任务的情况下,向主服务器发送任务完成信息。
11.在一些实施例中,在主服务器出现故障的情况下,分布式服务器集群中的各子服务器还用于:根据预设选举方式,从各子服务器中重新选举新的主服务器。
12.在一些实施例中,分布式服务器集群的每个服务器存储有集群中所有服务器的硬件信息,以及预设选举方式包括:根据当前各子服务器的硬件信息,每台子服务器选举一台子服务器作为候选的主服务器;对各台子服务器的选举结果进行统计分析,根据统计结果确定新的主服务器。
13.在一些实施例中,分布式服务器集群中的各服务器采用广播机制或订阅机制进行通信。
14.本公开的上述各个实施例具有如下有益效果:通过对视频请求所指示的原视频数据进行分析,可以将该视频的编解码处理划分为多个子任务。之后,根据各子服务器的属性信息,可以选取目标子服务器。进而向各目标子服务器发送对应的子任务信息。目标子服务器在接收到子任务信息的情况下,可以对原视频数据进行相应的子任务处理。也就是说,将分布式系统运用到监控的编解码服务器上。即将视频编解码的任务分工,进而根据集群中不同服务器的性能特点、负载情况进行分发处理。这样,通过建立分布式服务器集群,可以提高各服务器硬件资源的利用率,也有助于提高视频的编解码效率。
附图说明
15.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
16.图1是本公开的一些实施例可以应用于其中的示例性系统的架构图;
17.图2是根据本公开的用于视频编解码的分布式服务器集群的一些实施例的工作时序图。
具体实施方式
18.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
19.另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
20.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
21.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
22.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
23.下面将参考附图并结合实施例来详细说明本公开。
24.图1示出了可以应用本公开的一些实施例的用于视频编解码的分布式服务器集群的示例性系统架构100。
25.如图1所示,系统架构100可以包括客户端101、102、103,网络104和分布式服务器集群105。其中,分布式服务器集群105可以包括主服务器1051、子服务器1052和子服务器1053。网络104可以用以在客户端101、102、103和分布式服务器集群105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
26.用户可以使用客户端101、102、103通过网络104与主服务器1051进行交互,以接收或发送消息等。客户端101、102、103上可以安装有各种终端应用,例如视频播放类应用、网页浏览器和即时通讯工具等。
27.这里的客户端101、102、103可以是硬件,也可以是软件。当客户端101、102、103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当客户端101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成例如用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
28.分布式服务器集群105中的各服务器可以是提供各种服务的服务器,例如可以是对客户端101、102、103所安装的应用提供支持的后台服务器。主服务器1051在接收到客户端的监控视频请求时,可以获取原视频数据,并进行编解码处理任务的划分和分发。而子服务器1052、1053会处理相应的子任务。同时,分布式服务器集群105会将处理结果(如编解码后的视频数据)反馈给客户端101、102、103。
29.这里的分布式服务器集群105中的服务器同样可以是硬件,也可以是软件。当服务器1051、1052、1053为硬件时,可以实现成多个服务器组成的分布式服务器集群。当服务器1051、1052、1053为软件时,可以实现成例如用来提供分布式服务的多个软件或软件模块。在此不做具体限定。
30.应该理解,图1中的客户端、网络、分布式服务器集群以及集群中服务器的数目仅仅是示意性的。根据实际需要,可以具有任意数目的客户端、网络、分布式服务器集群以及集群中服务器。
31.继续参考图2,示出了根据本公开的用于视频编解码的分布式服务器集群的一些实施例的工作时序200。该工作时序包括以下步骤:
32.步骤201,客户端向主服务器发送视频请求。
33.在一些实施例中,客户端(例如图1所示的客户端101、102、103)可以通过有线连接或无线连接的方式,向分布式服务器集群中的主服务器(例如图1所示的主服务器1051)发送视频请求。其中,视频请求可以用于指示需要查看的视频数据。例如视频请求中可以包括
视频的存储路径,或者用于唯一指示该视频的标识信息。标识信息可以是数字、字母、符号、文字中的至少一种。可选地,视频请求中还可以包括视频要求信息。视频要求信息用于表征用户最终所要查看的视频的参数要求,如输出编码格式、视频尺寸、分辨率等。
34.步骤202,获取视频请求所指示的原视频数据。
35.在一些实施例中,响应于接收到客户端发送的视频请求,主服务器可以获取视频请求所指示的原视频数据。可以理解的是,原视频数据的存储位置在这里并不限制。例如分布式服务器集群中的每个服务器可以与多个摄像头相连接,或者与监控平台相连接,并对摄像头采集的监控视频图像进行存储。又例如监控视频图像可以存储在云存储服务器中。此外,原视频数据的数据编码格式、分辨率和编解码算法也不限制。
36.步骤203,对原视频数据进行分析,划分编解码处理的子任务。
37.在一些实施例中,主服务器可以对原视频数据进行分析,从而划分编解码处理的子任务。例如,主服务器首先可以获取客户端上所安装的视频播放类应用的参数信息。然后,根据该应用能够支持播放的视频编码格式、分辨率等信息,对原视频数据的编解码处理任务进行划分,得到多个子任务。
38.可选地,主服务器也可以按照视频请求中的视频要求信息,来划分编解码处理原视频数据的子任务。进一步地,主服务器还可以根据原视频数据的参数信息,来确定对原视频数据进行编解码处理的子任务。上述参数信息包括以下至少一项:输入视频编码参数、输出视频编码参数、分辨率、编解码算法等。
39.需要说明的是,这里的子任务可以包括(但不限于)硬解码、软解码、编码等。其中,硬解码一般指通过硬件实现的解码。通常由显卡核心gpu(graphics processing unit,图形处理器)来对高清视频进行解码工作,cpu(central processing unit,中央处理器)占用率很低,画质效果往往比软解码略差一点,需要对播放器进行设置。这种解码方式具有播放流畅、功耗低等优点。但受视频格式限制,硬件成本高,画质没有软解码好。软解码一般是用软件来进行解码的操作。如通过播放器自带的分离器、解码器以及画面渲染来达到表现出视频画面的过程。这种解码方式不受视频格式限制,画质略好于硬解码。但会占用过高的资源。并且对于高清视频,可能没有硬解码流畅,主要看cpu的处理能力。
40.步骤204,根据各子服务器的属性信息,选取目标子服务器。
41.在一些实施例中,根据各子服务器(如图1所示的子服务器1052、1053)的属性信息(如硬件资源配置),主服务器可以从集群的各子服务器中选取子服务器,以作为目标子服务器。目标子服务器可以对各子任务进行处理。选取方式在这里并不限制。例如,针对不同的子任务,主服务器可以对每个子服务器进行评测。进而,将评测分值最高的子服务器作为处理该子任务的目标子服务器。又例如,主服务器可以根据不同的子任务,预先建立子服务器列表。这样,主服务器可以从相应子任务的子服务器列表中,按照排列的先后顺序,优先选取排在前面的子服务器作为目标子服务器。即对于每个子任务,选取最优(合适)的子服务器进行处理。
42.进一步地,为了提高编解码的处理效率,主服务器还可以结合各子服务器的当前运行状态,来确定处理各子任务的子服务器,作为目标子服务器。例如,若评测分值最高的子服务器当前正在处理其他子任务,则可以选取评测分值第二高的子服务器作为目标子服务器。可选地,主服务器还可以进一步获取评测分值最高的子服务器的当前处理进程。若该
子服务器即将(如3秒内)完成当前正在处理的子任务,则主服务器仍可以将该子服务器确定为处理下个子任务的目标子服务器。
43.步骤205,向目标子服务器发送对应的子任务信息。
44.在一些实施例中,主服务器可以采用多种方式,来向目标子服务器发送对应的子任务信息。这里的子任务信息可以包括子任务内容和视频数据。
45.作为示例,首先,主服务器可以根据各子任务的处理顺序,将原视频数据和首个子任务内容发送给首个目标子服务器。之后,在接收到首个目标子服务器处理完成的中间视频数据时,可以将该中间视频数据和下个子任务内容发送给下个目标子服务器。以此类推,直至处理最后子任务的最后目标子服务器。
46.可选地,主服务器也可以根据各子任务的处理顺序,生成任务信息表。其中,任务信息表中可以包括各子任务内容、处理各子任务的目标子服务器的标识信息。标识信息在这里不限制,如可以为ip(internet protocol,网际互连协议)地址。接着,将原视频数据和任务信息表发送给首个目标子服务器。
47.步骤206,对原视频数据进行子任务处理。
48.在一些实施例中,响应于接收到子任务信息,目标子服务器可以对原视频数据进行子任务处理。作为示例,目标子服务器首先可以确定接收到的子任务是否为最终子任务。例如可以根据子任务信息中的子任务内容来确定。若子任务为解码,则说明该子任务不是最终子任务。若子任务为编码,则说明该子任务是最终子任务。又例如,子任务信息中还可以包含用于指示该子任务是否为最终子任务的信息(如标识信息)。这样,目标子服务器可以依据子任务信息中的标识信息,来确定是否为最终子任务。若确定不是,则对主服务器发送的视频数据(原视频数据或中间视频数据)进行子任务处理,生成中间视频数据。并将生成的中间视频数据发送给主服务器。若确定是,则对主服务器发送的视频数据进行子任务处理,生成最终视频数据。并将最终视频数据发送给客户端,即图2中虚线所示的步骤207。
49.需要说明的是,首个目标子服务器和中间目标子服务器,在将生成的中间视频数据发送给主服务器时,主服务器便知道这些目标子服务器已完成子任务,即它们当前处于空闲状态。而最终目标子服务器在处理完最终子任务的情况下,可以向主服务器发送任务完成信息。这样,主服务器可以向这些子服务器分发新的子任务,有助于提高分布式服务器集群的数据处理效率。
50.可选地,对于每个目标子服务器,可以根据任务信息表中目标子服务器的标识信息,来确定自身的子任务内容以及该子任务是否为最终子任务。若确定不是,则对接收到的视频数据进行子任务处理,生成中间视频数据。以及将中间视频数据和任务信息表发送给下个目标子服务器。若确定是,则对接收到的视频数据进行子任务处理,生成最终视频数据,并发送给客户端(如图2中虚线所示的步骤207)。
51.可以理解的是,为了进一步提高分布式服务器集群的数据处理效率,每个目标子服务器在处理完子任务的情况下,可以向主服务器发送任务完成信息,以便主服务器分发新的子任务。
52.在一些实际应用场景中,若主服务器出现故障(如宕机、网络不通等),则分布式服务器集群中的各子服务器还可以根据预设选举方式,从各子服务器中重新选举新的主服务器。在这里,预设选举方式可以根据需求进行设置。例如,分布式服务器集群中的每个服务
器上可以预存有主服务器列表。这样,各子服务器可以按照主服务器列表中的顺序选举新的主服务器。又例如,分布式服务器集群的每个服务器存储有集群中所有服务器的硬件信息。此时,根据当前各子服务器的硬件信息,每台子服务器可以选举一台子服务器作为候选的主服务器。对各台子服务器的选举结果进行统计分析,根据统计结果确定新的主服务器。如将被选举最多的候选的主服务器作为新的主服务器。这样可以避免单台设备故障导致监控系统业务中断的情况发生,从而提高监控系统的可靠性。
53.需要说明的,分布式服务器集群中的各服务器可以采用广播机制或订阅机制进行通信。并且集群中的每个服务器存储有所有服务器的ip地址。这样可以保证子任务分发、每个服务器的信息更新等信息传输的及时性。
54.本公开的一些实施例提供的用于视频编解码的分布式服务器集群,通过将视频编解码的任务分工,进而可以根据集群中不同服务器的性能特点、负载情况进行分发处理。这样可以最大程度的减少监控系统中资源的浪费,从而提高各服务器硬件资源的利用率。也有助于提高视频的编解码效率。
55.也就是说,采用分布式系统,将视频编解码的任务分工,根据集群中的机器硬件性能特点和负载进行分发。集群中各个机器通过订阅特定频道,获取自己有能力处理的客户请求信息。若节点的子任务是最后一步,该节点直接将处理结果返回客户端。
56.具体地,建立硬件集群(即分布式服务器集群),集群中服务器的硬件信息、对于各种编解码算法的运算效率等信息在集群各个节点之间通过广播、订阅等机制发布。集群中选举产生主节点作为服务接收点与多个客户端直接通信。当各个客户端的视频(编解码)请求到来时,经过集群中主服务器的分析,如根据视频码流的输入编码格式、输出编码格式、分辨率、处理需要选用的编解码算法等多个维度进行任务划分,并在集群内选择最优的服务器处理相应的子任务。需要说明的是,编解码过程中产生的数据在集群内的传递可以通过合理设计网络拓扑以及改善网络条件实现,从而达到数据传递可以忽略不计的程度。
57.在一些实施方式中,客户端、服务器可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
58.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的一些实施例的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
59.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用
于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
60.以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
技术特征:1.一种用于视频编解码的分布式服务器集群,包括:主服务器,响应于接收到客户端的视频请求,获取所述视频请求所指示的原视频数据;对所述原视频数据进行分析,划分编解码处理的子任务;根据各子服务器的属性信息,选取目标子服务器,以及向目标子服务器发送对应的子任务信息;目标子服务器,响应于接收到子任务信息,对所述原视频数据进行子任务处理。2.根据权利要求1所述的分布式服务器集群,其中,所述对所述原视频数据进行分析,划分编解码处理的子任务,包括:根据所述原视频数据的参数信息,确定对所述原视频数据进行编解码处理的子任务,其中,所述参数信息包括以下至少一项:输入视频编码参数、输出视频编码参数、分辨率、编解码算法。3.根据权利要求1所述的分布式服务器集群,其中,所述向目标子服务器发送对应的子任务信息,包括:根据各子任务的处理顺序,将所述原视频数据和首个子任务内容发送给首个目标子服务器;以及响应于接收到首个目标子服务器处理完成的中间视频数据,将中间视频数据和下个子任务内容发送给下个目标子服务器。4.根据权利要求3所述的分布式服务器集群,其中,所述响应于接收到子任务信息,对所述原视频数据进行子任务处理,包括:确定接收到的子任务是否为最终子任务;响应于确定不是,对所述主服务器发送的视频数据进行子任务处理,生成中间视频数据,并发送给所述主服务器;响应于确定是,对所述主服务器发送的视频数据进行子任务处理,生成最终视频数据,并发送给所述客户端;其中,子任务信息中还包括用于指示该子任务是否为最终子任务的信息。5.根据权利要求1所述的分布式服务器集群,其中,所述向目标子服务器发送对应的子任务信息,包括:根据各子任务的处理顺序,生成任务信息表,其中,所述任务信息表包括各子任务内容、处理各子任务的目标子服务器的标识信息;将所述原视频数据和所述任务信息表发送给首个目标子服务器。6.根据权利要求5所述的分布式服务器集群,其中,所述响应于接收到子任务信息,对所述原视频数据进行子任务处理,包括:根据所述任务信息表中的标识信息,确定子任务内容以及该子任务是否为最终子任务;响应于确定不是,对接收到的视频数据进行子任务处理,生成中间视频数据,将中间视频数据和所述任务信息表发送给下个目标子服务器;响应于确定是,对接收到的视频数据进行子任务处理,生成最终视频数据,并发送给所述客户端。7.根据权利要求6所述的分布式服务器集群,其中,目标子服务器在处理完子任务的情况下,向所述主服务器发送任务完成信息。
8.根据权利要求1所述的分布式服务器集群,其中,在所述主服务器出现故障的情况下,所述分布式服务器集群中的各子服务器还用于:根据预设选举方式,从各子服务器中重新选举新的主服务器。9.根据权利要求8所述的分布式服务器集群,其中,所述分布式服务器集群的每个服务器存储有集群中所有服务器的硬件信息,以及所述预设选举方式包括:根据当前各子服务器的硬件信息,每台子服务器选举一台子服务器作为候选的主服务器;对各台子服务器的选举结果进行统计分析,根据统计结果确定新的主服务器。10.根据权利要求1-9之一所述的分布式服务器集群,其中,所述分布式服务器集群中的各服务器采用广播机制或订阅机制进行通信。
技术总结本公开的实施例公开了用于视频编解码的分布式服务器集群。该分布式服务器集群的具体实施方式包括:主服务器,响应于接收到客户端的视频请求,获取视频请求所指示的原视频数据;对原视频数据进行分析,划分编解码处理的子任务;根据各子服务器的属性信息,选取目标子服务器,以及向目标子服务器发送对应的子任务信息;目标子服务器,响应于接收到子任务信息,对原视频数据进行子任务处理。该实施方式采用分布式系统,将视频编解码的任务分工,从而根据集群中不同服务器的性能、负载进行分发处理。这样可以提高集群中服务器的利用率,也有助于提高视频的编解码效率。有助于提高视频的编解码效率。有助于提高视频的编解码效率。
技术研发人员:李海菊
受保护的技术使用者:中星电子股份有限公司
技术研发日:2022.03.16
技术公布日:2022/7/5