本发明涉及视频解码相关技术领域,尤其是指一种面向8k超高清的主从多节点编码方法。
背景技术:
hevc是2013年由国际电信联盟(itu-t)发布的最新一代的视频编码标准,相比上一代编码标准h264,hevc的压缩效率提升了一倍,能大大降低目前正在普及的8k超高清视频的码率,减少带宽消耗。
avs2是中国于2016年12月份发布的面向超高清视频应用的最新一代标准。avs2的编码框架与hevc类似,在编码效率上要略优于hevc。目前avs2视频标准已成为中国广电总局采用的唯一视频编码标准,具有广阔的应用前景。
8k分辨率是一种数字视频标准。2012年8月23日,联合国旗下的国际电讯联盟通过以日本nhk电视台所建议的7680x4320解像度作为国际的8k超高画质电视(shv)标准,shv作为超越现行数字电视的“超高精细影像系统”,以超高的分辨率代码超清的画质,具有广阔的应用前景。同时,ultrahdforum发布了超高清规范ultrahdforum制定了4k以及8k的标准,ultrahdforumguidelinesv2.1,里面采纳了hevc和avs2作为8k编码的标准。
8k分辨率是4k的4倍,hd的16倍,视频复杂度也是hd的16倍,hevc和avs2的解码复杂度又比上一代h264和avsplus复杂很多,这给边编码器的实时编码带来了很大的挑战。以目前的服务器,即使一台最强的双cpu的通用机架式服务器,也无法做到8k@60fps实时编码。如果需要做8k实时编码,可能就需要两个甚至是多个节点的服务器并行编码来达到实时的目的。目前市面上,对于avs2,目前没有硬件编码芯片。而对于hevc,8khevc的支持上虽有解决方案,但尚不成熟,如基于ntt编码卡的编码方案。例如,由于一块硬件编码卡的性能不足以编码8k,只能编码1路4k,通常都需要4块4k卡并发,每一块卡编码四分之一的8k画面,最终输出4条独立流,最终通过播放端把四条流合成为一路8k。严格的说,这种属于临时解决方案,是4条4k而非一路8k,需要定制播放器,同时存在播放端拼接帧对齐的问题。此外,编码卡一旦发生内核级bug,则调试和修复周期都较长,不利于安全播出,尚需完善成熟度。
所以一段时间内,8k视频编码方案还必须依赖基于服务器的软件编码方案。既然一台服务器算力无法完成8k实时编码,那么可能需要双节点甚至多节点并行编码。但是如何利用双节点并行编码,并使得双节点运算负载达到平衡,以达到最大的编码性能,是一个问题。
技术实现要素:
本发明是为了克服现有技术中存在上述的不足,提供了一种提升编码性能的面向8k超高清的主从多节点编码方法。
为了实现上述目的,本发明采用以下技术方案:
一种面向8k超高清的主从多节点编码方法,具体操作步骤如下:
(1)在主节点上面部署整体的编转码系统,包含输入信号采集、输入音视频解码、输入音视频预处理、编码内核、编码后的音视频复用、ip分发,而在从节点上面只部署编码内核和与主节点通信的模块;
(2)初始时,主从节点的编码gop帧数分别设置为n,m,m=n;
(3)初始时,当前编码帧在gop中的帧号为f,f=0;当前编码gop序号为g,g=0;如果gop序号为偶数表示当前帧在主节点编码内核中编码;否则表示在从节点的编码内核中编码;
(4)每次解码一帧后,主节点获得一个待解码帧,决定当前待解码帧放到哪个节点编码;
(5)主从节点的gop编码结束后,全部把编码数据送回给主节点,主节点根据gop顺序再会合成一条视频流,送给编转码系统中编码后的音视频复用;
(6)实时监测一段时间内的主从节点的cpu使用资源,动态调整从节点的gop帧数,最终达到主从节点的计算复杂均衡。
本发明方法采用主从双节点编码。视频编码流可以分成若干gop(groupofpicture),每个gop含有数量不一的多帧,一个gop是由一个intra帧开头,后面跟若干单向或双向的编码帧构成,后面这些帧无论是编码端还是解码端都依赖gop开头的intra帧。而gop和gop之间是没有依赖性的,可以独立编码和解码。本发明就是利用这个特性,主节点负责编转码的一半的gop编码,以及其他所有的工作,如信号采集、输入音视频解码、音视频预处理,输出的音视频复用、ipstreaming等,而从节点负责另外一半的gop编码。由于主从节点的计算负载不均衡,很有可能导致主节点计算资源不够,而从节点计算资源有剩余的情况,整体不能达到效率最优。本发明使用创造性的方法来动态调整gop大小以达到主从节点的计算资源的均衡,以充分提升整体的性能。用本发明的方法可以扩展到多节点模式。
作为优选,在步骤(1)中,输入音视频预处理包括色度空间转换、hdr转换、画质增强,主从节点间采用40gbps的光模块连接且主从节点间使用tcp协议通讯。
作为优选,在步骤(4)中,具体判断方法如下:
(41)如果当前g为偶数,先判断f+1是否等于n,如果f+1≠n,则表示当前这一待解码帧需要分配给主节点编码内核来编码,g保持不变,f增加1,即f=f+1;如果f+1=n,则表示当前待解码帧需在新的gop中编码,即g=g+1,f=0,然后把当前待解码帧送给从节点编码内核编码;
(42)如果当前g为奇数,先判断f+1是否等于m,如果f+1≠m,则表示当前这一待解码帧需要分配给从节点编码内核来编码,g保持不变,f增加1,即f=f+1;如果f+1=m,则表示当前待解码帧需在新的gop中编码,即g=g+1,f=0,然后把当前待解码帧送给主节点编码内核编码。
作为优选,在步骤(6)中,具体操作方法如下:
(61)初始时,初始状态下,主从节点gop帧数均为默认值n、m,m=n;在主从节点上启动cpu计算资源监测程序,记录一段时间周期t内的cpu利用率,每隔该固定时间周期t,将该时间周期内统计的平均cpu利用率汇报到主节点的视频编码模块;
(62)编码过程中,如果某段时间内,从节点的cpu利用率与主节点的cpu利用率之间的差值超过设定阈值,则增加或者减少从节点的gop帧数;否则,保持当前从节点的gop帧数不变;
(63)经过一段时间,从节点的cpu利用率和主节点的cpu利用率保持在限定阈值内,从节点的gop帧数趋于稳定。
作为优选,在步骤(62)中,具体判断方法如下:如果从节点的cpu利用率低于主节点的cpu利用率超过10%,则调整下一个时间段的从节点gop的帧数m,m=m+1;否则,如果从节点的cpu利用率高于主节点的cpu利用率超过10%,则调整下一个时间段的从节点gop的帧数m,m=m-1;如果二者的cpu利用率相差在10%以内,则保持当前从节点gop的帧数不变;调整从节点gop的帧数m发生在g发生变化的那一帧。
作为优选,在步骤(62)中,为防止出现意外,强行限制从节点gop的帧数m的范围为:m>1/3n且m<3n。
本发明的有益效果是:动态调整gop大小以达到主从节点的计算资源的均衡,以充分提升整体的性能。
附图说明
图1是本发明中步骤(1)的系统框架图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
一种面向8k超高清的主从多节点编码方法,具体操作步骤如下:
(1)在主节点上面部署整体的编转码系统,包含输入信号采集、输入音视频解码、输入音视频预处理、编码内核、编码后的音视频复用、ip分发,而在从节点上面只部署编码内核和与主节点通信的模块,如图1所示;输入音视频预处理包括色度空间转换、hdr转换、画质增强,主从节点间采用40gbps的光模块连接且主从节点间使用tcp协议通讯;
(2)初始时,主从节点的编码gop帧数分别设置为n,m,m=n;
(3)初始时,当前编码帧在gop中的帧号为f,f=0;当前编码gop序号为g,g=0;如果gop序号为偶数(0、2、4、6、8…)表示当前帧在主节点编码内核中编码;否则表示在从节点的编码内核中编码;
(4)每次解码一帧后,主节点获得一个待解码帧,决定当前待解码帧放到哪个节点编码;
具体判断方法如下:
(41)如果当前g为偶数(0、2、4、6、8…),先判断f+1是否等于n,如果f+1≠n,则表示当前这一待解码帧需要分配给主节点编码内核来编码,g保持不变,f增加1,即f=f+1;如果f+1=n,则表示当前待解码帧需在新的gop中编码,即g=g+1,f=0,然后把当前待解码帧送给从节点编码内核编码;
(42)如果当前g为奇数(1、3、5、7…),先判断f+1是否等于m,如果f+1≠m,则表示当前这一待解码帧需要分配给从节点编码内核来编码,g保持不变,f增加1,即f=f+1;如果f+1=m,则表示当前待解码帧需在新的gop中编码,即g=g+1,f=0,然后把当前待解码帧送给主节点编码内核编码;
如此,可以把所有的帧分配给主节点或者从节点编码;
(5)主从节点的gop编码结束后,全部把编码数据送回给主节点,主节点根据gop顺序再会合成一条视频流,送给编转码系统中编码后的音视频复用;
(6)实时监测一段时间内的主从节点的cpu使用资源,动态调整从节点的gop帧数,最终达到主从节点的计算复杂均衡;
具体操作方法如下:
(61)初始时,初始状态下,主从节点gop帧数均为默认值n、m,m=n;在主从节点上启动cpu计算资源监测程序,记录一段时间周期t内的cpu利用率,每隔该固定时间周期t(t默认为10秒),将该时间周期内统计的平均cpu利用率汇报到主节点的视频编码模块;
(62)编码过程中,如果某段时间内,从节点的cpu利用率与主节点的cpu利用率之间的差值超过设定阈值,则增加或者减少从节点的gop帧数;否则,保持当前从节点的gop帧数不变;
具体判断方法如下:如果从节点的cpu利用率低于主节点的cpu利用率超过10%,则调整下一个时间段的从节点gop的帧数m,m=m+1;否则,如果从节点的cpu利用率高于主节点的cpu利用率超过10%,则调整下一个时间段的从节点gop的帧数m,m=m-1;如果二者的cpu利用率相差在10%以内,则保持当前从节点gop的帧数不变;调整从节点gop的帧数m发生在g发生变化的那一帧;为防止出现意外,强行限制从节点gop的帧数m的范围为:m>1/3n且m<3n;
(63)经过一段时间,从节点的cpu利用率和主节点的cpu利用率保持在限定阈值内,从节点的gop帧数趋于稳定
主节点除了做视频编码外,其余编转码的所有任务都在主节点上完成,如输入信号的采集、视频解码、视频预处理、编码码流的复用、分发;所有的音频处理包含解码、音频编码、音频预处理、编码码流的复用、分发都在主节点上完成。从节点仅仅作为一个协处理器帮助做部分视频编码。主从节点通过gop的方式进行任务分工,主从节点各完成一半的gop编码,如,第1、3、5…gop在从节点上编码,第0、2、4、6…gop在主节点上编码。编码前,由主节点的视频编码模块决定当前帧属于哪一个节点,如果是主节点,则把数据送入节点的编码内核,反之,则把编码数据送入从节点进行编码。主从节点间,采用40gbps的光模块连接,主从节点间使用tcp协议通讯,传输一帧8k,使用8线程传送,消耗时间约为20毫秒左右,由于只有部分yuv帧需要被传送至从节点,故而足以实时传送8k60fps的yuv数据。主从节点gop编码结束后,编码数据全部汇总到主节点的编码模块上面,由主节点的编码模块按照gop需要重新串流,完成完整的视频编码。
由于主节点比从节点多做很多处理,如果主从节点纯视频编码负载一致的话,主节点的总计算量会远大于从节点的计算量。本发明通过动态调整从节点gop的大小,以均衡主从节点的计算负载。因为是实时编码,单位时间内钟需要编码的总帧数是固定的。假如主节点的gop帧数为n,从节点的gop帧数为m,则主节点编码的帧数占总帧数的比例为n/(m+n),从节点的编码帧数的比例为m/(m+n),如果n不变,加大m,则单位时间内,从节点需要编码更多的帧,主节点编码更少的帧,反之亦然。本发明是实时监测一段时间的主从节点的cpu使用资源,动态调整从节点的gop帧数,最终达到主从节点的计算复杂均衡,本方法可以扩展到多借点模式。
本发明方法采用主从双节点编码。视频编码流可以分成若干gop(groupofpicture),每个gop含有数量不一的多帧,一个gop是由一个intra帧开头,后面跟若干单向或双向的编码帧构成,后面这些帧无论是编码端还是解码端都依赖gop开头的intra帧。而gop和gop之间是没有依赖性的,可以独立编码和解码。本发明就是利用这个特性,主节点负责编转码的一半的gop编码,以及其他所有的工作,如信号采集、输入音视频解码、音视频预处理,输出的音视频复用、ipstreaming等,而从节点负责另外一半的gop编码。由于主从节点的计算负载不均衡,很有可能导致主节点计算资源不够,而从节点计算资源有剩余的情况,整体不能达到效率最优。本发明使用创造性的方法来动态调整gop大小以达到主从节点的计算资源的均衡,以充分提升整体的性能。用本发明的方法可以扩展到多节点模式。本发明可以实现hevc、avs2等格式的8k实时编码。本方法可以扩展到将来的视频格式,如h.266(也就是vvc)、avs3等,同时也可以扩展到多节点模式。本发明可以均衡主从编码节点的计算资源负载,以达到整体系统的最优。将本发明在intel志强机架式服务器2ru2节点上面可以做到8khevc/avs2实时编码。