一种视频处理方法及装置转让专利

申请号 : CN202310902395.3

文献号 : CN116684704B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 闫亚军

申请人 : 北京美摄网络科技有限公司

摘要 :

本发明提供了一种视频处理方法及装置,包括:获取待显示视频的特效参数信息;根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;使用所述特效参数控件对所述待显示视频进行处理,以解决目前音视频编辑过程中生成视频特效的操作繁琐和冗余的问题。

权利要求 :

1.一种视频处理方法,其特征在于,包括:获取待显示视频的特效参数信息,其中,所述特效参数信息包括:视频特效标识和特效参数标识;

根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;

使用所述特效参数控件对所述待显示视频进行处理;

通过以下方式生成树控件:

将视频轨道作为所述树控件的根节点;

以视频特效控件作为所述树控件的根节点下的特效子节点,将所述视频特效控件所对应的视频特效标识与所述特效子节点绑定;

以特效参数控件作为所述特效子节点下的参数子节点,将所述特效参数控件所对应的特效参数标识与所述参数子节点绑定。

2.根据权利要求1所述的方法,其特征在于,根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件包括:根据所述视频特效标识和所述特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件。

3.根据权利要求2所述的方法,其特征在于,所述根据所述视频特效标识和所述特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件包括:根据所述视频特效标识从所述树控件的根节点开始遍历,判断是否存在与所述视频特效标识对应的视频特效控件;

若存在与所述视频特效标识对应的视频特效控件,则继续根据所述特效参数标识遍历所述参数子节点;

判断是否存在与所述特效参数标识对应的特效参数控件,若存在,获取所述特效参数控件。

4.根据权利要求1所述的方法,其特征在于,所述获取待显示视频的特效参数信息包括:监听回调接口,从所述回调接口获取待显示视频的特效参数信息。

5.一种视频处理装置,其特征在于,包括:获取模块,用于获取待显示视频的特效参数信息,其中,所述特效参数信息包括:视频特效标识和特效参数标识;

特效参数模块,用于根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;

处理模块,用于使用所述特效参数控件对所述待显示视频进行处理;

通过以下方式生成树控件:

将视频轨道作为所述树控件的根节点;

以视频特效控件作为所述树控件的根节点下的特效子节点,将所述视频特效控件所对应的视频特效标识与所述特效子节点绑定;

以特效参数控件作为所述特效子节点下的参数子节点,将所述特效参数控件所对应的特效参数标识与所述参数子节点绑定。

6.根据权利要求5所述的装置,其特征在于,所述特效参数模块包括:

查询单元,用于根据所述视频特效标识和所述特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件。

7.根据权利要求6所述的装置,其特征在于,所述查询单元包括:第一遍历子模块,用于根据所述视频特效标识从所述树控件的根节点开始遍历;

第一判断子模块,用于判断是否存在与所述视频特效标识对应的视频特效控件;

第二遍历子模块,用于若存在与所述视频特效标识对应的视频特效控件,则继续根据所述特效参数标识遍历所述参数子节点;

第二判断子模块,用于判断是否存在与所述特效参数标识对应的特效参数控件,若存在,则获取所述特效参数控件。

8.根据权利要求5所述的装置,其特征在于,所述获取模块包括:监听单元,用于监听回调接口,从所述回调接口获取待显示视频的特效参数信息。

说明书 :

一种视频处理方法及装置

技术领域

[0001] 本发明涉及视频处理技术领域,特别是涉及一种视频处理方法及装置。

背景技术

[0002] 随着图像处理技术的发展,越来越多的视频应用程序提供了视频特效的添加功能,用户可以通过选择视频特效文件,为视频添加相应的视频特效。
[0003] 在PC端或者MAC端的音视频编辑过程中,会经常使用各种各样的特效来编辑视频,每一种特效的参数和操作方式均不同,相关技术中,为了实现视频编辑的特效功能,均是每一种特效创建一个控件,但是每一种特效均创建一个控件,使得音视频编辑过程中生成视频特效的操作繁琐和冗余,通用性和可维护较差。

发明内容

[0004] 本发明提供了一种视频处理方法及装置,以解决目前音视频编辑过程中生成视频特效的操作繁琐和冗余的问题。
[0005] 为了解决上述问题,本发明公开了一种视频处理方法,包括:
[0006] 获取待显示视频的特效参数信息;
[0007] 根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;
[0008] 使用所述特效参数控件对所述待显示视频进行处理。
[0009] 可选地,通过以下方式生成树控件:
[0010] 将视频轨道作为所述树控件的根节点;
[0011] 以视频特效控件作为所述树控件的根节点下的特效子节点,将所述视频特效控件所对应的视频特效标识与所述特效子节点绑定;
[0012] 以特效参数控件作为所述特效子节点下的参数子节点,将所述特效参数控件所对应的特效参数标识与所述参数子节点绑定。
[0013] 可选地,所述特效参数信息包括:视频特效标识和特效参数标识;
[0014] 根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件包括:
[0015] 根据所述视频特效标识和所述特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件。
[0016] 可选地,所述根据视频特效标识和特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件包括:
[0017] 根据所述视频特效标识从所述树控件的根节点开始遍历,判断是否存在与所述视频特效标识对应的视频特效控件;
[0018] 若存在与所述视频特效标识对应的视频特效控件,则继续根据所述特效参数标识遍历所述参数子节点;
[0019] 判断是否存在与所述特效参数标识对应的特效参数控件,若存在,获取所述特效参数控件。
[0020] 可选地,所述获取待显示视频的特效参数信息包括:
[0021] 监听回调接口,从所述回调接口获取待显示视频的特效参数信息。
[0022] 为了解决上述问题,本发明还公开了一种视频处理装置,包括:
[0023] 获取模块,用于获取待显示视频的特效参数信息;
[0024] 特效参数模块,用于根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;
[0025] 处理模块,用于使用所述特效参数控件对所述待显示视频进行处理。
[0026] 可选地,通过以下方式生成树控件:
[0027] 将视频轨道作为所述树控件的根节点;
[0028] 以视频特效控件作为所述树控件的根节点下的特效子节点,将所述视频特效控件所对应的视频特效标识与所述特效子节点绑定;
[0029] 以特效参数控件作为所述特效子节点下的参数子节点,将所述特效参数控件所对应的特效参数标识与所述参数子节点绑定。
[0030] 可选地,所述特效参数信息包括:视频特效标识和特效参数标识;
[0031] 所述特效参数模块包括:
[0032] 查询单元,用于根据所述视频特效标识和所述特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件。
[0033] 可选地,所述查询单元包括:
[0034] 第一遍历子模块,用于根据所述视频特效标识从所述树控件的根节点开始遍历;
[0035] 第一判断子模块,用于判断是否存在与所述视频特效标识对应的视频特效控件;
[0036] 第二遍历子模块,用于若存在与所述视频特效标识对应的视频特效控件,则继续根据所述特效参数标识遍历所述参数子节点;
[0037] 第二判断子模块,用于判断是否存在与所述特效参数标识对应的特效参数控件,若存在,则获取所述特效参数控件。
[0038] 可选地,所述获取模块包括:
[0039] 监听单元,用于监听回调接口,从所述回调接口获取待显示视频的特效参数信息。
[0040] 与现有技术相比,本发明包括以下优点:
[0041] 本实施例,通过根据特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;使用所述特效参数控件对待显示视频进行处理,这样避免了在音视频编辑过程中,为每一种特效均创建一个控件,简化了音视频编辑过程中的生成视频特效的操作过程,通用性较强,同时采用树控件结构也方便了用户查找所需的特效,提高了特效的查询效率。
[0042] 当然,实施本发明的任一产品不一定需要同时达到以上所述的所有优点。

附图说明

[0043] 图1是本发明实施例所述一种视频处理方法的流程图;
[0044] 图2是本发明实施例树控件的结构示意图;
[0045] 图3是本发明实施例视频特效控件对应的特效参数控件示意图;
[0046] 图4是本发明实施例视频特效控件对应的特效参数控件示意图;
[0047] 图5是本发明实施例所述一种视频处理方法的流程图;
[0048] 图6是本发明实施例树控件应用的结构示意图;
[0049] 图7是本发明实施例所述一种视频处理装置的结构示意图。

具体实施方式

[0050] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0051] 参照图1,其示出了本发明实施例所述一种视频处理方法的流程图,具体包括:
[0052] 步骤101:获取待显示视频的特效参数信息。
[0053] 其中,特效参数信息包括:视频特效标识和特效参数标识。
[0054] 视频特效包括:模糊特效、调色特效、马赛克特效、运动跟踪、抠图、灯光渲染、扭曲、调色等等。
[0055] 每一种视频特效均对应有相应的视频特效标识,每种视频特效均对应有不同的特效参数。
[0056] 例如:模糊特效包括的特效参数为模糊半径、模糊程度和模糊角度等等。调色特效包括:增益和颜色值等等,其中,颜色值可以为红、绿、蓝等等。
[0057] 步骤102:根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件。
[0058] 根据特效参数信息对整个树控件进行遍历,也就是说,从树控件的根节点开始遍历整个树控件,获得特效参数控件。
[0059] 其中,特效参数控件包括:下拉框、旋转圆盘、编辑框、标签、按钮、列表、滑杆等原子控件,还包括根据原子控件衍生出的控件。
[0060] 参见图2所示,为本发明实施例树控件的结构示意图,具体包括:根节点、视频特效控件1‑N以及特效参数控件1‑N。根节点为视频轨道,该视频轨道中包括:视频片段,视频特效控件包括:方向模糊、Lut、水平扭曲、发光等等,每个视频特效控件对应的特效参数控件也不同,如图3和4所示。
[0061] 在图3中视频特效控件包括:方向模糊、Lut、水平扭曲、发光,每个视频特效控件对应的特效参数控件也不同。
[0062] 在图4中视频特效控件包括:双向模糊和定向模糊等等,每一个视频特效控件对应的特效参数控件也不同。
[0063] 步骤103:使用所述特效参数控件对视频进行处理。
[0064] 使用特效参数控件对视频进行处理,即使用特效参数控件对视频文件进行拼凑、添加文字、添加图片、添加音效等编辑操作,使得视频具有不同的特效功能。
[0065] 本实施例,通过根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;使用所述特效参数控件对视频进行处理,这样避免了在音视频编辑过程中,为每一种特效均创建一个控件,简化了音视频编辑过程中的生成视频特效的操作过程,通用性较强,同时采用树控件结构也方便了用户查找所需的特效,提高了特效的查询效率。
[0066] 参照图5,其示出了本发明实施例所述一种视频处理方法的流程图,具体包括:
[0067] 步骤501:监听回调接口,从所述回调接口获取待显示视频的特效参数信息。
[0068] 回调接口包括第一接口、第二接口和用户扩展接口,其中,第一接口用于发送特效参数标识,第二接口用于发送视频特效标识,用户扩展接口用于用户自定义一些更加多样化的控件,然后将该控件存放在控件库,注册成功之后,再结合第一接口和第二接口来调用特效控件即可,也就是说,通过回调接口可以获取很多特效控件,这些特效控件可用于后续的视频编辑软件工程中,用于调节视频或音频。
[0069] 例如:视频特效为模糊特效或者调色特效,则可以通过模糊特效接口和调色特效接口实现对视频特效的调用。
[0070] 具体可以通过以下代码实现:
[0071] CreateEffect(blur);
[0072] CreateEffect(adjustColor);调用接口
[0073] 步骤502:根据视频特效标识和特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件。
[0074] 在实际应用中,通过以下方式生成树控件:将视频轨道作为所述树控件的根节点;以视频特效控件作为所述树控件的根节点下的特效子节点,将所述特效控件所对应的视频特效标识与所述特效子节点绑定;以特效参数控件作为所述特效子节点下的参数子节点,将所述特效参数控件所对应的特效参数标识与所述参数子节点绑定。
[0075] 在实际应用中,把每个视频特效抽象成一个特效数据结构EffectStruct,该视频特效的每个参数都抽象成一个ParamStruct参数数据结构,从而形成了一个EffectStruct包含若干个ParamStruct,这样一个视频特效抽象成一个C++开发语言可以识别的数据结构,即EffectStruct和ParamStruct,ParamStruct是代表参数数据结构,包含参数名字、类型、默认值和取值范围等,EffectStruct是代表特效的数据结构,包含特效名字以及若干个ParamStruct参数数据结构。本发明各种各样的参数控件,例如:下拉框、旋转圆盘、编辑框、标签、按钮、列表、滑杆等原子控件,这些参数控件可以根据参数类型单独使用,也可以根据特效名字以及附属的所有参数集合整体使用。对于这些原子控件,可以使用QT中原生的控件,比如标签就可以用QLabel控件,按钮可以用QPushButton控件,下拉框可以用QComboBox控件,普通的编辑框可以用QLineEdit控件,但是对于旋转圆盘、支持鼠标拖拽的编辑框、滑杆等控件,他们本身用QT自带的控件不能完成所有功能,就需要从一个基础的控件继承,自定义实现一个新的控件,比如支持鼠标拖拽的编辑框,普通的编辑框只支持键盘输入文字或者数值,但是有些特效是需要支持鼠标按住的时候左右拖动编辑框改变数值,这时就需要重写QLineEdit的mouseEvent事件(鼠标事件),来完成附加的功能;再比如旋转圆盘,QT本身没有这样的控件,需要在基础控件(QWidget)的paintEvent函数中绘制一个圆盘并把刻度也绘制上,同时重写鼠标事件,把鼠标在圆盘上的旋转操作逻辑实现出来,就基本完成了这个旋转圆盘的功能,通过上述操作将控件库建立起来,基于控件库构建树控件,然后基于视频特效标识和特效参数标识进行回调,这样用户就可以结合其他的视频编辑sdk或者组件进行特效或者视频的编辑操作。
[0076] 视频特效控件实际上就是特效数据结构,可以通过以下代码实现:
[0077] struct EffectStruct{特效数据结构
[0078] QString name ;
[0079] QStringdiscription;
[0080] QString type ;/ / video or autio
[0081] QListparams ; 若干个参数}
[0082] Effectstruct blur;
[0083] blur. name ="fastBlur;}
[0084] 参数特效控件实际上就是参数数据结构,可以通过以下代码实现:
[0085] struct ParamStruct{
[0086] QString name;参数数据结构
[0087] QString type; //LineEdit, Label, Combobox, Circle, Path
[0088] float defaultValue= 0;
[0089] float maxValue= 1;
[0090] float minValue =‑1;}
[0091] 当视频特效控件为模糊特效时,可以通过以下代码实现模糊特效:
[0092] ParamStructparaml;
[0093] param1.name="radius";
[0094] param1 type="LineEdit";
[0095] ParamStruct param2;
[0096] param2.name=“intensity”;
[0097] param2.type="LineEdit";
[0098] blur. params .append(param1);
[0099] blur. params, append(param2);
[0100] 当视频特效控件为调色特效时,可以通过以下代码实现调色特效:
[0101] EffectStructadjustColor;
[0102] adjustColor.name = " adjustColor ";
[0103] ParamStructparamA;调色特效
[0104] paramA.name = " red ";
[0105] paramA.type = "LineEdit";
[0106] paramA.defaultValue=2;
[0107] paramAmaxValue=100;
[0108] paramAminValue = ‑100;
[0109] adjustColor.params.append ( paramA );
[0110] 以图6为例,详细说明本发明生成树控件的过程,具体如下:
[0111] 视频轨道上的特效呈现一个树状结构,将视频轨道作为根节点,将特效节点作为根节点的子节点(二级节点),即将模糊特效、校色特效或者其他特效作为根节点的子节点(二级节点),将特效参数作为特效节点的子节点(三级节点)。
[0112] 在具体应用中,本发明,首先,定义数据容器,在实际编码的时候,我们这样定义个数据容器,
[0113] QMap>effectsInTrack。
[0114] 本发明用QT的QMap容器保存一个轨道所有的特效,QMap以键值对的形式存储,QMap[key,value],key是用来唯一标识一个特效或者一个参数的ID。可以看到有两层QMap,外层QMap的key是特效的唯一ID,value是QMap,代表一个特效包含的所有参数的map;内层QMap的key是参数的唯一ID,value是一个参数的数据结构,两个map的key都可以用QUuid可以生成。
[0115] 其次,创建树控件,当创建树控件时,首先创建一个根节点代表视频片段或者视频轨道,用QTreeWidgetItem类创建一个root节点;然后遍历轨道的数据容器effectsInTrack,每遍历一个特效数据,就创建一个QTreeWidgetItem对象effectNode,代表特效节点(二级节点),并调用QTreeWidgetItem的addChild方法,root.addChild( effectNode),这一步把特效节点添加为轨道节点的子节点,最后effectNode调用setData方法把特效ID绑定到这个节点上,这样做是为了方便后续查找特效时使用。
[0116] 当拿到特效的数据值QMap之后,再对这个map进行遍历,去循环拿到每个参数的key值和数据结构,根据参数的数据创建一个QTreeWidgetItem对象paramNode,代表参数节点(三级节点),并调用QTreeWidgetItem的addChild方法,effectNode.addChild( paramNode),把所有参数添加为当前所属特效的子节点,最后paramNode调用setData方法把参数ID绑定到这个节点上,这样做是为了方便后续查找特效参数时使用。这两个QMap的遍历会把所有的特效以及参数创建成一个树结构控件,并且树上绑定有标识信息,然后根据标识信息方便查询使用。
[0117] 作为其中一种实现方式,步骤502包括如下子步骤:
[0118] 子步骤5021:根据所述视频特效标识从所述树控件的根节点开始遍历。
[0119] 在实际应用中,根据视频特效标识从树控件的根节点开始遍历,然后继续遍历特效子节点,获取视频特效控件,然后在根据特效参数标识遍历特效子节点下的参数子节点,从而查找到特效参数控件。
[0120] 子步骤5022:判断是否存在与所述视频特效标识对应的视频特效控件。
[0121] 在实际应用中,树控件的根节点下的特效子节点具有多个,因此根据视频特效标识会遍历树控件的根节点下的所有特效子节点,进而查找到与视频特效标识对应的视频特效控件。
[0122] 子步骤5023:若存在与所述视频特效标识对应的视频特效控件,则继续根据所述特效参数标识遍历所述参数子节点。
[0123] 子步骤5024:判断是否存在与所述特效参数标识对应的特效参数控件,若存在,获取所述特效参数控件。
[0124] 在实际应用中,树控件的根节点下的特效子节点具有多个,并且每个特效子节点下又存在多个参数子节点,因此根据特效参数标识会遍历所有的多个参数子节点,进而查找到与特效参数标识对应的特效参数控件,根据该特效参数控件对视频进行处理。
[0125] 步骤503:使用所述特效参数控件对所述待显示视频进行处理。
[0126] 特效参数控件不同,对视频的处理方式就不同,例如:特效参数控件为模糊角度,则就会对视频进行模糊角度处理。特效参数控件为调整颜色值,则就会对视频进行调整颜色值处理。
[0127] 本实施例,采用树控件结构方便了用户查找所需的特效,提高了特效的查询效率。
[0128] 需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必需的。
[0129] 基于上述方法实施例的说明,本发明还提供了相应的装置实施例,来实现上述方法实施例所述的内容。
[0130] 参照图7,其示出了本发明实施例所述一种视频处理装置的结构图,具体包括:
[0131] 获取模块701,用于获取待显示视频的特效参数信息。
[0132] 特效参数模块702,用于根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件。
[0133] 处理模块703,用于使用所述特效参数控件对所述待显示视频进行处理。
[0134] 可选地,通过以下方式生成树控件:
[0135] 将视频轨道作为所述树控件的根节点;
[0136] 以视频特效控件作为所述树控件的根节点下的特效子节点,将所述视频特效控件所对应的视频特效标识与所述特效子节点绑定;
[0137] 以特效参数控件作为所述特效子节点下的参数子节点,将所述特效参数控件所对应的特效参数标识与所述参数子节点绑定。
[0138] 可选地,所述特效参数信息包括:视频特效标识和特效参数标识;
[0139] 所述特效参数模块包括:
[0140] 查询单元,用于根据所述视频特效标识和所述特效参数标识从所述树控件的根节点开始遍历所述树控件,获得所述特效参数控件。
[0141] 可选地,所述查询单元包括:
[0142] 第一遍历子模块,用于根据所述视频特效标识从所述树控件的根节点开始遍历所述特效子节点;
[0143] 第一判断子模块,用于判断是否存在与所述视频特效标识对应的视频特效控件;
[0144] 第二遍历子模块,用于若存在与所述视频特效标识对应的视频特效控件,则继续根据所述特效参数标识遍历所述参数子节点;
[0145] 第二判断子模块,用于判断是否存在与所述特效参数标识对应的特效参数控件,若存在,则获取所述特效参数控件。
[0146] 可选地,所述获取模块包括:
[0147] 监听单元,用于监听回调接口,从所述回调接口获取待显示视频的特效参数信息。
[0148] 本实施例,通过根据所述特效参数信息从树控件的根节点开始遍历所述树控件,获得特效参数控件;使用所述特效参数控件对视频进行处理,这样避免了在音视频编辑过程中,为每一种特效均创建一个控件,简化了音视频编辑过程中的生成视频特效的操作过程,通用性较强,同时采用树控件结构也方便了用户查找所需的特效,提高了特效的查询效率。
[0149] 对于上述装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见所示方法实施例的部分说明即可。
[0150] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0151] 本领域技术人员易于想到的是:上述各个实施例的任意组合应用都是可行的,故上述各个实施例之间的任意组合都是本发明的实施方案,但是由于篇幅限制,本说明书在此就不一一详述了。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0152] 以上对本发明所提供的一种视频处理方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。