具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
目前H.265格式是新的视频编码格式,将视频编码为H.265格式比编码为H.264格式所消耗的资源要多得多,这导致H.265格式目前还难以应用到民用领域。可以采用X265编码器将视频编码为H.265格式,而X265编码器是多线程的,本发明将X265编码器的架构进行改造,将多线程的框架改成多进程的,使其能够部署在不同的编码服务器上同时进行H.265格式的编码。
如图1所示,在一个实施例中,提供了一种视频编码系统100,该视频编码系统包括分发服务器102、管理服务器104、编码服务器106和合流服务器108。分发服务器102通过网络与编码请求端110连接,而合流服务器108则通过网络与编码请求端110所指定的用户端连接。该视频编码系统100用于实现一种视频编码方法。其中分发服务器、管理服务器和合流服务器可以是同一个服务器,也可以是各自独立的服务器。编码服务器为至少2个,且一个编码服务器可以是物理上独立的服务器,也可以是多个物理服务器虚拟而成的一个逻辑服务器。
如图2所示,在一个实施例中,提供了一种服务器,用于实现图1中的分发服务器、管理服务器和合流服务器的功能。该服务器包括通过系统总线连接的处理器、内存、存储介质和网络接口。其中,该服务器的存储介质存储有操作系统和一种视频编码装置,该视频编码装置用于实现一种视频编码方法。该服务器的处理器被配置为执行一种视频编码方法。该服务器的内存为存储介质中的视频编码装置提供运行环境。该服务器可以是一个独立的服务器,或者可以是多个可互联通信的服务器组成的服务器群,视频编码装置的各个功能模块可分别分布在服务器群中的各个服务器上。
如图3所示,在一个实施例中,提供了一种视频编码方法,本实施例以该方法应用于如图1所示的视频编码系统来举例说明。该方法具体包括如下步骤:
步骤302,接收编码请求端发来的视频原始采集数据,或者,接收编码请求端发来的对视频原始采集数据进行第一编码方式的压缩编码而获得的传输视频流。
编码请求端是指具有编码需求而请求对视频进行编码的终端。编码请求端可以是客户端,比如视频通话客户端或者视频互动客户端等;编码请求端也可以是业务运营端,比如赛事直播运营端或者电视直播运营端等。
编码请求端包括或者连接有视频采集设备,视频采集设备比如可以是摄像机、摄像头或者支持D3D(全称Direct 3D,是基于微软公司的通用对象模式COM(Common ObjectMode)的三维图形应用程序编程接口)的显卡。视频原始采集数据是指编码请求端采集到的未经过压缩编码的视频原始数据。视频原始采集数据可以是摄像机或摄像头采集的视频数据,也可以是支持D3D的显卡所输出的D3D游戏视频数据。
编码请求端可以直接将视频原始采集数据发送给分发服务器,由分发服务器接收。或者,编码请求端也可以对视频原始采集数据进行第一编码方式的压缩编码,从而获得适合传输的传输视频流后,将传输视频流传输给分发服务器,由分发服务器接收。
这里第一编码方式所需资源要低于下述的第二编码方式所需资源。在一个实施例中,第一编码方式为编码为H.264格式的编码方式;第二编码方式为编码为H.265格式的编码方式。这里将视频原始采集数据编码成H.265格式相比编码成H.264格式所需资源要多很多。
具体是否要将视频原始采集数据进行第一编码方式的压缩编码再传输,可以根据实际需要选择。若编码请求端为客户端,目前的通信网络还难以实现视频原始采集数据的实时传输,需要将视频原始采集数据进行第一编码方式的压缩编码再传输给分发服务器。若编码请求端为业务运营端,在网络状态良好时或者实时性要求不高时可以直接将视频原始采集数据发送给分发服务器。
步骤304,将视频原始采集数据的每个视频帧图像划分为多个子区域图像,或者,将传输视频流解码获得的视频原始采集数据的每个视频帧图像划分为多个子区域图像。
视频原始采集数据包括若干视频帧图像。若分发服务器接收到的是视频原始采集数据,则分发服务器向管理服务器发送编码请求,由管理服务器根据该编码请求而将视频原始采集数据的每个视频帧图像划分为多个子区域图像。或者,若分发服务器接收到的是传输视频流,则分发服务器将传输视频流进行解码而获得视频原始采集数据,从而向管理服务器发送编码请求,由管理服务器根据该编码请求而将解码获得的视频原始采集数据的每个视频帧图像划分为多个子区域图像。
子区域图像是指将一个视频帧图像划分为多个区域后该划分的区域中的图像。优选地,管理服务器可以在将视频原始采集数据的每个视频帧图像划分为多个子区域图像时采用均匀划分,使得划分出的各个子区域图像的大小一致。比如,管理服务器可以对视频原始采集数据的每个视频帧图像进行二等分、三等分、四等分、八等分等。举例来说,参照图4,视频原始采集数据的其中一个视频帧图像400,可以四等分为四个子区域图像分别为401、402、403和404。
步骤306,将每个视频帧图像所划分出的子区域图像传输给多个编码服务器,以进行第二编码方式的编码而输出编码视频流。
视频原始采集数据的每个视频帧图像所划分出子区域图像的数量可以等于编码服务器的数量,这样每个视频帧图像都可以分配给其中一个编码服务器,由相应的编码服务器采用第二编码方式对该子区域图像进行编码,顺序输出形成编码视频流,编码服务器将编码视频流输出给合流服务器。当然视频原始采集数据的每个视频帧图像所划分出子区域图像的数量也可以不等于编码服务器的数量,此时可以根据各个编码服务器的负载情况来调度划分出的子区域图像给当前负载最低的编码服务器。
管理服务器可以根据分发服务器所发送的编码请求生成编码子任务,并将编码子任务下发给每个编码服务器,每个编码服务器接收来自分发服务器的子区域图像,根据管理服务器下发的编码子任务而对接收到的子区域图像进行第二编码方式的编码而获得编码图像,顺序输出编码图像而形成编码视频流。
在一个实施例中,每个视频帧图像所划分出的子区域图像携带有位置信息,该位置信息用于确定该子区域图像在视频原始采集数据中的视频帧图像中的位置。比如一个子区域图像可以携带有[1,2]这样的数组,用于表示该子区域图像在视频原始采集数据的第一个视频帧图像中的顺序第二个子区域图像。
在一个实施例中,每个视频帧图像所划分出的子区域图像可以携带有图像标识,而管理服务器可以记录图像标识相对应的位置信息,该位置信息用于确定子区域图像在视频原始采集数据中的视频帧图像中的位置。比如一个子区域图像可以携带有1.2这样的图像标识,而管理服务器可以记录图像标识1.2对应视频原始采集数据中的第一个视频帧图像中的第二个子区域图像。
步骤308,将每个编码服务器输出的编码视频流合并以获得目标视频流。
合流服务器可从管理服务器获取合流策略,从而根据该合流策略而将每个编码服务器输出的编码视频流合并以获得目标视频流。这里合流是指将多个编码视频流合并而获得目标视频流的过程。目标视频流则是指将视频原始采集数据采用第二编码方式进行编码而获得的最终的视频流。合流策略包括如何将编码视频流合并而获得目标视频流的方案。合流策略可以包括子区域图像编码而成的编码图像所对应的位置信息。
在一个实施例中,步骤308之后,还包括:将目标视频流返回给编码请求端;或者,向编码请求端所指定的用户端发送目标视频流。具体地,合流服务器将目标视频流返回给编码请求端还是编码请求端所指定的用户端,可根据实际需要来由编码请求端在向分发服务器发送视频原始采集数据或者传输视频流时指定。编码请求端可以在发送视频原始采集数据或者传输视频流时携带目标终端的地址,从而使得合流服务器在获得目标视频流之后发送给该目标终端。若该目标终端的地址为编码请求端的地址,则合流服务器会返回目标视频流给编码请求端。
上述视频编码方法,通过将视频原始采集数据的每个视频帧图像划分为多个子区域图像,并发送给多个编码服务器进行分布式地编码,最后将每个编码服务器输出的编码视频流合并从而获得目标视频流。这样原本必须由单台设备才能进行的编码,可以通过多台编码服务器来协作编码,极大地提高了编码效率。而且编码请求端不需要进行最终复杂的第二编码方式的编码,对编码请求端的硬件要求低,可以使得新的编码技术可以快速应用到民用领域。
如图5所示,在一个实施例中,步骤306具体包括如下步骤:
步骤502,按照子区域图像在所属的视频帧图像中的位置,以从相同位置处划分出的子区域图像所形成的子区域图像流数据为单位分配编码服务器地址。
具体地,本实施例中每个视频帧图像中采用相同的划分方式划分获得子区域图像。子区域图像所属的视频帧图像是指该子区域图像从该视频帧图像中划分出来。相同位置处划分出的子区域图像,是指这些子区域图像都是从所属的视频帧图像中的相同的位置划分出来,比如若是将视频帧图像四等分,则每个视频帧图像的左上角的子区域图像就可以形成一个子区域图像流数据。以子区域图像流数据为单位是指分别为每个子区域图像流数据分配不同的编码服务器地址。
举例来说,参照图6,视频原始采集数据600包括顺序排列的若干视频帧图像610、620、630、640……。其中每个视频帧图像进行四等分,每个视频帧图像从四个位置划分出四个子区域图像。这样视频原始采集数据600各个视频帧图像的左上角位置的子区域图像分别为611、621、631、641……,形成一个子区域图像流数据,管理服务器为该子区域图像流数据分配一个编码服务器地址。不同的子区域图像流数据分配不同的编码服务器地址,比如管理服务器为子区域图像612、622、632、642……所形成的子区域图像流数据分配另一个编码服务器地址。
步骤504,将每个子区域图像流数据分别传输给被分配的编码服务器地址所对应的编码服务器,以进行第二编码方式的编码而输出编码视频流。
具体地,参照图6,分发服务器将一个子区域图像流数据611、621、631、641……传输给该子区域图像流数据被分配的编码服务器地址所对应的编码服务器,另一个子区域图像流数据612、622、632、642……则传输给其被分配的另一个编码服务器地址所对应的编码服务器。以此类推,将每个子区域图像流数据分别传输给不同的编码服务器。
管理服务器可以根据分发服务器所发送的编码请求生成编码子任务,并将编码子任务下发给每个编码服务器,每个编码服务器接收来自分发服务器的子区域图像,根据管理服务器下发的编码子任务而对接收到的子区域图像流数据进行第二编码方式的编码而获得编码图像,顺序输出编码图像而形成编码视频流。
在一个实施例中,每个视频帧图像所划分出的子区域图像携带有位置信息,该位置信息用于确定该子区域图像在视频原始采集数据中的视频帧图像中的位置。在一个实施例中,每个视频帧图像所划分出的子区域图像可以携带有图像标识,而管理服务器可以记录图像标识相对应的位置信息,该位置信息用于确定子区域图像在视频原始采集数据中的视频帧图像中的位置。
本实施例中,从相同位置处划分出的子区域图像分配给相同的编码服务器地址,而不同位置处划分出的子区域图像则分配给不同的编码服务器地址,这样可以使得合流服务器实现高效地将每个编码服务器输出的编码视频流进行合并,进一步提高编码效率。
如图7所示,在一个实施例中,步骤308具体包括以下步骤:
步骤702,获取每个编码服务器输出的编码视频流中的编码图像所对应的子区域图像相对于所属视频帧图像的位置信息。
具体地,每个编码服务器输出的编码视频流中的编码图像,与输入该编码服务器的子区域图像流数据中的子区域图像是对应的,编码图像的位置信息也就是相应的子区域图像的位置信息。
合流服务器可以获取每个视频帧图像所划分出的子区域图像所携带的位置信息,或者获取每个视频帧图像所划分出的子区域图像所携带的图像标识所对应的位置信息。
步骤704,根据位置信息而将每个编码服务器输出的编码视频流合并以获得目标视频流。
具体地,合流服务器按照原始采集数据的每个视频帧图像被划分为多个子区域图像的划分方式,将每个编码服务器输出的编码视频流合并以获得目标视频流。
参照图6,子区域图像611、612、613以及614,在编码后获得编码图像后也是按照图6中子区域图像的位置关系进行合并,以此类推,其它编码图像也按照相应的子区域图像在相应的视频帧图像中的位置关系进行合并,获得目标视频流。
本实施例中,按照每个编码服务器输出的编码视频流中的编码图像所对应的子区域图像相对于所属视频帧图像的位置信息,来对每个编码服务器输出的编码视频流合并从而获得目标视频流,可以实现高效地将每个编码服务器输出的编码视频流进行合并,进一步提高编码效率。
如图8所示,在一个实施例中,提供了一种视频编码装置800,具有实现上述视频编码方法的各个功能。该视频编码装置800包括:接收模块802、管理模块804、分发模块806和合流模块808。
接收模块802,用于接收编码请求端发来的视频原始采集数据,或者,接收编码请求端发来的对视频原始采集数据进行第一编码方式的压缩编码而获得的传输视频流。
编码请求端是指具有编码需求而请求对视频进行编码的终端。编码请求端可以是客户端,比如视频通话客户端或者视频互动客户端等;编码请求端也可以是业务运营端,比如赛事直播运营端或者电视直播运营端等。
编码请求端包括或者连接有视频采集设备,视频采集设备比如可以是摄像机、摄像头或者支持D3D的显卡。视频原始采集数据是指编码请求端采集到的未经过压缩编码的视频原始数据。视频原始采集数据可以是摄像机或摄像头采集的视频数据,也可以是支持D3D的显卡所输出的D3D游戏视频数据。
编码请求端可以直接将视频原始采集数据发送出去,接收模块802用于接收该视频原始采集数据。或者,编码请求端也可以对视频原始采集数据进行第一编码方式的压缩编码,从而获得适合传输的传输视频流后,将传输视频流发送出去,接收模块802则用于接收该传输视频流。
这里第一编码方式所需资源要低于下述的第二编码方式所需资源。在一个实施例中,第一编码方式为编码为H.264格式的编码方式;第二编码方式为编码为H.265格式的编码方式。这里将视频原始采集数据编码成H.265格式相比编码成H.264格式所需资源要多很多。
具体是否要将视频原始采集数据进行第一编码方式的压缩编码再传输,可以根据实际需要选择。若编码请求端为客户端,目前的通信网络还难以实现视频原始采集数据的实时传输,需要将视频原始采集数据进行第一编码方式的压缩编码再发送出去。若编码请求端为业务运营端,在网络状态良好时或者实时性要求不高时可以直接将视频原始采集数据发送出去。
管理模块804,用于将视频原始采集数据的每个视频帧图像划分为多个子区域图像,或者,将传输视频流解码获得的视频原始采集数据的每个视频帧图像划分为多个子区域图像。
视频原始采集数据包括若干视频帧图像。若接收模块802接收到的是视频原始采集数据,则接收模块802用于向管理模块804发送编码请求,管理模块804用于根据该编码请求而将视频原始采集数据的每个视频帧图像划分为多个子区域图像。或者,若接收模块802接收到的是传输视频流,则接收模块802用于将传输视频流进行解码而获得视频原始采集数据,从而向管理模块804发送编码请求,管理模块804用于根据该编码请求而将解码获得的视频原始采集数据的每个视频帧图像划分为多个子区域图像。
子区域图像是指将一个视频帧图像划分为多个区域后该划分的区域中的图像。优选地,管理模块804可以用于在将视频原始采集数据的每个视频帧图像划分为多个子区域图像时采用均匀划分,使得划分出的各个子区域图像的大小一致。比如,管理模块804可以用于对视频原始采集数据的每个视频帧图像进行二等分、三等分、四等分、八等分等。举例来说,参照图4,视频原始采集数据的其中一个视频帧图像400,可以四等分为四个子区域图像分别为401、402、403和404。
分发模块806,用于将每个视频帧图像所划分出的子区域图像传输给多个编码服务器,以进行第二编码方式的编码而输出编码视频流。
视频原始采集数据的每个视频帧图像所划分出子区域图像的数量可以等于编码服务器的数量,这样每个视频帧图像都可以分配给其中一个编码服务器,由相应的编码服务器采用第二编码方式对该子区域图像进行编码,顺序输出形成编码视频流。编码服务器将编码视频流输出给合流模块808。当然视频原始采集数据的每个视频帧图像所划分出子区域图像的数量也可以不等于编码服务器的数量,此时分发模块806可用于根据各个编码服务器的负载情况来调度划分出的子区域图像给当前负载最低的编码服务器。
管理模块804可以根据分发模块806所发送的编码请求生成编码子任务,并将编码子任务下发给每个编码服务器,每个编码服务器接收来自分发模块806的子区域图像,根据管理模块804下发的编码子任务而对接收到的子区域图像进行第二编码方式的编码而获得编码图像,顺序输出编码图像而形成编码视频流。
在一个实施例中,每个视频帧图像所划分出的子区域图像携带有位置信息,该位置信息用于确定该子区域图像在视频原始采集数据中的视频帧图像中的位置。在一个实施例中,每个视频帧图像所划分出的子区域图像可以携带有图像标识,而管理模块804可以用于记录图像标识相对应的位置信息,该位置信息用于确定子区域图像在视频原始采集数据中的视频帧图像中的位置。
合流模块808,用于将每个编码服务器输出的编码视频流合并以获得目标视频流。
合流模块808可用于从管理服务器获取合流策略,从而根据该合流策略而将每个编码服务器输出的编码视频流合并以获得目标视频流。这里合流是指将多个编码视频流合并而获得目标视频流的过程。目标视频流则是指将视频原始采集数据采用第二编码方式进行编码而获得的最终的视频流。合流策略包括如何将编码视频流合并而获得目标视频流的方案。合流策略可以包括子区域图像编码而成的编码图像所对应的位置信息。
如图9所示,在一个实施例中,视频编码装置800还包括目标视频流处理模块810,用于将目标视频流返回给编码请求端;或者,用于向编码请求端所指定的用户端发送目标视频流。具体地,合流模块808用于将目标视频流返回给编码请求端还是编码请求端所指定的用户端,可根据实际需要来由编码请求端在向分发模块806发送视频原始采集数据或者传输视频流时指定。编码请求端可以在发送视频原始采集数据或者传输视频流时携带目标终端的地址,从而合流模块808用于在获得目标视频流之后发送给该目标终端。若该目标终端的地址为编码请求端的地址,则合流模块808用于返回目标视频流给编码请求端。
上述视频编码装置800,通过将视频原始采集数据的每个视频帧图像划分为多个子区域图像,并发送给多个编码服务器进行分布式地编码,最后将每个编码服务器输出的编码视频流合并从而获得目标视频流。这样原本必须由单台设备才能进行的编码,可以通过多台编码服务器来协作编码,极大地提高了编码效率。而且编码请求端不需要进行最终复杂的第二编码方式的编码,对编码请求端的硬件要求低,可以使得新的编码技术可以快速应用到民用领域。
在一个实施例中,管理模块804还用于按照子区域图像在所属的视频帧图像中的位置,以从相同位置处划分出的子区域图像所形成的子区域图像流数据为单位分配编码服务器地址。且分发模块806还用于将每个子区域图像流数据分别传输给被分配的编码服务器地址所对应的编码服务器,以进行第二编码方式的编码而输出编码视频流。
具体地,本实施例中每个视频帧图像中采用相同的划分方式划分获得子区域图像。子区域图像所属的视频帧图像是指该子区域图像从该视频帧图像中划分出来。相同位置处划分出的子区域图像,是指这些子区域图像都是从所属的视频帧图像中的相同的位置划分出来,比如若是将视频帧图像四等分,则每个视频帧图像的左上角的子区域图像就可以形成一个子区域图像流数据。以子区域图像流数据为单位是指分别为每个子区域图像流数据分配不同的编码服务器地址。
参照图6,视频原始采集数据600包括顺序排列的若干视频帧图像610、620、630、640……。其中每个视频帧图像进行四等分,每个视频帧图像从四个位置划分出四个子区域图像。这样视频原始采集数据600各个视频帧图像的左上角位置的子区域图像分别为611、621、631、641……,形成一个子区域图像流数据,管理模块804用于为该子区域图像流数据分配一个编码服务器地址。不同的子区域图像流数据分配不同的编码服务器地址,比如管理模块804为子区域图像612、622、632、642……所形成的子区域图像流数据分配另一个编码服务器地址。
分发模块806用于将一个子区域图像流数据611、621、631、641……传输给该子区域图像流数据被分配的编码服务器地址所对应的编码服务器,另一个子区域图像流数据612、622、632、642……则传输给其被分配的另一个编码服务器地址所对应的编码服务器。以此类推,将每个子区域图像流数据分别传输给不同的编码服务器。
管理模块804可以用于根据分发模块806所发送的编码请求生成编码子任务,并将编码子任务下发给每个编码服务器,每个编码服务器接收来自分发模块806的子区域图像,根据管理模块804下发的编码子任务而对接收到的子区域图像流数据进行第二编码方式的编码而获得编码图像,顺序输出编码图像而形成编码视频流。
在一个实施例中,每个视频帧图像所划分出的子区域图像携带有位置信息,该位置信息用于确定该子区域图像在视频原始采集数据中的视频帧图像中的位置。在一个实施例中,每个视频帧图像所划分出的子区域图像可以携带有图像标识,而管理模块804可以用于记录图像标识相对应的位置信息,该位置信息用于确定子区域图像在视频原始采集数据中的视频帧图像中的位置。
本实施例中,从相同位置处划分出的子区域图像分配给相同的编码服务器地址,而不同位置处划分出的子区域图像则分配给不同的编码服务器地址,这样可以使得合流模块808实现高效地将每个编码服务器输出的编码视频流进行合并,进一步提高编码效率。
在一个实施例中,合流模块808还用于获取每个编码服务器输出的编码视频流中的编码图像所对应的子区域图像相对于所属视频帧图像的位置信息;根据位置信息而将每个编码服务器输出的编码视频流合并以获得目标视频流。
具体地,每个编码服务器输出的编码视频流中的编码图像,与输入该编码服务器的子区域图像流数据中的子区域图像是对应的,编码图像的位置信息也就是相应的子区域图像的位置信息。
合流模块808可以用于获取每个视频帧图像所划分出的子区域图像所携带的位置信息,或者获取每个视频帧图像所划分出的子区域图像所携带的图像标识所对应的位置信息。
合流模块808用于按照原始采集数据的每个视频帧图像被划分为多个子区域图像的划分方式,将每个编码服务器输出的编码视频流合并以获得目标视频流。参照图6,子区域图像611、612、613以及614,在编码后获得编码图像后合流模块808也是按照图6中子区域图像的位置关系进行合并,以此类推,其它编码图像也按照相应的子区域图像在相应的视频帧图像中的位置关系进行合并,获得目标视频流。
本实施例中,按照每个编码服务器输出的编码视频流中的编码图像所对应的子区域图像相对于所属视频帧图像的位置信息,来对每个编码服务器输出的编码视频流合并从而获得目标视频流,可以实现高效地将每个编码服务器输出的编码视频流进行合并,进一步提高编码效率。
参照图1,在一个实施例中,提供了一种视频编码系统100,包括分发服务器102、管理服务器104、编码服务器106和合流服务器108。其中分发服务器102与编码服务器106连接,编码服务器106与合流服务器108连接,且管理服务器104分别与分发服务器102、编码服务器106和合流服务器108连接。
分发服务器102用于接收编码请求端110发来的视频原始采集数据,或者,接收编码请求端110发来的对视频原始采集数据进行第一编码方式的压缩编码而获得的传输视频流。
编码请求端110是指具有编码需求而请求对视频进行编码的终端。编码请求端110可以是客户端,比如视频通话客户端或者视频互动客户端等;编码请求端110也可以是业务运营端,比如赛事直播运营端或者电视直播运营端等。
编码请求端110包括或者连接有视频采集设备,视频采集设备比如可以是摄像机、摄像头或者支持D3D的显卡。视频原始采集数据是指编码请求端110采集到的未经过压缩编码的视频原始数据。视频原始采集数据可以是摄像机或摄像头采集的视频数据,也可以是支持D3D的显卡所输出的D3D游戏视频数据。
编码请求端110可以用于直接将视频原始采集数据发送给分发服务器102,由分发服务器102接收。或者,编码请求端110也可以对视频原始采集数据进行第一编码方式的压缩编码,从而获得适合传输的传输视频流后,将传输视频流传输给分发服务器102,由分发服务器102接收。
这里第一编码方式所需资源要低于下述的第二编码方式所需资源。在一个实施例中,第一编码方式为编码为H.264格式的编码方式;第二编码方式为编码为H.265格式的编码方式。这里将视频原始采集数据编码成H.265格式相比编码成H.264格式所需资源要多很多。
具体是否要将视频原始采集数据进行第一编码方式的压缩编码再传输,可以根据实际需要选择。若编码请求端110为客户端,目前的通信网络还难以实现视频原始采集数据的实时传输,编码请求端110用于将视频原始采集数据进行第一编码方式的压缩编码再传输给分发服务器102。若编码请求端110为业务运营端,在网络状态良好时或者实时性要求不高时编码请求端110可以用于直接将视频原始采集数据发送给分发服务器102。
管理服务器104用于将视频原始采集数据的每个视频帧图像划分为多个子区域图像,或者,将传输视频流解码获得的视频原始采集数据的每个视频帧图像划分为多个子区域图像。
视频原始采集数据包括若干视频帧图像。若分发服务器102接收到的是视频原始采集数据,则分发服务器102用于向管理服务器104发送编码请求,管理服务器104用于根据该编码请求而将视频原始采集数据的每个视频帧图像划分为多个子区域图像。或者,若分发服务器102接收到的是传输视频流,则分发服务器102用于将传输视频流进行解码而获得视频原始采集数据,从而向管理服务器104发送编码请求,管理服务器104用于根据该编码请求而将解码获得的视频原始采集数据的每个视频帧图像划分为多个子区域图像。
子区域图像是指将一个视频帧图像划分为多个区域后该划分的区域中的图像。优选地,管理服务器104可以用于在将视频原始采集数据的每个视频帧图像划分为多个子区域图像时采用均匀划分,使得划分出的各个子区域图像的大小一致。比如,管理服务器104可以用于对视频原始采集数据的每个视频帧图像进行二等分、三等分、四等分、八等分等。举例来说,参照图4,视频原始采集数据的其中一个视频帧图像400,可以四等分为四个子区域图像分别为401、402、403和404。
分发服务器102还用于将每个视频帧图像所划分出的子区域图像传输给多个编码服务器106。视频原始采集数据的每个视频帧图像所划分出子区域图像的数量可以等于编码服务器106的数量,这样每个视频帧图像都可以分配给其中一个编码服务器106。当然视频原始采集数据的每个视频帧图像所划分出子区域图像的数量也可以不等于编码服务器的数量,此时分发服务器102可用于根据各个编码服务器106的负载情况来调度划分出的子区域图像给当前负载最低的编码服务器106。
编码服务器106用于接收来自分发服务器102的子区域图像,并据以进行第二编码方式的编码而输出编码视频流。
编码服务器106用于采用第二编码方式对从分发服务器102接收到的子区域图像进行编码,顺序输出形成编码视频流。编码服务器106用于将编码视频流输出给合流服务器108。
管理服务器104可以用于根据分发服务器102所发送的编码请求生成编码子任务,并将编码子任务下发给每个编码服务器106,每个编码服务器106用于接收来自分发服务器102的子区域图像,根据管理服务器104下发的编码子任务而对接收到的子区域图像进行第二编码方式的编码而获得编码图像,顺序输出编码图像而形成编码视频流。
在一个实施例中,每个视频帧图像所划分出的子区域图像携带有位置信息,该位置信息用于确定该子区域图像在视频原始采集数据中的视频帧图像中的位置。在一个实施例中,每个视频帧图像所划分出的子区域图像可以携带有图像标识,而管理服务器104可以用于记录图像标识相对应的位置信息,该位置信息用于确定子区域图像在视频原始采集数据中的视频帧图像中的位置。
合流服务器108用于将每个编码服务器106输出的编码视频流合并以获得目标视频流。
合流服务器108可从用于管理服务器104获取合流策略,从而根据该合流策略而将每个编码服务器106输出的编码视频流合并以获得目标视频流。这里合流是指将多个编码视频流合并而获得目标视频流的过程。目标视频流则是指将视频原始采集数据采用第二编码方式进行编码而获得的最终的视频流。合流策略包括如何将编码视频流合并而获得目标视频流的方案。合流策略可以包括子区域图像编码而成的编码图像所对应的位置信息。
在一个实施例中,合流服务器108还用于将目标视频流返回给编码请求端110;或者,用于向编码请求端110所指定的用户端120发送目标视频流。具体地,合流服务器108用于将目标视频流返回给编码请求端110还是编码请求端110所指定的用户端120,可根据实际需要来由编码请求端110在向分发服务器102发送视频原始采集数据或者传输视频流时指定。编码请求端110可以在发送视频原始采集数据或者传输视频流时携带目标终端的地址,从而使得合流服务器108在获得目标视频流之后发送给该目标终端。若该目标终端的地址为编码请求端110的地址,则合流服务器108用于返回目标视频流给编码请求端110。
上述视频编码系统100,通过将视频原始采集数据的每个视频帧图像划分为多个子区域图像,并发送给多个编码服务器106进行分布式地编码,最后将每个编码服务器106输出的编码视频流合并从而获得目标视频流。这样原本必须由单台设备才能进行的编码,可以通过多台编码服务器106来协作编码,极大地提高了编码效率。而且编码请求端110不需要进行最终复杂的第二编码方式的编码,对编码请求端110的硬件要求低,可以使得新的编码技术可以快速应用到民用领域。
在一个实施例中,管理服务器104还用于按照子区域图像在所属的视频帧图像中的位置,以从相同位置处划分出的子区域图像所形成的子区域图像流数据为单位分配编码服务器地址。分发服务器102还用于将每个子区域图像流数据分别传输给被分配的编码服务器地址所对应的编码服务器106。
具体地,本实施例中每个视频帧图像中采用相同的划分方式划分获得子区域图像。相应的视频帧图像是指该子区域图像被划分出来的视频帧图像。子区域图像所属的视频帧图像是指该子区域图像从该视频帧图像中划分出来。相同位置处划分出的子区域图像,是指这些子区域图像都是从所属的视频帧图像中的相同的位置划分出来,比如若是将视频帧图像四等分,则每个视频帧图像的左上角的子区域图像就可以形成一个子区域图像流数据。以子区域图像流数据为单位是指分别为每个子区域图像流数据分配不同的编码服务器地址。
参照图6,视频原始采集数据600包括顺序排列的若干视频帧图像610、620、630、640……。其中每个视频帧图像进行四等分,每个视频帧图像从四个位置划分出四个子区域图像。这样视频原始采集数据600各个视频帧图像的左上角位置的子区域图像分别为611、621、631、641……,形成一个子区域图像流数据,管理服务器104为该子区域图像流数据分配一个编码服务器地址。不同的子区域图像流数据分配不同的编码服务器地址,比如管理服务器104为子区域图像612、622、632、642……所形成的子区域图像流数据分配另一个编码服务器地址。
具体地,参照图6,分发服务器102将一个子区域图像流数据611、621、631、641……传输给该子区域图像流数据被分配的编码服务器地址所对应的编码服务器106,另一个子区域图像流数据612、622、632、642……则传输给其被分配的另一个编码服务器地址所对应的编码服务器106。以此类推,将每个子区域图像流数据分别传输给不同的编码服务器106。
管理服务器104可以用于根据分发服务器102所发送的编码请求生成编码子任务,并将编码子任务下发给每个编码服务器106,每个编码服务器106接收来自分发服务器102的子区域图像,根据管理服务器104下发的编码子任务而对接收到的子区域图像流数据进行第二编码方式的编码而获得编码图像,顺序输出编码图像而形成编码视频流。
在一个实施例中,每个视频帧图像所划分出的子区域图像携带有位置信息,该位置信息用于确定该子区域图像在视频原始采集数据中的视频帧图像中的位置。在一个实施例中,每个视频帧图像所划分出的子区域图像可以携带有图像标识,而管理服务器104可以记录图像标识相对应的位置信息,该位置信息用于确定子区域图像在视频原始采集数据中的视频帧图像中的位置。
本实施例中,从相同位置处划分出的子区域图像分配给相同的编码服务器地址,而不同位置处划分出的子区域图像则分配给不同的编码服务器地址,这样可以使得合流服务器108实现高效地将每个编码服务器106输出的编码视频流进行合并,进一步提高编码效率。
在一个实施例中,合流服务器108还用于获取每个编码服务器106输出的编码视频流中的编码图像所对应的子区域图像相对于所属视频帧图像的位置信息;根据位置信息而将每个编码服务器106输出的编码视频流合并以获得目标视频流。
具体地,每个编码服务器106输出的编码视频流中的编码图像,与输入该编码服务器106的子区域图像流数据中的子区域图像是对应的,编码图像的位置信息也就是相应的子区域图像的位置信息。
合流服务器108可以用于获取每个视频帧图像所划分出的子区域图像所携带的位置信息,或者获取每个视频帧图像所划分出的子区域图像所携带的图像标识所对应的位置信息。
具体地,合流服务器108按照原始采集数据的每个视频帧图像被划分为多个子区域图像的划分方式,将每个编码服务器106输出的编码视频流合并以获得目标视频流。
本实施例中,按照每个编码服务器106输出的编码视频流中的编码图像所对应的子区域图像相对于所属视频帧图像的位置信息,来对每个编码服务器106输出的编码视频流合并从而获得目标视频流,可以实现高效地将每个编码服务器106输出的编码视频流进行合并,进一步提高编码效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。