视频码流的处理方法、视频编码装置以及可读存储介质与流程

专利检索2022-05-10  12



1.本技术涉及视频处理领域,特别是涉及视频码流的处理方法、视频编码装置以及可读存储介质。


背景技术:

2.随着生产生活质量的进步,人们对视频质量的要求日益增加,而帧率转换技术则为提升视频质量的一重要技术点。
3.帧率转换不仅用来在视频格式和标准之间进行转换,也用来增强视频的整体质量,更高的帧率将成为用来提供更高质量家庭视频的重要组成,然而,现有的视频中有些还不能在更高的帧率下使用,因此,帧率转换变得非常必要。对于多种不同编码标准的视频来说,如何有针对性地进行帧率转换,成为目前多媒体领域十分重要的研究课题。


技术实现要素:

4.本技术主要提供一种视频码流的处理方法、视频编码装置以及可读存储介质,能够解决现有技术中视频码流插帧方式复杂、速度慢的问题。
5.为解决上述技术问题,本技术第一方面提供了一种视频码流的处理方法,该方法包括:获取目标帧率和原始码流的参数信息;其中,所述参数信息至少包括帧序号信息和视频可用性信息;对所述帧序号信息进行确认,以及对所述视频可用性信息进行确认;确定添加帧的位置和添加帧数;将添加帧的码流添加至所述原始码流的对应位置,得到新的码流。
6.为解决上述技术问题,本技术第二方面提供了一种视频编码装置,包括相互耦接的处理器和存储器,所述存储器中存储有计算机程序,所述处理器用于执行所述计算机程序,以实现上述第一方面提供的视频码流的处理方法。
7.为解决上述技术问题,本技术第三方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面提供的视频码流的处理方法。
8.本技术的有益效果是:区别于现有技术的情况,本技术通过获取目标帧率和原始码流的参数信息,参数信息至少包括帧序号信息和视频可用性信息,再对帧序号信息进行确认,以及对视频可用性信息进行确认,进一步确定添加帧的位置和添加帧数,最后将添加帧的码流添加至原始码流的对应位置,得到新的码流。如此,通过解析原始码流中的参数,即可通过参数信息完成插帧的操作,而不必将原始码流解码后再进行插帧,方便快捷,且能解决插帧操作内存占用过大的问题。
附图说明
9.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。其中:
10.图1是本技术视频码流的处理方法一实施例的流程示意框图;
11.图2是本技术对帧序号信息进行确认一实施例的流程示意框;
12.图3是本技术对视频可用性信息进行确认一实施例的流程示意框图;
13.图4是本技术对视频可用性信息进行确认一实施例的码流对照示意图;
14.图5是本技术确定添加帧的位置一实施例的流程示意框图;
15.图6是本技术步骤s14一实施例的流程示意框图;
16.图7是本技术将添加帧的码流添加至原始码流的对应位置的示意图;
17.图8是本技术对帧序号信息进行修改一实施例的流程示意框图;
18.图9是本技术视频编码装置一实施例的示意图;
19.图10是本技术视频编码装置一实施例的电路结构示意框图;
20.图11是本技术计算机可读存储介质一实施例的电路结构示意框图。
具体实施方式
21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.本技术中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。此外,术语“包括”和“具有”以及他们任何形变,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
23.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解是,本文所描述的实施例可以与其他实施例结合。
24.请参阅图1,图1是本技术视频码流的处理方法一实施例的流程示意框图。本实施例包括以下步骤:
25.s11,获取目标帧率和原始码流的参数信息;其中,参数信息至少包括帧序号信息和视频可用性信息。
26.本实施例中,原始码流的帧率则为原始帧率,目标帧率指的则是:对原始码流进行处理后的码流的帧率。
27.本步骤对原始码流进行解析,以获取相关参数信息。相关参数信息则根据sps(sequence paramater set,又称作序列参数集)和slice header中的参数信息获取到。
28.其中,帧序号信息即poc(图像播放顺序号/图像顺序号),其句法元素为pic_order_cnt,用于标识图像帧的播放顺序。
29.视频可用性信息,即vui信息,其中可包括原始码流的当前帧率信息,部分码流中
可能不存在视频可用性信息,不存在视频可用性信息的码流则不能通过参数分析得出当前帧率。
30.其中,原始码流为基于h.264编码标准的视频码流。
31.帧序号信息还可包括帧序号的计数类型信息,其句法元素为:pic_order_cnt_type,帧序号的计数类型有3种,分别是0类型、1类型和2类型,在句法上的表示方式分别为:pic_order_cnt_type=0、pic_order_cnt_type=1,以及pic_order_cnt_type=2。
32.s12,对帧序号信息进行确认,以及对视频可用性信息进行确认。
33.请参阅图2,图2为本技术对帧序号信息进行确认一实施例的流程示意框图。包括以下步骤:
34.s121,判断帧序号信息对应的序号类型是否为0或1。
35.若帧序号信息对应的序号类型为0或1,则执行步骤s122,继续对原始码流进行处理;否则,执行步骤s123。
36.s122,对视频可用性信息进行确认。
37.s123,结束处理。
38.在步骤s121确定帧序号信息对应的序号类型不为0或1时,即可确定pic_order_cnt_type=2。pic_order_cnt_type=2时,不支持非参考帧,结束对原始码流的处理。
39.请参阅图3,图3为本技术对视频可用性信息进行确认一实施例的流程示意框图。包括以下步骤:
40.s124,判断是否存在视频可用性信息。
41.若是,则执行步骤125;否则,执行步骤s128。
42.s125,判断视频可用性信息中是否存在时间信息。
43.若存在时间信息,则执行步骤s126;否则,执行步骤s127。
44.s126,根据当前帧率和目标帧率对时间信息进行修改。
45.本步骤根据下式对时间信息进行修改:
46.time_scale1=time_scale0*fps1/fps0
47.其中,time_scale1为本步骤修改得到的时间信息,time_scale0则为原始码流中解析的到的时间信息,fps1为目标帧率,fps0为当前帧率。
48.例如,在其中一具体实施例中,目标帧率fps1=120,确定视频可用性信息中存在时间信息,且解析得到原始帧率fps0=60,time_scale0为60000,num_units_in_tick为1000,则根据原始帧率fps0=60和目标帧率fps1=120修改time_scale,得到time_scale1=time_scale0*fps1/fps0=120000。
49.s127,添加时间信息。
50.时间信息中包括time_scale和num_units_in_tick参数信息,还包括其他信息。
51.其中,time_scale和num_units_in_tick可根据目标帧率确定,时间信息中的其他信息可自由指定,例如可以指定为0或1。
52.可选地,time_scale和num_units_in_tick参照下式确定:fps1=time_scale/num_units_in_tick,即,只要time_scale和num_units_in_tick满足上式的比例关系即可。例如,目标帧率为50时,可将time_scale设置为50,num_units_in_tick设置为1;或者,可将time_scale设置为100,num_units_in_tick设置为2。
53.s128,添加视频可用性信息。
54.视频可用性信息中的time_scale和num_units_in_tick可根据目标帧率确定,视频可用性信息中的其他信息可自由指定,例如可以指定为0或1。
55.具体而言,time_scale和num_units_in_tick的确定方式可参照下式:fps1=time_scale/num_units_in_tick,即,只要time_scale和num_units_in_tick满足上式的比例关系即可。与步骤s127中确定time_scale和num_units_in_tick的方式一致,不再进行赘述。
56.本实施例通过对视频可用性信息进行确认和配置,在不存在视频可用性信息或时间信息时,根据目标帧率fps1确定视频可用性信息或时间信息,在存在时间信息时,对其中的time_scale进行修改,以使得视频可用性信息中包含目标帧率的信息。
57.请参阅图4,图4为本技术对视频可用性信息进行确认一实施例的码流对照示意图。对视频可用性信息进行确认后,码流中的“88”变为“8c”,并增加了信息“3a 10 00 00 03 00 10 00 00 03 03 28 40 40”。
58.s13,确定添加帧的位置和添加帧数。
59.本步骤在原始码流中确定添加帧的位置和相应位置的添加帧数。具体而言,本实施例是对原始码流进行插帧操作,需要在原始码流中插入图像帧,以得到目标帧率的新码流。
60.其中,可根据当前帧率和目标帧率确定添加帧的位置和添加帧数。请参阅图5,图5为本技术确定添加帧的位置一实施例的流程示意框图,包括以下步骤:
61.s131,判断当前帧率是否存在。
62.当前帧率储存在视频可用性信息(vui)中,可通过对视频可用性信息和时间信息来判断当前帧率是否存在。
63.若当前帧率存在,则执行步骤s132;若当前帧率不存在,则执行步骤s133。
64.s132,在每fps0*t帧中添加(fps1

fps0)*t帧。
65.其中,fps0为当前帧率,fps1为目标帧率,t为设定时间长度。
66.可选地,设定时间长度t与原始码流的时长t之间有以下关系:t=t*a,其中a为一正整数。即原始码流中包括有限组fps0*t帧,在每组fps0*t帧中,添加(fps1

fps0)*t帧,即可在添加帧后,得到帧率为fps1的码流。
67.其中,要添加的(fps1

fps0)*t帧中的每一帧在fps0*t帧原始帧的插入位置可以是均匀分布的,也可以是非均匀的。例如,要将30帧添加到原始码流的20帧原始帧中时,用1

20的阿拉伯数字依次表示20帧中的每一帧,那么,可以在奇数序号的原始帧之后添加1帧,在偶数序号的原始帧之后添加2帧;要将20帧添加到原始码流的20帧原始帧中时,可在每一帧原始帧之后均添加1帧。
68.本步骤可在每fps0*t帧中添加(fps1

fps0)*t帧,可在原始码流中均匀地插入添加帧,提高视频质量。
69.在其中一实施例中,本步骤可在目标帧率为当前帧率整数倍时,在每一帧后面添加(fps1

fps0)/fps0帧;在目标帧率不为当前帧率整数倍时,在每一帧后面添加[k*(fps1

fps0)/fps0]

[(k

1)*(fps1

fps0)/fps0]帧。
[0070]
其中,k为fps0*t帧中的帧序号,[k*(fps1

fps0)/fps0]

[(k

1)*(fps1

fps0)/
fps0]中的“[]”则表示对“k*(fps1

fps0)/fps0]

[(k

1)*(fps1

fps0)/fps0”取整数。
[0071]
本实施例可在目标帧率为当前帧率整数倍,以及目标帧率不为当前帧率整数倍的情况下,分别确定其添加帧的位置,以使得添加帧的位置更加科学合理。
[0072]
本领域技术人员还可根据本步骤上述方法结合实际当前帧率和目标帧率,得出其他添加帧插入的位置的确定方法,使得添加帧合理均匀地分布,提升视频质量。
[0073]
s133,在每任意帧后添加任意帧。
[0074]
在步骤s131中,无法通过视频可用性信息(vui)确定当前帧率信息时,则无法通过当前帧率确定添加帧的位置。
[0075]
本步骤可以在任意图像帧后添加任意帧,直到得到新码流的帧率为目标帧率。
[0076]
例如可以是在每一帧或多帧后添加n帧,并在每插入n帧后,检测码流的帧率信息,未达到目标帧率则继续进行添加帧的操作,达到目标帧率时,则停止添加帧的操作。其中,n为正整数。
[0077]
s14,将添加帧的码流添加至所述原始码流的对应位置,得到新的码流。
[0078]
本步骤可,以添加位置的前一帧或与添加位置相邻的多帧为参考帧,编码生成添加帧。
[0079]
请参阅图6,图6为本技术步骤s14一实施例的流程示意框图。包括以下步骤:
[0080]
s141,根据添加帧的前一帧确定添加帧。
[0081]
其中,添加帧的前一帧具体指:位于该添加帧的添加位置的前一相邻帧。
[0082]
本步骤以添加帧的前一帧为参考帧,生成添加帧。
[0083]
s142,对添加帧进行编码,得到添加帧的码流。
[0084]
具体可采用skip模式对添加帧进行编码,以得到添加帧的码流。
[0085]
本步骤生成添加帧的操作包括以下句法元素:
[0086]
1)first_mb_in_slice=0:表示新的一帧的开始。
[0087]
2)帧类型为p帧或b帧。
[0088]
3)pps_id:pps_id为当前帧参考pps参数集序号,当前帧与参考帧参考同一个pps参数集,因此两者的pps_id相同。
[0089]
3)解码帧序号:解码帧序号根据其参考帧的解码帧序号加相应设置。
[0090]
4)图像序号:图像序号根据其参考帧的图像序号相应设置,并根据图像序号修改相应的句法。
[0091]
5)其余句法:因为当前帧所有块均为skip模式,其它句法元素并不影响这一帧的内容,因此这些句法元素可以在合理范围内任意设置,通常设置为0。
[0092]
6)mb_skip_run:表示有多少块使用了skip模式,因为整帧均采用了skip模式,因此该值等于图像中宏块个数。
[0093]
s143,将添加帧的码流添加至原始码流的对应位置,得到新的码流。
[0094]
本步骤生成的添加帧按照步骤s13确定的添加位置和添加帧数插入,得到新码流。
[0095]
请参阅图7,图7为本技术将添加帧的码流添加至原始码流的对应位置的示意图。前一帧的结尾为“71 aa ab 80”,后一帧的开头为“00 00 00 01”,添加的一帧为“00 00 00 01 01 9a 3c 40 32 40”。
[0096]
请参阅图8,在步骤s13之后,本实施还可包括步骤s15

s17:
[0097]
s15,确定帧序号信息对应的序号计数类型是否为1。
[0098]
本步骤对步骤s11解析得到的原始码流的帧序号信息的序号计数类型再次进行判断。
[0099]
在确定帧序号信息对应的序号计数类型为1时,执行步骤s16;否则,帧序号信息对应的序号计数类型不为1时,则能够确定pic_order_cnt_type=0,执行步骤s17。
[0100]
s16,根据添加帧数和添加帧的位置对帧序号信息进行修改。
[0101]
本步骤可根据步骤s13确定的添加帧的位置和相应的添加帧数,对原始码流中的帧序号信息进行修改,使得原始码流中的帧序号与插帧后得到的新码流的帧序号信息对应。
[0102]
s17,执行步骤s14。
[0103]
步骤s15中,确定帧序号信息对应的序号计数类型为0时,直接执行步骤s14。
[0104]
上述实施例可以通过解析原始码流的参数信息而进行插帧操作,以得到目标帧率的新码流,而不必将原始码流解码,能够实现快速插帧操作,并且不会由于解码操作而占用大量内存。
[0105]
请参阅图9,图9为本技术视频编码装置一实施例的示意图。该实施例的视频编码装置300包括:获取模块301、确认模块302、计算模块303和插帧模块304。
[0106]
其中,获取模块301用于获取目标帧率和原始码流的参数信息。
[0107]
确认模块302用于对所述帧序号信息进行确认,以及对所述视频可用性信息进行确认。
[0108]
计算模块303用于确定添加帧的位置和添加帧数。
[0109]
插帧模块304用于将添加帧的码流添加至所述原始码流的对应位置,得到新的码流。
[0110]
可选的是,确认模块302进一步用于在帧序号信息对应的序号计数类型为0或1时,对视频可用性信息进行确认。
[0111]
可选的是,确认模块302进一步用于在视频可用性信息存在时,对所述视频可用性信息中的时间信息进行确认;或,在所述视频可用性信息不存在时,则添加视频可用性信息。
[0112]
可选的是,确认模块302进一步用于在视频可用性信息中存在时间信息时,根据当前帧率和所述目标帧率对所述时间信息进行修改;或,在视频可用性信息中不存在时间信息时,则添加时间信息。
[0113]
可选的是,计算模块303进一步用于,根据所述当前帧率和所述目标帧率确定所述添加帧的位置和添加帧数。
[0114]
可选的是,计算模块303进一步用于,在所述当前帧率存在时,在每fps0*t帧中添加(fps1

fps0)*t帧;或,在所述当前帧率不存在时,在每任意帧后添加任意帧;其中,fps0为所述当前帧率,fps1为所述目标帧率,t为设定时间长度。
[0115]
可选的是,计算模块303进一步用于,在所述目标帧率为所述当前帧率的整数倍时,在每一帧后面添加(fps1

fps0)/fps0帧;或,在所述目标帧率不为所述当前帧率的整数倍时,则在每一帧后面添加[k*(fps1

fps0)/fps0]

[(k

1)*(fps1

fps0)/fps0]帧;其中,k为所述fps0*t帧中的帧序号。
[0116]
可选的是,插帧模块304进一步用于,根据所述添加帧的前一帧确定所述添加帧;对所述添加帧进行编码,得到所述添加帧的码流;将添加帧的码流添加至所述原始码流的对应位置,得到新的码流。
[0117]
可选的是,确认模块302进一步用于,确在所述帧序号信息对应的序号计数类型为1时;根据所述添加帧数和所述添加帧的位置对所述帧序号信息进行修改。
[0118]
关于视频编码装置各功能模块所实现的功能和过程等相关的描述请参照上述本技术视频码流的处理方法实施例的对应各步骤的描述,在此不再赘述。
[0119]
请参阅图10,图10为本技术视频编码装置一实施例的电路结构示意框图。视频编码装置100包括相互耦接的处理器101和存储器102,存储器102中存储有计算机程序,处理器101用于执行计算机程序,以实现如下的方法:
[0120]
获取目标帧率和原始码流的参数信息;其中,参数信息至少包括帧序号信息和视频可用性信息;对帧序号信息进行确认,以及对视频可用性信息进行确认;确定添加帧的位置和添加帧数;将添加帧的码流添加至原始码流的对应位置,得到新的码流。
[0121]
可以理解地,本实施例中的处理器101还用于实现上述本技术视频码流的处理方法各实施例的步骤。
[0122]
关于处理执行的各步骤的描述请参照上述本技术视频码流的处理方法实施例的各步骤的描述,在此不再赘述。
[0123]
参阅图11,图11为本技术计算机可读存储介质一实施例的电路结构示意框图,计算机存储介质200存储有计算机程序201,计算机程序201被执行时,实现如下的方法:
[0124]
获取目标帧率和原始码流的参数信息;其中,参数信息至少包括帧序号信息和视频可用性信息;对帧序号信息进行确认,以及对视频可用性信息进行确认;确定添加帧的位置和添加帧数;将添加帧的码流添加至原始码流的对应位置,得到新的码流。
[0125]
可以理解地,本实施例中的计算机程序201被执行时,还用于实现上述本技术视频码流的处理方法各实施例的步骤。
[0126]
关于处理执行的各步骤的描述请参照上述本技术视频码流的处理方法实施例的各步骤的描述,在此不再赘述。
[0127]
计算机存储介质200可以是u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0128]
在本技术的各实施例中,所揭露的视频码流的处理方法和视频编码装置,可以通过其它的方式实现。例如,以上所描述的视频编码装置的各实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0129]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
[0130]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0131]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中。
[0132]
以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
转载请注明原文地址:https://win.8miu.com/read-150254.html

最新回复(0)