一种视频处理方法和装置
【技术领域】
本发明涉及计算机应用技术领域,特别涉及一种视频处理方法和装置。
【背景技术】
在诸如Andriod、IOS等智能操作系统的用户界面(UI)交互中,经常会设计一种视觉特效是等比例缩放动画。例如手机中点击一张图片,图片等比例放大以便用户能够更清楚地看到图片。对图片的等比例缩放动画常见于各种智能操作系统的应用中,但并不支持对视频的等比例缩放。在Android SDK(Software Development Kit,软件开发工具包)提供的resize(图片大小变化)方法能够迅速地重置视频尺寸,但没有动画效果。例如Android平台提供默认动画缩放特效接口,默认API是ScaleAnimation(缩放动画),但是仅支持图片等比例缩放,对视频的缩放支持不了。
【发明内容】
有鉴于此,本发明提供了一种视频处理方法和装置,以便于实现智能操作系统中视频缩放的动画效果。
具体技术方案如下:
本发明提供了一种视频处理方法,该方法包括:
在视频缩放开始前,在视频层上覆盖包含当前视频一帧图像的视图层;
依据当前视频的缩放目标位置,对视图层的图像执行缩放动画并缩放至所述缩放目标位置;
去除所述视图层以显示所述视频层。
根据本发明一优选实施方式,所述在视频缩放开始前,在视频层上覆盖包含当前视频一帧图像的视图层包括:
获取到视频缩放触发事件时,调用视图添加方法在视频层上覆盖包含当前视频一帧图像的视图层。
根据本发明一优选实施方式,在对视图层的图像执行缩放动画之前还包括:
获取视频缩放触发事件对当前视频触发的缩放类型以及缩放目标位置,所述缩放类型包括缩小或放大。
根据本发明一优选实施方式,当所述缩放类型为缩小时,在对视图层的图像执行缩放动画之前或者同时,或者在对视图层的图像执行缩放动画结束之前,调用布局调整方法将所述当前视频缩小至所述缩放目标位置;
当所述缩放类型为放大时,对视图层的图像执行缩放动画之后,调用布局调整方法将所述当前视频放大至所述缩放目标位置。
根据本发明一优选实施方式,利用缩放动画类对所述视图层的图像执行缩放动画;
利用消去动画类去除所述视图层。
本发明还提供了一种视频处理装置,该装置包括:
图层覆盖单元,用于在视频缩放开始前,在视频层上覆盖包含当前视频一帧图像的视图层;
图像缩放单元,用于依据当前视频的缩放目标位置,对所述视图层的图像执行缩放动画并缩放至所述缩放目标位置;
图层去除单元,用于去除所述视图层以显示所述视频层。
根据本发明一优选实施方式,所述图层覆盖单元,具体用于获取到视频缩放触发事件时,调用视图添加方法在视频层上覆盖包含当前视频一帧图像的视图层。
根据本发明一优选实施方式,该装置还包括:信息获取单元,用于获取视频缩放触发事件对当前视频触发的缩放类型以及缩放目标位置,所述缩放类型包括缩小或放大。
根据本发明一优选实施方式,该方法还包括:
视频缩放单元,用于在所述缩放类型为缩小时,在所述图像缩放单元对视图层的图像执行缩放动画之前或者同时,或者在对视图层的图像执行缩放动画结束之前,调用布局调整方法将所述当前视频缩小至所述缩放目标位置;在所述缩放类型为放大时,在所述图像缩放单元对视图层的图像执行缩放动画之后,调用布局调整方法将所述当前视频放大至所述缩放目标位置。
根据本发明一优选实施方式,所述图像缩放单元具体利用缩放动画类对所述视图层的图像执行缩放动画;
所述图层去除单元具体利用消去动画类去除所述视图层。
由以上技术方案可以看出,本发明通过在视频层上覆盖包含当前视频一帧图像的视图层,通过对视图层的图像进行缩放动画并缩放至视频的缩放目标位置来模拟视频的缩放动画效果,再去除视图层以露出视频层从而实现视图层至视图层之间的过渡,这一过程能够非常逼真地达到视频的动态缩放效果。
【附图说明】
图1为本发明实施例提供的视频缩小的方法流程图;
图2为本发明实施例提供的视频放大的方法流程图;
图3为本发明实施例提供的视频处理装置的结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
在智能操作系统中通常会提供缩放动画类,通过该类能够对图像产生动态缩放动画,同时也提供所有View(视图)通用的布局调整方法。例如Android的API提供了ScaleAnimation对图像产生动态缩放动画,同时提供了setLayoutParams方法来调整视图的大小和位置等布局属性。本发明利用这些已有的方法,对视频的缩放过程进行了创造性的改进,提供了一种模拟视频等比例缩放动画的实现方案。
本发明的主要方式是:在视频缩放开始前,在视频层上覆盖包含当前视频一帧图像的视频层;依据当前视频的缩放目标位置,对视图层的图像执行缩放动画并缩放至缩放目标位置;然后去除视图层以显示视频层。
下面分别通过两个实施例对视频缩小和视频放大两种缩放类型的过程进行详细描述。在下面两个实施例中均以Android系统为例,但本发明并不限于Android系统,还可以应用于诸如IOS、Symbian、BlackBerry OS等智能操作系统。
图1为本发明实施例提供的视频缩小的方法流程图,如图1中所示,该方法主要包括以下步骤:
获取到视频缩放触发事件时,在步骤101中调用addView(视图添加)方法在视频层上覆盖包含当前视频一帧图像的视图层。即调用addView方法在视频层上添加一层视图层,该视图层是当前视频一帧图像,该视图层的位置和大小可以和当前视频的初始位置和大小一致,也可以略大,需要覆盖掉当前视频,在视觉上让用户察觉不到该视图层的增加,仍以为当前显示的是当前视频的那一帧图像。
上述的视频缩放触发事件可以是用户点击某选项所触发的,例如用户在智能电视上观看视频的过程中点击了视频缩放按钮(也可以是视频缩小按钮或者视频放大按钮),再例如用户使用视频通话功能时初始显示本地全屏图像,一旦通话建立成功后产生视频缩小触发事件,再例如用户在具有触摸屏的智能终端上通过手势操作控制视频缩放时,用户的手势操作产生视频缩放触发事件,还可能是其他应用场景产生的视频缩放触发事件,在此不再一一列举。
在步骤102中,获取视频缩放触发事件对当前视频触发的缩放类型以及缩放目标位置。
对于有些应用场景下,缩放类型和缩放目标位置是固定设置好的。例如对于用户使用视频通话功能时初始显示本地全屏图像,一旦通话建立成功后产生视频缩小触发事件这种应用场景,缩放类型固定设置为缩小,缩放目标位置通常是屏幕一角的一个固定大小的固定位置。这种场景下,只需要获取该固定设置的缩放类型及缩放目标位置即可。
还有些应用场景,缩放类型根据外部事件确定,缩放目标位置是固定设置好的。例如用户在智能电视上观看视频的过程中点击了视频缩放按钮,缩放类型可以跟用户点击的按钮相关,例如用户点击了视频缩小按钮,则对应缩放类型为缩小,用户点击了视频放大按钮,则对应缩放类型为放大。如果只有一个视频缩放按钮,则如果当前视频为大尺寸视频(例如全屏)则对应缩放类型为缩小,如果当前视频为小尺寸视频则对应缩放类型为视频放大。缩放目标位置通常是全屏或者电视屏幕上的一个固定位置。
另外有一些应用场景,缩放类型和缩放目标位置都根据外部事件确定,例如用户在具有触摸屏的智能终端上通过手势操作控制视频缩放时,如果用户用多根手指进行捏合操作,则缩放类型为缩小,缩放目标位置由捏合程度确定;如果用户用多根手指进行分离操作,则缩放类型为放大,缩放目标位置由分离程度确定。
在步骤103中,通过调用setLayoutParams(布局调整)方法将视频缩小至目标位置。如果是视频缩放类型是缩小,则需要在对视图层的图像执行缩放动画之前或者同时,至少要在对视图层的图像执行缩放动画结束之前,将视频层的视频缩小至目标位置。
在步骤104中,依据当前视频的缩放类型和缩放目标位置,对视图层的图像执行缩小动画并缩小至目标位置。本步骤中利用ScaleAnimation类对视图层的图像执行缩小动画,这样视图层的图像就进行等比例缩放并向用户展现动画。由于视频层的视频已经先于视图层的图像缩小完成,因此用户仅能够看到视图层的图像的缩小动画效果。
在步骤105中,视图层的图像缩小动画执行完毕后,去除视图层。这样就露出视频层的视频,两者都是在缩放目标位置,大小和位置一致,因此去除视图层用户完全感知不到。另外,视图层执行的图像缩放动画通常为秒级,持续时间较长用户能够明显感知到,而视频层的setLayoutParams方法的执行时间十分短暂用户并不能感知到,因此视图层的图像缩放完全覆盖了视频层的视频缩放,这一过程非常逼真地达到视频的动态缩放效果。
优选地,为了达到更逼真的效果,在去掉上面的视图层时,可以采用Android自带的AlphaAnimation(消去动画)类,使得两者的过渡更加顺畅。
图2为本发明实施例提供的视频放大的方法流程图,如图2中所示,该方法主要包括以下步骤:
步骤201同图1中的步骤101,不再赘述。
步骤202同图1中的步骤102,不再赘述。
在步骤203中,依据当前视频的缩放类型和缩放目标位置,对视图层的图像执行放大动画并放大至目标位置。同样,本步骤中利用ScaleAnimation类对视图层的图像执行放大动画,这样视图层的图像就进行等比例缩放并向用户展现动画。
在步骤204中,通过调用setLayoutParams方法将视频放大至目标位置。对于视频缩放类型是视频放大的情况,与缩小的情况不同的是,需要先对视图层的图像执行放大动画,再对视频进行放大,这样才能够使得上面的视图层覆盖掉视频层的视频,用户仅能够看到视图层的图像的放大动画效果。
在步骤205中去除视图层,这样就露出视频层的视频,两者都是在缩放目标位置,大小和位置一致,因此去除视图层用户完全感知不到。
同样优选地,为了达到更逼真的效果,在去掉上面的视图层时,可以采用Android自带的AlphaAnimation类,使得两者的过渡更加顺畅。
一般来说,由于视图层的图像缩放动画持续时间并不长,即便在缩放过程中不暂停播放视频也能模拟出较平滑的视频缩放动画。
以上是对本发明所提供的方法进行的详细描述,下面结合图3对本发明提供的视频处理装置进行详细描述。如图3中所示,该装置可以包括:图层覆盖单元01、图像缩放单元02和图层去除单元03,还可以进一步包括信息获取单元04和视频缩放单元05。
在视频缩放开始前,图层覆盖单元01在视频层上覆盖包含当前视频一帧图像的视图层。具体地,在获取到视频缩放触发事件时,可以调用视图添加方法(诸如Android系统中的addView方法)在视频层上覆盖包含当前视频一帧图像的视图层。该视图层的位置和大小可以和当前视频的初始位置和大小一致,也可以略大,需要覆盖掉当前视频,在视觉上让用户察觉不到该视图层的增加,仍以为当前显示的是当前视频的那一帧图像。
上述的视频缩放触发事件可以是用户点击某选项所触发的,例如用户在智能电视上观看视频的过程中点击了视频缩放按钮(也可以是视频缩小按钮或者视频放大按钮),再例如用户使用视频通话功能时初始显示本地全屏图像,一旦通话建立成功后产生视频缩小触发事件,再例如用户在具有触摸屏的智能终端上通过手势操作控制视频缩放时,用户的手势操作产生视频缩放触发事件,还可能是其他应用场景产生的视频缩放触发事件,在此不再一一列举。
图像缩放单元02负责依据当前视频的缩放目标位置,对视图层的图像执行缩放动画并缩放至缩放目标位置。信息获取单元04负责获取视频缩放触发事件对当前视频触发的缩放类型以及缩放目标位置,缩放类型包括缩小或放大。
缩放类型可以包括缩小和放大,对于缩放类型为缩小的情况,视频缩放单元05在图像缩放单元02对视图层的图像执行缩放动画之前或者同时,或者在对视图层的图像执行缩放动画结束之前,调用布局调整方法(例如Android的setLayoutParams方法)将当前视频缩小至缩放目标位置;在缩放类型为放大时,在图像缩放单元02对视图层的图像执行缩放动画之后,调用布局调整方法将当前视频放大至缩放目标位置。
图像缩放单元02可以利用缩放动画类(诸如Android系统中的ScaleAnimation)对视图层的图像执行缩放动画。
最后图层去除单元03负责去除视图层以显示视频层。缩放类型为缩小时,图层去除单元03在图像缩放单元02执行完缩放动画后,去除视图层;缩放类型为放大时,图层去除单元03在视频缩放单元05完成视频缩放后,去除视图层。优选地,为了达到更逼真的效果,在去掉上面的视图层时,可以采用消去动画类(例如Android系统的AlphaAnimation类),使得两者的过渡更加顺畅。
视图层执行的图像缩放动画通常为秒级,持续时间较长用户能够明显感知到,而视频层的setLayoutParams方法的执行时间十分短暂用户并不能感知到,因此视图层的图像缩放完全覆盖了视频层的视频缩放,视图层的图像缩放完毕后去除视图层就露出视频层的视频,两者都在缩放目标位置,大小和位置一致,这一过程非常逼真地达到视频的动态缩放效果。
在此举一个实例,假设用户在观看Android智能电视的过程中想选择其他可选视频进行观看,需要调出视频列表,此时点击调出视频列表的按钮,这种情况下,用户正在观看的视频会从全屏等比例缩放至屏幕的左上角,然后在屏幕右边显示视频列表。在本发明的实现中,当调出视频列表的按钮被点击后,获取到视频缩放触发事件,调用addView方法在视频层上覆盖包含当前视频一帧图像的视图层,由于当前视频是全屏,那么覆盖的视图层也是全屏显示当前视频一帧图像。由于缩放类型和缩放目标位置是固定设置好的,假设是缩小到(0,0,960,540)的位置,其中位置坐标(left,top,width,height)中,left代表视图层最左边缘的位置,top代表视图层最上端边缘的位置,width代表视图层宽度,height代表视图层高度。
通过调用setLayoutParams方法将视频缩小至(0,0,960,540)的位置,然后利用ScaleAnimation类对视图层的图像执行缩小动画并缩小至(0,0,960,540)的位置,动画结束后采用AlphaAnimation类去除视图层露出底下的视频层。这样就模拟了视频缩小的动画效果,能够引导用户得知被缩小的视频来源是由全屏得到的,且引导用户得知全屏的视频被缩小到了屏幕的左上角。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。