CN115150674A - 视频处理方法、系统、设备及存储介质 - Google Patents

视频处理方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN115150674A
CN115150674A CN202110349627.8A CN202110349627A CN115150674A CN 115150674 A CN115150674 A CN 115150674A CN 202110349627 A CN202110349627 A CN 202110349627A CN 115150674 A CN115150674 A CN 115150674A
Authority
CN
China
Prior art keywords
video frame
buffer queue
video
frame buffer
depth
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.)
Pending
Application number
CN202110349627.8A
Other languages
English (en)
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 Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies 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 Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN202110349627.8A priority Critical patent/CN115150674A/zh
Publication of CN115150674A publication Critical patent/CN115150674A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64746Control signals issued by the network directed to the server or the client
    • H04N21/64761Control signals issued by the network directed to the server or the client directed to the server
    • H04N21/64769Control signals issued by the network directed to the server or the client directed to the server for rate control
    • 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/146Data rate or code amount at the encoder output
    • 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
    • H04N19/423Methods 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 characterised by memory arrangements

Abstract

本申请涉及一种视频处理方法、系统、设备及存储介质。所述方法包括:检测视频帧缓存队列的深度变化情况;其中,所述视频帧缓存队列用于接收硬件解码器的后处理模块输出的视频帧,并提供给图像接收端提取;根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出;驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。所述后处理模块的输出视频帧的速率始终维持在图像接收端的处理能力范围内,不会出现硬件资源浪费的情况。

Description

视频处理方法、系统、设备及存储介质
技术领域
本申请涉及视频处理技术领域,特别是涉及一种视频处理方法、系统、设备及存储介质。
背景技术
在部分领域,例如安防领域,需要对视频进行实时分析,受限于整机成本和芯片算力,往往达不到对每帧图像进行分析的目的,同时某些应用场景也不需要对每帧场景进行分析。算力的不足是由于视频分析模块本身算力设计受限。对于上述需求,当软件发现芯片算力不足时,视频分析模块会将从硬件解码器接收到的帧直接丢弃。
上述方式虽然解决了算力不足的问题,但是在丢帧的同时硬件解码器却在不停工作,浪费带宽和功耗。
发明内容
基于此,有必要针对浪费硬件解码器资源的问题,提供一种视频处理方法、系统、设备及存储介质。
为了实现本申请的目的,本申请采用如下技术方案:
一种视频处理方法,包括:
检测视频帧缓存队列的深度变化情况;其中,所述视频帧缓存队列用于接收硬件解码器的后处理模块输出的视频帧,并提供给图像接收端提取;
根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出;
驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
一种视频处理系统,包括:
缓存队列深度检测模块,用于检测视频帧缓存队列的深度变化情况;其中,所述视频帧缓存队列用于接收硬件解码器的后处理模块输出的视频帧,并提供给图像接收端提取;
输出速率确定模块,根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出;
驱动模块,用于驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
一种视频处理设备,包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的视频处理程序,所述视频处理程序被所述处理器执行时实现如上所述的视频处理方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有视频处理程序,所述视频处理程序被处理器执行时实现如上所述的视频处理方法的步骤。
上述视频处理方法、系统、设备以及计算机可读存储介质,通过检测视频帧缓存队列的深度变化情况,可以了解图像接收端当前处理视频帧的速率是否小于后处理模块输出视频帧的速率,即若图像接收端当前处理视频帧的速率小于后处理模块输出视频帧的速率,则表示视频帧缓存队列被提取的视频帧的数量少于输入到视频帧缓存队列中的视频帧的数量,视频帧缓存队列长度会增加,如果持续增加,视频帧缓存队列最终会溢出;若图像接收端当前处理视频帧的速率大于后处理模块输出视频帧的速率,则表示视频帧缓存队列被提取的视频帧的数量多于输入到视频帧缓存队列中的视频帧的数量,视频帧缓存队列长度会减少,如果持续减少,视频帧缓存队列最终会变空,造成图像接收端等待;因此,可以根据视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,从而使后处理模块输出视频帧的速率始终维持在与图像接收端的当前处理视频帧的速率相当的水平上,进而使得所述视频帧缓存队列至少不溢出。同时,后处理模块对来自解码模块的视频帧的丢弃是在硬件解码器内部丢弃,即后处理模块不会对要丢弃的视频帧进行后处理,而只会对要输出到视频帧缓存队列中的视频帧进行后处理,因为后处理模块的输出视频帧的速率始终维持在图像接收端的处理能力范围内,因此不会出现硬件资源浪费的情况,即不会像传统的技术方案中,所有的视频帧都经过后处理,然后在图像接收端处理能力不足时再进行丢弃,导致后处理模块浪费资源。
附图说明
图1为本申请实施例方案涉及的硬件运行环境的视频处理设备结构示意图;
图2为视频处理过程示意图;
图3a为一实施例的视频处理方法流程图;
图3b~图3f为在不同控制下,后处理模块输出视频帧的速率变化对视频帧缓存队列的影响变化示意图;
图4为图3中涉及步骤S302和S304的具体实施流程图;
图5为另一实施例的视频处理方法流程图
图6为又一实施例的视频处理方法流程图;
图7为一实施例的视频处理系统模块图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的首选实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本申请的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
图1是本申请实施例方案涉及的硬件运行环境的视频处理设备100结构示意图。
本申请实施例的视频处理设备,可以是例如服务器、个人计算机,智能手机、平板电脑、便携计算机等。只要其具备一定的通用数据处理能力即可。
如图1所示,所述视频处理设备100包括:存储器104、处理器102及网络接口106。
处理器102在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器104中存储的程序代码或处理数据,例如执行视频处理程序等。
存储器104至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器104在一些实施例中可以是视频处理设备100的内部存储单元,例如该视频处理设备100的硬盘。存储器104在另一些实施例中也可以是视频处理设备100的外部存储设备,例如该视频处理设备100上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,存储器104还可以包括视频处理设备100的内部存储单元。存储器104不仅可以用于存储安装于视频处理设备100的应用软件及各类数据,例如人脸识别模型训练的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
网络接口106可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该视频处理设备100与其他电子设备之间建立通信连接。
网络可以为互联网、云网络、无线保真(Wi-Fi)网络、个人网(PAN)、局域网(LAN)和/或城域网(MAN)。网络环境中的各种设备可以被配置为根据各种有线和无线通信协议连接到通信网络。这样的有线和无线通信协议的例子可以包括但不限于以下中的至少一个:传输控制协议和互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、文件传输协议(FTP)、ZigBee、EDGE、IEEE802.11、光保真(Li-Fi)、802.16、IEEE 802.11s、IEEE802.11g、多跳通信、无线接入点(AP)、设备对设备通信、蜂窝通信协议和/或蓝牙(BlueTooth)通信协议或其组合。
图1仅示出了具有组件102-106的视频处理设备100,本领域技术人员可以理解的是,图1示出的结构并不构成对视频处理设备100的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
图2是视频处理过程示意图。如图2所示,输入视频流经过硬件解码器202处理后,转换为视频帧,然后输入视频帧缓存队列204中,图像接收端206从视频帧缓存队列204中提取视频帧进行处理、分析或显示。视频在传输过程中需要进行编码以便传输,视频编码方式有很多,比如MPEG4、H26.4等等,本申请对传输的视频流的编码方式不限。视频流在接收端要进行显示,需要先进行解码还原为视频帧,本实施例中采用硬件解码器202来对视频流进行解码。硬件解码器202包括解码模块208和后处理模块210,二者都采用硬件实现各自的功能。其中解码模块208对视频流进行硬解码,获得初始视频帧。后处理模块210则通过硬件电路对初始视频帧进行后处理以获得显示效果更好的视频帧。后处理可以包括视频格式转换和图像增强。在视频传输的应用中,接收端可能需要接收不同的发送端发送的信号,因此视频格式转换一般必不可少。而图像增强则主要用于改善播放图像的质量。解码模块208在解码过程中,还将解码帧保存在解码帧缓存212中。
视频帧缓存队列204是为了匹配硬件解码器202与图像接收端206的处理速率不同而设置的缓存存储空间,硬件解码器202与图像接收端206以异步方式工作,即对同一视频帧而言,硬件解码器202先将视频帧存入视频帧缓存队列204,然后在图像接收端206在另一时间将视频帧取出。图像接收端206可以包括各类显示设备、图像分析设备、图像处理设备等。
图3a为一实施例的视频处理方法流程图,结合图1和图2,该方法以视频处理程序运行于上述视频处理设备100,并包含帧率控制算法214和后处理驱动216。在程序运行过程中,将帧率控制算法214的运行结果传输给后处理驱动216以控制后处理模块210。本实施例的视频处理方法可以包括:
步骤S302:检测视频帧缓存队列的深度变化情况。如上所述,所述视频帧缓存队列204用于接收硬件解码器202的后处理模块210输出的视频帧,并提供给图像接收端206提取。
视频帧缓存队列204在运行过程中可能会发生变化,该变化可以体现出图像接收端206对视频帧的处理能力,或者体现图像接收端206对视频帧的处理速率和后处理模块210输出视频帧的速率的关系。例如,图像接收端206对视频的处理速率可能是相对固定的,也可能是变化的。当图像接收端206对视频的处理速率相对固定时,在后处理模块210输出视频帧的速率一定的情况下,视频帧缓存队列的深度会保持固定的变化,例如维持平衡、匀速增加、匀速减少。当图像接收端206对视频的处理能力变化时,在后处理模块210输出视频帧的速率一定的情况下,视频帧缓存队列的深度将呈现出不确定的变化。
步骤S304:根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出。
根据视频帧缓存队列的深度变化情况,可以体现出图像接收端206对视频的处理速率是否跟得上后处理模块210输出视频帧的速率。所述至少不溢出的情况包括:视频帧缓存队列的深度维持平衡、视频帧缓存队列的深度在某个深度开始增长放缓后回落、视频帧缓存队列的深度在某个深度开始回落等。据此,当图像接收端206对视频的处理能力相对固定时,可以为后处理模块210设置恰当的输出视频帧的速率,使视频帧缓存队列的深度维持平衡;或者当图像接收端206对视频的处理能力变化时,实时地调整后处理模块210输出视频帧的速率。
步骤S306:驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
所述后处理模块210为硬件电路模块,当要使其工作时,需通过后处理驱动216驱动。后处理驱动216驱动后处理模块210工作时,是控制后处理模块210开启或关闭,从而对解码模块208输出的初始视频帧进行处理或不处理,继而输出或不输出视频帧至视频帧缓存队列204中。当后处理驱动216驱动后处理模块210以不同的周期开启或关闭,后处理模块210将以不同的速率输出视频帧。
驱动后处理模块210以设定的频率开启或关闭可以有两种方式:
1、以固定时长z(例如1秒)为周期(频率),使后处理模块210开启x秒、关闭y秒。即满足x+y=z。那么后处理模块210输出视频帧的速度就调整为原来的x/z,根据x与y的取值,可以实现不同速度的调整。设x=0.1,y=0.9,则调整速度为原来的10%。
2、以固定帧数c(例如10帧)为周期(频率),使后处理模块210开启a帧,关闭b帧。即满足a+b=c。设a=6,b=4,则调整速度为原来的60%。如果设置c为100,a和b都在1~99之间变化,则调整的粒度更小,更加精细。
上述两种方式,如果要保证丢弃视频帧后丢失较少的信息,可以每隔固定时间或帧数丢弃较少的帧数,但会带来调整速度范围有限的问题。
如图3b所示,假设后处理模块210在不进行调整的时候,输出视频帧的速度为10帧/s,图像接收端206处理视频帧的速度为3帧/s。
如图3c所示,如果完全不控制后处理模块210,则视频帧缓存队列204中每秒由后处理模块210放入10帧,同时由图像接收端206处理掉3帧。视频帧缓存队列204每秒增加7帧,如果视频帧缓存队列204上限是60帧,则第9秒开始就要丢弃新来的视频帧,后续超出图像接收端206处理能力的视频帧都会被丢弃,丢弃速度达到7帧/s,且丢弃是大范围连续的。
如图3d所示,如果完全控制后处理模块210使其每10帧丢弃2帧,则视频帧缓存队列204中每秒由后处理模块210放入8帧,同时由图像接收端206处理掉3帧。视频帧缓存队列204每秒增加5帧,如果视频帧缓存队列204上限是60帧,则第13秒开始丢弃新来的视频帧。在第9~12秒内,是每隔10帧丢弃2帧,总共丢弃8帧;在第13秒,是每隔10秒丢弃7帧(包括在后处理模块210丢弃的2帧和在视频帧缓存队列204上丢弃的5帧);并且在后处理模块210丢弃的2帧是基于后处理模块210没有对视频帧进行处理;图3c的方式中,在第9秒后,都是每隔10帧丢弃7帧(全部在视频帧缓存队列204上丢弃,后处理模块210仍然对被丢弃的视频帧进行了处理,浪费了一定的处理资源)。因此,在控制后处理模块210丢弃视频帧的方案中,延缓了视频帧缓存队列204增长的速度,且视频帧的丢弃方式在视频帧缓存队列204溢出之前是非连续的,避免了连续的丢帧。
如图3e和图3f所示,进一步地,如果在第3秒发现后处理模块210输出视频帧的速度仍然过快,可以加大丢弃量。从第4秒开始,控制后处理模块210使其每10帧丢弃4帧,则视频帧缓存队列204中每秒由后处理模块210放入6帧,同时由图像接收端206处理掉3帧。视频帧缓存队列204每秒增加3帧,如果视频帧缓存队列204上限是60帧,则第19秒开始丢弃新来的视频帧。在第9~18秒内,是每隔10帧丢弃4帧,总共丢弃36帧;在第19秒,是每隔10秒丢弃7帧(包括在后处理模块210丢弃的4帧和在视频帧缓存队列204上丢弃的3帧);并且在后处理模块210丢弃的4帧是基于后处理模块210没有对视频帧进行处理;图3c的方式中,在第9秒后,都是每隔10帧丢弃7帧(全部在视频帧缓存队列204上丢弃,后处理模块210仍然对被丢弃的视频帧进行了处理,浪费了一定的处理资源)。因此,在控制后处理模块210丢弃视频帧的方案中,延缓了视频帧缓存队列204增长的速度,且视频帧的丢弃方式在视频帧缓存队列204溢出之前是非连续的,避免了连续的丢帧。
上述视频处理方法,通过检测视频帧缓存队列的深度变化情况,可以了解图像接收端206当前处理视频帧的速率是否小于后处理模块210输出视频帧的速率,即若图像接收端206当前处理视频帧的速率小于后处理模块210输出视频帧的速率,则表示视频帧缓存队列被提取的视频帧的数量少于输入到视频帧缓存队列中的视频帧的数量,视频帧缓存队列长度会增加,如果持续增加,视频帧缓存队列最终会溢出;若图像接收端206当前处理视频帧的速率大于后处理模块210输出视频帧的速率,则表示视频帧缓存队列被提取的视频帧的数量多于输入到视频帧缓存队列中的视频帧的数量,视频帧缓存队列长度会减少,如果持续减少,视频帧缓存队列最终会变空,造成图像接收端206等待;因此,可以根据视频帧缓存队列的深度变化情况确定所述后处理模块210输出视频帧的速率,从而使后处理模块210输出视频帧的速率始终维持在与图像接收端206的当前处理视频帧的速率相当的水平上,进而使得所述视频帧缓存队列至少不溢出。同时,后处理模块210对来自解码模块的视频帧的丢弃是在硬件解码器内部丢弃,即后处理模块210不会对要丢弃的视频帧进行后处理,而只会对要输出到视频帧缓存队列中的视频帧进行后处理,因为后处理模块210的输出视频帧的速率始终维持在图像接收端206的处理能力范围内,因此不会出现硬件资源浪费的情况,即不会像传统的技术方案中,所有的视频帧都经过后处理,然后在图像接收端206处理能力不足时再进行丢弃,导致后处理模块210浪费资源。而以设定的频率打开或关闭以丢弃来自解码模块的视频帧,则将丢弃的视频帧以非连续的方式安排在多段空间(按固定帧数使后处理模块210开启或关闭)或时间(按固定时长使后处理模块210开启或关闭)内,也使得丢弃视频帧比较均匀。
另一方面,后处理模块210的运行是通过后处理驱动216驱动的方式,后处理驱动216是后处理模块210的驱动程序,属于软件层面,即可以在软件层面调整后处理模块210的运行(调整后处理模块210输出视频帧的速率),通过降低后处理模块210输出视频帧的速率,则可以减少占用的带宽。相比传统增加带宽压缩模块和带宽解压模块的方式,则不用改变硬件结构,降低了硬件设计复杂度。
在其中一个实施例中,所述步骤S302:检测视频帧缓存队列的深度变化情况,如图4所示,可以包括:
步骤S402:根据检测帧数步进计算检测点。
所述检测点是指在某些位置或时刻,开始检测视频帧缓存队列深度增量,即当到达这些位置或时刻时,触发检测。本实施例中,根据检测帧数步进来计算该检测点。该检测帧数步进具有一个初始值,例如60。如果当前帧号为100,则下一次检测的帧号为160。所述后处理模块210输出视频帧的速率与所述检测帧数步进正相关,即所述检测帧数步进越大,丢弃视频帧的比例越低,后处理模块210输出视频帧的速率越接近原始速度;所述检测帧数步进越小,丢弃视频帧的比例越高,后处理模块210输出视频帧的速率越接近0。故增加所述检测帧数步进,可以调高后处理模块210输出视频帧的速率(但最大不可能超过后处理模块210本身的处理能力),减少所述检测帧数步进,可以调低后处理模块210输出视频帧的速率。
步骤S404:当第i个检测点到达时,计算从第i-1个检测点到所述第i个检测点这段时间内所述视频帧缓存队列深度增量。所述帧缓存队列深度增量为所述视频帧缓存队列的深度变化情况,i为大于1的正整数。
根据上述计算,例如当检测到帧号为160的视频帧时,判断检测点到达。根据两次检测点(第i个和第i-1个)之间的视频帧缓存队列204的深度的差计算视频帧缓存队列204的深度增量。其中,视频帧缓存队列204的深度可以直接读取(当视频帧缓存队列204实时保存该深度值时),也可以根据队尾和队头的帧号之差来确定。该深度增量可能为正值、负值或零。深度增量为正值时,表示图像接收端206的处理速率跟不上后处理模块210输出视频帧的速率,因此视频帧缓存队列204的深度增加;深度增量为负值时,表示图像接收端206的处理速率快于后处理模块210输出视频帧的速率,因此视频帧缓存队列204的深度减少;深度增量为零时,表示图像接收端206的处理速率与后处理模块210输出视频帧的速率相当。
同时,所述步骤S304:所述根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,可以包括:
步骤S406:当所述第i个检测点到达时,若所述视频帧缓存队列204的深度增量大于或等于所述检测帧数步进,则减少所述检测帧数步进。
在本实施例中,以检测帧数步进与所述视频帧缓存队列204的深度增量之间的关系调整所述检测帧数步进。例如,当帧号为160的帧到达时,计算得到所述视频帧缓存队列204的深度增量为70帧。则表明在以检测帧数步进(60帧)增加视频帧的过程中,所述视频帧缓存队列204实际增加70帧,图像接收端206的处理速率滞后,此时可以减少所述检测帧数步进,以降低后处理模块210输出视频帧的速率。
步骤S408:当所述第i个检测点到达时,若所述视频帧缓存队列204的深度增量小于所述检测帧数步进,则增加所述检测帧数步进。
例如,当帧号为160的帧到达时,计算得到所述视频帧缓存队列204的深度增量为50帧。则表明在以检测帧数步进(60帧)增加视频帧的过程中,所述视频帧缓存队列204实际增加50帧,图像接收端206的处理速率超前,此时可以增加所述检测帧数步进,以提高后处理模块210输出视频帧的速率。
步骤S410:根据调整后的检测帧数步进确定所述后处理模块输出视频帧的速率。
上述步骤,通过检测帧数步进与所述视频帧缓存队列204的深度增量之间的关系调整所述检测帧数步进,进而调整后处理模块210输出视频帧的速率。通过逐步反复调整,可以对图像接收端206处理速率变化或不稳定的情况进行动态的对应调整,精确跟随图像接收端206处理速率。
在上述步骤S406和S408中,可以按照固定幅度增加或减少所述检测帧数步进。所述固定幅度例如为1,即在每个检测点,所述检测帧数步进增加或减少1。所述固定幅度也可以是其他合适的值,以兼顾处理效率和控制精度。当所述固定幅度较大时,可以在每次调整时进行大幅度的调整,能够比较快速地将检测帧步进调整,但可能存在将检测帧步进调整过头,例如在图像接收端206的处理速率滞后时,在检测点将检测帧步进大幅减小后,图像接收端206的处理速率又变得超前,在下一个检测点又会将检测帧步进进行大幅增加,可能又导致图像接收端206的处理速率滞后,如此往复。由于检测帧步进大幅减少意味着后处理模块210将丢弃更多的帧,这也将导致在某个开始大幅度减少检测帧步进的检测点之后的检测周期内,更多图像信息的丢失。当所述固定幅度较小时,只能在每次调整时进行小幅度的调整,不能够比较快速地将检测帧步进调整到相对理想的值(即图像接收端206当前处理视频帧的速率与后处理模块210输出视频帧的速率相当),但这种调整方式能够以确定的方向靠近该相对理想的值,不会出现调整大幅过头的情况。
在上述步骤S406和S408中,还可以按照所述视频帧缓存队列204的深度增量与所述检测帧数步进的差异,动态增加或减少所述检测帧数步进。例如,若所述视频帧缓存队列204的深度增量与所述检测帧数步进的差异在11-20之间时,增加或减少的幅度为5;若所述视频帧缓存队列204的深度增量与所述检测帧数步进的差异在6~10之间时,增加或减少的幅度为3;若所述视频帧缓存队列204的深度增量与所述检测帧数步进的差异在1~5之间时,增加或减少的幅度为1。即所述视频帧缓存队列204的深度增量与所述检测帧数步进的差异越大,调整的幅度越大,当差异变小时,调整幅度也随之减少。实现粗调和细调的结合。动态增加的方式不限于此,也可以是其他合适的值,以兼顾处理效率和控制精度。
可以按照以下原则确定选择按照固定幅度或动态调整的方案:
若所述帧缓存队列深度增量与所述检测帧数步进的差值的绝对值小于预设差值时,则按照固定幅度减少所述检测帧数步进;否则按照所述帧缓存队列深度增量与所述检测帧数步进的差异,动态减少所述检测帧数步进;
所述当所述第i个检测点到达时,若所述帧缓存队列深度增量小于所述检测帧数步进,则增加所述检测帧数步进,包括:
若所述帧缓存队列深度增量与所述检测帧数步进的差值的绝对值小于预设差值时,则按照固定幅度增加所述检测帧数步进;否则按照所述帧缓存队列深度增量与所述检测帧数步进的差异,动态增加所述检测帧数步进。
在其中一个实施例中,所述步骤S302:获取视频帧缓存队列的深度变化情况可以包括:
将所述视频帧缓存队列填充至设定深度并停止输入视频帧。
计算所述视频帧缓存队列在设定深度下,被所述图像接收端提取完所需要的时长;所述时长为所述视频帧缓存队列的深度变化情况。
同时,所述步骤S304:可以包括:
根据所述设定深度与时长计算得到图像接收端的处理速率;
根据所述图像接收端的处理速率确定所述后处理模块输出视频帧的速率。
本实施例中,对步骤S302的处理适用于图像接收端206的处理速率相对固定的情况,只需要计算出图像接收端206的处理速率就可以相应地设置后处理模块210输出视频帧的速率。
如图5所示,针对图像接收端206的处理速率相对固定的情况,提供另一实施例的视频处理方法,包括以下步骤:
步骤S502:初始化时将所述视频帧缓存队列清空。视频帧缓存队列204初始时清空。
步骤S504:当所述视频帧缓存队列接收到第一个视频帧时,记录第一时刻。第一时刻T1为计算起点。
步骤S506:持续输入视频帧直到所述视频帧缓存队列至设定深度,并停止输入。所述设定深度N小于所述视频帧缓存队列204的深度,并取一个合适的值,例如所述视频帧缓存队列204的深度的一半。当所述视频帧缓存队列204添加视频帧达到设定深度N后,停止继续向其中添加视频帧。所述设定深度N可配置。
步骤S508:在所述视频帧缓存队列中的视频帧被图像接收端提取完时记录第二时刻。第二时刻T2为计算的终点。
步骤S510:计算所述第二时刻与第一时刻的差值,得到所述时长。
时长t=T2-T1,单位可以为秒。
步骤S512:根据所述设定深度与时长计算得到图像接收端的处理速率。
图像接收端206的处理速率为N/t,计算值可以向上取整。
步骤S514:根据所述图像接收端的处理速率确定所述后处理模块输出视频帧的速率。
将所述后处理模块210输出视频帧的速率设置为与所述图像接收端206的处理速率相匹配。例如可以相同,或者略小、略大(例如差距3秒/帧内)。
上述实施例,通过先将视频帧缓存队列204填充到设定深度,并在不继续填充的状态下,使视频帧被图像接收端206提取视频帧缓存队列204中的视频帧,可以准确计算出图像接收端206的处理速率。上述实施例由于在计算图像接收端206的处理速率时,需要在计算过程中暂停后处理模块210的输出,因此只适用于图像接收端206的处理速率相对稳定的情况,这样不需要频繁计算图像接收端206的处理速率,避免频繁打断后处理模块210输出视频帧。
在一些实施例中,以包括上述步骤S502~S514的方法用于在系统初始化时计算出步骤S402中所需要的检测帧步进。
图6为又一个实施例的视频处理方法流程图,该视频处理方法包括以下步骤:
步骤S602:获取预设的深度阈值和初始步进。所述预设的深度阈值小于缓存队列的长度。所述初始步进为初始化时确定的检测步进,即每过多少帧进行一次检测。所述预设的深度阈值和初始步进可以通过读取用户配置文件获取。
步骤S604:判断视频帧缓存队列是否接收到新的视频帧输入,若是,则执行步骤S606,否则返回继续判断。
步骤S606:读取视频帧缓存队列的当前深度。当前深度即缓存队列在接收到新的视频帧之后的深度。例如在接收到新的视频帧之前的深度为Dpre,则当前深度为Dpre+1。
步骤S608:判断所述当前深度是否大于所述预设的深度阈值,若是,则执行步骤S610,否则返回步骤S604。
步骤S610:检测视频帧缓存队列的深度变化情况。
步骤S612:根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出。
步骤S614:驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
步骤S610~S614与上一实施例的步骤S302~S306相同,在此不赘述。本实施例在上一实施例的基础上增加了流程触发的时机,即步骤S604,以及只有在所述当前深度是否大于所述预设的深度阈值时,即满足步骤S608的条件时,才执行帧率调节的过程,减少了处理资源的消耗。
如图7所示,为一实施例的视频处理系统模块图。该视频处理系统700可以包括:
缓存队列深度检测模块702,用于检测视频帧缓存队列的深度变化情况;其中,所述视频帧缓存队列用于接收硬件解码器的后处理模块输出的视频帧,并提供给图像接收端提取。
输出速率确定模块704,用于根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率。
驱动模块706,用于驱动所述后处理模块以设定的频率打开或关闭以丢弃来自解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
所述缓存队列深度检测模块702具体用于:
根据检测帧数步进计算检测点;其中,所述后处理模块输出视频帧的速率与所述检测帧数步进正相关;
当检测点到达时,计算帧缓存队列深度增量;所述帧缓存队列深度增量为所述视频帧缓存队列的深度变化情况。
该视频处理系统700,还包括检测触发判断模块708,用于:
当视频帧缓存队列接收到新的视频帧输入时,读取视频帧缓存队列的当前深度;
若所述当前深度大于预设的深度阈值,则检测视频帧缓存队列的深度变化情况。
所述输出速率确定模块704具体用于:
当检测点到达时,若所述帧缓存队列深度增量大于或等于所述检测帧数步进,减少所述检测帧数步进;
当检测点到达时,若所述帧缓存队列深度增量小于所述检测帧数步进,增加所述检测帧数步进;
根据调整后的检测帧数步进确定所述后处理模块输出视频帧的速率。
所述输出速率确定模块704具体还用于:按照固定幅度增加或减少所述检测帧数步进。
所述输出速率确定模块704具体还用于:按照所述帧缓存队列深度增量与所述检测帧数步进的差异,动态增加或减少所述检测帧数步进。
在其中一个实施例中,所述缓存队列深度检测模块702具体用于:
将所述视频帧缓存队列填充至设定深度并停止输入视频帧;
计算所述视频帧缓存队列在设定深度下,被所述图像接收端提取完所需要的时长;所述时长为所述视频帧缓存队列的深度变化情况。
所述缓存队列深度检测模块702具体还用于:
初始化时将所述视频帧缓存队列清空;
当所述视频帧缓存队列接收到第一个视频帧时,记录第一时刻;
持续输入视频帧直到所述视频帧缓存队列至设定深度,并停止输入;
在所述视频帧缓存队列中的视频帧被提取完时记录第二时刻;
所述时长为所述第二时刻与第一时刻的差值。
在其中一个实施例中,所述输出速率确定模块704具体用于:
根据所述设定深度与时长计算得到图像接收端的处理速率;
根据所述图像接收端的处理速率确定所述后处理模块输出视频帧的速率。
上述各模块为与方法一一对应的虚拟装置模块,其具体执行的过程在方法实施例中已有描述,在此不赘述。
此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有上述视频处理程序,所述视频处理程序被处理器执行时实现如上所述的视频处理方法的步骤。
本申请计算机可读存储介质具体实施方式与上述视频处理方法各实施例基本相同,在此不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1.一种视频处理方法,包括:
检测视频帧缓存队列的深度变化情况;其中,所述视频帧缓存队列用于接收硬件解码器的后处理模块输出的视频帧,并提供给图像接收端提取;
根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出;
驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
2.根据权利要求1所述的方法,其特征在于,所述检测视频帧缓存队列的深度变化情况,包括:
根据检测帧数步进计算检测点;其中,所述后处理模块输出视频帧的速率与所述检测帧数步进正相关;
当第i个检测点到达时,计算从第i-1个检测点到所述第i个检测点这段时间内所述帧缓存队列深度增量;所述帧缓存队列深度增量为所述视频帧缓存队列的深度变化情况,i为大于1的正整数。
3.根据权利要求2所述的方法,其特征在于,在所述检测视频帧缓存队列的深度变化情况的步骤之前,还包括:
当所述视频帧缓存队列接收到新的视频帧输入时,读取视频帧缓存队列的当前深度;
若所述当前深度大于预设的深度阈值,则检测视频帧缓存队列的深度变化情况。
4.根据权利要求2所述的方法,其特征在于,所述根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出,包括:
当所述第i个检测点到达时,若所述帧缓存队列深度增量大于或等于所述检测帧数步进,则减少所述检测帧数步进;
当所述第i个检测点到达时,若所述帧缓存队列深度增量小于所述检测帧数步进,则增加所述检测帧数步进;
根据调整后的检测帧数步进确定所述后处理模块输出视频帧的速率。
5.根据权利要求4所述的方法,其特征在于,所述当所述第i个检测点到达时,若所述帧缓存队列深度增量大于或等于所述检测帧数步进,则减少所述检测帧数步进,包括:
若所述帧缓存队列深度增量与所述检测帧数步进的差值的绝对值小于预设差值时,则按照固定幅度减少所述检测帧数步进;否则按照所述帧缓存队列深度增量与所述检测帧数步进的差异,动态减少所述检测帧数步进;
所述当所述第i个检测点到达时,若所述帧缓存队列深度增量小于所述检测帧数步进,则增加所述检测帧数步进,包括:
若所述帧缓存队列深度增量与所述检测帧数步进的差值的绝对值小于预设差值时,则按照固定幅度增加所述检测帧数步进;否则按照所述帧缓存队列深度增量与所述检测帧数步进的差异,动态增加所述检测帧数步进。
6.根据权利要求1所述的方法,其特征在于,所述获取视频帧缓存队列的深度变化情况包括:
将所述视频帧缓存队列填充至设定深度并停止输入视频帧;
计算所述视频帧缓存队列在设定深度下,被所述图像接收端提取完所需要的时长;所述时长为所述视频帧缓存队列的深度变化情况。
7.根据权利要求6所述的方法,其特征在于,所述将所述视频帧缓存队列填充至设定深度,包括:
初始化时将所述视频帧缓存队列清空;
当所述视频帧缓存队列接收到第一个视频帧时,记录第一时刻;
持续输入视频帧直到所述视频帧缓存队列至设定深度,并停止输入;
所述计算所述视频帧缓存队列在设定深度下,被所述图像接收端提取完所需要的时长,包括:
在所述视频帧缓存队列中的视频帧被提取完时记录第二时刻;
所述时长为所述第二时刻与第一时刻的差值。
8.根据权利要求7所述的方法,其特征在于,所述根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出,包括:
根据所述设定深度与所述时长计算得到所述图像接收端的处理速率;
根据所述图像接收端的处理速率确定所述后处理模块输出视频帧的速率。
9.一种视频处理系统,其特征在于,包括:
缓存队列深度检测模块,用于检测视频帧缓存队列的深度变化情况;其中,所述视频帧缓存队列用于接收硬件解码器的后处理模块输出的视频帧,并提供给图像接收端提取;
输出速率确定模块,用于根据所述视频帧缓存队列的深度变化情况确定所述后处理模块输出视频帧的速率,使得所述视频帧缓存队列至少不溢出;
驱动模块,用于驱动所述后处理模块以设定的频率打开或关闭,以丢弃来自所述硬件解码器的解码模块的视频帧,使所述后处理模块根据确定的输出视频帧的速率输出视频帧到所述视频帧缓存队列中。
10.一种视频处理设备,其特征在于,包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的视频处理程序,所述视频处理程序被所述处理器执行时实现如权利要求1至8中任一项所述的视频处理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有视频处理程序,所述视频处理程序被处理器执行时实现如权利要求1至8中任一项所述的视频处理方法的步骤。
CN202110349627.8A 2021-03-31 2021-03-31 视频处理方法、系统、设备及存储介质 Pending CN115150674A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110349627.8A CN115150674A (zh) 2021-03-31 2021-03-31 视频处理方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110349627.8A CN115150674A (zh) 2021-03-31 2021-03-31 视频处理方法、系统、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115150674A true CN115150674A (zh) 2022-10-04

Family

ID=83404254

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110349627.8A Pending CN115150674A (zh) 2021-03-31 2021-03-31 视频处理方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115150674A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070217505A1 (en) * 2004-05-27 2007-09-20 Vividas Technologies Pty Ltd Adaptive Decoding Of Video Data
US20110221960A1 (en) * 2009-11-03 2011-09-15 Research In Motion Limited System and method for dynamic post-processing on a mobile device
CN103916716A (zh) * 2013-01-08 2014-07-09 北京信威通信技术股份有限公司 一种无线网络下视频实时传输的码率平滑方法
CN104244015A (zh) * 2013-06-14 2014-12-24 辉达公司 移除视频数据中的编码伪影的自适应滤波机制

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070217505A1 (en) * 2004-05-27 2007-09-20 Vividas Technologies Pty Ltd Adaptive Decoding Of Video Data
US20110221960A1 (en) * 2009-11-03 2011-09-15 Research In Motion Limited System and method for dynamic post-processing on a mobile device
CN103916716A (zh) * 2013-01-08 2014-07-09 北京信威通信技术股份有限公司 一种无线网络下视频实时传输的码率平滑方法
CN104244015A (zh) * 2013-06-14 2014-12-24 辉达公司 移除视频数据中的编码伪影的自适应滤波机制

Similar Documents

Publication Publication Date Title
US10652506B2 (en) High quality multimedia transmission from a mobile device for live and on-demand viewing
US9497239B2 (en) Rapidly initializing and dynamically adjusting media streams
JP5459693B2 (ja) 端末機による適応的画面仮想化方法及びシステム
KR102173107B1 (ko) 클라우드 서버 기반 영상 처리 방법, 단말 및 시스템
TWI606419B (zh) 經由遠端圖形處理服務串流顯像內容的圖形伺服器以及方法
JP2003517797A5 (zh)
CN111654703B (zh) 用于应用流的预取的编码
WO2023174216A1 (zh) 视频分辨率自适应调节方法、装置、设备和存储介质
CN110430467B (zh) 远程设备访问方法和装置
WO2021036103A1 (zh) 图像数据的压缩传输方法、系统和计算机可读存储介质
WO2021092821A1 (en) Adaptively encoding video frames using content and network analysis
US11627307B2 (en) Transport controlled video coding
CN115150674A (zh) 视频处理方法、系统、设备及存储介质
CN114051067A (zh) 图像获取方法、装置、设备、存储介质及程序产品
CN103716650B (zh) 服务器装置和信息处理方法
CN109716770B (zh) 用于图像压缩的方法和系统以及非暂时性计算机可读介质
TWI637627B (zh) 用於視訊轉碼中經整合之後置處理與前置處理的系統、方法及電腦程式產品
CN113382258B (zh) 视频编码方法、装置、设备和介质
US20220095149A1 (en) Method and apparatus for reducing latency and collisions in a virtual reality/alternate reality system
KR102271721B1 (ko) 클라우드 스트리밍 서비스 시스템, 단말 성능을 고려한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
CN106658154A (zh) 一种视频截图方法、装置和设备以及视频处理方法、装置和设备
KR101932130B1 (ko) 원격 디스플레이의 체감 품질을 향상하는 영상 처리 장치 및 방법
US20230196207A1 (en) Method and system for adaptively streaming artificial intelligence model file
CN111444022B (zh) 数据处理方法、系统以及电子设备
KR102265419B1 (ko) 클라우드 스트리밍 서비스 시스템, 선택적 인코딩 처리 유닛을 이용한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치

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