一种视频帧渲染方法及装置制造方法

文档序号:6541897阅读:116来源:国知局
一种视频帧渲染方法及装置制造方法
【专利摘要】本发明实施例公开了一种视频帧渲染方法及装置,一种视频帧渲染方法包括:接收用户的渲染指令和待渲染的视频帧;对渲染指令进行分析,确定与视频帧对应的特效以及各特效的作用时间区间;提取所确定的特效的标识信息,确定与该特效对应的GLSL程序,每个特效对应一个GLSL程序;根据各特效的作用时间区间和所提取的特效的标识信息,分别判断与视频帧对应的各特效是否符合预设规则;将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序;运行合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧,应用本发明技术方案,减少了GLSL程序的运行次数,降低了重复数据的传递次数,从而提高了渲染效率。
【专利说明】一种视频巾贞渲染方法及装置
【技术领域】
[0001]本发明涉及视频帧处理【技术领域】,特别涉及一种视频帧渲染方法及装置。
【背景技术】
[0002]在这个微拍时代,人们希望能够通过手机、平板电脑等移动终端中的具有视频编辑功能的软件,将自己和家人朋友的零散的照片和影像转化为有趣的动态视频,与家人朋友一同分享。在这个转化过程中,对视频帧进行渲染是一个重要的环节。
[0003]现有技术中,具有视频编辑功能的软件中的视频渲染模块使用OpenGL (OpenGraphics Library,开放式图形库)对视频巾贞进行渲染,渲染过程中,每种特效对应一个GLSL (OpenGL Shading Language, OpenGL着色语言)程序,多种特效对应多个GLSL程序,视频渲染模块对视频帧每进行一次特效渲染,就需要运行一次该特效对应的GLSL程序,其中,GLSL程序是在安卓设备图形卡的GPU (Graphic Processor Unit,图形处理单元)上运行的小段程序。
[0004]然而,视频帧需要进行多种特效渲染时,视频渲染模块就需要逐个运行与特效对应的GLSL程序,GLSL程序运行的次数越多,重复数据的传递次数也就越多,渲染效率较低。

【发明内容】

[0005]为了解决上述问题,本发明实施例公开了一种视频帧渲染方法及装置,提高了对视频帧的渲染效率,具体技术方案如下:
[0006]一种视频帧渲染方法,包括:
[0007]接收用户的渲染指令和待渲染的视频帧;
[0008]对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间;
[0009]提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序,其中,每个特效对应一个GLSL程序,GLSL程序是由OpenGL着色语言编写的程序;
[0010]根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象;
[0011]将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序;
[0012]运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
[0013]优选的,所述标识信息为特效名称。
[0014]优选的,该方法还包括:接收特效预览指令,根据所述特效预览指令,对当前渲染得到的特效帧进行显示。
[0015]优选的,该方法还包括:接收特效帧保存指令,根据所述特效帧保存指令,对当前渲染得到的特效帧进行保存。[0016]优选的,该方法还包括:接收特效禁止指令,将该指令作用的特效标记为禁止与其它特效合并的状态。
[0017]一种视频帧渲染装置,包括:
[0018]接收模块,用于接收用户的渲染指令和待渲染的视频帧;
[0019]特效信息确定模块,用于对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间;
[0020]GLSL程序确定模块,用于提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序,其中,每个特效对应一个GLSL程序,GLSL程序是由OpenGL着色语言编写的程序;
[0021]判断模块,用于根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象;
[0022]GLSL程序合并模块,用于将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序;
[0023]GLSL程序运行模块,用于运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
[0024]优选的,所述标识信息为特效名称。
[0025]优选的,该装置还包括:特效帧预览模块,用于接收特效预览指令,根据所述特效预览指令,对当前渲染得到的特效帧进行显示。
[0026]优选的,该装置还包括:特效帧保存模块,用于接收特效帧保存指令,根据所述特效帧保存指令,对当前渲染得到的特效帧进行保存。
[0027]优选的,该装置还包括:特效标记模块,用于接收特效禁止指令,将该指令作用的特效标记为禁止与其它特效合并的状态。
[0028]应用本发明实施例所提供的技术方案,允许将多个特效对应的GLSL程序进行合并,合并后的GLSL程序数量低于合并前的GLSL程序的数量,通过运行合并后的GLSL程序和未合并的GLSL程序,实现对视频帧的渲染;与现有技术相比,减少了 GLSL程序的运行次数,降低了重复数据的传递次数,从而提高了渲染效率。
【专利附图】

【附图说明】
[0029]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030]图1为本发明实施例所提供的一种视频帧渲染方法的流程图;
[0031]图2为本发明实施例所提供的视频帧的各特效输入、输出关系的示意图;
[0032]图3为本发明实施例所提供的视频帧渲染过程的示意图;
[0033]图4为本发明实施例所提供的一种视频帧渲染装置的结构示意图。
【具体实施方式】[0034]首先对本发明实施例所提供的一种视频帧渲染方法进行说明,该方法可以包括以下步骤:
[0035]接收用户的渲染指令和待渲染的视频帧;
[0036]对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间;
[0037]提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序,其中,每个特效对应一个GLSL程序,GLSL程序是由OpenGL着色语言编写的程序;
[0038]根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象;
[0039]将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序;
[0040]运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
[0041]本发明实施例允许将多个特效对应的GLSL程序进行合并,合并后的GLSL程序数量低于合并前的GLSL程序的数量,通过运行合并后的GLSL程序和未合并的GLSL程序,实现对视频帧的渲染;与现有技术相比,减少了 GLSL程序的运行次数,降低了重复数据的传递次数,从而提闻了 ?宣染效率。
[0042]为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例 ,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]本发明实施例提供了一种视频帧渲染方法,如图1所示,该方法可以包括以下步骤:
[0044]SlOl,接收用户的渲染指令和待渲染的视频帧。
[0045]本发明实施例所述的“视频帧”,可以理解为影像动画中单幅影像画面,相当于电影胶片上的每一个镜头,换句话说,一帧也就是一张图片;它可以是视频文件经过解码处理得到的图像数据,也可以是图片文件,本发明实施例对此不作限制。
[0046]本步骤的执行主体可以是一种具备视频帧渲染功能的客户端软件,也可以是一种仅具有单一视频帧渲染功能的客户端软件;对于前者来说,处理对象可以是视频或图片,也可以是视频帧,渲染引擎只是该客户端软件中的一个功能模块,渲染引擎的处理对象是视频帧,当需要执行渲染操作时,该客户端软件需要对视频和图片等处理对象进行解码处理,得到渲染引擎能识别的图像数据(也就是视频帧),渲染引擎对视频帧进行特效渲染。对于后者来说,处理对象就是视频帧。
[0047]可以理解的是,客户端软件对视频或图片添加特效的过程,实际上就是对视频帧进行渲染的过程。用户可以在客户端软件上进行相应的请求操作,来触发这一渲染过程,例如,点击某个功能按钮、执行某个菜单选项,或者通过某些特定的快捷操作,以触发后续渲染的步骤。当然用户也可以用其它的形式,本发明实施例对此不作限定。
[0048]S102,对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间。
[0049]一般情况下,不同指令对应着不同信息,这就需要软件对指令进行分析,来明确该指令指向的信息。在接收到用户的渲染指令之后,客户端软件对渲染指令进行分析,以确定对视频帧进行渲染所需的特效,以及各个特效作用的时间区间。
[0050]本发明实施例所述的“特效”可以是透明度变化特效、颜色变换特效、位置变换特效、大小变换特效、旋转变换特效、鱼眼特效、卡通特效、美白特效、视频叠加特效、过渡特效、视频转场特效、拼接特效等等,本发明实施例对此不作限制。
[0051]此外,本发明实施例所述的“各特效的作用时间区间”可以理解为每个特效作用的起始时间点与终止时间点之间的时间,例如,一个时长20秒的视频,由大到小地显示视频的前10秒内容、由模糊到清晰地显示视频的后10秒内容,这里就用到了两个特效“大小变换特效”和“透明度变换特效”,“大小变换特效”的作用时间区间就是视频的O?10秒,“透明度变换特效”的作用时间区间就是视频的10?20秒。
[0052]S103,提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序。
[0053]本发明实施例所述的“GLSL程序”是用OpenGL着色语言编写的、运行在图形卡GPU(Graphic Processor Unit,图形处理单元)小段程序,代替了固定渲染管线的一部分,使渲染管线中不同层次具有可编程性,它包括顶点着色器程序和片段着色器程序,在本发明实施例中,可以理解为一个GLSL程序对应着一个特效,客户端软件每运行一个GLSL程序,就实现了对视频帧的一个特效添加。
[0054]需要说明的是,在本步骤中,客户端软件中的GLSL程序是开发人员预先按照一定规则进行编写的,每个GLSL程序的函数名都相同,每一个特效对应一个GLSL程序,特效与GLSL程序的对应关系可以用特效的名称来表征,比如,美白特效对应的GLSL程序的名称为“美白特效”,也可以用一个内部编号来表征,比如,开发人员对美白特效的编号是①,相应的GLSL程序的编号也为①。
[0055]可以理解的是,确定渲染所需的特效之后,可以通过提取特效的名称,来实现对该特效对应的GLSL程序的查找;也可以通过提取特效的编号,来实现对该特效对应的GLSL程序的查找,本发明实施例对此不作限制。
[0056]S104,根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,如果是,转到S105,否则转到S106 ;
[0057]其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象。
[0058]本发明实施例所述的“视频帧尺寸变动”的特效,可以理解为该特效会放大或者缩小视频帧,比如缩放特效、放大特效等。
[0059]为了便于理解,下面以一个具体实例,对“根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则”这一过程进行描述,如图2所示:
[0060]在对视频帧1、视频帧2、视频帧3、视频帧4进行渲染的过程中,渲染所需的特效分别是特效Al、特效A2、特效A3、特效B1、特效B2、特效Cl、特效C2,上述每个特效都有一个作用时间区间;根据各个特效的作用时间区间可以确定各个特效的作用顺序,在这里可以把一个特效的渲染对象作为一个输入,渲染结果作为一个输出,一般情况下,一个特效可以对应多个输入,但只能对应一个输出,比如特效Cl有视频帧3和视频帧4两个渲染对象,有一个渲染结果。
[0061]特效B2的输出既是特效A2的输入,也是特效C2的输入,因此特效B2不会与特效A2或者特效C2合并。特效B2不会与特效A2或者特效C2合并的好处在于,特效A2和特效C2都可以使用特效B2的渲染结果。这样也就不难理解预设规则中所说的“特效的渲染结果不作为多个特效的渲染对象”了。
[0062]S105,将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序。
[0063]本发明实施例所述的“合并”可以理解为客户端软件临时将符合预设规则的多个特效对应的GLSL程序合并成一个GLSL程序,而不会改变软件中预先存储各个特效对应的各GLSL程序。
[0064]例如图2中,假定特效Al、特效A2、特效A3均不涉及尺寸变化,每个特效的输出只作为一个特效的输入,特效Al、A2、A3对应的GLSL程序就可以合并为一个新的GLSL程序。
[0065]可以理解的是,为保证各个特效的渲染顺序不发生变化,本发明实施例需要确定合并后的GLSL程序的作用时间区间。
[0066]S106,不符合预设规则的特效对应的GLSL程序不进行合并。
[0067]S107,运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
[0068]为了直观理解,下面以一个具体实例进行描述,如图3所示,特效1、特效2、特效3对应的GLSL程序可以合并为一个新的GLSL程序,合并后的GLSL程序为GLSL程序11,特效4对应的GLSL程序不能和其他的程序合并,客户端软件运行GLSL程序11,实现了对待渲染视频帧的一次渲染,得到渲染后的视频帧,客户端软件再次运行GLSL程序4,实现了对渲染后的视频帧的一次渲染,得到了最终的渲染视频帧。
[0069]在实际使用过程中,用户经常对同一视频素材使用多个特效,比如需要让一个视频由清晰到模糊、颜色由深到浅的显示出来。现有技术都是先使用透明度特效实现视频由清晰到模糊的显示,再使用颜色变换特效实现视频由深到浅的显示,这样不仅多次调用GPU的渲染管道线,而且还需要多次传递大量重复数据,渲染效率较低。
[0070]本发明将两个特效对应的GLSL程序合并成一个新的GLSL程序,只需运行一次GLSL程序就能实现视频由清晰到模糊、颜色由深到浅的显示,减少了调用GPU的渲染管道线的次数,降低了重复数据的传递次数,从而提高了渲染效率。
[0071]在本发明的一个优选实施例中,还包括:接收特效预览指令,根据所述特效预览指令,对当前渲染得到的特效帧进行显示。
[0072]本发明实施例所述的“特效预览”可以理解为客户端软件对视频帧渲染的过程中,用户在软件的显示界面上查看当前渲染得到的特效帧。
[0073]本发明实施例的优势在于,用户可以随时向客户端软件输入一个特效预览指令,就可以实现在客户端界面上查看特效帧的渲染效果。
[0074]在本发明的另一个优选实施例中,还包括:接收特效帧保存指令,根据所述特效帧保存指令,对当前渲染得到的特效帧进行保存。[0075]本发明实施例所述的“特效帧保存”可以理解为客户端软件对视频帧渲染的过程中,用户可以选择性地选取任一阶段的特效帧,由客户端软件进行保存。
[0076]本发明实施例的优势在于,用户可以随时向客户端软件输入一个特效帧保存指令,客户端软件就可以保存与特效帧保存指令对应的当前特效帧;当需要再次使用该特效帧时,可以直接调取该特效帧。
[0077]此外,可以理解的是,客户端软件也可以根据预先的设置,自动保存渲染后的特效帧,不需要用户的干预,本发明实施例对此不作限制。
[0078]在本发明的另一个优选实施例中,还包括:接收特效禁止指令,将该指令作用的特效标记为禁止与其它特效合并的状态。
[0079]有时为了提高渲染的效率,用户会指定某一特效不能和其它特效合并,比如用户需要一个花瓣漫天飞舞的特效,花瓣先经过类似下面的流程:花瓣A-->解码得到Al-〉格式转换特效A2-->色彩加强特效A3,这种情况下,用户可以指定A3与它后面的特效不能合并。
[0080]相应于上面的方法实施例,本发明还提供一种视频帧的渲染装置,参见图4所示,该装置可以包括:
[0081]接收模块201,用于接收用户的渲染指令和待渲染的视频帧;
[0082]特效信息确定模块202,用于对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间;
[0083]GLSL程序确定模块203,用于提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序,其中,每个特效对应一个GLSL程序,GLSL程序是由OpenGL着色语言编写的程序;
[0084]判断模块204,用于根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象;
[0085]GLSL程序合并模块205,用于将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序;
[0086]GLSL程序运行模块206,用于运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
[0087]在本发明的一个优选实施例中,该装置还包括:
[0088]特效帧预览模块,用于接收特效预览指令,根据所述特效预览指令,对当前渲染得到的特效帧进行显示。
[0089]在本发明的另一个优选实施例中,该装置还包括:
[0090]特效帧保存模块,用于接收特效帧保存指令,根据所述特效帧保存指令,对当前渲染得到的特效帧进行保存。
[0091]在本发明的另一个优选实施例中,该装置还包括:
[0092]特效标记模块,用于接收特效禁止指令,将该指令作用的特效标记为禁止与其它特效合并的状态。
[0093]对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0094]为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0095]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0096]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0097]本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:R0M/RAM、磁碟、光盘等。
[0098]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。`
【权利要求】
1.一种视频帧渲染方法,其特征在于,该方法包括: 接收用户的渲染指令和待渲染的视频帧; 对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间; 提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序,其中,每个特效对应一个GLSL程序,GLSL程序是由OpenGL着色语言编写的程序; 根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象; 将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序; 运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
2.根据权利要求1所述的方法,其特征在于,所述标识信息为特效名称。
3.根据权利要求1所述的方法,其特征在于,该方法还包括: 接收特效预览指令,根据所述特效预览指令,对当前渲染得到的特效帧进行显示。
4.根据权利要求1所述的方法,其特征在于,该方法还包括: 接收特效帧保存指令,根据所述特效帧保存指令,对当前渲染得到的特效帧进行保存。
5.根据权利要求1所述的方法,其特征在于,该方法还包括: 接收特效禁止指令,将该指令作用的特效标记为禁止与其它特效合并的状态。
6.一种视频帧渲染装置,其特征在于,该装置包括: 接收模块,用于接收用户的渲染指令和待渲染的视频帧; 特效信息确定模块,用于对所述渲染指令进行分析,确定与所述视频帧对应的特效以及各特效的作用时间区间; GLSL程序确定模块,用于提取所确定的特效的标识信息,根据所述标识信息,确定与该特效对应的GLSL程序,其中,每个特效对应一个GLSL程序,GLSL程序是由OpenGL着色语言编写的程序; 判断模块,用于根据所述各特效的作用时间区间和所提取的特效的标识信息,分别判断与所述视频帧对应的各特效是否符合预设规则,其中,所述预设规则为:特效不涉及视频帧尺寸的变动,且该特效的渲染结果不作为多个特效的渲染对象; GLSL程序合并模块,用于将符合预设规则的特效所对应的GLSL程序进行合并,得到合并后的GLSL程序; GLSL程序运行模块,用于运行所述合并后的GLSL程序和不符合预设规则的特效所对应的GLSL程序,得到渲染后的特效帧。
7.根据权利要求6所述的装置,其特征在于,所述标识信息为特效名称。
8.根据权利要求6所述的装置,其特征在于,该装置还包括: 特效帧预览模块,用于接收特效预览指令,根据所述特效预览指令,对当前渲染得到的特效帧进行显示。
9.根据权利要求6所述的装置,其特征在于,该装置还包括: 特效帧保存模块,用于接收特效帧保存指令,根据所述特效帧保存指令,对当前渲染得到的特效帧进行保存。
10.根据权利要求6所述的装置,其特征在于,该装置还包括: 特效标记模块,用于接收特效禁止指令,将该指令作用的特效标记为禁止与其它特效合并的状态。`
【文档编号】G06F9/44GK103853562SQ201410116292
【公开日】2014年6月11日 申请日期:2014年3月26日 优先权日:2014年3月26日
【发明者】刘细华 申请人:北京奇艺世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1