一种数字视频截屏的实现方法

文档序号:7589232阅读:272来源:国知局
专利名称:一种数字视频截屏的实现方法
技术领域
本发明涉及视频画面处理技术,特别是指一种数字视频截屏的实现方法。
背景技术
随着数字视频技术的发展,人们非常希望能够获取并保留某一时刻的精彩画面,以便随时欣赏、或进行珍藏、或作为资料进行分析。通常,要想获取某一时刻的精彩画面,就需要实时连续截取一段时间的数字视频画面,将所截取的画面存储在硬盘或其它存储设备中,然后用户再从所存储的若干幅画面中选择想截取的目标画面,这种截取画面的技术也称为截屏技术。
目前,数字视频的截屏技术已广泛应用于PC以及其它众多的多媒体产品中,常见的实现方法就是在PC或多媒体设备中的音视频播放(Decoder)引擎中同时包括一个屏幕画面捕捉引擎(Capturer),当系统接收到屏幕画面捕捉命令后,屏幕画面捕捉引擎会捕捉当前屏幕显示的画面帧(Frame),并进行编码和压缩,最后将经过编码压缩后的画面帧,以某种格式,如JPEG格式的静态图片方式存储在非易失性存储器中,比如硬盘或其它存储设备中。
然而,上述方法存在着一个明显的缺点时滞,也就是说,当用户从屏幕上观看到期望截取的画面后,再向系统发送屏幕画面截取命令以截取屏幕的画面,比如通过手中的遥控器向当前使用的系统发送截取屏幕命令时,由于屏幕上的画面是连续播放的,而系统从接收到命令到系统指示屏幕画面捕捉引擎启动捕捉,这一过程存在着一定的时延,一般大约为0.05~0.1s,具体的时延值与系统的硬件配置和系统软件中的捕捉逻辑有关,那么,系统实际截取并存储的屏幕画面帧(Frame)已经不是用户希望所截取的画面帧了,而是比用户希望截取的屏幕画面要滞后的画面,从而造成了屏幕画面截取的时滞。
为解决时滞的问题,一些截屏实现方法在内存中维护一个缓冲区,画面帧需要存储在这个缓冲区中,然后根据时滞时间的具体大小值,从当前画面推算出要截取的目标画面帧在该缓冲区的具体位置,再压缩和存储该画面帧。但是,由于时滞时间一般与系统的硬件配置和系统软件中的捕捉逻辑的设计有关,所以很难有一个确定的、具体的值;如果以一个相对固定的时滞时间值来推算目标画面帧在缓冲区所处的位置,势必会出现无法精确捕获目标画面的问题,所以,虽然这种实现方法在弥补时滞方面有很大改善,但又存在不能精确捕获画面的问题。另外,在内存中设置缓冲区进行存储,尤其缓冲区大小设置较大时,会占用大量内存资源;这种情况对基于嵌入式硬件架构开发的消费电子类产品的性能将会产生较大影响,因为基于嵌入式平台开发消费电子类产品时,为了节约成本,内存资源是非常宝贵的,占用内存资源太多,势必会影响到产品的性能;但如果为了减少占用资源而设置较小的缓冲区,又很可能无法存储到用户所需的目标画面。

发明内容
有鉴于此,本发明的主要目的在于提供一种数字视频截屏的实现方法,既能解决画面截取时的时滞问题,又能保证精确获取用户所需的目标画面。
为达到上述目的,本发明的技术方案是这样实现的一种数字视频截屏的实现方法,该方法包括以下步骤a.视频播放系统从音视频解码引擎中获取当前播放的视频制式信息;b.视频播放系统根据步骤a所获取的视频制式以及当前视频制式下的最佳时滞,确定先进先出捕捉缓冲队列的大小,所有播放的画面帧以先进先出方式顺序进出所确定的捕捉缓冲队列;c.当视频播放系统收到截屏命令后,将当前捕捉缓冲队列中当前画面帧以外的所有画面帧进行读取、压缩并存储为静态图片。
其中,所述步骤b具体包括判断当前视频制式为PAL制还是NTSC制,如果是PAL制,则根据PAL制的帧率以及PAL制式下的最佳时滞确定捕捉缓冲队列的大小;如果是NTSC制,则根据NTSC制的帧率以及NTSC制式下的最佳时滞确定捕捉缓冲队列的大小。
在所述步骤c之后,该方法进一步包括判断当前是否接收到新的截屏命令,如果收到,则返回步骤c;否则继续检测和判断。
上述方案中,所述捕捉缓冲队列的大小为当前视频制式下的最佳时滞乘以2再乘上当前视频制式的帧率,之后再加1。
上述方案中,步骤c中所述当前画面帧放置于先进先出捕捉缓冲队列入口侧的第一位置。
本发明所提供的数字视频截屏方法,由于是根据当前播放的视频制式确定一个大小适当的捕捉缓冲队列,并且,该捕捉缓冲队列的管理与维护采用先进先出策略,如此,既不会占用大量的存储空间,又能保证精确捕捉到用户所需的目标画面,因为捕捉缓冲队列的大小是根据视频制式的帧率来确定的。同时,由于增加了捕捉缓冲队列对用于截取的视频画面进行存储,所以也较好地避免了目前截屏实现方法中普遍存在的画面截取时的时滞问题,从而可以使用户体验到“不错过任何一个精彩画面”的实时、精确的数字视频截屏应用。
本发明方法所实现的精确截屏对于多媒体设备,特别是消费电子类产品如个人数字录像机(PVR)、数字视频录像机(DVR)、STB,有着非常重要的作用。因为消费电子类产品采用的是低成本、低配置的嵌入式硬件平台,截屏时延较大;同时这类产品的用户均为对音视频的各种应用体验需求强烈,甚至是带有挑剔性的需求,所以对于截屏并保存目标画面帧有着很高的要求,尽管几个连续的画面帧之间差别不是很大,但对于一些有着“挑剔”需求的用户来讲,比如对一些音视频发烧级用户或体育超级爱好者来说,实现精确捕获目标画面是非常重要的,也是必不可少的。


图1为一实施例中FIFO捕捉缓冲队列的结构示意图;图2为屏幕画面捕获的实现流程示意图。
具体实施例方式
本发明的核心思想是根据当前播放的视频制式确定一个大小适当的捕捉缓冲队列,并且,采用先进先出(FIFO,First In First Out)策略管理和维护该捕捉缓冲队列,所有的视频画面帧都按照FIFO的原则,从该捕捉缓冲区中流过。当系统收到截屏指令后,会将捕捉缓冲队列中除当前画面帧以外的其它画面帧作为要截取的画面帧进行存储,其中包含用户需要的目标画面帧。
针对PC或其它多媒体设备中的音视频解码引擎(Decoder),其解码时一般采用两种流解码程序流(PS,Program Stream)和传输流(TS,TransportStream)。解码后不同的视频格式有不同的帧率,如PAL制式视频的帧率为25帧/秒(fps,Frame per Second)、NTSC制式视频的帧率为30fps,这样不同制式的视频会以不同的帧率进行传输并显示在屏幕上。
在本发明中,要在截屏之前先根据帧速率确定用于存储截取画面帧的捕捉缓冲队列的大小,该捕捉缓冲队列由系统维护在内存中。由于不同视频制式的帧速率不同,所以针对同样的时延,所要求的捕捉缓冲队列大小也不一样。又由于最佳时滞时间一般为最长时滞时间的1/2,所以依据最佳时滞时间所得到的捕捉缓冲队列的大小应该只是系统需要维护的捕捉缓冲队列的1/2。本发明中,捕捉缓冲队列大小的确定是根据当前播放的视频制式来计算的,具体可按照公式(1)确定捕捉缓冲队列的大小Queue=2*Tf*FN(或Fp) (1)其中,Queue表示捕捉缓冲队列的大小;Tf为最佳时滞时间,是最长时滞时间的1/2;FN为NTSC制式的帧率;Fp为PAL制式的帧率。
至于当前所播放的视频制式到底是PAL制还是NTSC制,系统的视频解码引擎(Decoder)是完全可以从视频流中特定字节(Byte)的特定位(Bit)进行识别的,所以在屏幕画面捕捉引擎(Capturer)的程序设计上,完全可以让系统根据对视频制式的判断自动设定捕捉缓冲队列的大小。
举个例子,如果当前播放的视频制式为NTSC制,最佳时滞时间Tf=0.1s,则系统需要维护的捕捉缓冲队列大小Queue=2*0.1*30=6,即捕捉缓冲队列大小为能保留六个已处理画面帧的存储区域。但在实际应用中,通常要将当前画面帧作为参考基准,因此确定的实际捕捉缓冲队列大小=Queue+1。
本实施例中捕捉缓冲队列的结构如图1所示,该捕捉缓冲队列实际设定为7,该捕捉缓冲队列的最左位置,即入口侧的第一个缓冲区域为位置1,也可称为Position=0,该位置用于放置当前画面帧,位置序号从左至右依次递增。每个画面帧从左至右依次进出捕捉缓冲队列,每个画面帧进出捕捉缓冲队列时采用先进先出的策略,换句话说就是针对某一特定画面帧,例如Frame 0,它从位置1(Position=0)开始进入捕捉缓冲队列,并随着后续画面帧的进入依次向右移动,直至从位置7(Position=6)移出捕捉缓冲队列。也就是说,所有当前屏幕显示的画面帧均处在捕捉缓冲队列中的位置1(Position=0)处,一旦该画面帧被读取并显示完成,其会按照捕捉缓冲队列的位置递增自动向右移动,并填充该位置。这样,所有被读取并在屏幕上显示过的视频画面帧并没有在显示完成后立刻从捕捉缓冲队列消失,而是在捕捉缓冲队列中保留一段时间,保留时间的长短完全依赖于所设定的捕捉缓冲队列的大小。
这样,一旦用户看到当前的画面为自己所需的画面,立即向系统发出截屏指令,例如按下遥控器,这里,假定用户所需的画面帧为Frame 0;系统接收到截屏指令后,会发出指令启动屏幕画面捕捉引擎,由屏幕画面捕捉引擎对当前显示的画面帧进行捕捉。由于时滞的关系,此时当前的画面帧,即位置1(Position=0)的画面帧已被更新,例如在最大时延的情况下,处于位置1的画面帧已被更新为Frame 6,而Frame 0已经到达了捕捉缓冲队列的位置7(Positon=6),那么,为了精确捕捉该目标帧Frame 0,系统需要将捕捉缓冲队列中从位置2(Positon=1)开始到位置7(Position=6)的所有缓冲画面帧都读取、压缩并以某种格式,比如JPEG格式来存储为静态的图片,存储的目录包含一个连续六帧图片,用户就可以从中找到并选择自己在发出截屏指令时想截取的目标画面,从而达到精确画面捕获的效果,用户可以永远“不错过任何一个精彩画面”。
上面所述的屏幕画面捕捉流程如图2所示,具体包括步骤201当视频播放系统开始播放数字视频画面时,系统从音视频解码引擎中读取当前播放的视频制式的信息。
步骤202~204判断当前播放的视频制式为PAL制还是NTSC制,如果是PAL制,则根据PAL制的帧率确定所需的实际捕捉缓冲队列大小;如果是NTSC制,则根据NTSC制的帧率确定所需的实际捕捉缓冲队列大小。确定捕捉缓冲队列大小后,所有播放的视频画面帧就会在音视频解码引擎完成解码后,依照FIFO的原则在捕捉缓冲队列中顺序进入、移动并移出,同时在屏幕上显示。
步骤205当系统接收到用户发送的截屏指令后,就启动相应的屏幕画面捕捉引擎,具体说就是,如果是PAL制,就调用系统中现有的PAL制式视频捕捉逻辑;如果是NTSC制,就调用系统中现有的NTSC制式视频捕捉逻辑。将当前捕捉缓冲队列中除当前画面帧以外的其它帧读取、压缩并以某种格式如JPEG格式存储为静态的图片,所存储的静态图片可进一步提供给用户进行选择。
步骤206系统再判断是否有新的截屏指令输入,如果有,则返回步骤205;否则,继续检测和判断。
上述过程中,步骤201~205执行一次截屏的过程,如果加上步骤206,就是连续截屏的实现过程。
由于时滞时间的不同,捕捉缓冲队列的最佳大小也会有所差异;而时滞时间只与系统的硬件配置,如CPU主频,以及系统软件中屏幕画面捕捉逻辑的设计有关,其中最重要的因素就是CPU主频,所以针对不同的主频,捕捉缓冲队列的最佳大小也可以在屏幕画面捕捉引擎的逻辑模块中进行不同的设定,以便既可以不错过任何一个截屏画面帧,又可以提高捕获目标画面帧的效率,即可以在最少的捕获存储画面帧中包括目标画面帧,因此,本发明在实施方式上主要是针对两类产品有所区分1)针对PC等硬件配置较高的设备,由于时滞时间较短,实现最佳捕获的捕捉缓冲队列大小可以较小,衡量参数就是时滞时间,最佳的时滞时间一般为0.05s,所以实际捕捉缓冲队列大小通常为三个帧的队列。
2)针对基于嵌入式硬件平台进行开发的消费电子类产品,例如DVR、PVR等等,由于其硬件配置较低,CPU效率不高,所以对实现最佳捕捉的捕捉缓冲队列的大小需求较高,一般来讲,最佳的时滞时间为0.1s,那么,实际捕捉缓冲队列大小就为七个帧的队列。
本发明的方法可主要应用于消费电子类产品中,实现实时连续截取数字视频的画面,并以JPEG格式的静态图片方式存储在硬盘或其他存储设备中,用户可以从中找到并选择想截取的目标画面。利用该方法,用户可以实现“不错过任何一个精彩画面”的实时、精确的截屏和画面帧保存。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种数字视频截屏的实现方法,其特征在于,该方法包括以下步骤a.视频播放系统从音视频解码引擎中获取当前播放的视频制式信息;b.视频播放系统根据步骤a所获取的视频制式以及当前视频制式下的最佳时滞,确定先进先出捕捉缓冲队列的大小,所有播放的画面帧以先进先出方式顺序进出所确定的捕捉缓冲队列;c.当视频播放系统收到截屏命令后,将当前捕捉缓冲队列中当前画面帧以外的所有画面帧进行读取、压缩并存储为静态图片。
2.根据权利要求1所述的方法,其特征在于,所述步骤b具体包括判断当前视频制式为PAL制还是NTSC制,如果是PAL制,则根据PAL制的帧率以及PAL制式下的最佳时滞确定捕捉缓冲队列的大小;如果是NTSC制,则根据NTSC制的帧率以及NTSC制式下的最佳时滞确定捕捉缓冲队列的大小。
3.根据权利要求1所述的方法,其特征在于,所述步骤c之后,该方法进一步包括判断当前是否接收到新的截屏命令,如果收到,则返回步骤c;否则继续检测和判断。
4.根据权利要求1、2或3所述的方法,其特征在于,所述捕捉缓冲队列的大小为当前视频制式下的最佳时滞乘以2再乘上当前视频制式的帧率,之后再加1。
5.根据权利要求1、2或3所述的方法,其特征在于,步骤c中所述当前画面帧放置于先进先出捕捉缓冲队列入口侧的第一位置。
全文摘要
本发明公开了一种数字视频截屏的实现方法,该方法包括以下步骤a.视频播放系统从音视频解码引擎中获取当前播放的视频制式信息;b.视频播放系统根据步骤a所获取的视频制式以及当前视频制式下的最佳时滞,确定先进先出捕捉缓冲队列的大小,所有播放的画面帧以先进先出方式顺序进出所确定的捕捉缓冲队列;c.当视频播放系统收到截屏命令后,将当前捕捉缓冲队列中当前画面帧以外的所有画面帧进行读取、压缩并存储为静态图片。该方法既能解决画面截取时的时滞问题,又能保证精确获取用户所需的目标画面。
文档编号H04N5/76GK1674656SQ200410007969
公开日2005年9月28日 申请日期2004年3月23日 优先权日2004年3月23日
发明者黄双喜 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1