CN114245143A - 编码方法、装置、系统、电子设备及存储介质 - Google Patents

编码方法、装置、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN114245143A
CN114245143A CN202010939880.4A CN202010939880A CN114245143A CN 114245143 A CN114245143 A CN 114245143A CN 202010939880 A CN202010939880 A CN 202010939880A CN 114245143 A CN114245143 A CN 114245143A
Authority
CN
China
Prior art keywords
encoding
video frames
coding
video
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010939880.4A
Other languages
English (en)
Inventor
文敢
段堃
李霞
杨名远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010939880.4A priority Critical patent/CN114245143A/zh
Publication of CN114245143A publication Critical patent/CN114245143A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开实施例公开了一种编码方法、装置、系统、电子设备及存储介质,所述方法包括:获取视频帧序列;将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。该技术方案能够保证多个编码设备并行编码,最终能够达到使用低端编码设备实现视频帧序列的高效率编码的目的。

Description

编码方法、装置、系统、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,具体涉及一种编码方法、装置、系统、电子设备及存储介质。
背景技术
随着视频行业的高速发展,高分辨率、高帧率的视频编码需求变得越来越主流,这间接导致编码芯片的复杂度越来越高,芯片面积也越来越大。从另一方面来讲,希望能够利用已经在线部署,成本较低且编码帧率较低的编码器同样能应用于高分辨率、高帧率的实时编码场景。因此,产生了利用多个较低性能的编码器联合编码,完成高分辨率、高帧率的编码任务的需求。
发明内容
本公开实施例提供一种编码方法、装置、系统、电子设备及存储介质。
第一方面,本公开实施例中提供了一种编码方法,包括:
获取视频帧序列;
将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;
其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。
进一步地,所述第一预设条件包括所述视频帧数量达到第一预定数量,和/或所述第一预定数量大于所述画面组的长度与预设视频帧数之和。
进一步地,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
在发送至其中一个所述编码设备的所述视频帧数量满足所述第一预设条件后,重复执行如下步骤:
从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,N为能够被所述子视频序列的长度和预设视频帧数整除的自然数。
进一步地,从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,包括:
根据从所述编码设备接收到的所述编码信息对应的第一总视频帧数确定第一目标编码设备;
从所述第一目标编码设备连续接收N个所述视频帧的编码信息;
根据向所述编码设备发送的第二总视频帧数确定第二目标编码设备;
向所述第二目标编码设备连续发送N个所述视频帧。
进一步地,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
以轮询调度方式每向一个所述编码设备发送第二预定数量个视频帧后,切换至下一所述编码设备发送第二预定数量个视频帧,所述第二预定数量为所述子视频序列的长度。
进一步地,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
以轮询调度方式每从一个所述编码设备接收第二预定数量个视频帧后,切换至下一个所述编码设备接收第二预定数量个视频帧。
进一步地,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码之前,所述方法还包括:
获取第一用户配置信息;所述第一用户配置信息包括所述第一预定数量。
进一步地,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码之前,所述方法还包括:
获取第二用户配置信息;所述第二用户配置信息包括N的值。
第二方面,本公开实施例中提供了一种编码系统,包括:处理设备以及多个编码设备;
其中,所述处理设备用于执行第一方面所述的方法;
所述编码设备用于从所述处理设备接收所述视频帧,并对所述视频帧进行编码后,将编码信息返回至所述处理设备。
进一步地,所述处理设备在初始化阶段将所述编码设备设置为可发送状态以及不可接收状态;
所述处理设备在向其中一个所述编码设备发送的视频帧数达到第一预定数量后,将所有所述编码设备设置为可接收状态;
所述处理设备在发送完所述视频帧序列中的最后一个视频帧后,向所述编码设备发送最后一个视频帧发送完毕的通知,以及将所述编码设备设置为不可发送状态和可接收状态。
进一步地,所述处理设备包括编码前端单元和调度单元;
所述编码前端单元用于获取所述视频帧序列,并将所述视频帧序列传送至所述调度单元;所述编码前端单元还用于从所述调度单元获取所述编码信息,并输出所述编码信息;
所述调度单元包括多个DMA通道、视频分配单元以及编码信息收集单元;
所述多个DMA通道分别连接多个所述编码设备,用于与所述编码设备进行数据交互;
所述视频分配单元在所述编码设备为可发送状态时,以所述第二预定数量为单元向所述编码设备发送所述视频帧;
所述编码信息收集单元在所述编码设备为可接收状态时,以所述第二预定数量为单位从所述编码设备接收所述编码信息。
第三方面,本公开实施例中提供了一种编码方法,包括:
接收编码任务;所述编码任务包括待编码的视频帧序列;
调用预设服务接口,以便所述预设服务接口将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息;
输出所述视频帧序列的编码结果。
第四方面,本公开实施例中提供了一种编码装置,包括:
获取模块,被配置为获取视频帧序列;
发送模块,被配置为将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;
其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。
第五方面,本公开实施例中提供了一种编码装置,包括:
接收模块,被配置为接收编码任务;所述编码任务包括待编码的视频帧序列;
调用模块,被配置为调用预设服务接口,以便所述预设服务接口将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息;
输出模块,被配置为输出所述视频帧序列的编码结果。
所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,上述装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持上述装置执行上述对应方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。上述装置还可以包括通信接口,用于上述装置与其他设备或通信网络通信。
第六方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述任一方面所述的方法。
第七方面,本公开实施例提供了一种计算机可读存储介质,用于存储上述任一装置所用的计算机指令,其包含用于执行上述任一方面所述方法所涉及的计算机指令。
本公开实施例提供的技术方案可以包括以下有益效果:
本公开实施例针对待编码的视频帧序列,以子视频帧序列为单位发送至多个编码设备之后,利用多个编码设备对视频帧序列进行联合编码,本公开实施例在向其中一个编码设备发送的视频帧数达到第一预定数量之后,开始从多个编码设备接收编码信息,能够保证多个编码设备并行编码,最终能够达到使用低端编码设备实现视频帧序列的高效率编码的目的。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本公开一实施方式的编码方法的流程图;
图2示出根据本公开一实施方式的多个编码设备并行编码的流程示意图;
图3示出根据本公开一实施方式的多个编码设备并行编码的流程示意图;
图4示出根据本公开一实施方式的编码系统的结构框图;
图5示出根据本公开一实施方式的编码系统的实现结构示意图;
图6示出根据本公开另一实施方式的编码方法的流程图;
图7是适于用来实现根据本公开一实施方式的编码方法的电子设备的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
通常情况下,从细粒度到粗粒度,一个典型的视频编码可以有如下几种并行方式:宏块级并行、Slice级并行、帧级并行以及GOP级并行。由于前三种并行方式无法将帧之间的参考关系限制在设备级,因此在多编码设备联合编码时,需要在编码设备之外设计大带宽互联以完成跨设备的参考帧以及其它编码信息的访问。考虑到这些数据的访问需要在极短的时间内完成,因此前三种并行方案在技术上基本上不可行。而GOP级的并行方案等价于将一个视频序列分成长度相等且相互独立的若干子视频序列,然后将子视频序列发送到各个编码设备进行独立编码。由于各个子视频序列之间相互独立,因此所有数据的访问都集中在编码设备的本地,从而降低了设备间的互联带宽需求,使得多编码设备联合编码成为可能。本公开实施例提出了一种编码方法,该编码方法在GOP级并行编码的方案下,实现了视频帧在多编码设备之间的调度,达到了利用多个低端编码设备并行编码来完成高分辨率、高帧率的编码任务的目的。
下面通过具体实施例详细介绍本公开实施例的细节。
图1示出根据本公开一实施方式的编码方法的流程图。如图1所示,该编码方法包括以下步骤:
在步骤S101中,获取视频帧序列;
在步骤S102中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;
其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。
本实施例中,视频帧序列可以是待编码视频中的帧序列,包括按照该视频的显示顺序排列的多个视频帧。本公开实施例针对待编码视频,利用多个编码器并行编码。在获取到待编码视频之后,可以将该待编码视频以子视频帧序列为单元按顺序发送至多个编码设备上分别进行编码,并从多个编码设备以子视频序列为单元按顺序接收编码信息,最终得到编码后的视频数据,多个编码设备可以对接收到的子视频帧序列并行编码。
在一些实施例中,子视频序列中可以至少包括一个画面组(Gop of Picture,GOP)。GOP为按照视频的显示顺序构成的一组连续视频帧序列,该序列以I帧开头,并且一个GOP的长度固定。一个GOP序列内的视频帧编码时不会参考该序列前的视频帧,因此可以将不同的GOP分别发送到不同的编码设备进行编码。
在视频帧的发送过程中,可以从待编码视频的第一个视频帧开始,以一个子视频序列为单位分别向多个编码设备发送视频帧,例如,一个子视频序列包括x个GOP,且有n个编码设备的情况下,从第一个视频帧开始的第1至x个GOP发送至第一个编码设备,第x+1至2x个GOP发送至第二个编码设备,……,第(n-1)x+1至nx个GOP发送至第n个编码设备,第nx+1个GOP又发送至第一个编码设备,重复上述过程,直至待编码视频中的所有视频帧发送完毕。
为了能够使得多个编码设备并行对接收到的视频帧进行编码,本公开实施例在向其中一个编码设备发送的视频帧数量满足第一预设条件后,开始从编码设备接收编码信息。在向编码设备发送的视频帧数量不满足第一预设条件的情况下,从编码设备接收编码信息,会导致多个编码设备无法并行编码,而会产生串行编码的情况,因此,本公开实施例在向多个编码设备发送视频帧的过程中,监测到发送至其中一个编码设备的视频帧数量满足第一预设条件后,才开始从编码设备接收编码信息。而第一预设条件可以理解为视频帧数量的一个阈值,在发送至其中一个编码设备的视频帧数量达到该阈值后,即可开始接收编码信息,通过这种方式,可以使得多个编码设备能够并行对视频帧序列进行编码。
在一些实施例中,第一预设条件可以包括但不限于在向其中一个编码设备发送的视频帧数量达到第一预定数量。第一预定数量可以预先设定为大于GOP长度和预设视频帧数之和的一个数值,例如第一预定数量可以等于GOP长度和预设视频帧数之和再加1。预设视频帧数为使得编码设备正常对当前视频帧编码时预先发送的视频帧数。预先发送的视频帧可以理解为编码设备对当前视频帧进行编码时,由于在一些情况下需要对未进行分析的视频帧进行成本估算,因此需要将这些未进行分析的视频帧预先发送给编码设备。例如,预设视频帧数可以为视频编解码库X264、X265等中的LOOKAHEAD长度。
例如,GOP_SIZE表示一个GOP的长度,LOOKAHEAD表示预设视频帧数,则第一预定数量>GOP_SIZE+LOOKAHEAD,假如第一预定数量设置为GOP_SIZE+LOOKAHEAD+1,则以子视频序列为单位向多个编码设备发送视频帧时,在确定发送至第一个编码设备的视频帧数为GOP_SIZE+LOOKAHEAD+1时,可以将所有编码设备的状态设置为接收状态,以便能够开始从多个编码设备以子视频序列为单位接收编码信息。
通常编码设备在做场景检测或者CU TREE(CU TREE为X265函数库中用于预估当前块在帧间预测中被未来帧所参考的信息多少,来调整当前块的QP值的模块。如果当前块贡献给后续帧的信息越多,则其重要性越高,应当提高该区域的编码质量,减少QP,反之,则增大该区域的QP)等功能时,按照显示顺序需要知道当前视频帧之后的若干视频帧的信息。因此编码设备需要接收到这些视频帧数之后,才能开始实际编码当前的视频帧,因此该视频帧数即为本公开实施例中提到的预设视频帧数。该编码视频时向后需要参考的视频帧数取决于所选择的编码模式,可以预先确定。
需要说明的是,接收流程也是以一个子视频帧序列为单位分别从多个编码设备接收视频帧的编码信息,发送视频帧和接收视频帧编码信息的流程可以交替进行,而当前发送视频帧的编码设备与当前接收视频帧编码信息的编码设备不一定是同一个。在向其中一个编码设备发送的视频帧数量达到第一预定数量后,开始从编码设备接收视频帧的编码信息,如果当前仍处于发送视频帧的流程,则先将需要发送的视频帧发送完毕之后,再开始接收视频帧编码信息的流程。
还需要说明的是,以一个子视频帧序列为单位向多个编码设备发送视频帧可以理解为,每向一个编码设备发送完一个子视频帧序列之后,切换至下一个编码设备发送,而以一个子视频在序列为单位从多个编码设备接收视频帧的编码信息也可以理解为,每从一个编码设备接收完一个子视频帧序列对应的编码信息之后,切换至下一个编码设备接收。
还需要说明的是,在开始从编码设备接收视频帧的编码信息后,发送流程和接收流程交替进行可以理解为,接收流程中可以从当前发送编码设备接收一个或多个视频帧的编码信息之后,进入发送流程;在发送流程中可以向当前接收编码设备发送一个或多个视频帧之后,进入接收流程。可以理解的是当前发送编码设备和当前接收编码设备可以是同一个编码设备,也可以是不同的编码设备。在发送流程和接收流程中可以分别计算当前发送编码设备和当前接收编码设备具体是哪个设备,具体取决于当前发送的视频帧数和接收的编码信息对应的视频帧数。
下面举例说明由两个编码设备并行编码的场景下利用本公开实施例提出的编码方法并行对视频帧序列进行编码的过程。该场景下,假设一个子视频帧序列包括一个GOP。
编码方法的执行体例如处理设备在获取到视频帧序列之后,可以按照视频帧序列的播放顺序,从第一帧开始以一个GOP为单位依次向第一编码设备和第二编码设备发送视频帧,在向第一编码设备发送完第一个GOP之后,向第二编码设备发送第二个GOP,以此类推。
第一编码设备在接收到LOOKAHEAD个视频帧之后,从接收到的第一个视频帧(也即视频帧序列的第一帧)开始编码,此时由于处理设备还未从第一编码设备开始接收编码信息,因此第一编码设备可以将编码信息存储在第一编码设备的缓存中,在第一编码设备编码的同时,还会继续接收到处理设备发送的视频帧,而第二编码设备在接收到LOOKAHEAD个视频帧之后,也开始从接收到的第一个视频帧(也即视频帧序列中的第GOP_SIZE+1个视频帧)开始进行编码,在第二编码设备编码过程中,也会继续接收到处理设备发送的视频帧。假如第一预定数量被设置为GOP_SIZE+LOOKAHEAD+1的情况下,当发送至第一编码设备的总视频帧数首先达到第一预定数量后,处理设备可以将第一编码设备和第二编码设备设置为可接收状态,以便开始以一个GOP的长度为单位从第一编码设备和第二编码设备接收编码信息,也即先从第一编码设备接收GOP_SIZE个视频帧的编码信息,然后切换到第二编码设备接收GOP_SIZE个视频帧的编码信息,再切换至第一编码设备,以此类推。
整个过程中,从向第一编码设备发送的总视频帧数达到第一预定数量开始,可以一边向第一编码设备和第二编码设备发送视频帧,一边从第一编码设备和第二编码设备接收视频帧的编码信息。该过程中,对于处理设备而言,发送视频帧和接收视频帧编码信息的流程可以交替进行,也即发送一个或多个视频帧给当前发送编码设备(可以是第一编码设备或第二编码设备),再从当前接收编码设备(可以是第一编码设备或第二编码设备)接收一个或多个视频帧对应的编码信息。
由于第一编码设备和第二编码设备在接收到LOOKAHEAD个视频帧之后开始编码,而处理设备在向第一编码设备发送完第一预定数量(本例子中为GOP_SIZE+LOOKAHEAD+1)个视频帧之后,开始从第一编码设备接收编码信息,并且发送视频帧和接收视频帧的流程交替进行,因此可以实现第一编码设备和第二编码设备的并行编码,并且第一编码设备和第二编码设备可以采用编码帧率较低的编码器,实现对视频帧序列的高帧率的实时编码。
本公开实施例针对待编码的视频帧序列,以子视频帧序列为单位发送至多个编码设备之后,利用多个编码设备对视频帧序列进行联合编码,本公开实施例在向其中一个编码设备发送的视频帧数达到第一预定数量之后,开始从多个编码设备接收编码信息,能够保证多个编码设备并行编码,最终能够达到使用低端编码设备实现视频帧序列的高效率编码的目的。
在本实施例的一个可选实现方式中,步骤S102,即将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码的步骤,进一步包括以下步骤:
在发送至其中一个所述编码设备的所述视频帧数量满足所述第一预设条件后,重复执行如下步骤:
从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,N为能够被所述子视频序列的长度和预设视频帧数整除的自然数。
该可选的实现方式中,发送视频帧的流程和接收视频帧编码信息的流程交替进行,在向其中一个编码设备发送的视频帧数大于或等于第一预定数量后,从第一个编码设备开始接收视频帧的编码信息。该发送流程和接收流程交替进行的过程可以如下进行:在发送至第一个编码设备上的总视频帧数大于或等于第一预定数量后,可以从第一个编码设备开始连续接收N个视频帧,也即开启视频帧接收流程,在接收流程中从一个编码设备连续接收完成N个视频帧的编码信息之后,再进入发送流程;在发送流程中,继续向一个编码设备连续发送完成N个视频帧后再进入接收流程,重复上述过程,直至视频帧序列中的所有视频帧发送完毕,并且编码设备上的所有编码信息均接收完成。而在发送流程中,如果连续发送至同一个编码设备的视频帧数达到一个子视频帧序列长度,则可以切换至下一个编码设备进行发送,而在接收流程中,如果连续从同一个编码设备接收到的编码信息对应的视频帧数达到一个子视频帧序列长度之后,则可以切换至下一个编码设备接收。需要说明的是,连续接收N个视频帧对应的编码信息可以理解为针对同一个编码设备连续发送N个视频帧对应的编码信息,而连续发送N个视频帧也可以理解为针对同一个编码设备发送N个视频帧,也即N个视频帧对应的编码信息的接收不会跨设备进行,而N个视频帧的发送也不会跨设备进行,因此N可以设置为被子视频帧序列的长度整除的自然数,此外,连续发送至同一个编码设备的视频帧数通常不会小于LOOKAHEAD长度,因此N还可以设置为被LOOKAHEAD的长度所整除的自然数。综上,N可以设置为能够分别被子视频帧序列的长度和LOOKAHEAD长度整除的自然数。
在一些实施例中,N可以等于1。这种方式下,可以通过发送一个视频帧再接收一个视频帧的方式交替执行发送流程和接收流程,能够保证多个编码设备完全并行执行编码流程。
在本实施例的一个可选实现方式中,从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧的步骤,进一步包括以下步骤:
根据从所述编码设备接收到的所述编码信息对应的第一总视频帧数确定第一目标编码设备;
从所述第一目标编码设备连续接收N个所述视频帧的编码信息;
根据向所述编码设备发送的第二总视频帧数确定第二目标编码设备;
向所述第二目标编码设备连续发送N个所述视频帧。
该可选的实现方式中,以子视频帧序列为单位发送视频帧的发送流程中,可以通过发送至所有编码设备的第二总视频帧数来确定当前是否应当切换至下一个编码设备进行发送,以及下一个编码设备具体是哪个编码设备,例如可以通过第二总视频帧数除以子视频帧序列的长度的方式确定当前是否应当切换至下一编码设备,具体切换至哪个编码设备可以预先设置,比如设置成轮询方式,从第一个编码设备轮询发送至最后一个编码设备,则所切换至的编码设备可以是轮询方式中设定的下一个编码设备。同理,以子视频帧序列为单位接收视频帧的接收流程中,可以通过从所有编码设备接收的第一总视频帧数来确定当前是否应当切换至下一个编码设备,以及下一个编码设备具体是哪个编码设备,例如可以通过第一总视频帧数除以子视频帧序列的长度的方式确定当前是否应当切换至下一编码设备,具体切换至哪个编码设备可以预先设置,比如设置成轮询方式,从第一个编码设备轮询至最后一个编码设备,则所切换至的编码设备可以是轮询方式中设定的下一个编码设备。因此,第一目标设备可以是通过上述方式确定的当前需要接收视频帧的编码设备,而第二目标设备可以是通过上述方式确定的当前需要发送视频帧的编码设备。确定第一目标设备之后,先从第一目标设备接收N个视频帧,然后进入发送流程,向第二目标设备发送N个视频帧,以此类推,发送流程和接收流程交替执行。在这种方式,通过边发送视频帧边接收视频帧的方式,能够保证所有编码设备并行执行编码流程,并且可以充分利用已部署的低端编码设备实现实时编码场景。
在本实施例的一个可选实现方式中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码的步骤,进一步包括以下步骤:
以轮询调度方式每向一个所述编码设备发送第二预定数量个视频帧后,切换至下一所述编码设备发送第二预定数量个视频帧,所述第二预定数量为所述子视频序列的长度。
该可选的实现方式中,可以以轮询的方式向多个编码设备发送视频帧,并且每个编码设备发送完第二预定数量个视频帧之后,再切换至下一个编码设备。可以先设置多个编码设备的轮询调度顺序,按照该轮询调度顺序从第一个编码设备发送视频帧,发送完第二预定数量个视频帧之后切换至轮询N大于等于1且小于一个GOP的长度顺序中的下一个编码设备,以此类推,在轮询顺序中的最后一个编码设备发完之后,再重新切换至第一个编码设备进行发送,直至视频帧序列中的所有视频帧均发送完毕。需要说明的是,在视频帧发送过程中,还可以接收视频帧的编码信息,并且发送和接收是交替进行的,交替过程可以参见上述实施例中的描述,在此不再赘述。
在本实施例的一个可选实现方式中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码的步骤,进一步包括以下步骤:
以轮询调度方式每从一个所述编码设备接收第二预定数量个视频帧后,切换至下一个所述编码设备接收第二预定数量个视频帧。
该可选的实现方式中,可以以轮询的方式从多个编码设备接收视频帧的编码信息,并且每个编码设备接收完第二预定数量个视频帧之后,再切换至下一个编码设备。可以先设置多个编码设备的轮询N大于等于1且小于一个GOP的长度顺序,按照该轮询N大于等于1且小于一个GOP的长度顺序从第一个编码设备接收视频帧的编码信息,接收完第二预定数量个视频帧之后切换至轮询顺序中的下一个编码设备,以此类推,在轮询N大于等于1且小于一个GOP的长度顺序中的最后一个编码设备接收完之后,再重新切换至第一个编码设备进行接收,直至视频帧序列中的所有视频帧的编码信息均接收完毕。需要说明的是,在视频帧的编码信息的接收过程中,还可以发送视频帧,并且发送和接收是交替进行的,交替过程可以参见上述实施例中的描述,在此不再赘述。
在本实施例的一个可选实现方式中,步骤S102,即将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码的步骤之前,所述方法还包括:
获取第一用户配置信息;所述第一用户配置信息包括所述第一预定数量。
该可选的实现方式中,可以由用户来配置第一预定数量。第一预定数量的大小可以根据用户的实际需求而由用户来设置。用户可以通过预设接口配置该第一预定数量,用户设置的该第一预定数量的大小可以满足一定的条件,也即该第一预定数量可以大于一个GOP的长度与预设视频帧数之和,该预设视频帧数可以是能够满足编码设备进行正常编码时所需要的视频帧数,例如用户可以将该第一预定数量设置为GOP的长度、预设视频帧数以及常数之和,该常数可以大于等于1。在本实施例的一个可选实现方式中,步骤S102,即将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码的步骤之前,所述方法还包括:
获取第二用户配置信息;所述第二用户配置信息包括N的值。
该可选的实现方式中,还可以由用户来配置N的大小。N的大小可以根据用户的实际需求而由用户来设置。用户可以通过预设接口配置N的大小,用户设置的N的大小可以满足一定的条件,即N可以设置为能够分别被子视频帧序列的长度和预设视频帧数整除的自然数,该预设视频帧数可以是能够满足编码设备进行正常编码时所需要的视频帧数,例如该预设视频帧数可以是前文中提到的LOOKAHEAD长度。
图2示出根据本公开一实施方式的多个编码设备并行编码的流程示意图。如图2所示,子视频序列包括一个GOP,也即以一个GOP为单位向多个编码设备发送视频帧,并且在接收过程中也是以一个GOP为单位接收编码信息,并且采用的是接收一个视频帧的编码信息,再发送一个视频帧的交替方式。
在流程开始后,先进行初始化,初始化过程中各编码设备的发送状态被置为TX,即允许发送状态;而由于以GOP为单位进行调度,以及LOOKAHEAD的存在,因此各编码设备的接收状态在初始化中被置为INIT,即不允许从编码设备接收编码信息;
之后进入发送阶段。在此阶段,首先根据当前已发送总视频帧数计算出当前视频帧将发往哪个编码设备,例如可以利用如下公式计算得到编码设备编号:id1=(total_tx_frm/GOP_SIZE)%M,其中total_tx_frm为发送至所有编码设备的总视频帧数,GOP_SIZE为一个GOP的长度,M为编码设备的个数,id1为当前要发送视频帧的编码设备编号。在编号为id1的编码设备处于可接收状态的情况下,向该编号为id1的编码设备发送一个视频帧,之后total_tx_frm和tx_frm[id1]分别加1,total_tx_frm为发送至所有编码设备的视频帧数,tx_frm[id1]为发送至编号为id1的编码设备的视频帧数。在当前发送到编码设备的视频帧为最后一帧的情况下,可以通知各个编码设备开始对缓存的视频帧进行编码,并将各个编码设备的发送状态设置为FLUSH,接收状态置为RX,即允许从各编码设备接收编码信息,这样能够防止视频帧序列较短时可能出现的死锁。此外,还可以从当前发往该编码设备的视频帧总数决定该编码设备的接收状态,即如果发往该编码设备的视频帧总数tx_frm[id1]大于GOP_SIZE+LOOKAHEAD(对应于第一预定数量被设置为GOP_SIZE+LOOKAHEAD+1的情况),则将所有编码设备的接收状态置为RX,即开始从编码设备接收视频帧的编码信息。
在视频帧的接收阶段,类似于视频帧发送阶段,首先从当前已经接收的总报文数目total_rx_frm计算出当前需要从哪个编码设备接收视频帧的编码信息,例如可以利用如下公式计算得到编码设备编号:id2=(total_rx_frm/GOP_SIZE)%M,id2为当前要接收编码信息的编码设备的编号,如果该编号为id2的编码设备的接收状态为可接收状态RX,则从该编码设备接收一个视频帧的编码信息,当前已经接收的总报文数目total_rx_frm加1,之后转到发送流程,并重复上述流程,直到当前已经接收的总报文数目total_rx_frm等于发送至所有编码设备的视频帧数total_tx_frm为止。
图3示出根据本公开一实施方式的多个编码设备并行编码的流程示意图。如图3所示,为了看起来更加直观,该图中示例假设LOOKAHEAD等于GOP_SIZE;视频帧的发送以及视频帧的编码信息接收均为串行执行,即发送视频帧和接收编码信息的DMA利用单线程实现;编码设备包括4个。
从编码器的角度看,总的编码过程可以分成三个阶段:
建立阶段:该阶段按照轮询调度的方式依次向各个编码设备发送若干个GOP_SIZE的视频帧,使得各个编码设备能够开始编码,并且有足够的视频帧数实现编码设备间编码的并行。在此阶段,当发送给第一个编码设备(下图中的编码设备0)的帧总数小于或等于LOOKAHEAD+GOP_SIZE时,不从任何编码设备接收编码信息。
正常编码阶段:该阶段向编码设备发送视频帧,也从编码设备接收视频帧的编码信息。该阶段发送的视频帧数和接收编码信息的视频帧数为1:1交替进行,也即向某一编码设备发送一帧,接着从该编码设备(或者另一编码设备)接收一个视频帧的编码信息,直到发送视频帧数目(接收到的编码信息对应的视频帧数目)达到一个GOP,则切换到下一个编码设备进行发送(接收)。由于该实施例中做了LOOKAHEAD等于GOP_SIZE的假设,因此发送与接收总是在同一个编码设备上进行。而如果LOOKAHEAD不等于GOP_SIZE的情况下,发送流程和接收流程中所对应的编码设备可能不同,也即可能存在当前发送流程中针对的编码设备为A,而当前接收流程中针对的编码设备为B的情况。
清空阶段:该阶段视频帧序列中的所有视频帧均已发送至编码设备,因此该阶段可以采用轮询调度的方式,从每个编码设备接收剩余的编码,直到所有的编码信息均接收完毕。
从图3中可以看出,在向每个编码设备发送LOOKAHEAD+GOP_SIZE的视频帧之后,建立阶段结束,并进入正式编码阶段。需要说明的是,对于每个编码设备而言,在接收到LOOKAHEAD个视频帧之后就已经开始了编码。在进入正式编码阶段的时候,先从第一个编码设备0接收一个视频帧的编码信息,并再向该第一个编码设备0发送一个视频帧,通过这种交替发送和接收的方式发送完一个GOP的视频帧,并且也接收完一个GOP对应的编码信息之后,切换至第二个编码设备1执行上述流程,由于第二个编码设备1已经开始了编码,因此其产生并且缓存的编码信息较多,因此从第二个编码设备2开始,该交替发送和接收的过程耗时较第一个编码设备0短,并且可以从图3看出,四个编码设备完全实现了编码的并行执行。在视频帧序列中的所有视频帧均发送完成之后,进入清空阶段。清空阶段由于视频帧已经发送完成,因此仅以GOP为单位从每个编码设备接收一个GOP对应的编码信息即可,直到所有编码信息均接收完成为止。
图4示出根据本公开一实施方式的编码系统的结构框图。如图4所示,编码系统包括处理设备401以及多个编码设备402;其中,
处理设备401用于执行本公开实施例提出的上述任一编码方法。
编码设备402用于从处理设备401接收视频帧,并对视频帧进行编码后,将编码信息返回至处理设备401。
本实施例中,处理设备401可以是CPU、GPU、FPGA、NPU等处理设备,编码设备402可以是支持国际视频压缩标准H.261、H.263、H.264、H.265等、中国音视频压缩标准AVS、AVS2等的编码器,并且编码设备402可以是低端的编码芯片,本公开实施例通过上述编码方法可以将多个低端编码芯片联合起来实现视频的实时编码,能够充分利用已经在线部署、成本较低、但是编码帧率较低的多个较低能力的编码器联合编码,完成高分辨率、高帧率的编码任务的需求。
处理设备401在编码过程中实现的功能可以参见上述对编码方法的描述,在此不再赘述。
在本实施例的一个可选实现方式中,处理设备401在初始化阶段将编码设备402设置为可发送状态以及不可接收状态;
处理设备401在向其中一个编码设备402发送的视频帧数达到第一预定数量后,将所有编码设备402设置为可接收状态;
处理设备401在发送完视频帧序列中的最后一个视频帧后,向编码设备402发送最后一个视频帧发送完毕的通知,以及将编码设备402设置为不可发送状态和可接收状态。
该可选的实现方式中,为了实现各编码设备402在编码过程中能够完全并行编码,处理设备401在开始发送视频帧时,将各编码设备402的发送状态设置为可发送,而接收状态设置为不可接收,也即一开始仅开启发送流程,先向各编码设备402发送视频帧,而不从编码设备402接收视频帧的编码信息,并且在向第一个编码设备402发送的视频帧数达到第一预定数量之后,才将各编码设备402的接收状态设置为可接收,并开启接收流程,以便通过发送和接收交替执行的方式一边向编码设备402发送视频帧,一边从编码设备402接收视频帧的编码信息,这种方式能够保证整个过程中多个编码设备402并行编码。
处理设备401在将最后一个视频帧发送至编码设备402之后,向各编码设备402发送通知消息,以便确保各编码设备402能够在接收到该通知后,均开始编码,防止最后一个视频帧已经发送完毕,而存在一个或多个编码设备402由于缓存的视频帧数不够LOOKAHEAD个视频帧数,导致一直处于等待接收视频帧而不进行编码的状态。
在本实施例的一个可选实现方式中,处理设备401包括编码前端单元和调度单元;
编码前端单元用于获取视频帧序列,并将视频帧序列传送至调度单元;编码前端单元还用于从调度单元获取编码信息,并输出编码信息;
调度单元包括多个DMA通道、视频分配单元以及编码信息收集单元;
多个DMA通道分别连接多个编码设备402,用于与编码设备402进行数据交互;
视频分配单元在编码设备402为可发送状态时,以第二预定数量为单元向编码设备402发送视频帧;
编码信息收集单元在编码设备402为可接收状态时,以第二预定数量为单位从编码设备402接收编码信息。
该可选的实现方式中,处理设备401可以包括编码前端单元和调度单元,编码前端单元用于从外部接收视频帧序列,并将接收到的视频帧序列发送给调度单元,调度单元用于将视频帧序列切分成子视频帧序列后,发送至各个编码设备402进行编码。
图5示出根据本公开一实施方式的编码系统的实现结构示意图。如图5所示,编码系统包括系统CPU和多个编码设备,系统CPU包括编码前端单元和调度单元,调度单元包括多个DMA通道、视频帧分配单元和编码信息收集单元。
其中,编码前端单元负责编码系统与外部系统的交互,其一方面从外部接收视频帧后传递到调度单元,另一方面从调度单元接收编码信息后传递到外部系统。
调度单元通过本公开实施例提出的上述编码方法中的调度方式将视频帧序列以子视频帧序列为单位,发送到各个编码设备,并从各个编码设备以子视频帧序列为单位接收编码信息。
物理互联通道在各编码设备之间、以及编码设备与系统CPU之间实现物理互联。本公开实施例提出的上述编码方式中,南北向(即系统CPU与编码设备之间)存在数据传递,而东西向(即编码设备之间)不存在数据传递。
编码设备对输入的视频帧进行编码。
调度单元包括的视频帧分配单元将视频帧序列切分成多个子视频帧序列之后,通过DMA通道传递给编码设备。调度单元包括的多个DMA通道分别与多个编码设备对应。每个DMA通道可以对应一个编码设备,将从视频帧分配单元收到的视频帧发送到相应的编码设备,并从相应编码设备接收到的编码信息,传递给编码信息收集单元。
编码前端单元和调度单元可以采用硬件实现,也可以采用软件实现。在采用软件实现时,DMA通道可以采用DMA线程实现,
而视频帧分配单元和编码信息收集单元可以实现于同一个线程,组成一个完整的发送和接收调度器,每个DMA线程对应一个编码设备,将从视频帧分配单元收到的视频帧发送到相应的编码设备,并从相应编码设备接收到的编码信息,传递给编码信息收集单元。
通过使用多个DMA线程,可以增加数据搬运的并行度,提高物理互联的利用率。而在带宽足够的情况下,为了简单起见,也可以采用单线程的方式,此时DMA的读写以及视频帧分配单元和编码信息收集单元均实现于同一线程;编码设备的调度、数据发送与接收等均可串行执行。
图6示出根据本公开另一实施方式的编码方法的流程图。如图6所示,该编码方法包括以下步骤:
在步骤S601中,接收编码任务;所述编码任务包括待编码的视频帧序列;
在步骤S602中,调用预设服务接口,以便所述预设服务接口将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息;
在步骤S603中,输出所述视频帧序列的编码结果。
本实施例中,可以在云端部署在线编码系统,并在云端部署预设服务接口,该预设服务接口可以是Saas(Software-as-a-service,软件即服务)接口。需求方可以预先获取该预设服务接口的使用权,并在有需求时可以通过调用该预设服务接口对视频帧序列进行并行编码,以获得编码数据。在编码过程中,该预设服务接口将该视频帧序列以子视频帧序列为单位发送至编码系统中的多个编码设备进行并行编码。
视频帧序列可以是待编码视频中的帧序列,包括按照该视频的显示顺序排列的多个视频帧。本公开实施例针对待编码视频,利用多个编码器并行编码。在获取到待编码视频之后,可以将该待编码视频以子视频帧序列为单元按顺序发送至多个编码设备上分别进行编码,并从多个编码设备以子视频序列为单元按顺序接收编码信息,最终得到编码后的视频数据,多个编码设备可以对接收到的子视频帧序列并行编码。
在一些实施例中,子视频序列中可以至少包括一个画面组(Gop of Picture,GOP)。GOP为按照视频的显示顺序构成的一组连续视频帧序列,该序列以I帧开头,并且一个GOP的长度固定。一个GOP序列内的视频帧编码时不会参考该序列前的视频帧,因此可以将不同的GOP分别发送到不同的编码设备进行编码。
在视频帧的发送过程中,可以从待编码视频的第一个视频帧开始,以一个子视频序列为单位分别向多个编码设备发送视频帧,例如,一个子视频序列包括x个GOP,且有n个编码设备的情况下,从第一个视频帧开始的第1至x个GOP发送至第一个编码设备,第x+1至2x个GOP发送至第二个编码设备,……,第(n-1)x+1至nx个GOP发送至第n个编码设备,第nx+1个GOP又发送至第一个编码设备,重复上述过程,直至待编码视频中的所有视频帧发送完毕。
为了能够使得多个编码设备并行对接收到的视频帧进行编码,本公开实施例在向其中一个编码设备发送的视频帧数量达到第一预定数量后,开始从编码设备接收编码信息,第一预定数量可以预先设定为大于GOP长度和预设视频帧数之和的一个数值,例如第一预定数量可以等于GOP长度和预设视频帧数之和再加1。预设视频帧数为使得编码设备正常对当前视频帧编码时预先发送的视频帧数。预先发送的视频帧可以理解为编码设备对当前视频帧进行编码时,由于在一些情况下需要对未进行分析的视频帧进行成本估算,因此需要将这些未进行分析的视频帧预先发送给编码设备。例如,预设视频帧数可以为视频编解码库X264、X265等中的LOOKAHEAD长度。
例如,GOP_SIZE表示一个GOP的长度,LOOKAHEAD表示预设视频帧数,则第一预定数量>GOP_SIZE+LOOKAHEAD,假如第一预定数量设置为GOP_SIZE+LOOKAHEAD+1,则以子视频序列为单位向多个编码设备发送视频帧时,在确定发送至第一个编码设备的视频帧数为GOP_SIZE+LOOKAHEAD+1时,可以将所有编码设备的状态设置为接收状态,以便能够开始从多个编码设备以子视频序列为单位接收编码信息。
通常编码设备在做场景检测或者CU TREE(CU TREE为X265函数库中用于预估当前块在帧间预测中被未来帧所参考的信息多少,来调整当前块的QP值的模块。如果当前块贡献给后续帧的信息越多,则其重要性越高,应当提高该区域的编码质量,减少QP,反之,则增大该区域的QP)等功能时,按照显示顺序需要知道当前视频帧之后的若干视频帧的信息。因此编码设备需要接收到这些视频帧数之后,才能开始实际编码当前的视频帧,因此该视频帧数即为本公开实施例中提到的预设视频帧数。该编码视频时向后需要参考的视频帧数取决于所选择的编码模式,可以预先确定。
需要说明的是,接收流程也是以一个子视频帧序列为单位分别从多个编码设备接收视频帧的编码信息,发送视频帧和接收视频帧编码信息的流程可以交替进行,而当前发送视频帧的编码设备与当前接收视频帧编码信息的编码设备不一定是同一个。在向其中一个编码设备发送的视频帧数量达到第一预定数量后,开始从编码设备接收视频帧的编码信息,如果当前仍处于发送视频帧的流程,则先将需要发送的视频帧发送完毕之后,再开始接收视频帧编码信息的流程。
还需要说明的是,以一个子视频帧序列为单位向多个编码设备发送视频帧可以理解为,每向一个编码设备发送完一个子视频帧序列之后,切换至下一个编码设备发送,而以一个子视频在序列为单位从多个编码设备接收视频帧的编码信息也可以理解为,每从一个编码设备接收完一个子视频帧序列对应的编码信息之后,切换至下一个编码设备接收。
还需要说明的是,在开始从编码设备接收视频帧的编码信息后,发送流程和接收流程交替进行可以理解为,接收流程中可以从当前发送编码设备接收一个或多个视频帧的编码信息之后,进入发送流程;在发送流程中可以向当前接收编码设备发送一个或多个视频帧之后,进入接收流程。可以理解的是当前发送编码设备和当前接收编码设备可以是同一个编码设备,也可以是不同的编码设备。在发送流程和接收流程中可以分别计算当前发送编码设备和当前接收编码设备具体是哪个设备,具体取决于当前发送的视频帧数和接收的编码信息对应的视频帧数。
在最终通过多个编码设备编码得到视频帧序列的编码信息之后,输出该视频帧序列对应的编码结果,该编码结果包括视频帧序列对应的编码码流。
本公开实施例针对待编码的视频帧序列,以子视频帧序列为单位发送至多个编码设备之后,利用多个编码设备对视频帧序列进行联合编码,本公开实施例在向其中一个编码设备发送的视频帧数达到第一预定数量之后,开始从多个编码设备接收编码信息,能够保证多个编码设备并行编码,最终能够达到使用低端编码设备实现视频帧序列的高效率编码的目的。
在本实施例的一个可选实现方式中,步骤S602中将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
在发送至其中一个所述编码设备的所述视频帧数量满足所述第一预设条件后,重复执行如下步骤:
从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,N为能够被所述子视频序列的长度和预设视频帧数整除的自然数。
在本实施例的一个可选实现方式中,从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,包括:
根据从所述编码设备接收到的所述编码信息对应的第一总视频帧数确定第一目标编码设备;
从所述第一目标编码设备连续接收N个所述视频帧的编码信息;
根据向所述编码设备发送的第二总视频帧数确定第二目标编码设备;
向所述第二目标编码设备连续发送N个所述视频帧。
在本实施例的一个可选实现方式中,步骤S602中将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
以轮询调度方式每向一个所述编码设备发送第二预定数量个视频帧后,切换至下一所述编码设备发送第二预定数量个视频帧,所述第二预定数量为所述子视频序列的长度。
在本实施例的一个可选实现方式中,步骤S602中将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
以轮询调度方式每从一个所述编码设备接收第二预定数量个视频帧后,切换至下一个所述编码设备接收第二预定数量个视频帧。
上述可选实现方式中的具体细节可以参见上述图1所示实施例及相关实施例中的描述,在此不再赘述。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
根据本公开一实施方式的编码装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。该编码装置包括:
第一获取模块,被配置为获取视频帧序列;
发送模块,被配置为将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;
其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。
在本实施例的一个可选实现方式中,所述第一预设条件包括所述视频帧数量达到第一预定数量,和/或所述第一预定数量大于所述画面组的长度与预设视频帧数之和。
在本实施例的一个可选实现方式中,所述发送模块,包括:
第一发送子模块,被配置为在发送至其中一个所述编码设备的所述视频帧数量满足所述第一预设条件后,重复调用如下子模块:
执行子模块,被配置为从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,N为能够被所述子视频序列的长度和预设视频帧数整除的自然数。
在本实施例的一个可选实现方式中,所述执行子模块,包括:
第一确定子模块,被配置为根据从所述编码设备接收到的所述编码信息对应的第一总视频帧数确定第一目标编码设备;
第一接收子模块,被配置为从所述第一目标编码设备连续接收N个所述视频帧的编码信息;
第二确定子模块,被配置为根据向所述编码设备发送的第二总视频帧数确定第二目标编码设备;
第二发送子模块,被配置为向所述第二目标编码设备连续发送N个所述视频帧。
在本实施例的一个可选实现方式中,所述发送模块,包括:
第三发送子模块,被配置为以轮询调度方式每向一个所述编码设备发送第二预定数量个视频帧后,切换至下一所述编码设备发送第二预定数量个视频帧,所述第二预定数量为所述子视频序列的长度。
在本实施例的一个可选实现方式中,所述发送模块,包括:
第二接收子模块,被配置为以轮询调度方式每从一个所述编码设备接收第二预定数量个视频帧后,切换至下一个所述编码设备接收第二预定数量个视频帧。
在本实施例的一个可选实现方式中,所述发送模块之前,所述装置还包括:
第二获取模块,被配置为获取第一用户配置信息;所述第一用户配置信息包括所述第一预定数量。
在本实施例的一个可选实现方式中,所述发送模块之前,所述装置还包括:
第三获取模块,被配置为获取第二用户配置信息;所述第二用户配置信息包括N的值。
本实施例中的编码装置与图1所示实施例及相关实施例中的编码方法对应一致,具体细节可以参见上述图1所示实施例及相关实施例中对于编码方法的描述,在此不再赘述。
根据本公开另一实施方式的编码装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。该编码装置包括:
接收模块,被配置为接收编码任务;所述编码任务包括待编码的视频帧序列;
调用模块,被配置为调用预设服务接口,以便所述预设服务接口将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息;
输出模块,被配置为输出所述视频帧序列的编码结果。
本实施例中的编码装置与图6所示实施例及相关实施例中的编码方法对应一致,具体细节可以参见上述图6所示实施例及相关实施例中对于编码方法的描述,在此不再赘述。
图7是适于用来实现根据本公开实施方式的编码方法的电子设备的结构示意图。
如图7所示,电子设备700包括处理单元701,其可实现为CPU、GPU、FPGA、NPU等处理单元。处理单元701可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行本公开上述任一方法的实施方式中的各种处理。在RAM703中,还存储有电子设备700操作所需的各种程序和数据。处理单元701、ROM702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施方式,上文参考本公开实施方式中的任一方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行本公开实施方式中任一方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (16)

1.一种编码方法,其中,包括:
获取视频帧序列;
将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;
其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。
2.根据权利要求1所述的方法,其中,所述第一预设条件包括所述视频帧数量达到第一预定数量,和/或所述第一预定数量大于所述画面组的长度与预设视频帧数之和。
3.根据权利要求1或2所述的方法,其中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
在发送至其中一个所述编码设备的所述视频帧数量满足所述第一预设条件后,重复执行如下步骤:
从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,N为能够被所述子视频序列的长度和预设视频帧数整除的自然数。
4.根据权利要求3所述的方法,其中,从所述编码设备连续接收N个所述视频帧对应的所述编码信息,以及向所述编码设备连续发送N个所述视频帧,包括:
根据从所述编码设备接收到的所述编码信息对应的第一总视频帧数确定第一目标编码设备;
从所述第一目标编码设备连续接收N个所述视频帧的编码信息;
根据向所述编码设备发送的第二总视频帧数确定第二目标编码设备;
向所述第二目标编码设备连续发送N个所述视频帧。
5.根据权利要求1-2、4任一项所述的方法,其中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
以轮询调度方式每向一个所述编码设备发送第二预定数量个视频帧后,切换至下一所述编码设备发送第二预定数量个视频帧,所述第二预定数量为所述子视频序列的长度。
6.根据权利要求1-2、4任一项所述的方法,其中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码,包括:
以轮询调度方式每从一个所述编码设备接收第二预定数量个视频帧后,切换至下一个所述编码设备接收第二预定数量个视频帧。
7.根据权利要求1-2、4任一项所述的方法,其中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码之前,所述方法还包括:
获取第一用户配置信息;所述第一用户配置信息包括所述第一预定数量。
8.根据权利要求3所述的方法,其中,将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码之前,所述方法还包括:
获取第二用户配置信息;所述第二用户配置信息包括N的值。
9.一种编码系统,其中,包括:处理设备以及多个编码设备;
其中,所述处理设备用于执行权利要求1-8任一项所述的方法;
所述编码设备用于从所述处理设备接收所述视频帧,并对所述视频帧进行编码后,将编码信息返回至所述处理设备。
10.根据权利要求9所述的编码系统,其中,所述处理设备在初始化阶段将所述编码设备设置为可发送状态以及不可接收状态;
所述处理设备在向其中一个所述编码设备发送的视频帧数达到第一预定数量后,将所有所述编码设备设置为可接收状态;
所述处理设备在发送完所述视频帧序列中的最后一个视频帧后,向所述编码设备发送最后一个视频帧发送完毕的通知,以及将所述编码设备设置为不可发送状态和可接收状态。
11.根据权利要求9或10所述的编码系统,其中,所述处理设备包括编码前端单元和调度单元;
所述编码前端单元用于获取所述视频帧序列,并将所述视频帧序列传送至所述调度单元;所述编码前端单元还用于从所述调度单元获取所述编码信息,并输出所述编码信息;
所述调度单元包括多个DMA通道、视频分配单元以及编码信息收集单元;
所述多个DMA通道分别连接多个所述编码设备,用于与所述编码设备进行数据交互;
所述视频分配单元在所述编码设备为可发送状态时,以所述第二预定数量为单元向所述编码设备发送所述视频帧;
所述编码信息收集单元在所述编码设备为可接收状态时,以所述第二预定数量为单位从所述编码设备接收所述编码信息。
12.一种编码方法,其中,包括:
接收编码任务;所述编码任务包括待编码的视频帧序列;
调用预设服务接口,以便所述预设服务接口将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息;
输出所述视频帧序列的编码结果。
13.一种编码装置,其中,包括:
获取模块,被配置为获取视频帧序列;
发送模块,被配置为将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;
其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息。
14.一种编码装置,其中,包括:
接收模块,被配置为接收编码任务;所述编码任务包括待编码的视频帧序列;
调用模块,被配置为调用预设服务接口,以便所述预设服务接口将所述视频帧序列以子视频帧序列为单位发送至多个编码设备进行并行编码;所述子视频帧序列包括至少一个画面组;其中,在向其中一个所述编码设备发送的视频帧数量满足第一预设条件后,开始从所述编码设备接收编码信息;
输出模块,被配置为输出所述视频帧序列的编码结果。
15.一种电子设备,其中,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-8任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1-8任一项所述的方法。
CN202010939880.4A 2020-09-09 2020-09-09 编码方法、装置、系统、电子设备及存储介质 Pending CN114245143A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010939880.4A CN114245143A (zh) 2020-09-09 2020-09-09 编码方法、装置、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010939880.4A CN114245143A (zh) 2020-09-09 2020-09-09 编码方法、装置、系统、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114245143A true CN114245143A (zh) 2022-03-25

Family

ID=80742633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010939880.4A Pending CN114245143A (zh) 2020-09-09 2020-09-09 编码方法、装置、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114245143A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102217315A (zh) * 2008-11-12 2011-10-12 汤姆森特许公司 用于画面组的并行多线程视频编码的i帧去闪烁
CN104506870A (zh) * 2014-11-28 2015-04-08 北京奇艺世纪科技有限公司 一种适用于多码流的视频编码处理方法和装置
CN105959687A (zh) * 2016-06-23 2016-09-21 北京天文馆 视频编码方法及装置
CN106664407A (zh) * 2014-09-19 2017-05-10 英特尔公司 用于无线显示器的并行编码
CN108848384A (zh) * 2018-06-19 2018-11-20 复旦大学 一种面向多核平台的高效并行转码方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102217315A (zh) * 2008-11-12 2011-10-12 汤姆森特许公司 用于画面组的并行多线程视频编码的i帧去闪烁
CN106664407A (zh) * 2014-09-19 2017-05-10 英特尔公司 用于无线显示器的并行编码
CN104506870A (zh) * 2014-11-28 2015-04-08 北京奇艺世纪科技有限公司 一种适用于多码流的视频编码处理方法和装置
CN105959687A (zh) * 2016-06-23 2016-09-21 北京天文馆 视频编码方法及装置
CN108848384A (zh) * 2018-06-19 2018-11-20 复旦大学 一种面向多核平台的高效并行转码方法

Similar Documents

Publication Publication Date Title
US8705616B2 (en) Parallel multiple bitrate video encoding to reduce latency and dependences between groups of pictures
JP5161130B2 (ja) 固定帯域幅ネットワークにおける複数の圧縮ビデオストリームのための適応帯域幅フットプリントマッチング
CN1132430C (zh) 多重编码装置
CN105451031B (zh) 一种视频转码方法和系统
EP1667459A1 (en) Two processor architecture supporting decoupling of outer loop and inner loop in video decoder
CN109660879A (zh) 直播丢帧方法、系统、计算机设备和存储介质
US20100266049A1 (en) Image decoding device
JP2012124896A (ja) 低遅延階層のbグループを有するピクチャ構造を用いた動画像符号化の方法及び装置
CN1365235A (zh) 对无缝拼接、可变编码率、压缩数字视频信号的帧比特长度分配
US20190394476A1 (en) Method, device and system for transmitting and receiving pictures
Jokhio et al. Analysis of video segmentation for spatial resolution reduction video transcoding
JP2015171114A (ja) 動画像符号化装置
KR101539812B1 (ko) 동화상 데이터의 배신 방법
CN112087631A (zh) 基于gpu同步并行视频编解码与流媒体传输系统及方法
US9986243B2 (en) Image processor
JP3305976B2 (ja) 圧縮ビデオシーケンス操作用デバイス
CN114245143A (zh) 编码方法、装置、系统、电子设备及存储介质
WO2014051745A1 (en) Entropy coding techniques and protocol to support parallel processing with low latency
JPH0662393A (ja) 多重化した動画像符号化方法と装置
JP3614448B2 (ja) 画像信号符号化多重方法及びその装置
US20140334552A1 (en) Image decoding device
CN108769737B (zh) 一种码率调整方法、服务器及计算机可读介质
CN100525451C (zh) 一种传输视频压缩编码结果的方法和装置
EP0843483B1 (en) A method for decoding encoded video data
US6788225B2 (en) System and method for intraframe timing in multiplexed channel

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination