CN117135364A - 一种视频解码方法和*** - Google Patents

一种视频解码方法和*** Download PDF

Info

Publication number
CN117135364A
CN117135364A CN202311394685.8A CN202311394685A CN117135364A CN 117135364 A CN117135364 A CN 117135364A CN 202311394685 A CN202311394685 A CN 202311394685A CN 117135364 A CN117135364 A CN 117135364A
Authority
CN
China
Prior art keywords
video
frame
decoding
abnormal
coding data
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.)
Granted
Application number
CN202311394685.8A
Other languages
English (en)
Other versions
CN117135364B (zh
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.)
Shenzhen Honghui Zhitong Technology Co ltd
Original Assignee
Shenzhen Honghui Zhitong Technology Co 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 Shenzhen Honghui Zhitong Technology Co ltd filed Critical Shenzhen Honghui Zhitong Technology Co ltd
Priority to CN202311394685.8A priority Critical patent/CN117135364B/zh
Publication of CN117135364A publication Critical patent/CN117135364A/zh
Application granted granted Critical
Publication of CN117135364B publication Critical patent/CN117135364B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

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

Abstract

本发明公开了一种视频解码方法和***,本发明通过多核处理器对视频进行解码,根据视频帧种类将视频图像组内视频帧分为第一视频编码数据包和第二视频编码数据包,通过相对应的处理核心进行解码处理,并对下一图像组的视频帧进行预解码,提高处理器的占用率,从而提高解码效率。同时,对于解码过程中出现的异常视频帧,根据异常视频帧的属性选择对其进行再次获取视频编码数据或过滤处理。另外,在视频播放卡顿的情况下,根据相邻第一视频帧的平均运动矢量,对B帧视频帧进行抽帧处理,从而降低视频编码数据大小,降低处理器解码压力。

Description

一种视频解码方法和***
技术领域
本申请涉及视频解码领域,更具体的,涉及一种视频解码方法和***。
背景技术
随着多媒体领域的发展,视频解码在许多应用场景中如视频会议、直播和视频编辑等方面具有广泛的应用。现有的视频解码方法主要通过解码时间戳对视频进行解码处理,然而这仅体现了单一处理器的解码能力,在多核处理器协调性方面存在局限,在实际应用中无法满足多核处理器之间协同处理的需求。
因此现有技术存在缺陷,急需改进。
发明内容
鉴于上述问题,本发明的目的是提供一种视频解码方法和***,能够更有效更快速的对视频进行解码处理。
本发明第一方面提供了一种视频解码方法,包括:
获取图像组kn内视频帧的视频编码数据;
根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码;
通过空闲处理核心对图像组kn+1内视频帧的进行预解码;
将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常视频帧占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理;
在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理;
在对所述异常视频帧进行过滤处理的情况下,对相邻视频帧的显示参数进行调整;
实时监测视频的播放状态,在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整。
本方案中,所述根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码,包括:
将图像组kn内I帧视频帧和P帧视频帧标记为第一视频帧;
提取所述图像组kn内第一视频帧的视频编码数据,得到第一视频编码数据包;
提取所述图像组kn内相邻B帧视频帧的视频编码数据,得到一个或多个第二视频编码数据包;
根据所述第一视频编码数据包生成第一解码任务,通过第一处理核心对所述第一视频编码数据包进行解码;
根据所述一个或多个第二视频编码数据包生成一个或多个第二解码任务,通过第二处理核心对所述一个或多个第二视频编码数据包进行解码。
本方案中,所述通过空闲处理核心对图像组kn+1内视频帧的进行预解码,包括:
将空闲处理核心标记为第一处理核心,对图像组kn+1的第一压缩编码数据包进行解码;
将当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到第一时间时长;
将所述第一时间时长与第一预设阈值进行对比;
当所述第一时间时长小于第一预设阈值时,通过第二处理核心对图像组kn+1的一个或多个第二压缩编码数据包进行解码。
本方案中,还包括:
根据图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度进行分析,得到图像组kn+2中第一压缩编码数据的预测解码时长;
根据图像组kn+1中I帧显示时间戳和图像组kn+2中I帧显示时间戳进行差值计算,得到图像组kn+1的显示时长;
判断所述图像组kn+2中第一压缩编码数据的预测解码时长是否大于图像组kn+1的显示时长;
若是,则启动备用处理核心对图像组kn+2中第一压缩编码数据进行解码。
本方案中,所述将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理,包括:
在视频解码过程中将存在丢包或解码失败的视频帧标记为异常视频帧;
根据所述异常视频帧进行分析,若所述异常视频帧为关键帧,则发送再次获取请求,再次获取所述异常视频帧的视频编码数据;
反之,则计算所述异常视频帧所在图像组内异常视频帧占比并与第二预设阈值进行对比;
若所述异常视频帧占比大于第二预设阈值,则再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据;
反之,计算所述异常视频帧相邻两个视频帧显示图像的运动矢量并与第三预设阈值进行对比;
若所述运动矢量大于第三预设阈值,则再次获取所述异常视频帧的视频编码数据;
反之,对所述异常视频帧进行过滤处理。
本方案中,还包括:
若所述异常视频帧存在部分编码数据,且能从所述部分编码数据中解码得到部分显示图像,则结合相邻两个视频帧的显示图像进行分析,基于所述部分显示图像对所述异常视频帧中未解码部分显示图像进行修补。
本方案中,所述在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理,包括:
根据当前设备的带宽数据进行计算,得到再次获取编码数据的时延数据,结合当前设备的解码速度对再次获取视频编码数据所需时间和解码所需时间进行预测,将得到的预测时间进行相加,得到第一预测时间;
判断所述第一预测时间是否小于所述异常视频帧的显示时间戳;
若是,则重新获取所述异常视频帧的视频编码数据;
反之,则取消对所述异常视频帧再次获取编码数据的请求,对所述异常视频帧进行过滤处理。
本方案中,所述在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整,包括:
在视频显示卡顿的情况下,将相邻两个第一视频帧以及之间的B帧视频帧组成第一子图像组;
根据所述第一子图像组内两个第一视频帧的显示图像进行对比,计算二者之间的运动矢量,结合第一子图像组内的视频帧数量进行计算,得到第一子图像组内视频帧的平均运动矢量;
判断所述所述平均运动矢量是否小于第四预设阈值;
若是,则对所述第一子图像组内B帧视频帧的解码数量进行调整,对部分B帧视频帧进行过滤处理,使第一子图像组内视频帧的平均运动矢量为小于第五预设阈值的最大值;
基于调整后所述第一子图像组内视频帧数量对所述第一子图像组内B帧视频帧的显示参数进行调整。
本发明第二方面提供了一种视频解码***,包括:
数据获取模块,用于获取图像组kn内视频帧的视频编码数据;
视频解码模块,用于根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码;
视频预解码模块,用于通过空闲处理核心对图像组kn+1内视频帧的进行预解码;
异常视频帧处理模块,用于将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常视频帧占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理;在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理;在对所述异常视频帧进行过滤处理的情况下,对相邻视频帧的显示参数进行调整;
视频抽帧模块,用于实时监测视频的播放状态,在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整。
将空闲处理核心标记为第一处理核心,对图像组kn+1的第一压缩编码数据包进行解码;
将当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到第一时间时长;
将所述第一时间时长与第一预设阈值进行对比;
当所述第一时间时长小于第一预设阈值时,通过第二处理核心对图像组kn+1的一个或多个第二压缩编码数据包进行解码。
本方案中,还包括:
根据图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度进行分析,得到图像组kn+2中第一压缩编码数据的预测解码时长;
根据图像组kn+1中I帧显示时间戳和图像组kn+2中I帧显示时间戳进行差值计算,得到图像组kn+1的显示时长;
判断所述图像组kn+2中第一压缩编码数据的预测解码时长是否大于图像组kn+1的显示时长;
若是,则启动备用处理核心对图像组kn+2中第一压缩编码数据进行解码。
本方案中,所述将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理,包括:
在视频解码过程中将存在丢包或解码失败的视频帧标记为异常视频帧;
根据所述异常视频帧进行分析,若所述异常视频帧为关键帧,则发送再次获取请求,再次获取所述异常视频帧的视频编码数据;
反之,则计算所述异常视频帧所在图像组内异常视频帧占比并与第二预设阈值进行对比;
若所述异常视频帧占比大于第二预设阈值,则再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据;
反之,计算所述异常视频帧相邻两个视频帧显示图像的运动矢量并与第三预设阈值进行对比;
若所述运动矢量大于第三预设阈值,则再次获取所述异常视频帧的视频编码数据;
反之,对所述异常视频帧进行过滤处理。
本方案中,还包括:
若所述异常视频帧存在部分编码数据,且能从所述部分编码数据中解码得到部分显示图像,则结合相邻两个视频帧的显示图像进行分析,基于所述部分显示图像对所述异常视频帧中未解码部分显示图像进行修补。
本方案中,所述在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理,包括:
根据当前设备的带宽数据进行计算,得到再次获取编码数据的时延数据,结合当前设备的解码速度对再次获取视频编码数据所需时间和解码所需时间进行预测,将得到的预测时间进行相加,得到第一预测时间;
判断所述第一预测时间是否小于所述异常视频帧的显示时间戳;
若是,则重新获取所述异常视频帧的视频编码数据;
反之,则取消对所述异常视频帧再次获取编码数据的请求,对所述异常视频帧进行过滤处理。
本方案中,所述在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整,包括:
在视频显示卡顿的情况下,将相邻两个第一视频帧以及之间的B帧视频帧组成第一子图像组;
根据所述第一子图像组内两个第一视频帧的显示图像进行对比,计算二者之间的运动矢量,结合第一子图像组内的视频帧数量进行计算,得到第一子图像组内视频帧的平均运动矢量;
判断所述所述平均运动矢量是否小于第四预设阈值;
若是,则对所述第一子图像组内B帧视频帧的解码数量进行调整,对部分B帧视频帧进行过滤处理,使第一子图像组内视频帧的平均运动矢量为小于第五预设阈值的最大值;
基于调整后所述第一子图像组内视频帧数量对所述第一子图像组内B帧视频帧的显示参数进行调整。
本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中包括一种视频解码方法程序,所述一种视频解码方法程序被处理器执行时,实现如上述任一项所述的一种视频解码方法的步骤。
本发明公开了一种视频解码方法和***,本发明通过多核处理器对视频进行解码,根据视频帧种类将视频图像组内视频帧分为第一视频编码数据包和第二视频编码数据包,通过相对应的处理核心进行解码处理,并对下一图像组的视频帧进行预解码,提高处理器的占用率,从而提高解码效率。同时,对于解码过程中出现的异常视频帧,根据异常视频帧的属性选择对其进行再次获取视频编码数据或过滤处理。另外,在视频播放卡顿的情况下,根据相邻第一视频帧的平均运动矢量,对B帧视频帧进行抽帧处理,从而降低视频编码数据大小,降低处理器解码压力。
附图说明
图1示出了本发明一种视频解码方法的流程图;
图2示出了本发明一种对图像组kn内视频帧的视频编码数据解码方法的流程图;
图3示出了本发明一种对图像组kn+1内视频帧的进行预解码方法的流程图;
图4示出了本发明一种视频解码***的框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了本发明一种视频解码方法的流程图。
如图1所示,本发明公开了一种视频解码方法,包括:
S102,获取图像组kn内视频帧的视频编码数据;
S104,根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码;
S106,通过空闲处理核心对图像组kn+1内视频帧的进行预解码;
S108,将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常视频帧占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理;
S110,在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理;
S112,在对所述异常视频帧进行过滤处理的情况下,对相邻视频帧的显示参数进行调整;
S114,实时监测视频的播放状态,在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整。
根据本发明实施例,图像组(GOP)指视频编码序列中两个I帧视频帧之间的距离,根据I帧视频帧所在位置将待显示视频分成多个图像组kn
通过多核处理器对待显示视频进行解码处理,首先基于视频帧种类对视频编码数据进行拆分,将相同图像组内的第一视频帧(I帧视频帧和P帧视频帧)的视频编码数据进行整合得到第一视频编码数据包,对相同图像组内的相邻B帧视频帧进行整合得到一个或多个第二视频编码数据包,将任意大标记为第一处理核心对第一视频编码数据包进行解码处理,基于得到的第一视频帧的解码数据对相对应的第二视频编码数据包进行解码处理。同时,在当前图像组kn的解码任务安排完成后,对下一图像组kn+1的视频帧进行预解码,将解码得到的解码数据预存在缓冲区,在对下一图像组kn+1进行显示时,直接调取缓冲区的解码数据进行图像显示。
对于解码过程中出现的异常视频帧,通过预测再次获取视频编码数据所需时间和解码所需时间,从而确定对异常视频帧再次获取视频编码数据或进行过滤处理。其中,对相邻视频帧的显示参数进行调整包括调整前一视频帧的显示持续时长以及后一视频帧的显示时间戳,降低相邻视频帧的视频帧率。
另外,在视频播放卡顿的情况下,通过计算相邻第一视频帧内所有视频帧的平均运动矢量判断是否进行抽帧处理,从而降低视频编码数据大小,使处理器能在视频显示时间帧之前对视频画面进行显示,同时在抽帧完成后,对抽帧区域内视频帧所组成的视频图像进行降帧处理,调整视频帧的显示时长以及显示时间帧,使抽帧后的视频显示平滑。
图2示出了本发明一种对图像组kn内视频帧的视频编码数据解码方法的流程图。
如图2所示,根据本发明实施例,所述根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码,包括:
S202,将图像组kn内I帧视频帧和P帧视频帧标记为第一视频帧;
S204,提取所述图像组kn内第一视频帧的视频编码数据,得到第一视频编码数据包;
S206,提取所述图像组kn内相邻B帧视频帧的视频编码数据,得到一个或多个第二视频编码数据包;
S208,根据所述第一视频编码数据包生成第一解码任务,通过第一处理核心对所述第一视频编码数据包进行解码;
S210,根据所述一个或多个第二视频编码数据包生成一个或多个第二解码任务,通过第二处理核心对所述一个或多个第二视频编码数据包进行解码。
需要说明的是,I帧视频帧为 关键帧,可以独立解码,在编解码过程中将全帧图像信息进行JPEG压缩编码及传输;P帧视频帧为向前预测帧,在解码过程中其显示图像需要根据上一个I帧视频帧或P帧视频帧进行预测,B帧视频帧为双向预测帧,压缩率高,其显示图像需要根据前后的I帧视频帧或P帧视频帧进行预测。
由于B帧视频帧的压缩率高,在解码过程中占用CPU资源较大,因此,通过使用多核处理器,调用多个处理核心对视频进行解码。基于视频帧种类,将图像组kn中的I帧视频帧和P帧视频帧标记为第一视频帧,对第一视频帧的视频编码数据进行提取合并,得到第一视频编码数据包,选择任一空闲处理核心作为第一处理核心对该第一视频编码数据包进行解码。
根据第一视频编码数据包的解码进度,当第一视频帧解码完成后,提取当前第一视频帧与上一第一视频帧之间的B帧视频帧的视频编码数据,将得到第二视频编码数据包分配至第二处理核心进行解码处理。其中,第二处理核心可以是一个或多个处理核心,***根据第二视频编码数据的数量、数据大小对第二处理核心的数量进行动态调整。
其中,第一处理核心为大核,第二处理核心可以是大核或小核。大核优先处理第一解码任务,在不存在第一解码任务的情况下再对第二解码任务进行处理
根据本发明实施例,还包括:
从B帧视频帧的视频编码数据中提取显示时间戳;
对显示时间戳小于待显示视频帧的显示时间戳的B帧视频帧进行过滤处理。
需要说明的是,在对待显示视频进行解码之前,首先判断待显示视频是否从初始帧进行播放。若是从视频初始帧进行播放,则基于当前待显示视频中视频帧的显示时间帧,按照时间顺序对每一个图像组内视频帧进行解码。若从待显示视频的中间部分开始播放,则确定待显示视频帧的显示时间戳,在对待显示视频解码过程中,对待显示视频帧的显示时间戳所在图像组之前的视频帧进行过滤,从当前待显示视频帧所在图像组开始进行视频帧解码,对该图像组内的I帧视频帧、P帧视频帧以及当前待显示视频帧的显示时间戳以后的B帧视频帧进行解码。
图3示出了本发明一种对图像组kn+1内视频帧的进行预解码方法的流程图。
如图3所示,根据本发明实施例,所述通过空闲处理核心对图像组kn+1内视频帧的进行预解码,包括:
S302,将空闲处理核心标记为第一处理核心,对图像组kn+1的第一压缩编码数据包进行解码;
S304,将当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到第一时间时长;
S306,将所述第一时间时长与第一预设阈值进行对比;
S308,当所述第一时间时长小于第一预设阈值时,通过第二处理核心对图像组kn+1的一个或多个第二压缩编码数据包进行解码。
需要说明的是,对图像组kn进行解码过程中,根据当前处理器的资源占用率、处理核心使用率选择对下一图像组kn+1的视频帧进行预解码。基于缓冲区的内存空间有限,对图像组kn的解码任务分配完成后,首先对图像组kn+1的第一视频帧进行解码,读取图像组kn+1的第一压缩编码数据包,并制定解码任务,选择一个空闲处理核心单独对其进行解码,将解码后得到显示图像数据保存至缓冲区。在对图像组kn的视频帧进行显示播放的过程中,根据当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到图像组kn的剩余播放时长,即第一时间时长。其中,第一预设阈值由***根据待显示视频的大小、当前处理器的解码速度等参数进行动态调整。当第一时间时长小于第一预设阈值时,基于图像组kn+1中第一视频帧的解码数据对B帧视频帧进行解码处理。从而降低缓冲区的缓存压力,减少对数据的过度缓存,避免用户调整视频播放进度或切断视频过程中缓存过多无用数据,造成资源浪费。
根据本发明实施例,还包括:
根据图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度进行分析,得到图像组kn+2中第一压缩编码数据的预测解码时长;
根据图像组kn+1中I帧显示时间戳和图像组kn+2中I帧显示时间戳进行差值计算,得到图像组kn+1的显示时长;
判断所述图像组kn+2中第一压缩编码数据的预测解码时长是否大于图像组kn+1的显示时长;
若是,则启动备用处理核心对图像组kn+2中第一压缩编码数据进行解码。
需要说明的是,由于第一视频帧内的P帧视频帧在解码过程中需要根据前一个I帧或P帧视频帧的解码数据进行解压,导致第一压缩编码数据的数据量较大,且无法通过多核解码的方式进行解码处理。因此在对图像组kn+1中第一视频帧的解码任务安排完成后,基于图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度,对图像组kn+2中第一压缩编码数据的解码时间进行预测,当图像组kn+2中第一压缩编码数据的预测解码时长大于图像组kn+1的显示时长时,启动备用处理核心对图像组kn+2中第一压缩编码数据提前进行解码,当第一处理核心空闲的情况下,调整至第一处理核心对图像组kn+2中第一压缩编码数据进行解码,使图像组kn+2的可以在显示时间帧之前完成视频解码,从而保证视频质量。同时,在对图像组kn+2分析的基础上还可以对之后的多个图像组进行分析。
根据本发明实施例,所述将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理,包括:
在视频解码过程中将存在丢包或解码失败的视频帧标记为异常视频帧;
根据所述异常视频帧进行分析,若所述异常视频帧为关键帧,则发送再次获取请求,再次获取所述异常视频帧的视频编码数据;
反之,则计算所述异常视频帧所在图像组内异常视频帧占比并与第二预设阈值进行对比;
若所述异常视频帧占比大于第二预设阈值,则再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据;
反之,计算所述异常视频帧相邻两个视频帧显示图像的运动矢量并与第三预设阈值进行对比;
若所述运动矢量大于第三预设阈值,则再次获取所述异常视频帧的视频编码数据;
反之,对所述异常视频帧进行过滤处理。
需要说明的是,由于网络环境异常等原因造成视频在传输过程中造成视频编码数据丢包或数据获取异常的情况,导致视频编码数据解码失败,无法通过接收的视频编码数据获取所对应视频帧的显示图像,需要对存在异常的视频帧进行再次获取视频编码数据或过滤处理。
当异常视频帧为第一视频帧时,若对其进行过滤处理会导致整个图像组解码失败(I帧视频帧为异常视频帧),或者一个或多个B帧视频帧解码失败(P帧视频帧为异常视频帧),因此在异常视频帧为第一视频帧的情况下直接发送再次获取请求,再次获取所述异常视频帧的视频编码数据。
当异常视频帧为B帧视频帧时,首先了解图像组内视频帧的整体解码状况,当图像组内异常视频帧占比较低时,即异常视频帧占比大于第二预设阈值,对每个异常视频帧进行单独处理;当图像组内异常视频帧占比达到一定程度时,表示当前图像组的视频编码数据在传输过程中出现异常,停止对当前图像组剩余图像帧进行解码,并再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据,根据再次获取的视频编码数据进行解码处理。
对每个异常视频帧进行单独处理的过程中,通过对比异常视频帧相邻两个视频帧显示图像的运动矢量可以判断异常视频帧相邻两个视频帧之间的显示图像变化幅度。当异常视频帧相邻两个视频帧显示图像的运动矢量大于第三预设阈值时,发送再次获取请求,再次获取所述异常视频帧的视频编码数据;反之,可以选择对异常图像帧进行过滤处理,调整相邻两个视频帧的显示参数,包括调整前一视频帧的显示持续时长以及后一视频帧的显示时间戳,降低相邻视频帧的视频帧率。其中,第二预设阈值和第三预设阈值根据视频分辨率、帧率、码率等参数进行动态调整。
根据本发明实施例,还包括:
若所述异常视频帧存在部分编码数据,且能从所述部分编码数据中解码得到部分显示图像,则结合相邻两个视频帧的显示图像进行分析,基于所述部分显示图像对所述异常视频帧中未解码部分显示图像进行修补。
需要说明的是,将部分显示图像与相邻两个视频帧的显示图像进行矢量计算,分别得到与上一视频帧显示图像的运动矢量P1,以及与下一视频帧显示图像的运动矢量P2,同时计算与异常视频帧相邻两个视频帧显示图像的运动矢量P0。其中,P0=P1+P2。根据对P0、P1和P2进行分析,确定异常视频帧所对应显示图像的运动矢量变化率,基于异常视频帧所对应显示图像的运动矢量变化率,结合相邻两个视频帧的显示图像对异常视频帧中未解码部分显示图像进行修补。
根据本发明实施例,所述在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理,包括:
根据当前设备的带宽数据进行计算,得到再次获取编码数据的时延数据,结合当前设备的解码速度对再次获取视频编码数据所需时间和解码所需时间进行预测,将得到的预测时间进行相加,得到第一预测时间;
判断所述第一预测时间是否小于所述异常视频帧的显示时间戳;
若是,则重新获取所述异常视频帧的视频编码数据;
反之,则取消对所述异常视频帧再次获取编码数据的请求,对所述异常视频帧进行过滤处理。
需要说明的是,时延数据至数据在网络传输过程中的总时延,包括处理时延、排队时延、发送时延和传播时延。通过时延数据可以预测再次获取视频编码数据所需时间,解码所需时间可以根据视频编码数据大小、当前设备的解码速度、处理器占用率等参数进行预测。
通过将第一预测时间和当前异常视频帧的显示时间戳对比,可以判断是否可以在当前异常视频帧的显示时间之前对该异常视频帧进行再次获取并解码,即满足播放条件,从而确定是否发送再次获取请求,对异常视频帧的视频编码数据进行获取。
在满足播放条件的情况下,可以多次对异常视频帧的编码数据进行获取;当不满足播放条件的情况下,取消再次获取请求,拒绝再次对异常视频帧的视频编码数据进行获取,选择通过过滤或修补的方式对异常视频帧进行处理。
根据本发明实施例,所述在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整,包括:
在视频显示卡顿的情况下,将相邻两个第一视频帧以及之间的B帧视频帧组成第一子图像组;
根据所述第一子图像组内两个第一视频帧的显示图像进行对比,计算二者之间的运动矢量,结合第一子图像组内的视频帧数量进行计算,得到第一子图像组内视频帧的平均运动矢量;
判断所述所述平均运动矢量是否小于第四预设阈值;
若是,则对所述第一子图像组内B帧视频帧的解码数量进行调整,对部分B帧视频帧进行过滤处理,使第一子图像组内视频帧的平均运动矢量为小于第五预设阈值的最大值;
基于调整后所述第一子图像组内视频帧数量对所述第一子图像组内B帧视频帧的显示参数进行调整。
需要说明的是,当视频属性(分辨率、帧数、码率)较高、处理器性能较差的情况下,即当前设备的处理器无法再视频帧的显示时间戳之前完成对该视频帧的解码处理,从而导致视频显示卡顿。
由于对P帧视频帧解码时需要参数上一I帧视频帧或P帧视频帧进行解码,因此不考虑I帧视频帧和P帧视频帧进行抽帧处理,仅对P帧视频帧进行抽帧处理。
通过平均运动矢量可以判断第一子图像组内视频帧的平均变化率,其平均运动矢量越小,表示第一子图像组内视频帧的平均变化率越低,对平均运动矢量小于平均运动矢量的第一子图像组进行抽帧处理,可以在不影响或较低影响视频显示效果的情况下降低视频编码数据大小,从而降低处理器处理压力,消除视频显示卡顿情况。在对视频抽帧处理过程中,设置最大平均运动矢量,即第五预设阈值,使抽帧处理后第一子图像组的平均运动矢量为小于第五预设阈值的最大值,从而在满足视频显示效果的情况下,最大程度的降低视频编码数据大小,减低处理器功耗,同时起到节能的目的。在对第一子图像组内视频帧进行抽帧处理时,优先采用间隔抽帧的方法进行处理,禁止同时对相邻视频帧进行抽帧,避免视频显示效果下降过大。其中,第四预设阈值和第五预设阈值根据视频属性(分辨率、帧数、码率)和处理器性能进行动态调整,第四预设阈值大于第五预设阈值。
图4示出了本发明一种视频解码***的框图。
如图4所示,本发明第二方面提供了一种视频解码***,包括:
数据获取模块,用于获取图像组kn内视频帧的视频编码数据;
视频解码模块,用于根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码;
视频预解码模块,用于通过空闲处理核心对图像组kn+1内视频帧的进行预解码;
异常视频帧处理模块,用于将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常视频帧占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理;在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理;在对所述异常视频帧进行过滤处理的情况下,对相邻视频帧的显示参数进行调整;
视频抽帧模块,用于实时监测视频的播放状态,在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整。
根据本发明实施例,图像组(GOP)指视频编码序列中两个I帧视频帧之间的距离,根据I帧视频帧所在位置将待显示视频分成多个图像组kn
通过多核处理器对待显示视频进行解码处理,首先基于视频帧种类对视频编码数据进行拆分,将相同图像组内的第一视频帧(I帧视频帧和P帧视频帧)的视频编码数据进行整合得到第一视频编码数据包,对相同图像组内的相邻B帧视频帧进行整合得到一个或多个第二视频编码数据包,将任意大标记为第一处理核心对第一视频编码数据包进行解码处理,基于得到的第一视频帧的解码数据对相对应的第二视频编码数据包进行解码处理。同时,在当前图像组kn的解码任务安排完成后,对下一图像组kn+1的视频帧进行预解码,将解码得到的解码数据预存在缓冲区,在对下一图像组kn+1进行显示时,直接调取缓冲区的解码数据进行图像显示。
对于解码过程中出现的异常视频帧,通过预测再次获取视频编码数据所需时间和解码所需时间,从而确定对异常视频帧再次获取视频编码数据或进行过滤处理。其中,对相邻视频帧的显示参数进行调整包括调整前一视频帧的显示持续时长以及后一视频帧的显示时间戳,降低相邻视频帧的视频帧率。
另外,在视频播放卡顿的情况下,通过计算相邻第一视频帧内所有视频帧的平均运动矢量判断是否进行抽帧处理,从而降低视频编码数据大小,使处理器能在视频显示时间帧之前对视频画面进行显示,同时在抽帧完成后,对抽帧区域内视频帧所组成的视频图像进行降帧处理,调整视频帧的显示时长以及显示时间帧,使抽帧后的视频显示平滑。
根据本发明实施例,所述根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码,包括:
将图像组kn内I帧视频帧和P帧视频帧标记为第一视频帧;
提取所述图像组kn内第一视频帧的视频编码数据,得到第一视频编码数据包;
提取所述图像组kn内相邻B帧视频帧的视频编码数据,得到一个或多个第二视频编码数据包;
根据所述第一视频编码数据包生成第一解码任务,通过第一处理核心对所述第一视频编码数据包进行解码;
根据所述一个或多个第二视频编码数据包生成一个或多个第二解码任务,通过第二处理核心对所述一个或多个第二视频编码数据包进行解码。
需要说明的是,I帧视频帧为 关键帧,可以独立解码,在编解码过程中将全帧图像信息进行JPEG压缩编码及传输;P帧视频帧为向前预测帧,在解码过程中其显示图像需要根据上一个I帧视频帧或P帧视频帧进行预测,B帧视频帧为双向预测帧,压缩率高,其显示图像需要根据前后的I帧视频帧或P帧视频帧进行预测。
由于B帧视频帧的压缩率高,在解码过程中占用CPU资源较大,因此,通过使用多核处理器,调用多个处理核心对视频进行解码。基于视频帧种类,将图像组kn中的I帧视频帧和P帧视频帧标记为第一视频帧,对第一视频帧的视频编码数据进行提取合并,得到第一视频编码数据包,选择任一空闲处理核心作为第一处理核心对该第一视频编码数据包进行解码。
根据第一视频编码数据包的解码进度,当第一视频帧解码完成后,提取当前第一视频帧与上一第一视频帧之间的B帧视频帧的视频编码数据,将得到第二视频编码数据包分配至第二处理核心进行解码处理。其中,第二处理核心可以是一个或多个处理核心,***根据第二视频编码数据的数量、数据大小对第二处理核心的数量进行动态调整。
其中,第一处理核心为大核,第二处理核心可以是大核或小核。大核优先处理第一解码任务,在不存在第一解码任务的情况下再对第二解码任务进行处理
根据本发明实施例,还包括:
从B帧视频帧的视频编码数据中提取显示时间戳;
对显示时间戳小于待显示视频帧的显示时间戳的B帧视频帧进行过滤处理。
需要说明的是,在对待显示视频进行解码之前,首先判断待显示视频是否从初始帧进行播放。若是从视频初始帧进行播放,则基于当前待显示视频中视频帧的显示时间帧,按照时间顺序对每一个图像组内视频帧进行解码。若从待显示视频的中间部分开始播放,则确定待显示视频帧的显示时间戳,在对待显示视频解码过程中,对待显示视频帧的显示时间戳所在图像组之前的视频帧进行过滤,从当前待显示视频帧所在图像组开始进行视频帧解码,对该图像组内的I帧视频帧、P帧视频帧以及当前待显示视频帧的显示时间戳以后的B帧视频帧进行解码。
根据本发明实施例,所述通过空闲处理核心对图像组kn+1内视频帧的进行预解码,包括:
将空闲处理核心标记为第一处理核心,对图像组kn+1的第一压缩编码数据包进行解码;
将当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到第一时间时长;
将所述第一时间时长与第一预设阈值进行对比;
当所述第一时间时长小于第一预设阈值时,通过第二处理核心对图像组kn+1的一个或多个第二压缩编码数据包进行解码。
需要说明的是,对图像组kn进行解码过程中,根据当前处理器的资源占用率、处理核心使用率选择对下一图像组kn+1的视频帧进行预解码。基于缓冲区的内存空间有限,对图像组kn的解码任务分配完成后,首先对图像组kn+1的第一视频帧进行解码,读取图像组kn+1的第一压缩编码数据包,并制定解码任务,选择一个空闲处理核心单独对其进行解码,将解码后得到显示图像数据保存至缓冲区。在对图像组kn的视频帧进行显示播放的过程中,根据当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到图像组kn的剩余播放时长,即第一时间时长。其中,第一预设阈值由***根据待显示视频的大小、当前处理器的解码速度等参数进行动态调整。当第一时间时长小于第一预设阈值时,基于图像组kn+1中第一视频帧的解码数据对B帧视频帧进行解码处理。从而降低缓冲区的缓存压力,减少对数据的过度缓存,避免用户调整视频播放进度或切断视频过程中缓存过多无用数据,造成资源浪费。
根据本发明实施例,还包括:
根据图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度进行分析,得到图像组kn+2中第一压缩编码数据的预测解码时长;
根据图像组kn+1中I帧显示时间戳和图像组kn+2中I帧显示时间戳进行差值计算,得到图像组kn+1的显示时长;
判断所述图像组kn+2中第一压缩编码数据的预测解码时长是否大于图像组kn+1的显示时长;
若是,则启动备用处理核心对图像组kn+2中第一压缩编码数据进行解码。
需要说明的是,由于第一视频帧内的P帧视频帧在解码过程中需要根据前一个I帧或P帧视频帧的解码数据进行解压,导致第一压缩编码数据的数据量较大,且无法通过多核解码的方式进行解码处理。因此在对图像组kn+1中第一视频帧的解码任务安排完成后,基于图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度,对图像组kn+2中第一压缩编码数据的解码时间进行预测,当图像组kn+2中第一压缩编码数据的预测解码时长大于图像组kn+1的显示时长时,启动备用处理核心对图像组kn+2中第一压缩编码数据提前进行解码,当第一处理核心空闲的情况下,调整至第一处理核心对图像组kn+2中第一压缩编码数据进行解码,使图像组kn+2的可以在显示时间帧之前完成视频解码,从而保证视频质量。同时,在对图像组kn+2分析的基础上还可以对之后的多个图像组进行分析。
根据本发明实施例,所述将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理,包括:
在视频解码过程中将存在丢包或解码失败的视频帧标记为异常视频帧;
根据所述异常视频帧进行分析,若所述异常视频帧为关键帧,则发送再次获取请求,再次获取所述异常视频帧的视频编码数据;
反之,则计算所述异常视频帧所在图像组内异常视频帧占比并与第二预设阈值进行对比;
若所述异常视频帧占比大于第二预设阈值,则再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据;
反之,计算所述异常视频帧相邻两个视频帧显示图像的运动矢量并与第三预设阈值进行对比;
若所述运动矢量大于第三预设阈值,则再次获取所述异常视频帧的视频编码数据;
反之,对所述异常视频帧进行过滤处理。
需要说明的是,由于网络环境异常等原因造成视频在传输过程中造成视频编码数据丢包或数据获取异常的情况,导致视频编码数据解码失败,无法通过接收的视频编码数据获取所对应视频帧的显示图像,需要对存在异常的视频帧进行再次获取视频编码数据或过滤处理。
当异常视频帧为第一视频帧时,若对其进行过滤处理会导致整个图像组解码失败(I帧视频帧为异常视频帧),或者一个或多个B帧视频帧解码失败(P帧视频帧为异常视频帧),因此在异常视频帧为第一视频帧的情况下直接发送再次获取请求,再次获取所述异常视频帧的视频编码数据。
当异常视频帧为B帧视频帧时,首先了解图像组内视频帧的整体解码状况,当图像组内异常视频帧占比较低时,即异常视频帧占比大于第二预设阈值,对每个异常视频帧进行单独处理;当图像组内异常视频帧占比达到一定程度时,表示当前图像组的视频编码数据在传输过程中出现异常,停止对当前图像组剩余图像帧进行解码,并再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据,根据再次获取的视频编码数据进行解码处理。
对每个异常视频帧进行单独处理的过程中,通过对比异常视频帧相邻两个视频帧显示图像的运动矢量可以判断异常视频帧相邻两个视频帧之间的显示图像变化幅度。当异常视频帧相邻两个视频帧显示图像的运动矢量大于第三预设阈值时,发送再次获取请求,再次获取所述异常视频帧的视频编码数据;反之,可以选择对异常图像帧进行过滤处理,调整相邻两个视频帧的显示参数,包括调整前一视频帧的显示持续时长以及后一视频帧的显示时间戳,降低相邻视频帧的视频帧率。其中,第二预设阈值和第三预设阈值根据视频分辨率、帧率、码率等参数进行动态调整。
根据本发明实施例,还包括:
若所述异常视频帧存在部分编码数据,且能从所述部分编码数据中解码得到部分显示图像,则结合相邻两个视频帧的显示图像进行分析,基于所述部分显示图像对所述异常视频帧中未解码部分显示图像进行修补。
需要说明的是,将部分显示图像与相邻两个视频帧的显示图像进行矢量计算,分别得到与上一视频帧显示图像的运动矢量P1,以及与下一视频帧显示图像的运动矢量P2,同时计算与异常视频帧相邻两个视频帧显示图像的运动矢量P0。其中,P0=P1+P2。根据对P0、P1和P2进行分析,确定异常视频帧所对应显示图像的运动矢量变化率,基于异常视频帧所对应显示图像的运动矢量变化率,结合相邻两个视频帧的显示图像对异常视频帧中未解码部分显示图像进行修补。
根据本发明实施例,所述在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理,包括:
根据当前设备的带宽数据进行计算,得到再次获取编码数据的时延数据,结合当前设备的解码速度对再次获取视频编码数据所需时间和解码所需时间进行预测,将得到的预测时间进行相加,得到第一预测时间;
判断所述第一预测时间是否小于所述异常视频帧的显示时间戳;
若是,则重新获取所述异常视频帧的视频编码数据;
反之,则取消对所述异常视频帧再次获取编码数据的请求,对所述异常视频帧进行过滤处理。
需要说明的是,时延数据至数据在网络传输过程中的总时延,包括处理时延、排队时延、发送时延和传播时延。通过时延数据可以预测再次获取视频编码数据所需时间,解码所需时间可以根据视频编码数据大小、当前设备的解码速度、处理器占用率等参数进行预测。
通过将第一预测时间和当前异常视频帧的显示时间戳对比,可以判断是否可以在当前异常视频帧的显示时间之前对该异常视频帧进行再次获取并解码,即满足播放条件,从而确定是否发送再次获取请求,对异常视频帧的视频编码数据进行获取。
在满足播放条件的情况下,可以多次对异常视频帧的编码数据进行获取;当不满足播放条件的情况下,取消再次获取请求,拒绝再次对异常视频帧的视频编码数据进行获取,选择通过过滤或修补的方式对异常视频帧进行处理。
根据本发明实施例,所述在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整,包括:
在视频显示卡顿的情况下,将相邻两个第一视频帧以及之间的B帧视频帧组成第一子图像组;
根据所述第一子图像组内两个第一视频帧的显示图像进行对比,计算二者之间的运动矢量,结合第一子图像组内的视频帧数量进行计算,得到第一子图像组内视频帧的平均运动矢量;
判断所述所述平均运动矢量是否小于第四预设阈值;
若是,则对所述第一子图像组内B帧视频帧的解码数量进行调整,对部分B帧视频帧进行过滤处理,使第一子图像组内视频帧的平均运动矢量为小于第五预设阈值的最大值;
基于调整后所述第一子图像组内视频帧数量对所述第一子图像组内B帧视频帧的显示参数进行调整。
需要说明的是,当视频属性(分辨率、帧数、码率)较高、处理器性能较差的情况下,即当前设备的处理器无法再视频帧的显示时间戳之前完成对该视频帧的解码处理,从而导致视频显示卡顿。
由于对P帧视频帧解码时需要参数上一I帧视频帧或P帧视频帧进行解码,因此不考虑I帧视频帧和P帧视频帧进行抽帧处理,仅对P帧视频帧进行抽帧处理。
通过平均运动矢量可以判断第一子图像组内视频帧的平均变化率,其平均运动矢量越小,表示第一子图像组内视频帧的平均变化率越低,对平均运动矢量小于平均运动矢量的第一子图像组进行抽帧处理,可以在不影响或较低影响视频显示效果的情况下降低视频编码数据大小,从而降低处理器处理压力,消除视频显示卡顿情况。在对视频抽帧处理过程中,设置最大平均运动矢量,即第五预设阈值,使抽帧处理后第一子图像组的平均运动矢量为小于第五预设阈值的最大值,从而在满足视频显示效果的情况下,最大程度的降低视频编码数据大小,减低处理器功耗,同时起到节能的目的。在对第一子图像组内视频帧进行抽帧处理时,优先采用间隔抽帧的方法进行处理,禁止同时对相邻视频帧进行抽帧,避免视频显示效果下降过大。其中,第四预设阈值和第五预设阈值根据视频属性(分辨率、帧数、码率)和处理器性能进行动态调整,第四预设阈值大于第五预设阈值。
本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中包括一种视频解码方法程序,所述一种视频解码方法程序被处理器执行时,实现如上述任一项所述的一种视频解码方法的步骤。
本发明公开了一种视频解码方法和***,本发明通过多核处理器对视频进行解码,根据视频帧种类将视频图像组内视频帧分为第一视频编码数据包和第二视频编码数据包,通过相对应的处理核心进行解码处理,并对下一图像组的视频帧进行预解码,提高处理器的占用率,从而提高解码效率。同时,对于解码过程中出现的异常视频帧,根据异常视频帧的属性选择对其进行再次获取视频编码数据或过滤处理。另外,在视频播放卡顿的情况下,根据相邻第一视频帧的平均运动矢量,对B帧视频帧进行抽帧处理,从而降低视频编码数据大小,降低处理器解码压力。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种视频解码方法,其特征在于,包括:
获取图像组kn内视频帧的视频编码数据;
根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码;
通过空闲处理核心对图像组kn+1内视频帧的进行预解码;
将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常视频帧占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理;
在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理;
在对所述异常视频帧进行过滤处理的情况下,对相邻视频帧的显示参数进行调整;
实时监测视频的播放状态,在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整。
2.根据权利要求1所述的视频解码方法,其特征在于,所述根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码,包括:
将图像组kn内I帧视频帧和P帧视频帧标记为第一视频帧;
提取所述图像组kn内第一视频帧的视频编码数据,得到第一视频编码数据包;
提取所述图像组kn内相邻B帧视频帧的视频编码数据,得到一个或多个第二视频编码数据包;
根据所述第一视频编码数据包生成第一解码任务,通过第一处理核心对所述第一视频编码数据包进行解码;
根据所述一个或多个第二视频编码数据包生成一个或多个第二解码任务,通过第二处理核心对所述一个或多个第二视频编码数据包进行解码。
3.根据权利要求1所述的视频解码方法,其特征在于,所述通过空闲处理核心对图像组kn+1内视频帧的进行预解码,包括:
将空闲处理核心标记为第一处理核心,对图像组kn+1的第一压缩编码数据包进行解码;
将当前显示视频帧的显示时间戳与图像组kn+1中I帧视频帧的显示时间戳进行差值计算,得到第一时间时长;
将所述第一时间时长与第一预设阈值进行对比;
当所述第一时间时长小于第一预设阈值时,通过第二处理核心对图像组kn+1的一个或多个第二压缩编码数据包进行解码。
4.根据权利要求1所述的视频解码方法,其特征在于,还包括:
根据图像组kn+2中第一压缩编码数据的数据大小,以及处理器的解码速度进行分析,得到图像组kn+2中第一压缩编码数据的预测解码时长;
根据图像组kn+1中I帧显示时间戳和图像组kn+2中I帧显示时间戳进行差值计算,得到图像组kn+1的显示时长;
判断所述图像组kn+2中第一压缩编码数据的预测解码时长是否大于图像组kn+1的显示时长;
若是,则启动备用处理核心对图像组kn+2中第一压缩编码数据进行解码。
5.根据权利要求1所述的视频解码方法,其特征在于,所述将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理,包括:
在视频解码过程中将存在丢包或解码失败的视频帧标记为异常视频帧;
根据所述异常视频帧进行分析,若所述异常视频帧为关键帧,则发送再次获取请求,再次获取所述异常视频帧的视频编码数据;
反之,则计算所述异常视频帧所在图像组内异常视频帧占比并与第二预设阈值进行对比;
若所述异常视频帧占比大于第二预设阈值,则再次获取所述异常视频帧所在图像组内全部视频帧的视频编码数据;
反之,计算所述异常视频帧相邻两个视频帧显示图像的运动矢量并与第三预设阈值进行对比;
若所述运动矢量大于第三预设阈值,则再次获取所述异常视频帧的视频编码数据;
反之,对所述异常视频帧进行过滤处理。
6.根据权利要求5所述的视频解码方法,其特征在于,还包括:
若所述异常视频帧存在部分编码数据,且能从所述部分编码数据中解码得到部分显示图像,则结合相邻两个视频帧的显示图像进行分析,基于所述部分显示图像对所述异常视频帧中未解码部分显示图像进行修补。
7.根据权利要求1所述的视频解码方法,其特征在于,所述在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理,包括:
根据当前设备的带宽数据进行计算,得到再次获取编码数据的时延数据,结合当前设备的解码速度对再次获取视频编码数据所需时间和解码所需时间进行预测,将得到的预测时间进行相加,得到第一预测时间;
判断所述第一预测时间是否小于所述异常视频帧的显示时间戳;
若是,则重新获取所述异常视频帧的视频编码数据;
反之,则取消对所述异常视频帧再次获取编码数据的请求,对所述异常视频帧进行过滤处理。
8.根据权利要求1所述的视频解码方法,其特征在于,所述在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整,包括:
在视频显示卡顿的情况下,将相邻两个第一视频帧以及之间的B帧视频帧组成第一子图像组;
根据所述第一子图像组内两个第一视频帧的显示图像进行对比,计算二者之间的运动矢量,结合第一子图像组内的视频帧数量进行计算,得到第一子图像组内视频帧的平均运动矢量;
判断所述所述平均运动矢量是否小于第四预设阈值;
若是,则对所述第一子图像组内B帧视频帧的解码数量进行调整,对部分B帧视频帧进行过滤处理,使第一子图像组内视频帧的平均运动矢量为小于第五预设阈值的最大值;
基于调整后所述第一子图像组内视频帧数量对所述第一子图像组内B帧视频帧的显示参数进行调整。
9.一种视频解码***,其特征在于,包括:
数据获取模块,用于获取图像组kn内视频帧的视频编码数据;
视频解码模块,用于根据视频帧种类对图像组kn内视频帧的视频编码数据进行拆分,得到第一视频编码数据包以及一个或多个第二视频编码数据包,将所述第一视频编码数据包以及一个或多个第二视频编码数据包分配至相对应的处理核心进行解码;
视频预解码模块,用于通过空闲处理核心对图像组kn+1内视频帧的进行预解码;
异常视频帧处理模块,用于将解码过程中存在异常的视频帧标记为异常视频帧,根据所述异常视频帧所在图像组内异常视频帧占比以及相邻视频帧的运动矢量对所述异常视频帧进行再次获取视频编码数据或过滤处理;在对所述异常视频帧进行再次获取视频编码数据的情况下,预测再次获取视频编码数据所需时间和解码所需时间,对不满足播放条件的再次获取请求进行过滤处理;在对所述异常视频帧进行过滤处理的情况下,对相邻视频帧的显示参数进行调整;
视频抽帧模块,用于实时监测视频的播放状态,在视频播放卡顿的情况下,根据相邻第一视频帧显示图像的运动矢量,对所述相邻第一视频帧之间的B帧视频帧进行抽帧处理,对所述相邻第一视频帧和剩余B帧视频帧的显示参数进行调整。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括一种视频解码方法程序,所述一种视频解码方法程序被处理器执行时,实现如权利要求1至8中任一项所述的一种视频解码方法的步骤。
CN202311394685.8A 2023-10-26 2023-10-26 一种视频解码方法和*** Active CN117135364B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311394685.8A CN117135364B (zh) 2023-10-26 2023-10-26 一种视频解码方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311394685.8A CN117135364B (zh) 2023-10-26 2023-10-26 一种视频解码方法和***

Publications (2)

Publication Number Publication Date
CN117135364A true CN117135364A (zh) 2023-11-28
CN117135364B CN117135364B (zh) 2024-02-02

Family

ID=88854869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311394685.8A Active CN117135364B (zh) 2023-10-26 2023-10-26 一种视频解码方法和***

Country Status (1)

Country Link
CN (1) CN117135364B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016090652A1 (zh) * 2014-12-12 2016-06-16 深圳Tcl新技术有限公司 视频压缩方法及装置
CN108769690A (zh) * 2018-05-28 2018-11-06 思百达物联网科技(北京)有限公司 基于视频压缩的连续图片管理方法、装置、设备和介质
CN108989802A (zh) * 2018-08-14 2018-12-11 华中科技大学 一种利用帧间关系的hevc视频流的质量估计方法及***
CN110049336A (zh) * 2019-05-22 2019-07-23 腾讯科技(深圳)有限公司 视频编码方法和视频解码方法
CN111107297A (zh) * 2019-12-30 2020-05-05 广州市百果园网络科技有限公司 一种视频传输方法、装置、资源服务器和存储介质
CN112333448A (zh) * 2020-11-04 2021-02-05 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质
WO2023011408A1 (zh) * 2021-08-03 2023-02-09 华为技术有限公司 一种多窗口视频通信方法、设备及***
RU2800593C1 (ru) * 2020-08-27 2023-07-25 Биго Текнолоджи Пте. Лтд. Способ и устройство для разделения группы изображений на основании переключения сцены и способ и устройство для кодирования видео
CN116708789A (zh) * 2023-08-04 2023-09-05 湖南马栏山视频先进技术研究院有限公司 一种基于人工智能的视频分析编码***
CN116916066A (zh) * 2023-05-31 2023-10-20 中央广播电视总台 一种视频转码方法及装置、电子设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016090652A1 (zh) * 2014-12-12 2016-06-16 深圳Tcl新技术有限公司 视频压缩方法及装置
CN108769690A (zh) * 2018-05-28 2018-11-06 思百达物联网科技(北京)有限公司 基于视频压缩的连续图片管理方法、装置、设备和介质
CN108989802A (zh) * 2018-08-14 2018-12-11 华中科技大学 一种利用帧间关系的hevc视频流的质量估计方法及***
CN110049336A (zh) * 2019-05-22 2019-07-23 腾讯科技(深圳)有限公司 视频编码方法和视频解码方法
CN111107297A (zh) * 2019-12-30 2020-05-05 广州市百果园网络科技有限公司 一种视频传输方法、装置、资源服务器和存储介质
RU2800593C1 (ru) * 2020-08-27 2023-07-25 Биго Текнолоджи Пте. Лтд. Способ и устройство для разделения группы изображений на основании переключения сцены и способ и устройство для кодирования видео
CN112333448A (zh) * 2020-11-04 2021-02-05 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质
WO2023011408A1 (zh) * 2021-08-03 2023-02-09 华为技术有限公司 一种多窗口视频通信方法、设备及***
CN116916066A (zh) * 2023-05-31 2023-10-20 中央广播电视总台 一种视频转码方法及装置、电子设备及存储介质
CN116708789A (zh) * 2023-08-04 2023-09-05 湖南马栏山视频先进技术研究院有限公司 一种基于人工智能的视频分析编码***

Also Published As

Publication number Publication date
CN117135364B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
US9071841B2 (en) Video transcoding with dynamically modifiable spatial resolution
US10009628B2 (en) Tuning video compression for high frame rate and variable frame rate capture
RU2587467C2 (ru) Сокращение задержки при кодировании и декодировании видео
WO2021147448A1 (zh) 一种视频数据处理方法、装置及存储介质
US20100153687A1 (en) Streaming processor, operation method of streaming processor and processor system
US20130051478A1 (en) Memory management for video decoding
CN112333448B (zh) 视频编码、解码方法和装置、电子设备和存储介质
TW201404170A (zh) 用於可調適視訊串流之技術
JP2016526336A (ja) 適応ビットレートストリーミングのための適応量子化を用いて複数のビデオストリームをエンコードするシステムおよび方法
US20200288177A1 (en) Encode/decode strategy for mitigating irregular decoding time
CN112351285B (zh) 视频编码、解码方法和装置、电子设备和存储介质
CN110149515B (zh) 数据传输方法及装置
US20130028532A1 (en) Method and device for image compression coding
CN107613302B (zh) 解码方法及装置、存储介质、处理器
JP2007507128A (ja) 参照ピクチャのリフレッシュを遅延させて行うビデオ画像の符号化および復号化
US20150249829A1 (en) Method, Apparatus and Computer Program Product for Video Compression
CN114449262A (zh) 视频编码控制方法、装置、设备和存储介质
WO2024078066A1 (zh) 视频解码方法、视频编码方法、装置、存储介质及设备
CN117135364B (zh) 一种视频解码方法和***
CN116489385A (zh) 视频编码方法、解码方法、装置、电子设备及存储介质
CN112714336B (zh) 视频分割方法和装置、电子设备、计算机可读存储介质
CN115297331A (zh) 一种视频数据处理方法、装置、设备及***
CN111212288B (zh) 视频数据的编解码方法、装置、计算机设备和存储介质
US11323730B2 (en) Temporally-overlapped video encoding, video decoding and video rendering techniques therefor
US8594177B2 (en) Reducing reference frame data store bandwidth requirements in video decoders

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
GR01 Patent grant
GR01 Patent grant