一种基于分布式分析的视频编码方法和装置

文档序号:1759073 发布日期:2019-11-29 浏览:28次 >En<

阅读说明:本技术 一种基于分布式分析的视频编码方法和装置 (A kind of method for video coding and device based on distributed analysis ) 是由 包佳晶 石小明 周昕 纪成明 于 2019-09-20 设计创作,主要内容包括:本申请提供一种基于分布式分析的视频编码方法和装置,应用于视频编码系统中的控制服务器,所述方法包括:分别向M个编码服务器发送时间同步信号和编码任务信号,所述时间同步信号用于使得所述M个编码服务器能够时间同步,所述编码任务信号用于指示待编码视频中需要编码的帧及其帧类型,发给不同的编码服务器的所述需要编码的帧不同,以使所述M个编码服务器能够同时对各自需要编码的帧按照该帧对应的帧类型进行编码,得到编码后的当前码流;M为大于等于2的正整数;接收所述M个编码服务器返回的所述当前码流;基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接,在保证编码压缩率的基础上,提高编码效率。(The application provides a kind of method for video coding and device based on distributed analysis, applied to the control server in video coding system, the described method includes: respectively to M encoder server sending time synchronization signal and encoding tasks signal, the time synchronizing signal is for enabling the M encoder server time synchronization, the encoding tasks signal is used to indicate the frame in video to be encoded needed to encode and its frame type, the frame for issuing the needs coding of different encoder servers is different, so that the M encoder server can be simultaneously to respectively needing the frame encoded to encode according to the corresponding frame type of the frame, current code stream after being encoded;M is the positive integer more than or equal to 2;Receive the current code stream that the M encoder server returns;Based on the sequencing of each frame in the video to be encoded, the current code stream is spliced, on the basis of guaranteeing compression rates, improves code efficiency.)

一种基于分布式分析的视频编码方法和装置

技术领域

本申请涉及视频编码技术领域,具体而言,涉及一种基于分布式分析的视频编码方法和装置。

背景技术

当前,随着视频分辨率越来越高,编码标准越来越复杂,对硬件平台的要求也越来越高,硬件平台的发展速度跟不上编码器的需求,必然导致优秀的编码标准需要通过降低压缩率才能在现有的硬件平台上实施,继而无法发挥优秀编码标准的特性。

AVS3编码标准是我国自主研发的应对市场上越来越多的8K/4K这种超高清压缩需求的优秀编码标准,在压缩性能上可以满足市场的基本需求,但是在硬件平台的限制上,性能得不到良好的发挥。面对未来的[email protected]的编码需求,目前还没有找到可以实现的硬件平台。

目前的视频编码技术可以分为两个大类。第一类,拆减算法,牺牲算法压缩性能,这种处理方式在[email protected]的情况下牺牲大量的编码压缩率,找到目前最强的中央处理器(Central Processing Unit,CPU)才能实现实时编码,但是面对AVS3的[email protected]的编码需求,就算继续进行算法拆减,编码延时也比较大。第二类,通过将视频拆分为一段一段进行并行编码,其中,每段包括多帧,编码压缩率低,编码服务器在第i段中的所有帧全部接收完后才能开始接收第i+1段中的帧,因此,编码服务器在第i段中的所有帧全部接收完后才能对第i+1段中的帧进行编码,这种方式会导致编码延时大。

申请内容

鉴于此,本申请实施例的目的在于提供一种基于分布式分析的视频编码方法和装置,以在保证编码压缩率的基础上,降低编码延时,提高编码效率。

第一方面,本申请实施例提供一种基于分布式分析的视频编码方法,应用于视频编码系统中的控制服务器,所述方法包括:分别向M个编码服务器发送时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述M个编码服务器能够时间同步,所述编码任务信号用于指示待编码视频中需要编码的帧及其帧类型,发给不同的编码服务器的所述需要编码的帧不同,以使所述M个编码服务器能够同时对各自需要编码的帧按照该帧对应的帧类型进行编码,得到编码后的当前码流;其中,M为大于等于2的正整数;接收所述M个编码服务器返回的所述当前码流;基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

在上述实现过程中,通过控制服务器控制M个编码服务器对一个待编码视频进行分布式协同编码,共同完成对待编码视频的不同帧进行编码,可以理解的是,在同一时刻,有M个编码服务器在对待编码视频的不同的帧进行编码,其中,M为大于等于2的正整数,因此,编码延时不大,且编码效率高,同时,与现有技术中将视频拆分为一段一段并在一台服务器上进行单独编码,其中,每段包括多帧,且该服务器在第i段中的所有帧全部接收完后才能对第i+1段中的帧进行编码相比,每个编码服务器对待编码视频进行一帧一帧的编码,编码延时不大,且编码压缩率高。

基于第一方面,在一种可能的设计中,针对每个编码服务器,该编码服务器的所述需要编码的帧是按照预设帧间隔从所述待编码视频中确定出的,其中,该编码服务器的所述需要编码的帧中的相邻两帧之间的帧间隔为所述预设帧间隔。

在上述实现过程中,由于每台编码服务器所述需要编码的帧中的相邻两帧之间的帧间隔为所述预设帧间隔,继而能够保证每台编码服务器需要编码的帧中的第一帧之间的帧间隔不大,继而能够提高编码压缩率。

第二方面,本申请实施例提供一种基于分布式分析的视频编码方法,应用于视频编码系统中的任一个编码服务器,所述方法包括:接收待编码视频;接收控制服务器发送的时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述编码服务器能够和所述编码系统中的其它编码服务器时间同步;所述编码任务信号用于指示所述编码服务器需要编码的帧及其帧类型;基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧;基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流;将所述当前码流发送至所述控制服务器,以使所述控制服务器基于所述需要编码的帧的先后顺序对所述当前码流进行拼接。

在上述实现过程中,通过控制服务器控制编码系统中的编码服务器和其它编码服务器对一个待编码视频进行分布式协同编码,共同完成对待编码视频的编码,可以理解的是,在同一时刻,有至少两台编码服务器在对待编码视频的不同的帧进行编码,因此,编码延时不大,且编码效率高,每台编码服务器在编完一帧后,将编码产生的码流发送至控制服务器进行拼接,因此,编码效率高,同时,与现有技术中将视频拆分为一段一段并在一台服务器上进行单独编码相比,其中,每段包括多帧,本申请通过利用每个编码服务器对待编码视频进行一帧一帧的编码,因此,编码延时不大,且编码压缩率高。

基于第二方面,在一种可能的设计中,所述编码服务器需要编码的帧是按照预设帧间隔从所述待编码视频中确定出的,其中,所述编码服务器需要编码的帧中的相邻两帧之间的帧间隔为所述预设帧间隔。

在上述实现过程中,由于所述编码服务器所述需要编码的帧中的相邻两帧之间的帧间隔为所述预设帧间隔,继而保证所述编码服务器需要编码的帧的第一帧与所述编码系统中的其它编码服务器中的每台编码服务器需要编码的帧第一帧之间的帧间隔不大,继而能够提高编码压缩率。

基于第二方面,在一种可能的设计中,基于所述当前时刻所述需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流,包括:确定所述当前时刻需要编码的帧的帧类型是否为I帧;在确定是所述I帧时,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

在上述实现过程中,由于帧类型不为I帧的待编码帧需要依靠参考帧进行编码来保证编码压缩率,帧类型为I帧的待编码帧不需要依靠参考帧进行编码来保证编码压缩率,因此,在所述当前时刻需要编码的帧的帧类型为I帧时,直接对所述当前时刻所需编码的帧进行编码,无需等待获取到参考帧后再进行编码,因此,通过上述方式能够保证压缩率的同时,提高编码效率。

基于第二方面,在一种可能的设计中,所述编码任务信号还包括:每个需要编码的帧对应的参考帧序号,基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流,包括:确定所述当前时刻需要编码的帧的帧类型是否为I帧;在确定不是所述I帧时,获取与所述当前时刻需要编码的帧的对应的参考帧序号;获取与所述对应的参考帧序号对应的参考帧;其中,所述对应的参考帧为所述编码服务器编码产生的码流或者为所述编码系统中的其它编码服务器编码产生并发送给所述编码服务器的码流;基于所述对应的参考帧,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

在上述实现过程中,由于帧类型不为I帧的待编码帧需要依靠参考帧进行编码来保证编码压缩率,同时,参考帧的选取对编码压缩率也会产生一定的影响,因此,在所述当前时刻需要编码的帧的帧类型不为I帧时,通过获取与所述当前时刻需要编码的帧的对应的参考帧序号,继而获取与所述对应的参考帧序号对应的参考帧来对所述当前时刻需要编码的帧进行编码,保证参考帧获选取的合理性,同时利用参考帧来进行编码,提高编码压缩率。

基于第二方面,在一种可能的设计中,在对所述当前时刻需要编码的帧进行编码之前,所述方法还包括:确定所述对应的参考帧为完整的帧。

在上述实现过程中,由于参考帧的完整性直接影响编码压缩率,因此,在利用获取到的所述对应的参考帧进行编码时,需要确定所述对应的参考帧是否为完整的帧,继而在所述对应的参考帧为完整的帧时才利用所述对应的参考帧进行编码,提高编码压缩率。

基于第二方面,在一种可能的设计中,所述编码任务信号还包括:重建帧传输地址,在得到编码后的当前码流之后,所述方法还包括:确定是否存在与所述当前时刻所需编码的帧对应的重建帧传输地址;在确定存在所述对应的重建帧传输地址时,将所述当前码流发送至所述对应的重建帧传输地址对应的编码服务器。

在上述实现过程中,由于其它编码服务器在对当前时刻所需编码的帧进行编码时可能会需要编码服务器发送的码流来作为参考帧,因此,通过上述方式,在确定存在所述对应的重建帧传输地址时,将所述当前码流发送至所述对应的重建帧传输地址对应的编码服务器,继而保证所述对应的编码服务器能够基于所述当前码流进行编码。

基于第二方面,在一种可能的设计中,基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流,包括:将所述当前时刻需要编码的帧划分为N个行CTU单元;其中,N为大于等于2的正整数;基于所述当前时刻需要编码的帧的帧类型,对第t行CTU单元进行编码,得到第t个编码后的子码流;其中,t取1至N。

在上述实现过程中,在将所述当前时刻所需编码的帧划分为N个行CTU单元后,由于每行CTU单元的帧类型相同,因此,与对每个CTU单元进行单独编码相比,通过对N行CTU单元一行一行的进行编码,能够提高编码效率。

第三方面,本申请实施例提供一种基于分布式分析的视频编码装置,应用于视频编码系统中的控制服务器,所述装置包括:编码信号发送单元,用于分别向M个编码服务器发送时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述M个编码服务器能够时间同步,所述编码任务信号用于指示待编码视频中需要编码的帧及其帧类型,发给不同的编码服务器的所述需要编码的帧不同,以使所述M个编码服务器能够同时对各自需要编码的帧按照该帧对应的帧类型进行编码,得到编码后的当前码流;其中,M为大于等于2的正整数;接收单元,用于接收所述M个编码服务器返回的所述当前码流;拼接单元,用于基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

第四方面,本申请实施例提供一种基于分布式分析的视频编码装置,应用于视频编码系统中的任一个编码服务器,所述装置包括:视频接收单元,用于接收待编码视频;编码信号接收单元,用于接收控制服务器发送的时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述编码服务器能够和所述编码系统中的其它编码服务器时间同步;所述编码任务信号用于指示所述编码服务器需要编码的帧及其帧类型;帧获取单元,用于基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧;编码单元,用于基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流;码流发送单元,用于将所述当前码流发送至所述控制服务器,以使所述控制服务器基于所述需要编码的帧的先后顺序对所述当前码流进行拼接。

基于第四方面,在一种可能的设计中,所述编码单元,还用于确定所述当前时刻需要编码的帧的帧类型是否为I帧;以及在确定是所述I帧时,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

基于第四方面,在一种可能的设计中,所述编码任务信号还包括:每个需要编码的帧对应的参考帧序号,所述编码单元,还用于确定所述当前时刻需要编码的帧的帧类型是否为I帧;在确定不是所述I帧时,获取与所述当前时刻需要编码的帧的对应的参考帧序号;获取与所述对应的参考帧序号对应的参考帧;其中,所述对应的参考帧为所述编码服务器编码产生的码流或者为所述编码系统中的其它编码服务器编码产生并发送给所述编码服务器的码流;以及基于所述对应的参考帧,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

基于第四方面,在一种可能的设计中,所述装置还包括:确定单元,用于确定所述对应的参考帧为完整的帧。

基于第四方面,在一种可能的设计中,所述装置还包括:地址确定单元,用于确定是否存在与所述当前时刻所需编码的帧对应的重建帧传输地址;码流发送子单元,用于在确定存在所述对应的重建帧传输地址时,将所述当前码流发送至所述对应的重建帧传输地址对应的编码服务器。

基于第四方面,在一种可能的设计中,所述编码单元,还用于将所述当前时刻需要编码的帧划分为N个行CTU单元;其中,N为大于等于2的正整数;以及基于所述当前时刻需要编码的帧的帧类型,对第t行CTU单元进行编码,得到第t个编码后的子码流;其中,t取1至N。

第五方面,本申请实施例提供一种视频编码系统,所述视频编码系统包括:控制服务器和M个编码服务器,所述控制服务器和所述M个编码服务器通信连接,所述M个编码服务器之间通信连接;所述控制服务器,用于分别向所述M个编码服务器发送时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述M个编码服务器能够时间同步,所述编码任务信号用于指示待编码视频中需要编码的帧及其帧类型,发给不同的编码服务器的所述需要编码的帧不同,以使所述M个编码服务器能够同时对各自需要编码的帧按照该帧对应的帧类型进行编码,得到编码后的当前码流;其中,M为大于等于2的正整数;每个编码服务器,用于接收所述待编码视频;每个编码服务器,还用于接收所述时间同步信号和所述编码任务信号;每个编码服务器,还用于基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧;每个编码服务器,还用于基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流;每个编码服务器,还用于将所述当前码流发送至所述控制服务器;所述控制服务器,还用于接收所述M个编码服务器返回的所述当前码流;所述控制服务器,还用于基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

第六方面,本申请实施例提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行第一方面和第二方面所述的方法。

本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1为本申请实施例提供的一种视频编码系统的结构示意图,所述系统包括:控制服务器和M个编码服务器,其中,所述M为大于等于2的正整数,M可以为2、3、4、5等正整数,为了方便描述,在本申请实施例中,所述M个编码服务器包括:编码服务器1和其它编码服务器,其中,所述其它编码服务器包括:编码服务器2、编码服务器3和编码服务器4,所述控制服务器和所述M个编码服务器通信连接,所述M个编码服务器之间通信连接。

所述控制服务器,用于分别向所述M个编码服务器发送时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述M个编码服务器能够时间同步,所述编码任务信号用于指示待编码视频中需要编码的帧及其帧类型,发给不同的编码服务器的所述需要编码的帧不同,以使所述M个编码服务器能够同时对各自需要编码的帧按照该帧对应的帧类型进行编码,得到编码后的当前码流;其中,M为大于等于2的正整数。

每个编码服务器,用于接收所述待编码视频。

每个编码服务器,还用于接收所述时间同步信号和所述编码任务信号。

每个编码服务器,还用于基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧。

每个编码服务器,还用于基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流。

每个编码服务器,还用于将所述当前码流发送至所述控制服务器。

所述控制服务器,还用于接收所述M个编码服务器返回的所述当前码流。

所述控制服务器,还用于基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

请参照图2,图2为本申请实施例提供的一种基于分布式分析的视频编码方法的流程图,所述方法应用于所述编码系统,由于所述M个编码服务器中的每个编码服务器在接收到所述时间同步信号和所述编码任务信号后的编码方法相同,因此,为了方便描述,下面将对所述M个编码服务器中的所述编码服务器1的编码方法进行介绍,所述方法包括:

S100:所述编码服务器1接收待编码视频。

S200:所述控制服务器向所述编码服务器1发送时间同步信号和编码任务信号;其中,所述时间同步信号用于使得所述编码服务器1能够和所述编码系统中的其它编码服务器时间同步;所述编码任务信号用于指示所述编码服务器1需要编码的帧及其帧类型;

S300:所述编码服务器1接收所述控制服务器发送的所述时间同步信号和所述编码任务信号。

S400:所述编码服务器1基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧;

S500:所述编码服务器1基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流。

S600:所述编码服务器1将所述当前码流发送至所述控制服务器。

S700:所述控制服务器接收所述当前码流。

S800:所述控制服务器基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

其中,S100和S200的执行顺序不作限定。

下面对上述方式进行详细介绍:

S100:所述编码服务器1接收待编码视频。

在实际实施过程中,在需要对某一待编码视频进行编码时,视频源发送服务器所述待编码视频分别发送给所述M个待编码服务器中的每个编码服务器,可以理解的是,每个编码服务器接收到的待编码视频相同,因此,在所述视频源服务器将所述待编码视频发送给所述编码服务器1后,所述编码服务器1接收所述待编码视频。其中,在本实施例中,所述待编码视频的格式为YUV格式。在其他实施例中,所述待编码视频也可以为其它格式,所述待编码视频的格式不作限制。

其中,YUV中的“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。

S200:所述控制服务器向所述编码服务器1发送时间同步信号和编码任务信号;其中,所述时间同步信号用于使得所述编码服务器1能够和所述编码系统中的其它编码服务器时间同步;所述编码任务信号用于指示所述编码服务器1需要编码的帧及其帧类型;其中,帧的类型包括I帧、B帧和P帧。

作为一种实施方式,该编码服务器的所述需要编码的帧是按照预设帧间隔从所述待编码视频中确定出的,其中,该编码服务器的所述需要编码的帧中的相邻两帧之间的帧间隔为所述预设帧间隔。

在需要对所述待编码视频进行编码时,所述控制服务器确定所述待编码视频的时长和每帧的时长的商为所述待编码视频包含的帧的总数量,所述控制服务器确定出所述M个编码服务器的数量;其中,在本实施例中,每帧的时长为10ms,10ms为经验值,在其它实施例中,每帧的时长也可以设置为其它值,每帧的时长越短,编码耗时越长,但是编码质量越高;所述预设帧间隔数为所述M个编码服务器的数量。针对M个编码服务器中的第i个编码服务器,所述控制服务器将所述待编码视频中的第i帧,第M+i帧,第M*2+i帧,…,和第M*K+i帧作为所述第i个编码服务器需要编码的帧。其中,i取1至M。其中,M个编码服务器总共编码的帧的数量为所述待编码视频的帧的总数量。在其他实施例中,所述预设帧间隔数也可以为其他值。

作为一种实施方式,所述控制服务器在确定出所述帧的总数量之后,所述控制服务器基于所述帧的总数量确定出所述M个编码服务器的数量,以使所述帧的总数量大于所述M个编码服务器的数量;将所述帧的总数量与所述M个编码服务器的商L确定为每个编码服务器需要编码的帧的数量,针对每个编码服务器,所述控制服务器从所述待编码视频中确定出L帧作为该编码服务器需要编码的帧。

例如,在M=3,假设待编码视频中包括有12帧时,每个编码服务器需要编码的帧为4帧。可以确定编码服务器1需要编码的帧为第一帧、第六帧、第七帧和第十二帧;编码服务器2需要编码的帧为第二帧、第五帧、第八帧和第十一帧;编码服务器3需要编码的帧为第三帧、第四帧、第九帧和第十帧。

其中,表示所述编码任务信号中用于指示所述编码服务器1需要编码的帧的表示方式可以用每帧的时长和帧的序号的表示,例如,在所述编码服务器1需要编码的帧为第一帧、第三帧和第五帧时,若每帧的时长为10ms,可以理解的是,第一帧为0ms-10ms,第三帧为20ms-30ms,第五帧为40ms-50ms,那么,所述编码任务信号中用于指示所述编码服务器1需要编码的帧的表示方式可以用每帧的时长10ms、帧序号第一帧、第五帧和第九帧表示。

作为一种实施方式,表示所述编码任务信号中用于指示所述编码服务器1需要编码的帧的表示方式可以用时间信息表示,例如,在所述编码服务器1需要编码的帧为第一帧、第三帧和第五帧时,若每帧的时长为10ms,可以理解的是,第一帧为0ms-10ms,第二帧为20ms-30ms,第五帧为40ms-50ms,那么,所述编码任务信号中用于指示所述编码服务器1需要编码的帧的表示方式可以用0ms-10ms、20ms-30ms和40ms-50ms表示。

在需要对所述待编码视频进行编码时,为了使得所述编码系统中的所述M个编码服务器能够对所述待编码视频进行分布式协同编码,每个编码服务器能够负责对所述待编码视频中的不同的帧进行编码,每个编码服务器编码的帧完全不同,以降低编码延时,提高编码效率,因此,为了保证每个编码服务器能够从所述待编码视频中获取正确的帧,所述控制服务器需要向所述编码服务器1发送时间同步信号,以使所述编码服务器1和所述其它编码服务器在任何时刻均保持时间一致,即所述编码服务器1和所述其它编码服务器获取到的所述待编码视频处于同一时间参考系。

由于一个待编码视频由多个帧组成,每帧对应的时间信息完全不同,因此,根据时间信息就可以从所述待编码视频中获取相应的帧,其中,在本实施例中,每帧的时长为10ms,10ms为经验值,在其它实施例中,每帧的时长也可以设置为其它值,每帧的时长越短,编码耗时越长,但是编码质量越高,由于编码服务器1仅需对所述待编码视频中的部分帧进行编码,不同帧类型的帧对应的编码方式可能不同,因此,所述控制服务器需要向所述编码服务器1发送编码任务信号,其中,所述编码任务信号包括:所述编码服务器1需要编码的帧的时间信息,以及与每个需要编码的帧对应的帧类型。

假设总共有所述待编码视频总共有8帧,第一帧为0ms-10ms,第二帧为10ms-20ms,第三帧为20ms-30ms,第四帧为30ms-40ms,第五帧为40ms-50ms,第六帧为50ms-60ms,第七帧为60ms-70ms,第八帧为70ms-80ms,假设控制服务器需要编码服务器1对所述待编码视频中的第一帧和第五帧进行编码时,控制服务器向所述编码服务器1发送的编码任务信号中包括:需要编码的第一帧的时间信息0ms-10ms、第一帧的帧类型为I帧和需要编码的第五帧的时间信息40ms-50ms、第五帧的帧类型为B帧。

S300:所述编码服务器1接收所述控制服务器发送的所述时间同步信号和所述编码任务信号。

在所述控制服务器发送所述时间同步信号和所述编码任务信号给所述编码服务器1之后,所述编码服务器1接收所述编码任务信号和所述时间同步信号。

S400:所述编码服务器1基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧。

所述编码服务器1在获取到所述时间同步信号和所述编码任务信号之后,所述编码服务器1根据所述时间同步信号中的时间信息进行时间同步,在时间同步之后,所述编码服务器1从所述编码任务信号中获取需要编码的帧的时间信息和每个需要编码的帧的帧类型,并基于所述需要编码的帧的时间信息先后顺序,从所述待编码视频中获取当前时刻需要编码的帧。

例如,在编码服务器1需要编码的第一帧的时间信息0ms-10ms和需要编码的第五帧的时间信息40ms-50ms时,编码服务器1首先从所述待编码视频中获取与时间信息0ms-10ms对应的第一帧,即所述第一帧为所述当前时刻需要编码的帧,在编码服务器1对所述第一帧编码完之后,编码服务器1从所述待编码的视频中获取与时间信息40ms-50ms对应的第五帧,即所述第五帧为当前时刻需要编码的帧。

S500:所述编码服务器1基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流。

在获取到所述当前时刻所需编码的帧之后,作为一种实施方式,S500包括步骤:A和B。

A:将所述当前时刻需要编码的帧划分为N个行编码数单元(Coding Tree Unite,CTU)单元;其中,N为大于等于2的正整数。

在对所述当前时刻所需编码的帧进行编码时,需要将所述当前时刻需要编码的帧以CTU为单元进行划分,得到N个行CTU单元,其中,每个行CTU单元包括L个CTU单元,其中,L为大于等于2的正整数。一个CTU单元的尺寸大小根据实际需求设定。

B:基于所述当前时刻需要编码的帧的帧类型,对第t行CTU单元进行编码,得到第t个编码后的子码流;其中,t取1至N。

由于属于同一行的每个CTU单元的帧类型相同,因此,在得到N个行CTU单元之后,为了提高编码效率,在编码时,以行为单位对所述N个行CTU单元中的每行CTU单元进行依次编码,相当于执行一次编码就能实现对一个行CTU单元的编码,也可以对N个行CTU单元进行并行的编码,由于帧类型为I帧的待编码帧不需要依靠参考帧进行编码来保证编码压缩率,帧类型不为I帧的待编码帧需要依靠参考帧进行编码来保证编码压缩率,因此,在对所述N个行CTU单元中的第t行CTU单元进行编码时,其中,t依次取1至N,需要基于所述第t行CTU单元的帧类型对所述第t行CTU单元进行编码,得到第t个编码后的子码流,确定t是否为N,在确定t为N时,表征已完成所述N个行CTU单元的编码,得到N个编码后的子码流,完成对所述当前时刻所需编码的帧的编码。其中,在本实施例中,对所述第t行CTU单元进行编码时所采用的编码框架为AVS3编码框架,由于AVS3编码框架为现有技术,因此在此不再赘述。

作为一种实施方式,可以对N个行CTU单元并行编码。

作为一种实施方式,在得到N个行CTU单元之后,编码服务器1依次对每行CTU单元中的每个CTU单元进行编码,可以理解的是,执行一次编码仅能实现对一个CTU单元的编码,在对每个CTU单元进行编码时,所采用的编码方式请参照步骤B,因此不再赘述。

由于帧类型为I帧的待编码帧不需要依靠参考帧进行编码来保证编码压缩率,因此,在确定出所述当前时刻所需编码的帧之后,作为一种实施方式,S500包括步骤:C和D。

C:确定所述当前时刻需要编码的帧的帧类型是否为I帧。

由于所述编码任务信号包括:所述编码服务器1需要编码的帧的时间信息,以及与每个需要编码的帧对应的帧类型,因此,在获取到所述编码任务信号之后,且在确定出当前时刻所需编码的帧时,从所述编码任务信号中获取与所述当前时刻所需编码的帧对应的帧类型,继而确定所述当前时刻需要编码的帧的帧类型是否为I帧。

D:在确定是所述I帧时,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

在确定所述当前时刻所需编码的帧为所述I帧时,表征所述当前时刻所需编码的帧不需要依靠参考帧进行编码来保证压缩率,继而直接对所述当前时刻需要编码的帧进行编码,得到所述当前码流,其中,对所述当前时刻需要编码的帧进行编码的方式可以采用步骤A和B的方式进行,因此,在此不再赘述。

由于帧类型不为I帧的待编码帧需要依靠参考帧进行编码来保证编码压缩率,同时,参考帧的选取对编码压缩率也会产生一定的影响,因此,作为一种实施方式,所述编码任务信号还包括:每个需要编码的帧对应的参考帧序号,S500包括步骤:E、F、G和H。

E:确定所述当前时刻需要编码的帧的帧类型是否为I帧。

其中,E的具体实施方式请参照步骤C,在此不再赘述。

F:在确定不是所述I帧时,获取与所述当前时刻需要编码的帧的对应的参考帧序号。

由于所述编码任务信号还包括:每个需要编码的帧对应的参考帧序号,可以理解的是,每个需要编码的帧对应的参考帧序号和该帧的时间信息对应,一个需要编码的帧只能对应一个参考帧序号,但是,一个参考帧序号可以对应至少两个需要编码的帧,因此,在确定不是所述I帧时,在确定所述当前时刻所需编码的帧不为所述I帧时,表征所述当前时刻所需编码的帧需要依靠参考帧进行编码来保证压缩率,继而需要从所述编码任务信号中获取与所述当前时刻需要编码的帧的对应的参考帧序号。

G:获取与所述对应的参考帧序号对应的参考帧;其中,所述对应的参考帧可以为所述编码服务器编码产生的码流,也可以为所述编码系统中其它编码服务器编码产生并发送给所述编码服务器的码流。

其中,所述对应的参考帧可以为所述编码服务器1编码产生的码流,也可以为所述编码系统中的其它编码服务器编码产生并发送给所述编码服务器1的码流。可以理解为,针对每个需要编码的帧,编码服务器1在完成该需要编码的帧的编码,得到对应的码流之后,在所述对应的码流中添加参考帧序号的标记,将标记后的码流保存至所述编码服务器1,并将标记后的码流发送给所述编码系统中的其它编码服务器中的每个编码服务器。

因此,所述编码服务器1在获取到所述对应的参考帧序号之后,从所述编码服务器1中查找是否存在包含所述对应的参考帧序号的码流,其中,在查找出包含所述对应的参考帧序号的码流时,获取与所述对应的参考帧序号对应的参考帧,其中,所述对应的参考帧为包含所述对应的参考帧序号的码流。

作为一种实施方式,针对每个需要编码的帧,编码服务器1在完成该需要编码的帧的编码,得到对应的码流之后,建立所述对应的码流和参考帧序号的对应关系,并将所述对应关系发送给所述其它编码服务器。

因此,所述编码服务器1在获取到所述对应的参考帧序号之后,从所述编码服务器1中的所述对应关系中查找与所述对应的参考帧序号对应的码流,其中,在查找出与所述对应的参考帧序号对应的码流时,获取与所述对应的参考帧序号对应的参考帧。其中,所述对应的参考帧为与所述对应的参考帧序号对应的码流。

作为一种实施方式,在所述编码服务器1中不存在与所述对应的参考帧序号对应的参考帧时,不对所述当前时刻需要编码的帧进行编码,直到所述编码服务器1中存在与所述对应的参考帧序号对应的参考帧时,利用所述对应的参考帧对所述当前时刻需要编码的帧进行编码。

H:基于所述对应的参考帧,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

在得到所述对应的参考帧之后,利用所述对应的参考帧对所述当前时刻需要编码的帧进行编码,得到所述当前码流。其中,利用所述对应的参考帧对所述当前时刻需要编码的帧进行编码的方法请参照步骤A和B,因此在此不再赘述。

S600:所述编码服务器1将所述当前码流发送至所述控制服务器。

在所述编码服务器1完成对所述当前时刻所需编码的帧的编码,得到所述当前码流之后,在所述当前码流中添加所述编码服务器的标识,与所述当前码流对应的所述时间信息,以对所述当前码流进行标记,所述编码服务器1将标记后的所述当前码流发送至所述控制服务器。

作为一种实施方式,得到所述当前码流之后,在所述当前码流中添加与所述当前码流对应的所述时间信息,以对所述当前码流进行标记,所述编码服务器1将标记后的所述当前码流发送至所述控制服务器。

S700:所述控制服务器接收所述当前码流。

在所述编码服务器1发送所述当前码流至所述控制服务器时,所述控制服务器接收所述当前码流。

S800:所述控制服务器基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

所述控制服务器在获得与所述待编码的视频对应的所***流之后,基于每个码流中携带的时间信息和所述时间信息的先后顺序,对所***流进行拼接,得到可解码的标准码流。

作为一种实施方式,所述控制服务器在获得与所述待编码的视频对应的所***流之后,基于每个码流中携带的表征所述待编码视频中的帧的先后顺序的帧序号,按照帧序号的大小顺序,对所***流进行拼接,得到可解码的标准码流。

由于其它编码服务器在对当前时刻所需编码的帧进行编码时可能会需要编码服务器1发送的码流来作为参考帧,也可能不需要编码服务器1发送的码流来作为参考帧,因此,作为一种实施方式,所述编码任务信号还包括:重建帧传输地址,其中,所述重建传输地址为因特网互联协议(Internet Protocol,IP)地址。可以理解的是,针对所述编码服务器1中的每个需要编码的帧,在需要将对该需要编码的帧编码产生的码流发送给其它编码服务器作为参考帧时,所述编码任务信号中才会包括:与该需要编码的帧对应的重建传输地址,以使所述编码服务器1能够将所述码流发送给与所述重建传输地址对应的服务器,因此,在S500之后,所述方法还包括步骤:K和L。

K:确定是否存在与所述当前时刻所需编码的帧对应的重建帧传输地址。

在获取到所述编码任务信号之后,且在确定所述当前时刻需要编码的帧之后,确定所述编码任务信号中是否存在与所述当前时刻需要编码的帧对应的重建传输地址。

L:在确定存在所述对应的重建帧传输地址时,将所述当前码流发送至所述对应的重建帧传输地址对应的编码服务器。

在得到与所述当前时刻需要编码的帧对应的完整码流之后,且在确定所述编码任务信号中存在所述对应的重建传输地址时,按照重建传输地址将所述码流发送至与所述对应的重建传输地址对应的编码服务器。

作为一种实施方式,在得到与所述当前时刻需要编码的帧的一行CTU单元对应的码流之后,且在确定所述编码任务信号中存在所述对应的重建传输地址时,按照重建传输地址将所述码流发送至与所述对应的重建传输地址对应的编码服务器。

作为一种实施方式,在得到与所述当前时刻需要编码的帧的一个CTU单元对应的码流之后,且在确定所述编码任务信号中存在所述对应的重建传输地址时,按照重建传输地址将所述码流发送至与所述对应的重建传输地址对应的编码服务器。

在利用获取到的所述对应的参考帧进行编码时,需要确定所述对应的参考帧是否为完整的帧,继而在所述对应的参考帧为完整的帧时利用所述对应的参考帧进行编码,以提高编码压缩率,因此,作为一种实施方式,在H之前,所述方法还包括:确定所述对应的参考帧为完整的帧。

其中,确定所述对应的参考帧是否为完整的帧的方式可以通过如下方式实施,将所述对应的参考帧中携带的表征该参考帧为完整的帧时应该具备的行数和所述对应的参考帧实际的行数进行比较,继而根据比较结果确定所述对应的参考帧为完整的帧,例如,在所述对应的参考帧为完整的帧时应该具备的行数为4,在所述对应的参考帧实际的行数小于等于3时,确定所述对应的参考帧不为完整的帧,只有在所述对应的参考帧的实际行数为4时,确定所述对应的参考帧为完整的帧。

为了方便理解,下面介绍一个详细的编码实施例,请参照图3,在所述M个编码服务器的数量为4时,假设编码服务器1仅对所述待编码视频的第一帧,第五帧,…,第4N+1帧进行编码,编码服务器2仅对所述待编码视频的第二帧,第六帧,…,第4N+2帧进行编码,编码服务器3仅对所述待编码视频的第二帧,第六帧,…,第4N+3帧进行编码,编码服务器4仅对所述待编码视频的第二帧,第六帧,…,第4N+4帧进行编码。

其中,第一帧的帧类型为I帧,第二帧、第三帧和第四帧均不为I帧,因此,在所述编码服务器1对所述第一帧进行编码,得到与所述第一帧对应的第一码流后,将所述第一码流分别发送给所述编码服务器2、所述编码服务器3和所述编码服务器4,所述编码服务2基于所述第一码流对所述第二帧进行编码,所述编码服务器3基于所述第一码流对所述第三帧进行编码,所述编码服务器4基于所述第一码流对所述第四帧进行编码。

在需要对第五帧至第4N+4帧中的第k帧进行编码时,且在第k帧的帧类型不为I帧时,利用编码第k-4帧产生的码流作为第k帧的参考帧,继而利用编码第k-4帧产生的码流对所述第k帧进行编码。其中,编码第k帧和编码第k-4帧所用的编码服务器相同。

请参照图4,本申请实施例提供一种基于分布式分析的视频编码装置,应用于视频编码系统中的控制服务器,所述装置包括:

编码信号发送单元410,用于分别向M个编码服务器发送时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述M个编码服务器能够时间同步,所述编码任务信号用于指示待编码视频中需要编码的帧及其帧类型,发给不同的编码服务器的所述需要编码的帧不同,以使所述M个编码服务器能够同时对各自需要编码的帧按照该帧对应的帧类型进行编码,得到编码后的当前码流;其中,M为大于等于2的正整数。

接收单元420,用于接收所述M个编码服务器返回的所述当前码流。

拼接单元430,用于基于所述待编码视频中的各个帧的先后顺序,对所述当前码流进行拼接。

请参照图5,本申请实施例提供另一种基于分布式分析的视频编码装置,应用于视频编码系统中的任一个编码服务器,所述装置包括:

视频接收单元510,用于接收待编码视频。

编码信号接收单元520,用于接收控制服务器发送的时间同步信号和编码任务信号,其中,所述时间同步信号用于使得所述编码服务器能够和所述编码系统中的其它编码服务器时间同步;所述编码任务信号用于指示所述编码服务器需要编码的帧及其帧类型。

帧获取单元530,用于基于所述需要编码的帧的先后顺序,从所述待编码视频中获取当前时刻需要编码的帧。

编码单元540,用于基于所述当前时刻需要编码的帧的帧类型,对所述当前时刻需要编码的帧进行编码,得到编码后的当前码流。

码流发送单元550,用于将所述当前码流发送至所述控制服务器,以使所述控制服务器基于所述需要编码的帧的先后顺序对所述当前码流进行拼接。

作为一种实施方式,所述编码单元540,还用于确定所述当前时刻需要编码的帧的帧类型是否为I帧;以及在确定是所述I帧时,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

作为一种实施方式,所述编码任务信号还包括:每个需要编码的帧对应的参考帧序号,所述编码单元540,还用于确定所述当前时刻需要编码的帧的帧类型是否为I帧;在确定不是所述I帧时,获取与所述当前时刻需要编码的帧的对应的参考帧序号;获取与所述对应的参考帧序号对应的参考帧;其中,所述对应的参考帧为所述编码服务器编码产生的码流或者为所述编码系统中的其它编码服务器编码产生并发送给所述编码服务器的码流;以及基于所述对应的参考帧,对所述当前时刻需要编码的帧进行编码,得到所述当前码流。

作为一种实施方式,所述装置还包括:确定单元,用于确定所述对应的参考帧为完整的帧。

作为一种实施方式,所述装置还包括:地址确定单元,用于确定是否存在与所述当前时刻所需编码的帧对应的重建帧传输地址;码流发送子单元,用于在确定存在所述对应的重建帧传输地址时,将所述当前码流发送至所述对应的重建帧传输地址对应的编码服务器。

作为一种实施方式,所述编码单元540,还用于将所述当前时刻需要编码的帧划分为N个行CTU单元;其中,N为大于等于2的正整数;以及基于所述当前时刻需要编码的帧的帧类型,对第t行CTU单元进行编码,得到第t个编码后的子码流;其中,t取1至N。

本实施例对的各功能单元实现各自功能的过程,请参见上述图1至图3所示实施例中描述的内容,此处不再赘述。

请参照图6,图6为本申请实施例提供的一种电子设备100的结构示意图,应用于上述基于分布式分析的视频编码方法,在本申请实施例中,所述电子设备100可以为图1中的控制服务器和/或编码服务器,电子设备100可以是平板电脑、个人数字助理(personaldigital assistant,PDA)等。

电子设备可以包括:存储器102、处理101和通信总线,通信总线用于实现这些组件的连接通信。

存储器102用于存储待编码视频、编码后的码流以及本申请实施例提供的基于分布式分析的视频编码方法及装置对应的计算程序指令等各种数据,其中,存储器102可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read OnlyMemory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。

处理器101用于读取并运行存储于存储器中的计算机程序指令时,执行本申请实施例提供的基于分布式分析的视频编码方法的步骤。

其中,处理器101可能是一种集成电路芯片,具有信号的处理能力。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。

此外,本申请实施例还提供了一种存储介质,在该存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行本申请任一项实施方式所提供的方法。

综上所述,本申请各实施例提出的一种基于分布式分析的视频编码方法和装置,通过控制服务器控制M个编码服务器对一个待编码视频进行分布式协同编码,共同完成对待编码视频的编码,可以理解的是,在同一时刻,有M个编码服务器在对待编码视频的不同的帧进行编码,其中,M为大于等于2的正整数,因此,编码延时不大,且编码效率高,同时,与现有技术中将视频拆分为一段一段并在一台服务器上进行单独编码相比,其中,每段包括多帧,每个编码服务器对待编码视频进行一帧一帧的编码,编码延时不大,且编码压缩率高。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:帧内帧间联合预测方法、装置、编解码器及存储装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类