CN105472371B - 视频码流处理方法和装置 - Google Patents
视频码流处理方法和装置 Download PDFInfo
- Publication number
- CN105472371B CN105472371B CN201610022475.XA CN201610022475A CN105472371B CN 105472371 B CN105472371 B CN 105472371B CN 201610022475 A CN201610022475 A CN 201610022475A CN 105472371 B CN105472371 B CN 105472371B
- Authority
- CN
- China
- Prior art keywords
- video code
- code stream
- merging
- slice
- original video
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/156—Mixing image signals
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种视频码流处理方法和装置,所述方法包括:获取待合并的多路原视频码流,所述多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数;获取在合并所述多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流;将所述多路原视频码流中在进行合并时未改变的码流配置参数复制到所述合并视频码流中;将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中。本发明提供的视频码流处理方法和装置,极大地提高了合并视频码流的效率,并可避免视频码流在解码编码过程中造成的视频质量损失。
Description
技术领域
本发明涉及视频处理技术领域,特别是涉及一种视频码流处理方法和装置。
背景技术
视频码流合并是一种重要的视频处理技术,广泛应用于各种应用场景,比如合并左眼和右眼视频码流以生成3D视频码流的应用场景,视频会议系统中的多方视频码流的合并等。目前,视频码流合并通常采用先将需合并的视频码流分别进行解码,获得图像数据后,进行图像数据的拼合,然后再将拼合的图像数据进行编码,获得合并的视频码流。
然而,视频码流的解码和编码处理过程比较复杂,资源消耗和时间消耗都比较大,因此将多视频码流经过解码、拼合再编码的转码方式来进行视频码流合并效率太低,需要改进。虽然现在有一些基于原码流指引的快速转码算法,但毕竟还是要经过编解码的大部分流程,因而视频码流合并效率仍然比较低。
发明内容
基于此,有必要针对目前将多视频码流经过解码、拼合以及编码来进行视频码流合并效率低下的问题,提供一种高效的视频码流处理方法和装置。
一种视频码流处理方法,所述方法包括:
获取待合并的多路原视频码流,所述多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数;
获取在合并所述多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流;
将所述多路原视频码流中在进行合并时未改变的码流配置参数复制到所述合并视频码流中;
将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中。
一种视频码流处理装置,所述装置包括:
获取模块,用于获取待合并的多路原视频码流,所述多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数;
第一码流配置参数处理模块,用于获取在合并所述多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流;
第二码流配置参数处理模块,用于将所述多路原视频码流中在进行合并时未改变的码流配置参数复制到所述合并视频码流中;
编码数据处理模块,用于将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中。
上述视频码流处理方法和装置,在合并多路原视频码流的过程中,需确定码流配置参数是否改变,将改变后的码流配置参数写入合并视频码流,将未改变的码流配置参数直接复制到合并视频码流中。编码数据容器可自定义编码数据的归属,合并视频码流中具有分别与每路原视频码流对应的编码数据容器,这样在合并多路原视频码流时便可以直接将编码数据按序复制到合并视频码流中相应的编码数据容器里,从而实现了多路原视频码流的合并。由于涉及的操作简单,且不需要对原视频码流进行解码再编码,极大地提高了合并视频码流的效率。而且合并视频码流中的编码数据直接从原视频码流复制获得,可避免视频码流在解码编码过程中造成的视频质量损失。
附图说明
图1为一个实施例中电子设备的结构示意图;
图2为一个实施例中视频码流处理方法的流程示意图;
图3为一个具体实例中的条带划分示例图;
图4为一个具体实例中的条带组划分示例图;
图5为另一个具体实例中的条带组划分示意图;
图6为再一个具体实例中的条带组划分示意图;
图7为一个实施例中获取在合并多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流的步骤的流程示意图;
图8为两路原视频码流的4种图像拼合方式的示意图;
图9为一个实施例中生成合并视频码流的序列参数集的示意图;
图10为另一个实施例中获取在合并多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流的步骤的流程示意图;
图11为一个实施例中宏块条带组归属表的示意图;
图12为一个实施例中生成合并视频码流的图像参数集的示意图;
图13为一个实施例中将多路原视频码流中的条带级数据合并到合并视频码流中的示意图;
图14为另一个实施例中视频码流处理方法的流程示意图;
图15为再一个实施例中视频码流处理方法的流程示意图;
图16为一个实施例中视频码流处理装置的结构框图;
图17为另一个实施例中视频码流处理装置的结构框图;
图18为再一个实施例中视频码流处理装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种电子设备,包括通过系统总线连接的处理器、非易失性存储介质和内存储器。其中处理器具有计算功能和控制电子设备工作的功能,该处理器被配置为执行一种视频码流处理方法。非易失性存储介质包括磁存储介质、光存储介质和闪存式存储介质中的至少一种,非易失性存储介质存储有操作系统和视频码流处理装置,该视频码流处理装置用于实现一种视频码流处理方法。其中电子设备可以是服务器,也可以是用户终端。
如图2所示,在一个实施例中,提供了一种视频码流处理方法,本实施例以该方法应用于上述图1中的电子设备来举例说明。该方法具体包括如下步骤:
步骤202,获取待合并的多路原视频码流,多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数。
具体地,原视频码流是需要合并的视频码流,合并视频码流时需要将多路的原视频码流合并为一路的视频码流。多路原视频码流是指至少两路原视频码流。合并的视频码流在解码后获得合并图像数据,获得的合并图像数据包括多路原视频码流分别解码获得的图像数据的信息。多路原视频码流中的每路原视频码流都采用相同的视频编码格式进行解码,而且每路原视频码流都具有相同的码流配置参数。
视频编码格式可以采用H.264或者AVC(Advanced Video Coding,高级视频编码),H.264或者AVC同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准,这个标准可被称为H.264/AVC或者AVC/H.264或者H.264/MPEG-4AVC或者MPEG-4/H.264AVC。视频编码格式也可以采用H.265或者HEVC(High Efficiency VideoCoding,高效压缩编码)。H.265是ITU-T VCEG继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。视频编码格式还可以采用其它格式,在这里不再一一列举。
码流配置参数是指对视频码流进行解码时需要用到的参数,码流配置参数描述了视频码流的数据结构,从而可以根据码流配置参数正确地对视频码流进行解码。码流配置参数比如解码后的画面尺寸、前后向参考帧数据,初始化QP值(固定量化模式并设置使用的量化值,取值范围为[0,51],0为无损压缩,默认为26)以及滤波设置参数等。若视频编码格式为H.264或者AVC,则码流配置参数可以包括序列参数集(Sequence Parameter Set,缩写为SPS)和图像参数集(Picture Parameter Set,缩写为PPS)。
采用相同的视频编码格式且具有相同码流配置参数的多路原视频码流,具备了采用本实施例所提供的视频码流处理方法进行视频码流合并的条件。这个条件是容易满足的,比如在视频会议系统中,一般使用同一套编码库,各分会场的视频数据格式会基于网络带宽的限定而统一由会议控制方设置,这也就满足了各路原视频码流SPS和PPS相同的条件。在生成3D视频码流时,左眼视频码流和右眼视频码流是由两台相同配置的摄像机拍摄获得的,也可以满足SPS和PPS相同的条件。
步骤204,获取在合并多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流。
具体地,电子设备合并多路原视频码流而获得合并视频码流,会使得部分码流配置参数发生改变,对于这些改变的码流配置参数,需将改变后的码流配置参数写入合并视频码流中。其中在合并多路原视频码流时改变的码流配置参数,包括合并前已存在但在合并后相应的参数值发生改变的码流配置参数,还包括合并前不存在但在合并后新增的码流配置参数。
步骤206,将多路原视频码流中在进行合并时未改变的码流配置参数复制到合并视频码流中。
具体地,多路原视频码流中的所有码流配置参数中,除去发生改变的码流配置参数,剩下的便是未改变的码流配置参数。电子设备在合并多路原视频码流时,需要将未改变的码流配置参数直接复制到合并视频码流中。
步骤208,将每路原视频码流的编码数据按序复制到合并视频码流中与每路原视频码流对应的编码数据容器中。
具体地,编码数据容器由视频编码格式所定义,是用于容纳编码数据的数据结构。基于可配置编码数据所归属的编码数据容器,电子设备可将每路原视频码流的编码数据分别复制到相应的编码数据容器中,且每路原视频码流的编码数据时具体是按照多路原视频码流的次序来进行复制的。举例来说,电子设备可将第一路原视频码流的编码数据复制到与第一路原视频码流对应的第一编码数据容器中,将第二路原视频码流的编码数据复制到与第二路原视频码流对应的第二编码数据容器中,依此类推。
上述视频码流处理方法,在合并多路原视频码流的过程中,需确定码流配置参数是否改变,将改变后的码流配置参数写入合并视频码流,将未改变的码流配置参数直接复制到合并视频码流中。编码数据容器可自定义编码数据的归属,合并视频码流中具有分别与每路原视频码流对应的编码数据容器,这样在合并多路原视频码流时便可以直接将编码数据按序复制到合并视频码流中相应的编码数据容器里,从而实现了多路原视频码流的合并。由于涉及的操作简单,且不需要对原视频码流进行解码再编码,极大地提高了合并视频码流的效率。而且合并视频码流中的编码数据直接从原视频码流复制获得,可避免视频码流在解码编码过程中造成的视频质量损失。
在一个实施例中,视频编码格式为H.264,编码数据为条带级数据,编码数据容器为条带组。步骤208包括:将每路原视频码流的条带级数据按序复制到合并视频码流中与每路原视频码流对应的条带组中。
具体地,H.264/AVC依次定义了序列(Sequence)、帧(Frame)、条带(Slice)、宏块(MacroBlock)以及块(Block)等级别的数据集合。帧内部可以有多个条带,多个条带类型可不同,互相之间不会参考,以屏蔽解码错误的蔓延。但条带的定义比较死板,条带内的宏块按照光栅扫描顺序排列,且宏块坐标依次增加,中间不能存在空隙。图3为一种条带划分示例图。
H.264/AVC标准为了增加码流的抗误码能力引入了一些新的抗误码纠错能力的技术,如灵活宏块重排(Flexible MacroBlock Ordering,FMO)技术。FMO是通过宏块分配映射技术,按照指定的方式将一类宏块映射到同一个条带组(Slice Group)中。条带组内部的宏块也是按照光栅扫描顺序排列,但宏块坐标可以不连续。FMO的原意是用于提高码流抗误码能力,但本实施例中利用FMO灵活的宏块排列以实现无需转码的视频码流合并。FMO定义了7种宏块到条带组的映射模式,其中模式6可以由用户自定义配置每一个宏块所属的宏块组。比如可以定义出如图4的特殊的条带组划分,也可以定义出如图5所示的矩阵形式的条带组划分,或者如图6所示的水平方向拼合的条带组划分。
本实施例中,借助FMO模式实现的多路码流合并技术,不需要对多路码流解码再编码,不会带来转码过程中视频质量损失。同时该方法所需要的计算量极小,需要的计算资源以及由此而产生的计算延迟都很小。可以高效的解决多路码流合并需求。
在一个实施例中,视频编码格式为H.264,码流配置参数包括序列参数集,参照图7,步骤204具体包括如下步骤:
步骤702,从多路原视频码流的序列参数集中提取图像高度和图像宽度。
具体地,H.264格式的多路原视频码流的序列参数集相同,在合并后会改变的码流配置参数有图像高度(pic_height_in_mbs_minus1)和图像宽度(pic_widt h_in_mbs_minus1)。电子设备则从多路原视频码流中任一路的序列参数集SPS中提取图像高度(pic_height_in_mbs_minus1)和图像宽度(pic_width_in_mbs_minus1)。
其中,图像高度和图像宽度可均以宏块(Macroblock)为单位,可从0起算。在视频编码中,一个编码图像通常划分成若干宏块组成,一个宏块由一个亮度像素块和附加的两个色度像素块组成。
步骤704,根据图像高度和合并多路原视频码流的图像拼合方式,计算合并图像高度。
具体地,图像拼合方式是指多路原视频码流在合并时在图像级别的合并方式。图像拼合方式可以包括水平方向图像拼合方式、垂直方向图像拼合方式以及矩阵图像拼合方式中的至少一种,水平方向图像拼合方式又可以包括水平方向完整图像拼合方式和水平方向局部图像拼合方式中的至少一种,垂直方向图像拼合方式可以包括垂直方向完整图像拼合方式和垂直方向局部图像拼合方式中的至少一种,矩阵图像拼合方式可以包括矩阵完整图像拼合方式和矩阵局部图像拼合方式。其中水平方向图像拼合方式是指将原视频码流的图像在水平方向上进行拼合,垂直方向图像拼合方式则是将原视频码流的图像在垂直方向上进行拼合,矩阵图像拼合方式是指将原视频码流的图像以矩阵形式进行拼合。完整图像拼合是指将需拼合的图像完整地拼合,局部图像拼合是指将需拼合的图像的一部分进行拼合。图像拼合方式的不同,导致合并图像高度和合并图像宽度的计算方式不同。
举例说明,参照图8,左眼视频码流和右眼视频码流的图像进行拼合,可以采用水平方向图像拼合方式,如8(a)和8(b)所示的图像拼合方式。其中8(a)为水平方向完整图像拼合方式,8(b)为水平方向减半图像拼合方式。8(a)和8(b)也可以称为左右3D格式,8(a)和8(b)的区别在于8(b)的左右眼图像数据在水平方向上分辨率减半,这样可以使得合并后获得的3D视频码流与合并前的左右眼视频码流分辨率相同。类似地,图8中8(c)为垂直方向完整图像拼合方式,8(d)为垂直方向减半图像拼合方式。
比如,若合并两路原视频码流(码流0和码流1)的图像拼合方式为水平方向完整图像拼合方式,则合并图像高度pic_height_in_mbs_minus1=码流0pic_height_in_mbs_minus1=码流1pic_height_in_mbs_minus1。其中码流0pic_height_in_mbs_minus1是指码流0的图像高度,码流1pic_height_in_mbs_minus1则是指码流1的图像高度。
若合并两路原视频码流(码流0和码流1)的图像拼合方式为垂直方向完整图像拼合方式,则合并图像高度pic_height_in_mbs_minus1=2*(码流0pic_height_in_mbs_minus1+1)-1。
若合并四路原视频码流(码流0至码流3)的图像拼合方式为矩阵图像拼合方式,则合并图像高度pic_height_in_mbs_minus1=2*(码流0pic_height_in_mbs_minus1+1)-1。
步骤706,根据图像宽度和合并多路原视频码流的图像拼合方式,计算合并图像宽度。
比如,若合并两路原视频码流(码流0和码流1)的图像拼合方式为水平方向完整图像拼合方式,则合并图像宽度pic_width_in_mbs_minus1=2*(码流0pic_width_in_mbs_minus1+1)-1。其中码流0pic_width_in_mbs_minus1是指码流0的图像宽度。
若合并两路原视频码流(码流0和码流1)的图像拼合方式为垂直方向完整图像拼合方式,则合并图像宽度pic_width_in_mbs_minus1=码流0pic_width_in_mbs_minus1
若合并四路原视频码流(码流0至码流3)的图像拼合方式为矩阵图像拼合方式,则合并图像宽度pic_width_in_mbs_minus1=2*(码流0pic_width_in_mbs_minus1+1)-1。
步骤708,将合并图像高度和合并图像宽度写入合并视频码流的序列参数集中。
具体地,参照图9,对于多路原视频码流的序列参数集中发生改变的码流配置参数即图像高度和图像宽度,将改变的码流配置参数即合并图像高度和合并图像宽度写入合并视频码流的序列参数集中。多路原视频码流的序列参数集中除图像高度和图像宽度之外的码流配置参数未发生改变,则直接复制到合并视频码流的序列参数集中。
本实施例中,若视频编码格式为H.264,在合并多路原视频码流时,每路原视频码流中的序列参数集只有图像宽度和图像高度发生改变,其他参数未发生变化,通过计算合并图像高度和合并图像宽度并写入合并视频码流,并将序列参数集中其它参数直接复制到合并视频码流中,可以实现高效地将H.264格式的多路原视频码流进行合并。
如图10所示,在一个实施例中,步骤204具体包括如下步骤:
步骤1002,根据多路原视频码流的路数确定条带组数目。
具体地,H.264/AVC中条带组数目为num_slice_groups_minus1。条带组数目由多路原视频码流的路数确定,具体条带组数目可等于多路原视频码流的路数。比如H.264/AVC格式的6路原视频码流进行合并,确定的条带组数目为6。
步骤1004,确定条带组模式类型为自定义宏块所归属条带组的模式类型。
具体地,H.264/AVC中条带组模式类型为slice_group_mbs_type,即FMO模式。这里条带组模式类型定义为6,即可以自定义各个宏块的条带组归属。
步骤1006,获取合并视频码流的图像宏块数目。
具体地,H.264/AVC中图像宏块数目为pic_size_in_mbs_units_minus1,可根据多路原视频码流的图像的宏块数量计算出合并视频码流的图像宏块数目pic_size_in_mbs_units_minus1。
步骤1008,确定合并视频码流中图像的宏块条带组归属表。
具体地,H.264/AVC中宏块条带组归属表slice_group_id[]表示视频码流中图像的宏块和条带组的归属关系,即表示哪个宏块属于哪个条带组。这样将每路原视频码流的条带级数据按序复制到合并视频码流中与每路原视频码流对应的条带组中后,便可以根据宏块条带组归属表确定条带组中的宏块所来自的原始视频码流。电子设备具体可按照光栅扫描顺序定义每个宏块的条带组归属。
举例说明,参照图11,假设4路分辨率为176×144(QCIF,Quarter CommonIntermediate Format,四分之一公共中间格式)的原视频码流合并成一路分辨率为352×288(CIF,Common Intermediate Format,公共中间格式)的合并视频码流,则合并视频码流的图像宏块数目pic_size_in_mbs_units_minus1为(352/16)*(288/16)-1=395,其中宏块数目从0起算。相应的宏块条带组归属表slice_group_id的数值如图11所示。
步骤1010,将条带组数目、条带组模式类型、图像宏块数目以及宏块条带组归属表写入合并视频码流的图像参数集。
具体地,参照图12,合并视频码流的条带组数目可根据多路原视频码流中的任一路原视频码流的条带组数目计算出后写入合并视频码流的图像参数集。条带组模式类型、图像宏块数目以及宏块条带组归属表是新增的码流配置参数,也写入到合并视频码流的图像参数集。合并视频码流的图像参数集中除去条带组数目、条带组模式类型、图像宏块数目以及宏块条带组归属表的参数与任一路原视频码流的相应参数一致。
本实施例中,若视频编码格式为H.264,在合并多路原视频码流时,每路原视频码流中的图像参数集条带组数目、条带组模式类型、图像宏块数目以及宏块条带组归属表发生改变,其他参数未发生变化,将这些改变的参数写入到合并视频码流的图像参数集中,可以实现高效地将H.264格式的多路原视频码流进行合并。
在一个实施例中,步骤208具体包括:将每路原视频码流中的条带级数据的条带头和条带数据依次复制到合并视频码流中与每路原视频码流对应的条带组。
在一个实施例中,该方法还包括:当采用CABAC熵编码时,在条带头和条带数据之间填充比特,以使条带数据的起始比特位于字节首位。
具体地,条带(slice)级数据包括条带头(slice header)和条带数据(slicedata)。H.264标准有两种熵编码方法,CAVLC(Context-Adaptive Varialbe-LengthCoding,即基于上下文的自适应变长编码)和CABAC(Context-based Adaptive BinaryArithmetic Coding,基于上下文的自适应二进制算术编码算法)。使用CABAC熵编码时条带头和条带数据之间需要添加对齐比特,而CAVLC的条带头和条带数据之间无需添加对齐比特。参照图13,在使用CABAC熵编码时,条带头与条带数据之间有填充比特,使得条带数据的第一个比特一定是在一个字节的起始位,这样就不会造成因为改变了条带头的比特串而需要对所有条带数据进行移位。本实施例中,在合并多路原视频码流时,可以按字节快速地合并来自多路原视频码流的条带级数据,进一步提高了合并视频码流的效率。
在一个实施例中,该视频码流处理方法还包括:获取每路原视频码流在合并视频码流中的条带首宏块地址,并将获取的位置写入合并视频码流中相应的条带头之内。
条带头中需要改变的参数是条带首宏块地址first_mb_in_slice,条带头中其它参数不改变,条带数据也不改变,直接复制到合并码流中。合并多路原视频码流时,需将不同的视频码流中的条带级数据合并到一个码流的不同条带首宏块地址。如图11所示,码流1的条带首宏块地址first_mb_in_slice=12;码流2的条带首宏块地址first_mb_in_slice=198;码流3的条带首宏块地址first_mb_in_slice=210。
如图14所示,在一个实施例中,一种视频码流处理方法,具体包括如下步骤:
步骤1402,根据多路原视频码流的序列参数集中的图像高度、图像宽度和合并多路原视频码流的图像拼合方式,计算获得合并图像高度和合并图像宽度,将合并图像高度和合并图像宽度写入合并视频码流的序列参数集。
步骤1404,将多路原视频码流的序列参数集中未改变的参数直接复制到合并视频码流的序列参数集。
步骤1406,将多路原视频码流的图像参数集中的条带组数目更改为合并后的条带组数目并写入合并视频码流的图像参数集。
步骤1408,新增条带组模式类型、图像宏块数目和宏块条带组归属表的数据段并写入合并视频码流的图像参数集。
步骤1410,将多路原视频码流的图像参数集中未改变的参数直接复制到合并视频码流的图像参数集。
步骤1412,更新当前路原视频码流的条带级数据中的条带头中的条带首宏块地址,写入合并视频码流中字节首位起的位置。
步骤1414,复制当前路原视频码流的条带级数据中的条带头中未改变的参数到合并视频码流。
步骤1416,当采用CABAC熵编码时,在合并视频码流的条带头之后填充比特。若采用CAVLC熵编码,则跳过步骤1416。
步骤1418,复制当前路原视频码流的条带级数据中的条带数据到合并视频码流中。
步骤1420,当采用CABAC熵编码时,在合并视频码流的条带数据之后填充比特。若采用CAVLC熵编码,则跳过步骤1420。
步骤1422,判断是否处理完所有路原视频码流,若是则结束,若否则切换到下一路原视频码流继续执行步骤1412。
在一个实施例中,若采用如图8中8(c)的垂直方向完整图像拼合方式,参照图15,一种视频码流处理方法,具体包括如下步骤:
步骤1502,根据多路原视频码流的序列参数集中的图像高度计算获得合并图像高度并写入合并视频码流的序列参数集中,将多路原视频码流的序列参数集中除去图像高度的参数直接复制到合并视频码流的序列参数集中。
步骤1504,将多路原视频码流的图像参数集的参数直接复制到合并视频码流的图像参数集中。
步骤1506,复制第一路原视频码流的条带级数据到合并视频码流中。
步骤1508,更新第二路原视频码流的条带级数据的条带头中的条带首宏块地址并写入合并视频码流中。
步骤1510,复制第二路原视频码流的条带级数据中的条带头中除去条带首宏块地址的参数到合并视频码流中。
步骤1512,当采用CABAC熵编码时,在合并视频码流中来自于第二路原视频码流的条带头之后填充比特。
步骤1514,复制第二路原视频码流的条带级数据中的条带数据到合并视频码流中。
步骤1516,当采用CABAC熵编码时,在合并视频码流中来自于第二路原视频码流的条带数据之后填充比特,结束对多路原视频码流的合并。
本实施例中,在垂直方向完整图像拼合方式下,可以不借助FMO模式进行视频码流合并,而直接将两路视频码流写入上下分布的两个条带中,进一步提高了合并视频码流的效率。
在一个实施例中,视频编码格式为H.265,编码数据为编码单元,编码数据容器为瓦片结构。步骤208包括:将每路原视频码流的编码单元按序复制到合并视频码流中与每路原视频码流对应的瓦片结构中。
具体地,H.265/HEVC定义了一种可选的Tile结构,也就是瓦片结构,Tile结构是帧内可以独立进行解码的矩形区域,每一个Tile结构包含整数个LCU(Largest Coding Unit,最大编码单元)。Tile结构的目的是在增强并行处理能力的同时又可以抑制错误扩散。在将帧结构划分的意图上和FMO模式类似。因此,本实施例中,对于H.265格式的多路原视频码流,将多路视频码流数据合并到同一个视频码流的不同Tile结构中,从而快速完成比特级别的多码流合并。
如图16所示,在一个实施例中,提供了一种视频码流处理装置1600,包括获取模块1602、第一码流配置参数处理模块1604、第二码流配置参数处理模块1606和编码数据处理模块1608。
获取模块1602,用于获取待合并的多路原视频码流,多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数。
第一码流配置参数处理模块1604,用于获取在合并多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流。
第二码流配置参数处理模块1606,用于将多路原视频码流中在进行合并时未改变的码流配置参数复制到合并视频码流中。
编码数据处理模块1608,用于将每路原视频码流的编码数据按序复制到合并视频码流中与每路原视频码流对应的编码数据容器中。
上述视频码流处理装置1600,在合并多路原视频码流的过程中,需确定码流配置参数是否改变,将改变后的码流配置参数写入合并视频码流,将未改变的码流配置参数直接复制到合并视频码流中。编码数据容器可自定义编码数据的归属,合并视频码流中具有分别与每路原视频码流对应的编码数据容器,这样在合并多路原视频码流时便可以直接将编码数据按序复制到合并视频码流中相应的编码数据容器里,从而实现了多路原视频码流的合并。由于涉及的操作简单,且不需要对原视频码流进行解码再编码,极大地提高了合并视频码流的效率。而且合并视频码流中的编码数据直接从原视频码流复制获得,可避免视频码流在解码编码过程中造成的视频质量损失。
在一个实施例中,视频编码格式为H.264,码流配置参数包括序列参数集;如图17所示,第一码流配置参数处理模块1604包括:提取模块1604a、合并图像高度计算模块1604b、合并图像宽度计算模块1604c和序列参数集写入模块1604d。
提取模块1604a,用于从多路原视频码流的序列参数集中提取图像高度和图像宽度。
合并图像高度计算模块1604b,用于根据图像高度和合并多路原视频码流的图像拼合方式,计算合并图像高度。
合并图像宽度计算模块1604c,用于根据图像宽度和合并多路原视频码流的图像拼合方式,计算合并图像宽度。
序列参数集写入模块1604d,用于将合并图像高度和合并图像宽度写入合并视频码流的序列参数集中。
本实施例中,若视频编码格式为H.264,在合并多路原视频码流时,每路原视频码流中的序列参数集只有图像宽度和图像高度发生改变,其他参数未发生变化,通过计算合并图像高度和合并图像宽度并写入合并视频码流,并将序列参数集中其它参数直接复制到合并视频码流中,可以实现高效地将H.264格式的多路原视频码流进行合并。
在一个实施例中,视频编码格式为H.264,编码数据为条带级数据,编码数据容器为条带组;编码数据处理模块1608具体用于将每路原视频码流的条带级数据按序复制到合并视频码流中与每路原视频码流对应的条带组中。
如图18所示,在一个实施例中,第一码流配置参数处理模块1604,包括:参数获取模块1604e和写入模块1604f。
参数获取模块1604e,用于根据多路原视频码流的路数确定条带组数目;确定条带组模式类型为自定义宏块所归属条带组的模式类型;获取合并视频码流的图像宏块数目;确定合并视频码流中图像的宏块条带组归属表。
写入模块1604f,用于将条带组数目、条带组模式类型、图像宏块数目以及宏块条带组归属表写入合并视频码流的图像参数集。
在一个实施例中,编码数据处理模块1608具体用于将每路原视频码流中的条带级数据的条带头和条带数据依次复制到合并视频码流中与每路原视频码流对应的条带组。
在一个实施例中,编码数据处理模块1608还用于在条带头和条带数据之间填充比特,以使条带数据的起始比特位于字节首位。
在一个实施例中,编码数据处理模块1608还用于获取每路原视频码流在合并视频码流中的条带首宏块地址,并将获取的位置写入合并视频码流中相应的条带头之内。
在一个实施例中,视频编码格式为H.265,编码数据为编码单元,编码数据容器为瓦片结构;编码数据处理模块1608具体用于将每路原视频码流的编码单元按序复制到合并视频码流中与每路原视频码流对应的瓦片结构中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种视频码流处理方法,所述方法包括:
获取待合并的多路原视频码流,所述多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数,各路原视频码流序列参数集和图像参数集相同;
获取在合并所述多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流,根据所述多路原视频码流的路数确定条带组数目;确定条带组模式类型为自定义宏块所归属条带组的模式类型,自定义各个宏块的条带组归属;获取合并视频码流的图像宏块数目;确定合并视频码流中图像的宏块条带组归属表;将所述条带组数目、所述条带组模式类型、所述图像宏块数目以及所述宏块条带组归属表写入合并视频码流的图像参数集,所述条带组模式类型、图像宏块数目以及宏块条带组归属表是新增的码流配置参数;
将所述多路原视频码流中在进行合并时未改变的码流配置参数复制到所述合并视频码流中;
将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中。
2.根据权利要求1所述的方法,其特征在于,所述视频编码格式为H.264,所述码流配置参数包括序列参数集;
所述对于在合并所述多路原视频码流时改变的所述码流配置参数,将改变后的码流配置参数写入合并视频码流,包括:
从所述多路原视频码流的序列参数集中提取图像高度和图像宽度;
根据所述图像高度和合并所述多路原视频码流的图像拼合方式,计算合并图像高度;
根据所述图像宽度和合并所述多路原视频码流的图像拼合方式,计算合并图像宽度;
将所述合并图像高度和所述合并图像宽度写入合并视频码流的序列参数集中。
3.根据权利要求1所述的方法,其特征在于,所述视频编码格式为H.264,所述编码数据为条带级数据,所述编码数据容器为条带组;
所述将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中,包括:
将每路所述原视频码流的条带级数据按序复制到所述合并视频码流中与每路所述原视频码流对应的条带组中。
4.根据权利要求3所述的方法,其特征在于,所述将每路所述原视频码流的条带级数据按序复制到所述合并视频码流中与每路所述原视频码流对应的条带组中,包括:
将每路所述原视频码流中的条带级数据的条带头和条带数据依次复制到所述合并视频码流中与每路所述原视频码流对应的条带组。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:当采用CABAC熵编码时,在所述条带头和所述条带数据之间填充比特,以使所述条带数据的起始比特位于字节首位。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取每路原视频码流在所述合并视频码流中的条带首宏块地址,并将获取的位置写入合并视频码流中相应的条带头之内。
7.根据权利要求1所述的方法,其特征在于,所述视频编码格式为H.265,所述编码数据为编码单元,所述编码数据容器为瓦片结构;
所述将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中,包括:
将每路所述原视频码流的编码单元按序复制到所述合并视频码流中与每路所述原视频码流对应的瓦片结构中。
8.一种视频码流处理装置,其特征在于,所述装置包括:
获取模块,用于获取待合并的多路原视频码流,所述多路原视频码流采用相同的视频编码格式且具有相同的码流配置参数,各路原视频码流序列参数集和图像参数集相同;
第一码流配置参数处理模块,用于获取在合并所述多路原视频码流时发生改变的码流配置参数并将改变后的码流配置参数写入合并视频码流,包括:参数获取模块,用于根据所述多路原视频码流的路数确定条带组数目;确定条带组模式类型为自定义宏块所归属条带组的模式类型,自定义各个宏块的条带组归属;获取合并视频码流的图像宏块数目;确定合并视频码流中图像的宏块条带组归属表;写入模块,用于将所述条带组数目、所述条带组模式类型、所述图像宏块数目以及所述宏块条带组归属表写入合并视频码流的图像参数集,所述条带组模式类型、图像宏块数目以及宏块条带组归属表是新增的码流配置参数;
第二码流配置参数处理模块,用于将所述多路原视频码流中在进行合并时未改变的码流配置参数复制到所述合并视频码流中;
编码数据处理模块,用于将每路所述原视频码流的编码数据按序复制到所述合并视频码流中与每路所述原视频码流对应的编码数据容器中。
9.根据权利要求8所述的装置,其特征在于,所述视频编码格式为H.264,所述码流配置参数包括序列参数集;所述第一码流配置参数处理模块包括:
提取模块,用于从所述多路原视频码流的序列参数集中提取图像高度和图像宽度;
合并图像高度计算模块,用于根据所述图像高度和合并所述多路原视频码流的图像拼合方式,计算合并图像高度;
合并图像宽度计算模块,用于根据所述图像宽度和合并所述多路原视频码流的图像拼合方式,计算合并图像宽度;
序列参数集写入模块,用于将所述合并图像高度和所述合并图像宽度写入合并视频码流的序列参数集中。
10.根据权利要求8所述的装置,其特征在于,所述视频编码格式为H.264,所述编码数据为条带级数据,所述编码数据容器为条带组;所述编码数据处理模块具体用于将每路所述原视频码流的条带级数据按序复制到所述合并视频码流中与每路所述原视频码流对应的条带组中。
11.根据权利要求10所述的装置,其特征在于,所述编码数据处理模块具体用于将每路所述原视频码流中的条带级数据的条带头和条带数据依次复制到所述合并视频码流中与每路所述原视频码流对应的条带组。
12.根据权利要求11所述的装置,其特征在于,所述编码数据处理模块还用于当采用CABAC熵编码时,在所述条带头和所述条带数据之间填充比特,以使所述条带数据的起始比特位于字节首位。
13.根据权利要求11所述的装置,其特征在于,所述编码数据处理模块还用于获取每路原视频码流在所述合并视频码流中的条带首宏块地址,并将获取的位置写入合并视频码流中相应的条带头之内。
14.根据权利要求8所述的装置,其特征在于,所述视频编码格式为H.265,所述编码数据为编码单元,所述编码数据容器为瓦片结构;所述编码数据处理模块具体用于将每路所述原视频码流的编码单元按序复制到所述合并视频码流中与每路所述原视频码流对应的瓦片结构中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610022475.XA CN105472371B (zh) | 2016-01-13 | 2016-01-13 | 视频码流处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610022475.XA CN105472371B (zh) | 2016-01-13 | 2016-01-13 | 视频码流处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105472371A CN105472371A (zh) | 2016-04-06 |
CN105472371B true CN105472371B (zh) | 2019-11-05 |
Family
ID=55609592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610022475.XA Active CN105472371B (zh) | 2016-01-13 | 2016-01-13 | 视频码流处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105472371B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109587431A (zh) * | 2018-11-12 | 2019-04-05 | 深圳威尔视觉传媒有限公司 | 一种多路视频码流合并方法、装置、设备和存储介质 |
CN109862357A (zh) * | 2019-01-09 | 2019-06-07 | 深圳威尔视觉传媒有限公司 | 低延迟的云游戏图像编码方法、装置、设备和存储介质 |
CN111435991B (zh) * | 2019-01-11 | 2021-09-28 | 上海交通大学 | 基于分组的点云码流封装方法和系统 |
CN110933436A (zh) * | 2019-12-17 | 2020-03-27 | 展讯通信(上海)有限公司 | 图像编码方法、装置、计算机设备及存储介质 |
WO2021170132A1 (en) * | 2020-02-28 | 2021-09-02 | Huawei Technologies Co., Ltd. | An encoder, a decoder and corresponding methods simplifying signalling slice header syntax elements |
CN117201955A (zh) * | 2022-05-30 | 2023-12-08 | 荣耀终端有限公司 | 视频拍摄方法、装置、设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1540962B1 (en) * | 2002-09-20 | 2016-05-11 | NTT DoCoMo, Inc. | Method and apparatus for arithmetic coding and decoding |
CN101150719B (zh) * | 2006-09-20 | 2010-08-11 | 华为技术有限公司 | 并行视频编码的方法及装置 |
CN101394550B (zh) * | 2007-09-17 | 2010-08-11 | 华为技术有限公司 | 视频数据的打包方法及装置 |
DE102007049351A1 (de) * | 2007-10-15 | 2009-04-16 | Siemens Ag | Verfahren und Vorrichtung zum Erstellen eines kodierten Ausgangsvideostroms aus mindestens zwei kodierten Eingangsvideoströmen, sowie Verwendung der Vorrichtung und kodierter Eingangsvideostrom |
JP5656879B2 (ja) * | 2010-07-30 | 2015-01-21 | パナソニックIpマネジメント株式会社 | 画像復号化装置、画像復号化方法、画像符号化装置および画像符号化方法 |
JP5966932B2 (ja) * | 2011-02-10 | 2016-08-10 | ソニー株式会社 | 画像処理装置、画像処理方法、プログラム及び媒体 |
-
2016
- 2016-01-13 CN CN201610022475.XA patent/CN105472371B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105472371A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113491120B (zh) | 视频编解码方法、装置、电子设备和存储介质 | |
CN105472371B (zh) | 视频码流处理方法和装置 | |
KR102471979B1 (ko) | 비디오 코딩을 위한 방법 및 장치 | |
CN108028919B (zh) | 一种视频或者图像编解码的方法及装置 | |
CN103718557B (zh) | 用于解码视频的方法 | |
CN111819854B (zh) | 用于协调多符号位隐藏和残差符号预测的方法和装置 | |
KR101719971B1 (ko) | 비디오 코딩을 위한 크로마 데이터의 디블록킹 | |
CN113615185B (zh) | 用于视频编解码的方法和装置 | |
WO2015136485A1 (en) | Improved screen content and mixed content coding | |
WO2015096822A1 (zh) | 图像编码、解码方法及装置 | |
JP2017535145A (ja) | 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則 | |
WO2007081713A1 (en) | Method and apparatus for providing reduced resolution update mode for multi-view video coding | |
TW202041007A (zh) | 用於視頻編解碼的量化矩陣計算和表示的方法和裝置 | |
CN115462073A (zh) | 视频译码中的参数集语法元素和变量 | |
KR102660599B1 (ko) | 비디오 인코더, 비디오 디코더 및 상응하는 방법들 | |
TW202135528A (zh) | 用於編解碼視訊序列的方法和裝置 | |
TWI792200B (zh) | 影像或視訊處理方法及裝置 | |
JP2023153802A (ja) | イントラ・サブパーティション・コーディング・ツールによって引き起こされるサブパーティション境界のためのデブロッキングフィルタ | |
KR20220143943A (ko) | 슬라이스 헤더 신택스 엘리먼트의 시그널링을 단순화하는 인코더, 디코더, 및 대응하는 방법 | |
CN115836527A (zh) | 编码器、解码器及用于自适应环路滤波的对应方法 | |
WO2022166462A1 (zh) | 编码、解码方法和相关设备 | |
BR112021011398A2 (pt) | Método e aparelho de codificação de vídeo | |
KR20220164790A (ko) | 머신을 위한 비디오 코딩 방법 및 장치 | |
KR102650289B1 (ko) | 비디오 인코더, 비디오 디코더 및 상응하는 방법들 | |
TW202029758A (zh) | 利用圖塊分組進行視訊資料編碼的方法及裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |