本发明涉及视频解码技术领域,尤其涉及一种视频解码方法、装置和计算机设备。
背景技术:
视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,人们看到的就是动作连续的视频。但是,单纯传输视频画面数据量非常大,对网络和存储要求比较高。由于连续的帧之间相似性极高,为便于储存传输,可以对原始的视频进行编码压缩,去掉大量重复的信息,能够减少视频的数据量。主流的视频编码格式包括有h.264、mpeg、rmvb等。当播放观看视频时,需要对编码的视频进行相应的解码。目前,主要是基于开源的跨平台计算机视觉库opencv来对视频进行解码。在解码时,需要对视频中的所有帧进行yuv解码,然后对一些关键帧进行bgr解码。该方法进行解码,会产生计算资源浪费的问题,解码效率低。
技术实现要素:
本发明的目的旨在至少在一定程度上解决上述的技术问题之一。
为此,本发明的第一个目的在于提出一种视频解码方法,能够缓解视频解码计算压力,避免计算资源浪费,提高解码效率。
本发明的第二个目的在于提出一种视频解码装置。
本发明的第三个目的在于提出一种计算机设备。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为了实现上述目的,本发明第一方面实施例提出一种视频解码方法,该方法包括:
获取待解码视频,并确定所述待解码视频中的关键帧;
根据挑帧频率和所述关键帧,从所述待解码视频中确定待挑选帧和待解码帧;
分别采用不同的解码方式对所述待挑选帧和所述待解码帧进行解码。
可选的,所述方法包括:
对所述待挑选帧进行rgb解码,并对所述待解码帧进行yuv解码。
可选的,获取待解码视频,并确定所述待解码视频中的关键帧,包括:
获取预设时长的待解码视频;
统计所述待解码视频中的关键帧序号;
根据所述关键帧序号确定关键帧间隔值以及所述关键帧。
可选的,根据所述关键帧序号确定关键帧间隔值以及所述关键帧,包括:
根据所述关键帧序号确定出多个待选关键帧间隔值;
从所述多个待选关键帧间隔值中选取出现频率最高的待选关键帧间隔值作为所述关键帧间隔值。
可选的,根据挑帧频率和所述关键帧,从所述待解码视频信息中确定待挑选帧和待解码帧,包括:
获取所述待解码视频的刷新率fps;
根据所述fps和所述挑帧频率计算得到挑帧步长;
根据所述关键帧、所述关键帧间隔值和所述挑帧步长确定所述待挑选帧;
根据所述关键帧和所述待挑选帧确定所述待解码帧。
可选的,根据所述关键帧和所述待挑选帧确定待解码帧,包括:
在同一关键帧间隔区间内,将所述关键帧和位于该区间内的最后一个待挑选帧之间的所有帧作为所述待解码帧。
可选的,方法包括:
基于ffmpeg原生接口函数对所述待解码帧和所述待挑选帧进行解码。
本发明实施例的视频解码方法,通过获取待解码视频,并确定所述待解码视频中的关键帧,以及根据挑帧频率和所述关键帧,从所述待解码视频中确定待挑选帧和待解码帧,并分别采用不同的解码方式对所述待挑选帧和所述待解码帧进行解码,缓解了视频解码计算压力,避免计算资源浪费,提高了解码效率。
为了实现上述目的,本发明第二方面实施例提出了一种视频解码装置,包括:
处理模块,用于获取待解码视频,并确定所述待解码视频中的关键帧;
确定模块,用于根据挑帧频率和所述关键帧,从所述待解码视频中确定待挑选帧和待解码帧;
解码模块,用于分别采用不同的解码方式对所述待挑选帧和所述待解码帧进行解码。
可选的,所述解码模块,用于:
对所述待挑选帧进行rgb解码,并对所述待解码帧进行yuv解码。
可选的,所述处理模块,包括:
第一获取单元,用于获取预设时长的待解码视频;
统计单元,用于统计所述待解码视频中的关键帧序号;
第一确定单元,用于根据所述关键帧序号确定关键帧间隔值以及所述关键帧。
可选的,所述第一确定单元,用于:
根据所述关键帧序号确定出多个待选关键帧间隔值;
从所述多个待选关键帧间隔值中选取出现频率最高的待选关键帧间隔值作为所述关键帧间隔值。
可选的,所述确定模块,包括:
第二获取单元,用于获取所述待解码视频的刷新率fps;
计算单元,用于根据所述fps和所述挑帧频率计算得到挑帧步长;
第二确定单元,用于根据所述关键帧、所述关键帧间隔值和所述挑帧步长确定所述待挑选帧;
第三确定单元,用于根据所述关键帧和所述待挑选帧确定所述待解码帧。
可选的,所述第三确定单元,用于:
在同一关键帧间隔区间内,将所述关键帧和位于该区间内的最后一个待挑选帧之间的所有帧作为所述待解码帧。
可选的,所述解码模块,用于:
基于ffmpeg原生接口函数对所述待解码帧和所述待挑选帧进行解码。
本发明实施例的视频解码装置,通过获取待解码视频,并确定所述待解码视频中的关键帧,以及根据挑帧频率和所述关键帧,从所述待解码视频中确定待挑选帧和待解码帧,并分别采用不同的解码方式对所述待挑选帧和所述待解码帧进行解码,缓解了视频解码计算压力,避免计算资源浪费,提高了解码效率。
为了实现上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如第一方面实施例所述的视频解码方法。
为了实现上述目的,本发明第四方面实施例还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面实施例所述的视频解码方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一个实施例的视频解码方法的流程图;
图2是本发明一个实施例的确定关键帧的流程图;
图3是本发明一个实施例的确定待挑选帧和待解码帧的流程图;
图4是本发明一个实施例的视频解码装置的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
以下结合具体实施例对本发明作进一步详细描述,这些实施例不能理解为限制本发明所要求保护的范围。
下面参考附图描述本发明实施例的视频解码方法、装置和计算机设备。
首先简单介绍一下视频编解码技术。编码器将多张图像进行编码后,输出成一段一段的gop(groupofpictures),而解码器则是在播放时,读取上述gop并进行解码,然后读取图像再渲染显示。其中,一段gop是一组连续的图像,由一张i帧和多张b帧或p帧组成。i帧、b帧、p帧是视频图像编码器和解码器存取的基本单位。i帧是内部编码帧(也称为关键帧),b帧是双向内插帧(双向参考帧),p帧是前向预测帧(前向参考帧)。i帧是一个完整的图像,通常是每段gop的第一个帧,经过适度地压缩,可做为随机访问的参考点。而b帧和p帧则记录的是相对于i帧的变化(不一样的图像信息)。如果没有i帧,则b帧和p帧就无法解码。
目前,人工智能视频分析系统主要采用基于rtsp(realtimestreamingprotocol,实时流传输协议)的实时视频流。其默认参数大多为1080p和25fps。也就是说,人工智能视频分析系统需要在一秒钟内处理25帧1080p图像,解码计算压力较大。而对于某些图像,帧与帧之间的变化很小,无需对25帧图像全部处理,比如可以在1秒内均匀地挑选出10帧、5帧或1帧,只对挑选出的图像进行解码,既可以减少视频解码计算压力,也可以减少后续的视频分析压力。
基于此,本发明的提出了一种视频解码方法能够缓解视频解码计算压力,避免计算资源浪费,提高解码效率。
图1是本发明一实施例的视频解码方法的流程图,如图1所示,该方法包括以下步骤:
s1,获取待解码视频,并确定待解码视频中的关键帧。
由于经过编码的视频中的关键帧(i帧)通常会被标记,因此只需实时地采集待解码视频并对其解析,便可以确定出这段视频中的关键帧。
在本发明的一个实施例中,如图2所示,确定关键帧的过程可进一步包括以下步骤:
s11,获取预设时长的待解码视频。
s12,统计待解码视频中的关键帧序号。
s13,根据关键帧序号确定关键帧间隔值以及关键帧。
具体地,可根据关键帧序号确定出多个待选关键帧间隔值,然后从多个待选关键帧间隔值中选取出现频率最高的待选关键帧间隔值作为关键帧间隔值。
举例来说,可采集视频流的前60秒,再统计出i帧位置,即每一个关键帧序号。然后利用上述i帧位置计算出连续两个i帧之间的i帧间隔值。由于网络因素,可能会产生丢帧的现象,因此计算出的i帧间隔值不一定全部相同。为了保证最终得到的i帧间隔值的准确性,本发明选取出现频率最高的值为该视频流的i帧间隔值。
s2,根据挑帧频率和关键帧,从待解码视频中确定待挑选帧和待解码帧。
其中,挑帧频率可以是预先设定的值,如1秒内挑选2帧等。
在本发明的一个实施例中,如图3所示,确定待挑选帧和待解码帧的过程可进一步包括以下步骤:
s21,获取待解码视频的刷新率fps。
s22,根据fps和挑帧频率计算得到挑帧步长。
fps表示待解码视频的刷新率,sample_fps表示挑帧频率。
以关键帧间隔值为25,1秒内挑选2帧为例,先用fps/sample_fps=12.5,再对12.5取整得到12。最后确定出挑帧步长=12。
s23,根据关键帧、关键帧间隔值和挑帧步长确定待挑选帧。
以关键帧间隔值为25,1秒内挑选2帧为例,在步骤s32已经计算出挑帧步长为12。假设第一个关键帧的序号为1,那么待挑选帧的序号则为1和13。
同理,以关键帧间隔值为25,1秒内挑选3帧为例,计算出的挑帧步长为8。假设第一个关键帧的序号为1,那么待挑选帧的序号则为1、9和17。
同理,以关键帧间隔值为25,2秒内挑选1帧为例,计算出的挑帧步长为50。假设第一个关键帧的序号为1,那么待挑选帧的序号则为1和51。
应当理解的是,上述待挑选帧可以是i帧,也可以是p帧。
s24,根据关键帧和待挑选帧确定待解码帧。
具体地,在确定出待挑选帧后,在同一关键帧间隔区间内,将关键帧和位于该区间内的最后一个待挑选帧之间的所有帧作为待解码帧。
以关键帧间隔值为25,1秒内挑选2帧为例,其第一个关键帧的序号为1,待挑选帧的序号为1和13,序号为13的帧为本区间内的最后一个待挑选帧,那么可确定序号为1-13的帧为待解码帧。
同理,以关键帧间隔值为25,1秒内挑选3帧为例,其第一个关键帧的序号为1,待挑选帧的序号为1、9和17,序号为17的帧为本区间内的最后一个待挑选帧,那么可确定序号为1-17的帧为待解码帧。
同理,以关键帧间隔值为25,2秒内挑选1帧为例,其第一个关键帧的序号为1,待挑选帧的序号为1和51。而序号为51的帧与序号为1的帧不属于同一关键帧间隔区间,因此序号为1的帧就是本区间内的最后一个待挑选帧,那么可确定序号为1的帧为待解码帧。
s3,分别采用不同的解码方式对待挑选帧和待解码帧进行解码。
具体地,可基于ffmpeg原生接口函数对待解码帧和待挑选帧进行解码。其中,可对待挑选帧进行rgb解码,对待解码帧进行yuv解码。
以关键帧间隔值为25,1秒内挑选2帧为例,待挑选帧的序号为1和13,那么只需对序号为1和13的帧进行rgb解码即可,而无需对其他序号的帧进行rgb解码。序号为1-13的帧为待解码帧,只需对序号为1-13的帧进行yuv解码即可,而无需对序号为14-25的帧进行yuv解码。
同理,以关键帧间隔值为25,1秒内挑选3帧为例,待挑选帧的序号为1、9和17,那么只需对序号为1、9、17的帧进行rgb解码即可,而无需对其他序号的帧进行rgb解码。序号为1-17的帧为待解码帧,只需对序号为1-17的帧进行yuv解码即可,而无需对序号为18-25的帧进行yuv解码。
同理,以关键帧间隔值为25,2秒内挑选1帧为例,待挑选帧的序号为1和51,那么只需对序号为1和51的帧进行rgb解码即可,而无需对其他序号的帧进行rgb解码。序号为1和51的帧为待解码帧,只需对序号为1和51的帧进行yuv解码即可,而无需对序号为2-50和52-100的帧进行解码。
应当理解的是,本发明主要通过ffmpeg原生接口函数对待解码帧和待挑选帧进行解码,可以更细颗粒度地精细控制视频解码过程。而现有技术中,基于opencv的视频解码,则需要对所有帧进行yuv解码,无法跳过不必解码的帧,造成了计算资源浪费。
本发明实施例的视频解码方法,通过获取待解码视频,并确定待解码视频中的关键帧,以及根据挑帧频率和关键帧,从待解码视频中确定待挑选帧和待解码帧,并分别采用不同的解码方式对待挑选帧和待解码帧进行解码,缓解了视频解码计算压力,避免计算资源浪费,提高了解码效率。
为了实现上述实施例,本发明还提出了一种视频解码装置。
图4是本发明一个实施例的视频解码装置的结构示意图。
如图4所示,该装置包括处理模块41、确定模块42以及解码模块43。
处理模块41,用于获取待解码视频,并确定待解码视频中的关键帧。
其中,处理模块41,可进一步包括:
第一获取单元411,用于获取预设时长的待解码视频。
统计单元412,用于统计待解码视频中的关键帧序号。
第一确定单元413,用于根据关键帧序号确定关键帧间隔值以及关键帧。
确定模块42,用于根据挑帧频率和关键帧,从待解码视频中确定待挑选帧和待解码帧。
其中,确定模块42,可进一步包括:
第二获取单元421,用于获取待解码视频的刷新率fps。
计算单元422,用于根据fps和挑帧频率计算得到挑帧步长。
第二确定单元423,用于根据关键帧、关键帧间隔值和挑帧步长确定待挑选帧。
第三确定单元424,用于根据关键帧和待挑选帧确定待解码帧。
解码模块43,用于分别采用不同的解码方式对待挑选帧和待解码帧进行解码。
应当理解的是,本实施例的视频解码装置与第一方面实施例的视频解码方法的描述一致,此处不再赘述。
本发明实施例的视频解码装置,通过获取待解码视频,并确定待解码视频中的关键帧,以及根据挑帧频率和关键帧,从待解码视频中确定待挑选帧和待解码帧,并分别采用不同的解码方式对待挑选帧和待解码帧进行解码,缓解了视频解码计算压力,避免计算资源浪费,提高了解码效率。
为了实现上述实施例,本发明还提出了一种计算机设备。
该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如第一方面实施例的视频解码方法。
为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质。
该非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面实施例的视频解码方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
1.一种视频解码方法,其特征在于,包括:
获取待解码视频,并确定所述待解码视频中的关键帧;
根据挑帧频率和所述关键帧,从所述待解码视频中确定待挑选帧和待解码帧;
分别采用不同的解码方式对所述待挑选帧和所述待解码帧进行解码。
2.如权利要求1所述的方法,其特征在于,对所述待挑选帧进行rgb解码,并对所述待解码帧进行yuv解码。
3.如权利要求1所述的方法,其特征在于,获取待解码视频,并确定所述待解码视频中的关键帧,包括:
获取预设时长的待解码视频;
统计所述待解码视频中的关键帧序号;
根据所述关键帧序号确定关键帧间隔值以及所述关键帧。
4.如权利要求3所述的方法,其特征在于,根据所述关键帧序号确定关键帧间隔值以及所述关键帧,包括:
根据所述关键帧序号确定出多个待选关键帧间隔值;
从所述多个待选关键帧间隔值中选取出现频率最高的待选关键帧间隔值作为所述关键帧间隔值。
5.如权利要求3所述的方法,其特征在于,根据挑帧频率和所述关键帧,从所述待解码视频信息中确定待挑选帧和待解码帧,包括:
获取所述待解码视频的刷新率fps;
根据所述fps和所述挑帧频率计算得到挑帧步长;
根据所述关键帧、所述关键帧间隔值和所述挑帧步长确定所述待挑选帧;
根据所述关键帧和所述待挑选帧确定所述待解码帧。
6.如权利要求5所述的方法,其特征在于,根据所述关键帧和所述待挑选帧确定所述待解码帧,包括:
在同一关键帧间隔区间内,将所述关键帧和位于该区间内的最后一个待挑选帧之间的所有帧作为所述待解码帧。
7.如权利要求1-6任一项所述的方法,其特征在于,基于ffmpeg原生接口函数对所述待解码帧和所述待挑选帧进行解码。
8.一种视频解码装置,其特征在于,包括:
处理模块,用于获取待解码视频,并确定所述待解码视频中的关键帧;
确定模块,用于根据挑帧频率和所述关键帧,从所述待解码视频中确定待挑选帧和待解码帧;
解码模块,用于分别采用不同的解码方式对所述待挑选帧和所述待解码帧进行解码。
9.如权利要求8所述的装置,其特征在于,所述解码模块,用于:
对所述待挑选帧进行rgb解码,并对所述待解码帧进行yuv解码。
10.如权利要求8所述的装置,其特征在于,所述处理模块,包括:
第一获取单元,用于获取预设时长的待解码视频;
统计单元,用于统计所述待解码视频中的关键帧序号;
第一确定单元,用于根据所述关键帧序号确定关键帧间隔值以及所述关键帧。
11.如权利要求10所述的装置,其特征在于,所述第一确定单元,用于:
根据所述关键帧序号确定出多个待选关键帧间隔值;
从所述多个待选关键帧间隔值中选取出现频率最高的待选关键帧间隔值作为所述关键帧间隔值。
12.如权利要求10所述的装置,其特征在于,所述确定模块,包括:
第二获取单元,用于获取所述待解码视频的刷新率fps;
计算单元,用于根据所述fps和所述挑帧频率计算得到挑帧步长;
第二确定单元,用于根据所述关键帧、所述关键帧间隔值和所述挑帧步长确定所述待挑选帧;
第三确定单元,用于根据所述关键帧和所述待挑选帧确定所述待解码帧。
13.如权利要求12所述的装置,其特征在于,所述第三确定单元,用于:
在同一关键帧间隔区间内,将所述关键帧和位于该区间内的最后一个待挑选帧之间的所有帧作为所述待解码帧。
14.如权利要求8-13任一项所述的装置,其特征在于,所述解码模块,用于:
基于ffmpeg原生接口函数对所述待解码帧和所述待挑选帧进行解码。
15.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-7任一所述的视频解码方法。
16.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一所述的视频解码方法。
技术总结