一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频剪辑合成方法及电子设备与流程

2022-02-19 12:46:41 来源:中国专利 TAG:


1.本技术涉及视频合成技术领域,特别是涉及视频剪辑合成方法及电子设备。


背景技术:

2.网络直播、短视频等行业的兴起,丰富了许多商家或者企业的产品宣传途径。例如,一场直播下来,几个小时的视频资源,包含了大量商品讲解、工厂介绍等内容。而直播具有时效性,因此,如何在直播结束后利用好已有的直播录播视频资源,成了平台和商家需要解决的问题。
3.现有技术中,一些系统能够识别出用于讲解具体商品的直播视频的起始点以及结束点,然后可以根据这种时间点截取出视频片段,作为对应商品对象的讲解视频,并投放到商品的详情页等页面中,供消费者随时查看。
4.这种方式虽然能够将直播视频内容转为商品的讲解视频,但是,由于直播视频内容中可能会存在一些比较低质的或者无效的内容等原因,导致生成的讲解视频的质量参差不齐。为此,一些软件开发商为用户提供了视频剪辑合成工具,通过这种工具,用户可以对原始视频进行剪辑,去掉中间的低质内容,还可以将多段视频、图片拼接在一起,添加字幕、贴纸等素材,等等,最终合成为一段视频,然后用户可以用这种合成的视频去进行投放。
5.上述视频剪辑合成能够通过剪辑拼接功能提升生产出的视频的质量,但是,由于整个视频合成的过程中,需要按帧依次进行画面内容的合成,这意味着合成时间将不小于与实际所产出的视频的时间长度,视频合成时间较长。例如,假设需要合成一段时间长度为100秒的视频,则在用户完成对物料的准备、剪辑等操作之后,后续生成合成视频的时间将会大于或等于100s,这会造成用户的长时间等待。
6.因此,如何提升视频合成处理效率,成为需要本领域技术人员解决的技术问题。


技术实现要素:

7.本技术提供了视频剪辑合成方法及电子设备,能够提升视频合成处理效率。
8.本技术提供了如下方案:
9.一种视频剪辑合成方法,包括:
10.通过视频剪辑合成界面接收用户的素材添加以及剪辑操作,并确定视频合成方案,所述视频合成方案中包括待合成视频中多个图像帧的待合成内容;
11.在根据视频合成请求执行视频合成的过程中,确定待合成视频的总时长;
12.根据所述总时长以及目标分段数量,确定多个分段时长,并根据所述多个分段时长,创建多个分段合成任务;
13.通过多线程技术,对所述多个分段合成任务进行并行处理;
14.通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。
15.其中,所述视频剪辑合成界面是基于浏览器技术生成并展示的,并在浏览器中对
用户的素材添加以及剪辑操作进行响应,以及在在浏览器中执行视频合成。
16.其中,所述视频剪辑合成页面的页面代码中包括sdk,所述sdk用于为所述视频剪辑合成页面提供视频剪辑功能及视频合成功能;所述sdk为多个开发方所公用。
17.其中,还包括:
18.在接收到合成请求后,基于浏览器技术创建音频节点,所述音频节点用于周期性的播放目标声音,以作为视频合成过程中依赖的刷新机制。
19.其中,所述根据所述总时长以及所述分段数量,确定多个分段时长,包括:
20.如果所述总时长不能被所述分段数量整除,则通过对所述多个分段时长进行取整的方式,对分段边界进行处理,以使得所述多个分段时长的总和等于所述总时长。
21.其中,所述剪辑操作包括:创建多条素材轨道,并通过所述素材轨道对所添加素材所在的画面层级以及开始、结束时间进行编辑,以便将多种素材在时间和/或空间维度上进行叠加和/或拼接操作。
22.其中,还包括:
23.在响应所述用户的添加素材以及剪辑操作的过程中,提供视频画面预览内容,以便进行基于预览的视频画面,对素材内容在画面中的位置进行可视化剪辑。
24.一种视频剪辑合成方法,包括:
25.向多个开发方提供基于浏览器技术的软件开发工具包sdk及其应用程序编程接口api,以及结构体描述协议,所述sdk包括用于提供视频剪辑功能的sdk及视频合成功能的sdk,以便所述开发方利用所述api以及结构体描述协议,开发基于浏览器进行展示的视频剪辑合成页面,并将所述sdk写入页面代码中;
26.在向用户展示所述视频剪辑合成页面的过程中,通过所述视频剪辑功能的sdk,在浏览器中响应所述用户的添加素材以及剪辑操作;
27.接收到视频合成请求后,通过所述视频合成功能的sdk,在浏览器中进行视频合成处理。
28.其中,所述sdk还包括用于提供预览功能的sdk;
29.所述方法还包括:
30.在响应所述用户的添加素材以及剪辑操作的过程中,通过所述预览功能的sdk,提供视频画面预览内容,以便进行基于视频画面进行可视化剪辑。
31.其中,所述通过所述视频合成功能的sdk,在浏览器中进行视频合成处理,包括:
32.根据所述用户的添加素材以及剪辑操作,确定待合成视频中的多帧图像分别对应的多份待合成内容,以便对待合成视频进行逐帧录制;
33.其中,在进行当前图像帧的录制时,将当前图像帧对应的多份待合成内容分别转换为视觉画面流,并提供给录制器单元进行当前图像帧的录制。
34.其中,所述通过所述视频合成功能的sdk,在浏览器中进行视频合成处理,包括:
35.根据所述用户的添加素材以及剪辑操作,确定待合成视频的总时长;
36.根据所述总时长以及目标分段数量,确定多个分段时长;
37.根据所述多个分段时长,创建多个分段合成任务;
38.通过浏览器多线程技术,对所述多个分段合成任务进行并行处理;
39.通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频
合成结果。
40.其中,所述视频合成功能的sdk对应的api关联有分段数量参数,以便由所述开发方指定所述目标分段数量。
41.一种视频剪辑合成装置,包括:
42.视频合成方案确定单元,用于通过视频剪辑合成界面接收用户的素材添加以及剪辑操作,并确定视频合成方案,所述视频合成方案中包括待合成视频中多个图像帧的待合成内容;
43.总时长确定单元,用于在根据视频合成请求执行视频合成的过程中,确定待合成视频的总时长;
44.分段合成任务创建单元,用于根据所述总时长以及目标分段数量,确定多个分段时长,并根据所述多个分段时长,创建多个分段合成任务;
45.并行处理单元,用于通过多线程技术,对所述多个分段合成任务进行并行处理;
46.拼接渲染单元,用于通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。
47.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一项所述的方法的步骤。
48.一种电子设备,包括:
49.一个或多个处理器;以及
50.与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述任一项所述的方法的步骤。
51.根据本技术提供的具体实施例,本技术公开了以下技术效果:
52.通过本技术实施例,在由视频合成方案(schema)驱动的视频合成任务执行过程中,可以根据待合成视频的总时长,以及目标分段数量,将具体的视频合成任务划分为多个分段合成任务。这样,可以通过多线程技术,对所述多个分段合成任务进行并行处理,然后,通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。通过这种方式,由于可以进行多线程分段式并行合成,因此,可以提升视频合成效率,缩短视频合成所需的时间。
53.其中,具体的视频合成方案可以是由用户通过视频剪辑合成界面进行素材添加以及剪辑操作后生成的。具体的视频剪辑合成界面可以是基于浏览器技术生成并展示的web页面,并且可以直接浏览器中对用户的素材添加以及剪辑操作进行响应,以及在在浏览器中执行视频合成,以此节省开发方的服务成本。
54.本技术实施例还可以为具体开发方提供基于浏览器技术的剪辑功能sdk、视频合成功能sdk,以及结构体描述协议。这样,开发方在具体进行视频剪辑合成界面开发时,由于具体的剪辑功能、合成功能等,则可以由统一的sdk来实现,因此,开发方可以专注于对具体视频剪辑合成界面的样式、前置后置链路等进行设计,孵化出更多的产品形态,共同建设web视频剪辑生态。
55.当然,实施本技术的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
56.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
57.图1是本技术实施例提供的系统架构的示意图;
58.图2是本技术实施例提供的第一方法的流程图;
59.图3是本技术实施例提供的视频剪辑过程示意图;
60.图4是本技术实施例提供的视频合成过程示意图;
61.图5是本技术实施例提供的各分段并行合成以及拼接渲染过程示意图;
62.图6是本技术实施例提供的第二方法的流程图;
63.图7是本技术实施例提供的装置的示意图;
64.图8是本技术实施例提供的电子设备的示意图。
具体实施方式
65.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本技术保护的范围。
66.为了便于理解本技术实施例提供的技术方案,下面首先对视频合成处理的流程进行简单介绍。
67.在进行视频合成处理的过程中,通常需要首先由用户输入具体的素材(包括视频、图片、花字等等),然后可以在视频合成工具中,通过进行一系列的拖拽等动作,进行可视化的编辑,还可以向画面中添加文案,或者,调整具体素材在空间、时间轴上的位置,等等。之后,视频合成工具就可以获知用户所需合成的视频在每一帧上具体需要合成的内容。之后,用户可以点击“合成”等操作选项,进入具体的合成流程。在合成的过程中,需要逐帧进行画面内容的录制。具体的,在逐帧录制的过程中,对于当前图像帧,首先可以根据用户的素材添加及编辑结果,确定出该图像帧中所需展示的多项待合成内容(可能包括某个原始视频中的某一帧画面,还可能包括在画面上叠加展示的图片、文案、画中画图像,等等),然后可以将多项待合成内容转换成视觉画面流(例如,canvas流),再将各项待合成内容对应的canvas流交给录制器进行录制,即可生成真正的视频中的一帧图像。
68.当然,另一种方式下,具体的视频合成工具也可以向用户提供一些模板,其中可以包括一些设定好的特效、背景等等,用户只需要对模板中的主视频、文案等内容进行替换等方式,即可完成对待合成视频的剪辑,等等。之后也可以通过点击“合成”选项等方式触发进入具体的合成流程,具体的合成流程与前述过程基本是相同的。
69.正是由于需要对每一帧图像进行逐帧串行录制,因此,现有技术中,具体的视频合成过程需要花费的时间会比较长,至少不会短于待合成视频的总时长。例如,需要合成一段100秒的视频,则在用户完成对素材的添加以及剪辑之后,具体生成合成视频的时间不会少于100秒。也就是说,用户的体验是,在通过一系列的拖拽等方式完成对素材的添加以及剪
辑操作之后,需要等待比较长的时间,才能生成最终的合成视频。
70.针对上述情况,本技术实施例提供了多线程分段式并行合成方案,也就是说,在用户完成具体的素材的添加以及剪辑之后,可以确定出待合成视频的总时长,然后,可以生成多个分段合成任务。例如,假设总时长是100秒,分为四个分段,则每个分段可以执行其中25秒的合成任务,其中,分段1对应第1到第25秒,分段2对应第26到第50秒,分段3对应第51到第75秒,分段4对应第76到第100秒,等等。各个分段合成任务可以通过多线程的方式并行执行,之后,再将各自的合成结果进行拼接渲染,得到最终的合成视频。通过这种方式,使得合成过程所需的时间为最长的分段合成任务所需的时间,加上拼接渲染所需的时间,这两部分时间加在一起,会小于串行录制所需的时间。
71.以上多线程分段式并行合成方案,可以在现有的视频剪辑合成工具中使用,或者,本技术发明人在实现本技术的过程中还发现:现有技术中,具体的视频剪辑合成工具通常是以客户端软件的形式存在,如果用户需要进行视频合成,则需要将客户端软件下载到本地。对于比较大型的商品信息系统(例如,电子商务系统)而言,上述视频剪辑合成工具可能属于第三方工具。因此,商家用户如果在使用商品对象信息系统的过程中,产生了合成视频的需求,则只能下载安装上述第三方工具,再使用这种工具进行视频的剪辑合成制作,合成的视频可以下载到本地,然后再把视频上传到具体商品信息系统某个具体开发方的后台进行投放等。也就是说,用户需要在商品对象信息系统与第三方视频合成工具之间进行切换。
72.因此,如果商品对象信息系统中也能够提供视频合成相关的服务,则可以为商家提供便利。此时,上述多线程分段式并行合成方案,也可以应用于具体商品对象信息系统中提供的视频合成服务中。
73.这里需要说明的是,由于商品对象信息系统本身是以商品对象服务为主的,包括商品对象的发布、交易链路等。关于具体与视频合成相关的需求,通常是产生在商品对象信息系统关联的某个或者某些具体开发方的服务链路中。例如,在商品对象信息系统的开发运营公司内部,可能对应着不同的产品线,为用户提供不同方面、行业的服务;每个产品线中还可能包括中多个不同的功能模块,每个功能模块都可能对应着各自的开发方,例如,提供商品发布服务的开发方,提供信息推荐服务的开发方,等等。因此,具体实现时,可以由具体开发方来确定是否在其已有的产品链路中为用户提供视频合成服务。
74.但是,不同的开发方的产品链路可能是不同的,具体与合成视频相关的功能,可能会出现在不同链路的不同节点中,开发方也可能需要对具体视频合成功能进行与各自具体服务链路的打通或者融合,或者,对具体的界面进行一些个性化设置,以符合具体的开发方的整体产品调性,等等。因此,如果在不同开发方之间复用相同的视频合成应用或者服务,是不可行的。
75.为了达到上述目的,一种方式是,各个开发方可以分别分别开发各自的视频合成服务,并提供给用户进行使用。但是,虽然各个开发方在应用层(界面设计、前置后置链路设计等)的设计方案会有所不同,但是,毕竟都涉及到与视频合成相关的核心内容,因此,会存在不同开发方之间冗余开发的情况。
76.为了减少冗余开发,本技术实施例提供了一套通用的视频剪辑协议,以及可定制性强的剪辑及合成内核,其中可以包括具体用于提供视频剪辑功能的sdk(software development kit,软件开发工具包)及视频合成功能的sdk,并向开发人员暴露具体sdk的
接口,也即api(application programming interface,应用程序编程接口)。这样,使得各个开发方可以基于上述协议以及sdk对应的api进行视频合成服务的开发。也就是说,具体开发方可不必关注具体的剪辑以及合成的实现逻辑,而只需要对页面样式、前置后置链路等进行设计即可,以此减少不同开发方之间的冗余开发情况,提升数据的流通性和可复用性。
77.但是,在实际应用中,还可能存在以下问题:如前文所述,具体的商品对象信息系统毕竟不是专门提供视频合成服务的,具体到系统内具体产品线或者功能模块的开发方,即使提供视频合成服务,该服务可能也并不是该开发方的主体服务内容。因此,可能涉及到对具体开发方服务资源的额外占用问题,增加了开发方的服务成本。甚至对于一些比较小的部门,其可用的服务资源可能更是有限,甚至没有额外的服务资源用于提供视频合成服务,等等。
78.因此,针对上述情况,本技术实施例提供的sdk,可以直接运行在用户的终端设备中,这样,可以使用用户自己的硬件设备资源,完成具体的剪辑以及视频合成过程。为了达到该目的,可以通过客户端软件的形式来实现,或者,还可以通过浏览器技术来实现。由于客户端软件涉及到下载安装的问题,因此,本技术实施例中选择了后者,也即,可以全部基于浏览器技术提供相应的sdk以及结构体描述协议。这样,各开发方可以接入这套sdk,在自己在上层应用层做封装定制化,进行具体视频剪辑合成页面以及相关前置后置链路的开发。这样,具体的剪辑合成页面可以以web页面的形式存在,开发方可以通过多种方式对页面链接进行投放,例如,可以投放到一个已经有比较大流量的后台,这样商家等用户看到链接就可以直接访问,并在页面中使用这套功能了。另外,开发方还可可以直接将sdk写入到具体的页面代码中,这样,在基于该页面进行视频剪辑合成处理时,都可以直接在浏览器中来完成,而不需要占用服务器资源,从而避免对开发方的服务成本造成占用。换言之,开发方可以“0成本”的方式为其用户提供视频剪辑合成服务。
79.当然,通过上述基于浏览器技术提供的sdk以及结构体描述协议,也不限于提供给某商品对象信息系统内部的开发方使用,也可以开放给其他的开发方使用。
80.在上述为开发方提供基于浏览器技术的sdk以及相关结构体描述协议的过程中,具体的sdk中就可以包括用于提供剪辑功能的sdk,用于提供视频合成功能的sdk,等等。其中,由于浏览器中也支持多线程技术,因此,关于用于提供视频合成功能的sdk,就可以使用前文所述的多线程分段式并行合成方案,以缩短视频合成过程所需的时间。
81.从系统架构角度而言,参见图1,本技术实施例可以提供各种sdk、api以及结构体描述协议等,可以将其提供给多个开发方,使得开发方可以参与到具体视频剪辑开发页面的开发过程中来,实现对页面样式、前置后置链路等方面的个性化设计。关于具体各项剪辑功能的实现,以及视频合成的实现,则可以通过sdk来实现,不需要由具体的开发方进行重复设计。并且,在本技术实施例中,具体的sdk可以是基于浏览器技术开发的,使得开发方可以开发出网页形式的视频编辑合成工具,并且可以通过多种渠道对具体网页的链接进行投放,使得用户可以通过点击链接的方式,进入到具体的页面中进行视频的剪辑合成处理。在合成的过程中,还可以使用多线程分段式并行合成方案,以提升具体的视频合成处理效率。
82.下面对本技术实施例提供的具体技术方案进行详细介绍。
83.实施例一
84.首先,该实施例一从多线程分段式并行合成视频的角度,提供了一种视频剪辑合成方法,具体的,该方法的执行主体可以是独立的视频剪辑合成工具,也可以是前文所述的通过sdk的方式抽象出的开发工具包。可以通过客户端技术实现,也可以通过浏览器技术来实现。
85.具体的,参见图2,该方法可以包括:
86.s201:通过视频剪辑合成界面接收用户的素材添加以及剪辑操作,并确定视频合成方案,所述视频合成方案中包括待合成视频中多个图像帧的待合成内容;
87.具体实现时,上述视频剪辑合成界面,具体可以是指以客户端形式存在的视频合成工具中提供的界面,或者,如前文所述,所述视频剪辑合成界面也可以是基于浏览器技术生成web页面。在可选的方式下,具体的web页面还可以是基于本技术实施例提供的sdk以及结构体描述协议进行开发实现的。
88.其中,关于剪辑功能sdk,具体可以有多种,例如,可以包括用于添加素材或物料(视频,图片,文字等)的sdk,用于添加花字、动画等特效的sdk,用于实现视频沉浸式(截掉边缘部分的填充模式等)展示的sdk,用于实现视频静音(例如,去掉视频原声)的sdk,用于添加音乐的sdk,用于进行视频剪辑(例如,需要使用某原始视频素材中第3到5秒的内容,则可以通过该sdk提供的能力来实现)的sdk,等等。
89.每个sdk都可以提供具体的api,以使得开发方能够在开发的页面中通过具体的api实现对对应sdk的调用,以实现对应的功能。
90.当然,关于结构体描述协议,具体可以包括基础物料(图片、文案、音乐、视频、花字等等)、视频特效(转场、滤镜、视频填充等特效)、视频剪辑、拼接等结构体的描述协议。另外,还可以同时引入素材轨道的概念,具体的素材轨道用于承接物料,不同轨道用于区分画面层级,同一轨道上体现时间顺序。从而可以支持各种基础物料在时间以及空间上的叠加、拼接渲染。另外,还可以支持复杂的转场、滤镜、填充模式等附加效果,实现函数式视频剪辑。具体的,可以实现(多轨道*多素材)^附加效果,也即支持多轨道,每个轨道多个素材进行编辑,且支持单个或多个素材之间的效果联动。
91.具体的开发方在进行视频剪辑合成页面的开发时,就可以使用上述结构体描述协议,对各种结构体进行描述,并且可以使用具体的api,对对应功能的sdk进行调用。另外,还可以直接将具体的剪辑功能sdk以及视频合成功能sdk写入页面代码中等方式,以实现在浏览器中对用户的素材添加以及剪辑操作进行响应,以及在在浏览器中执行视频合成。
92.在开发完成具体的视频剪辑合成页面中,用户就可以对具体页面进行访问,并进行具体的视频剪辑合成操作。例如,如图3所示,用户具体在进行剪辑操作时,首先可以将具体的图片、文案、视频等素材上传到媒体资源库,或者,也可以使用系统提供的媒体资源库、特效库,等等。之后,可以创建具体的素材轨道,并选择具体的素材,拖动到具体的素材轨道上,相应的,具体的sdk可以创建出该素材对应的控制条,可以通过在该素材轨道上拖动控制条的位置、对控制条的长度进行缩放等方式,确定出对应的素材在对应画面层级上的出现时间点,以及持续时长。在添加下一物料时,如果需要与上一物料展示在同一画面层级,则可以直接将下一物料拖动到之前创建的素材轨道上,并调整其在轨道上的位置以及长度等。或者,也可以创建新的素材轨道(不同的素材轨道可以对应同一时间轴),从而将该下一物料展示在另一画面层级,在时间上,可以与上一物料有重叠,等等。这样,通过素材轨道可
以实现对多个画面层级的设计,以及在同一画面层级内,对不同物料的出现时间进行设计,等等。从而实现多个不同的物料在时间以及空间维度上的重叠设计,提升视频的展示效果。
93.另外,还可以通过上述素材轨道,对同一画面层级中多个不同视频物料的转场特效的设计。例如,需要在某画面层级中连续播放两端视频,则第一段视频与第二段视频之间还可以在时间轴上存在部分重叠,使得在第一段视频即将结束时,就开始播放第二段视频,以达到转场的效果,等等。
94.再者,需要说明的是,在具体实现时,还可以提供用于提供预览功能的sdk,这样,具体在用户创建素材轨道,并将具体的物料添加到素材轨道上的过程中,还可以提供可视化的预览视频(此时,可以仅将具体的待合成内容转换成视觉画面流,使其能够连续播放,但是尚未生成真正的视频),展示出各项物料在当前设计状态下呈现出的效果。在预览过程中,还可以随时暂停播放,对具体画面中的内容进行拖动等,改变其在具体画面层级中的位置,等等。也就是说,通过素材轨道,只能确定出同一画面层级中有哪些内容,以及各自出现的起始时间、结束时间等,但是,不能确定出同一画面层级中各部分内容分别展示在画面中的什么位置。因此,可以通过前述可视化预览画面的方式,来实现对具体内容在画面中展示位置的调整。
95.总之,通过前述方式,由于可以创建多条素材轨道,因此可以通过所述素材轨道对所添加素材所在的画面层级以及开始、结束时间进行编辑,以便将多种素材在时间和/或空间维度上进行叠加和/或拼接操作。这样,具体添加的素材都可以具有所在的画面层级、开始时间、结束时间、在画面中的位置等信息。其中,如果具体的素材本身也具有连续性信息,例如,视频类的素材,则时间信息还可以有两方面的信息,其中一方面是,该视频在具体轨道对应时间轴上的开始时间以及播放时间,该时间用于确定该视频在最终待合成视频的什么时间段内进行播放;另一方面是,对具体视频的哪个时间段的内容进行播放。例如,某视频共有10秒内容,其中的第3到5秒的内容,需要在待合成视频中的第10到12秒进行播放。则上述“待合成视频中的第10到12秒时间段进行播放”,以及“取当前视频的第3到5秒的内容”等,都可以在该视频的描述信息中体现出来,等等。后续在进行具体的合成处理时,就可以依据这些信息确定每一帧中需要合成的具体内容。
96.其中,关于具体页面中素材轨道的展示样式、位置、操作控件的样式等等,都可以由具体的开发方根据各自的需求进行定制化、个性化的设计。只是在具体响应用户的选择、拖动、剪辑等操作时,可以使用本技术实施例通过对应sdk提供的能力。
97.s202:在根据视频合成请求执行视频合成的过程中,确定待合成视频的总时长;
98.在完成对各种物料的添加以及对物料所在的时间以及空间上的位置等进行设计之后,对于合成工具而言,相当于知道了用户希望具体合成后的视频每一帧画面如何进行呈现,也即,每一帧画面需要通过哪些具体的内容合成在一起,等等。之后,就可以逐帧对具体的待合成内容转换为视觉画面流,并通过录制器进行画面录制。
99.当然,在本技术实施例中,为了提升合成处理的效率,可以进行多线程分段式并行合成。为此,具体实现时,在用户完成对具体物料的添加以及设计之后,还可以首先确定出待合成视频的总时长。具体实现时,在前述通过素材轨道对多份物料进行空间及时间维度上的叠加设计的过程中,由于具体的轨道也对应着时间轴,因此,可以根据各条轨道上添加的物料的时间长度,确定总时长。具体的,由于多个轨道对应的时间轴的起始点都是相同
的,因此,可以将时间最长的轨道对应的时间长度,确定为待合成视频的总时长。
100.s203:根据所述总时长以及目标分段数量,确定多个分段时长,并根据所述多个分段时长,创建多个分段合成任务;
101.在确定出待合成视频的总时长之后,还可以根据目标分段数量,确定出多个分段时长,进而可以根据所述多个分段时长,创建多个分段合成任务。具体的,目标分段数量可以固定设置,或者,也可以由开发者根据实际情况进行设定。当然,在由开发者进行设定的情况下,也可以对支持的最大的分段数量进行设定,开发者可以在适当的范围内进行分段数量的设定。具体实现时,可以在具体的页面代码中设定分段数量,以分段数量为参数,对具体合成sdk进行调用,等等。
102.具体在根据所述总时长以及目标分段数量,确定多个分段时长时,可以有多种方式。例如,如果总时长能够被目标分段数量整除,则可以直接进行整除后,使得每个分段时长都相等。例如,某待合成视频的总时长是100秒,目标分段数量是4,则四个分段的分段时长分别为25秒。
103.如果所述总时长不能被所述目标分段数量整除,则可能会出现每个分段之间的边界处出现丢帧等情况。为了避免出现这种情况,还可以通过对所述多个分段时长进行取整的方式,对分段边界进行处理,以使得所述多个分段时长的总和等于所述总时长。例如,假设某待合成视频的总时长是97秒,目标分段数量是3,则直接用97除以3后,得到的结果是一个无限循环小数:32.333
……
。对于这种情况,可以将三个分段时长分别设定为32,32,33,以使得三个分段时长的相加结果严格等于待合成视频的总时长,等等。
104.在确定出多个分段时长之后,就可以将具体的视频合成任务拆分成多个分段合成任务。例如,在前述三个分段时长分别为32,32,33的情况下,则可以生成三个分段合成任务,其中,任务1用于对第1秒到第32秒的片段进行合成,任务2用于对第33秒到第64秒的片段进行合成,任务3用于对第65秒到第97秒的片段进行合成,等等。
105.s204:通过多线程技术,对所述多个分段合成任务进行并行处理;
106.在确定出多个分段合成任务之后,便可以通过多线程技术,对所述多个分段合成任务进行并行处理。也就是说,可以创建多个线程,每个线程用于处理其中一个分段合成任务,多个线程可以并行处理。例如,在基于浏览器技术实现的方式下,可以基于web

worker的方式,创建多个线程,以用于并行执行多个分段合成任务。其中,web

worker具体可以是在javascript单线程执行的基础上,开启一个子线程,以用于进行程序处理,而不影响主线程的执行,当子线程执行完毕之后再回到主线程上,在这个过程中并不影响主线程的执行过程。
107.其中,每个线程在处理具体分段合成任务时,也可以分别确定出每一图像帧中的待合成内容,然后将其转换成视觉画面流,再交给录制器单元进行录制,以生成具体的视频图像帧。
108.具体实现时,可以通过本技术实施例提供的视频合成功能sdk,实现具体的视频合成任务处理。具体的,在一种实现方式下,该sdk可以基于canvas等实现一套schema(模板,也即用户添加物料并进行剪辑操作后生成的视频设计方案)驱动的视频播放器,每一个时刻都可以对画布进行重绘制。由于用户完成物料添加以及剪辑操作后,每一个物料都可以有开始时间、结束时间、开始播放等时间属性,因此,播放器可以通过这些时间属性决定物
料是否绘制。其中,如图4所示,对于每一个时刻命中播放范围的物料,都可以首先获取其图像资源,然后将其转换成视觉画面流,在canvas上进行绘制。在绘制的过程中,还可以根据schema中的轨道层级关系,决定绘制顺序。例如,先绘制低轨道,再绘制高轨道,高轨道物料在画布上自然覆盖低轨道物料。
109.其中,在一种具体实现方式下,可以基于mediarecorder录制功能,将canvas动画的绘制直接按帧动态输出图片流,基于此录制出真实视频,做到所见(预览屏)即所得(真实视频)。另外,可以利用ffmpeg转码能力,产出一份标准化的视频(例如,可以是mp4等格式)。
110.其中,mediarecorder是提供给开发者一套用于音频或视频录制的api,目前各端都有各自的实现方式,在现代浏览器中可以直接初始化mediarecorder实例,它的核心输入是stream(流),结合capturestream(获取流),可以有效地将canvas动画录制为一段真实的视频,这也是在浏览器中将模板转化为真实视频的具体实现方案。
111.ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源多媒体视频处理工具。ffmpeg有非常强大的功能,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。本技术实施例中,主要用它来做音视频分解、转码以及视频合成。
112.这里需要说明的是,在具体进行视频合成的过程中,由于是逐帧合成,为了确定具体何时对画面进行更新,还需要依赖一个刷新机制。也即,可以通过一个周期性发生的事件,来触发对下一帧画面的更新。也就是说,在将一个图像帧的待合成内容转换成视觉画面流,并将其交给录制器生成具体的视频帧之后,需要等待下一周期的触发事件发生时,才会进行下一视频帧的生成,以使得视频画面被更新。
113.在基于浏览器技术进行视频合成的方式下,一种实现方式是,可以直接依赖浏览器的刷新机制,进行画面的更新。也就是说,可以监听浏览器的刷新事件,在监听到下一周期的浏览器刷新事件时,可以对合成视频的画面进行更新。但是,这种方式可能出现以下问题:由于切换到其他标签页,或者,将浏览器窗口进行最小化等操作之后,浏览器的刷新机制就会被冻结,此时,就无法为视频合成过程提供刷新机制。这就导致,在浏览器中执行具体的视频合成的过程中,需要用户一直在当前页面中等待,不能切换到其他标签页,也不能对浏览器进行最小化等操作。
114.为了避免这种情况,本技术实施例还提供了改进的方式。具体的,本技术实施例可以不必依赖浏览器自身的刷新机制,而是可以基于浏览器技术创建音频节点,通过该音频节点进行周期性的播放目标声音,在优选的实施方式下,还可以将该目标声音的音量增益设为0,以避免对用户造成干扰。这样,可以将该音频节点作为视频合成过程中依赖的刷新机制。也就是说,可以对该周期性播放目标声音的事件进行监听,在下一次播放该目标声音时,就可以执行画面刷新操作,等等。这样,由于上述音频节点不会由于页面切换、浏览器最小化等而冻结,只要程序中不主动结束该音频节点,或者用户没有执行关机等操作,音频节点就会一直周期性的播放目标声音,因此,在合成视频的过程中,用户可以自由地去执行切换页面、将浏览器最小化等操作,从而提升用户体验。
115.具体实现时,利用web audio api开启音频结点,制作一个音量为0的结点来模拟硬件定时器,从而精准地控制所有像素运算的周期,并保证不会受浏览器未激活状态的影响。其中,web audio api本身的功能很强大,通常可以与麦克风等硬件结合,实时采集真实音频并对相应的各音频结点做处理,包括音频特效、剪辑等系列操作。本技术实施例中选择
该api的主要原因是,使用这个api,时间可以被非常精确地控制,几乎没有延迟,这样开发人员可以准确地控制时间。
116.另外,针对未激活状态下,视频播放10s左右可能会画面静止的极端情况(无任何钩子可以透传给开发者),还可以定时对视频进行重加载并同步到之前记录的最新播放进度,同时暂停录制器,直到视频加载成功获取视频第一帧后。
117.需要说明的是,上述并行执行的多个分段合成任务,主要是对视频画面内容的合成,在具体实现时,由于最终生成的视频中还可能存在音频内容,而音频内容是整段的,因此,可以整段操作,不需要进行逐帧渲染合成。因此,在具体实现时,还可以从用户设计的视频合成方案中,将音频部分抽离出来进行单独录制。具体的,可以检测视频描述结构中,是否添加了音频,或者具体的视频素材是否带有声音,如果有,则可以分离出来,根据具体分离出的音频所在的层级、先后顺序等,进行叠加录制,得到音频录制结果。具体的,该录制过程也可以是与各分段合成任务并行执行的。
118.s205:通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。
119.在完成多个分段合成任务之后,如图5所示,可以将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,如果还存在单独录制的音频录制结果,则还可以将音频录制结果合成进去,生成最终的视频合成结果。
120.总之,通过本技术实施例,在由视频合成方案(schema)驱动的视频合成任务执行过程中,可以根据待合成视频的总时长,以及目标分段数量,将具体的视频合成任务划分为多个分段合成任务。这样,可以通过多线程技术,对所述多个分段合成任务进行并行处理,然后,通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。通过这种方式,由于可以进行多线程分段式并行合成,因此,可以提升视频合成效率,缩短视频合成所需的时间。
121.其中,具体的视频合成方案可以是由用户通过视频剪辑合成界面进行素材添加以及剪辑操作后生成的。具体的视频剪辑合成界面可以是基于浏览器技术生成并展示的web页面,并且可以直接浏览器中对用户的素材添加以及剪辑操作进行响应,以及在在浏览器中执行视频合成,以此节省开发方的服务成本。
122.本技术实施例还可以为具体开发方提供基于浏览器技术的剪辑功能sdk、视频合成功能sdk,以及结构体描述协议。这样,开发方在具体进行视频剪辑合成界面开发时,由于具体的剪辑功能、合成功能等,则可以由统一的sdk来实现,因此,开发方可以专注于对具体视频剪辑合成界面的样式、前置后置链路等进行设计,孵化出更多的产品形态,共同建设web视频剪辑生态。
123.实施例二
124.该实施例二主要从能力(也即具体的sdk、结构体描述协议等)提供方的角度,提供了一种视频剪辑合成方法,参见图6,该方法可以包括:
125.s601:向多个开发方提供基于浏览器技术的软件开发工具包sdk及其应用程序编程接口api,以及结构体描述协议,所述sdk包括用于提供视频剪辑功能的sdk及视频合成功能的sdk,以便所述开发方利用所述api以及结构体描述协议,开发基于浏览器进行展示的视频剪辑合成页面,并将所述sdk写入页面代码中;
126.s602:在向用户展示所述视频剪辑合成页面的过程中,通过所述视频剪辑功能的sdk,在浏览器中响应所述用户的添加素材以及剪辑操作;
127.s603:接收到视频合成请求后,通过所述视频合成功能的sdk,在浏览器中进行视频合成处理。
128.具体的,所述sdk还可以包括用于提供预览功能的sdk,此时,还可以在响应所述用户的添加素材以及剪辑操作的过程中,通过所述预览功能的sdk,提供视频画面预览内容,以便进行基于视频画面进行可视化剪辑。
129.具体的,在浏览器中进行视频合成处理时,可以根据所述用户的添加素材以及剪辑操作,确定待合成视频中的多帧图像分别对应的多份待合成内容,以便对待合成视频进行逐帧录制;其中,在进行当前图像帧的录制时,将当前图像帧对应的多份待合成内容分别转换为视觉画面流,并提供给录制器单元进行当前图像帧的录制。
130.另外,具体实现时,具体的sdk在提供的视频合成能力时,还可以采用实施例一所述的多线程分段式并行合成方案,以此提升合成效率。例如,具体的,首先可以根据所述用户的添加素材以及剪辑操作,确定待合成视频的总时长;然后,根据所述总时长以及目标分段数量,确定多个分段时长,并根据所述多个分段时长,创建多个分段合成任务;之后,可以通过浏览器多线程技术,对所述多个分段合成任务进行并行处理;最后,通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。
131.具体的,所述视频合成功能的sdk对应的api还可以关联有分段数量参数,以便由所述开发方根据实际需求指定所述目标分段数量。
132.关于该实施例二中的未详述部分,可以参见实施例一中的记载,这里不再赘述。
133.需要说明的是,本技术实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如,用户明确同意,对用户切实通知,等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
134.与前述实施例一相对应,本技术实施例还提供了一种视频剪辑合成装置,参见图7,该装置具体可以包括:
135.视频合成方案确定单元701,用于通过视频剪辑合成界面接收用户的素材添加以及剪辑操作,并确定视频合成方案,所述视频合成方案中包括待合成视频中多个图像帧的待合成内容;
136.总时长确定单元702,用于在根据视频合成请求执行视频合成的过程中,确定待合成视频的总时长;
137.分段合成任务创建单元703,用于根据所述总时长以及目标分段数量,确定多个分段时长,并根据所述多个分段时长,创建多个分段合成任务;
138.并行处理单元704,用于通过多线程技术,对所述多个分段合成任务进行并行处理;
139.拼接渲染单元705,用于通过将所述多个分段合成任务分别对应的分段合成结果进行拼接渲染,输出视频合成结果。
140.其中,所述视频剪辑合成界面是基于浏览器技术生成并展示的,并在浏览器中对用户的素材添加以及剪辑操作进行响应,以及在在浏览器中执行视频合成。
141.所述视频剪辑合成页面的页面代码中包括sdk,所述sdk用于为所述视频剪辑合成
页面提供视频剪辑功能及视频合成功能;所述sdk为多个开发方所公用。
142.具体的,该装置还可以包括:
143.音频节点创建单元,用于在接收到合成请求后,基于浏览器技术创建音频节点,所述音频节点用于周期性的播放目标声音,以作为视频合成过程中依赖的刷新机制。
144.所述分段合成任务创建单元具体可以用于:
145.如果所述总时长不能被所述分段数量整除,则通过对所述多个分段时长进行取整的方式,对分段边界进行处理,以使得所述多个分段时长的总和等于所述总时长。
146.具体的,所述剪辑操作包括:创建多条素材轨道,并通过所述素材轨道对所添加素材所在的画面层级以及开始、结束时间进行编辑,以便将多种素材在时间和/或空间维度上进行叠加和/或拼接操作。
147.另外,该装置还可以包括:
148.预览单元,用于在响应所述用户的添加素材以及剪辑操作的过程中,提供视频画面预览内容,以便进行基于预览的视频画面,对素材内容在画面中的位置进行可视化剪辑。
149.另外,本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。
150.以及一种电子设备,包括:
151.一个或多个处理器;以及
152.与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述方法实施例中任一项所述的方法的步骤。
153.其中,图8示例性的展示出了电子设备的架构,具体可以包括处理器810,视频显示适配器811,磁盘驱动器812,输入/输出接口813,网络接口814,以及存储器820。上述处理器810、视频显示适配器811、磁盘驱动器812、输入/输出接口813、网络接口814,与存储器820之间可以通过通信总线830进行通信连接。
154.其中,处理器810可以采用通用的cpu(central processing unit,处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本技术所提供的技术方案。
155.存储器820可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器820可以存储用于控制电子设备800运行的操作系统821,用于控制电子设备800的低级别操作的基本输入输出系统(bios)。另外,还可以存储网页浏览器823,数据存储管理系统824,以及视频剪辑合成系统825等等。上述视频剪辑合成系统825就可以是本技术实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本技术所提供的技术方案时,相关的程序代码保存在存储器820中,并由处理器810来调用执行。
156.输入/输出接口813用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
157.网络接口814用于连接通信模块(图中未示出),以实现本设备与其他设备的通信
交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
158.总线830包括一通路,在设备的各个组件(例如处理器810、视频显示适配器811、磁盘驱动器812、输入/输出接口813、网络接口814,与存储器820)之间传输信息。
159.需要说明的是,尽管上述设备仅示出了处理器810、视频显示适配器811、磁盘驱动器812、输入/输出接口813、网络接口814,存储器820,总线830等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本技术方案所必需的组件,而不必包含图中所示的全部组件。
160.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。
161.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
162.以上对本技术所提供的视频剪辑合成方法及电子设备,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献