素材合成方法和装置、电子设备、存储介质与流程

文档序号:33129491发布日期:2023-02-01 07:18阅读:73来源:国知局
素材合成方法和装置、电子设备、存储介质与流程

1.本技术涉及广告技术领域,尤其涉及一种素材合成方法和装置、电子设备、存储介质。


背景技术:

2.ctv(connected tv,智能联网电视)是指能连接到互联网的电视,包括智能电视设备、游戏机,以及视频流媒体服务。随着互联网技术的不断升级,ctv逐渐成为主流的广告投放平台,广告主对于ctv上投放的需求逐渐增多,但相关技术中的广告素材的合成方式,需要大量人力手动合成,无法快速生产广告。
3.针对上述相关技术中由于广告素材需要大量人力手动合成,造成无法快速生产广告的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本技术提供了一种素材合成方法和装置、电子设备、存储介质,以至少解决相关技术中由于广告素材需要大量人力手动合成,造成无法快速生产广告的技术问题。
5.根据本技术实施例的一个方面,提供了一种素材合成方法,包括:获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材;为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用挂载在全局对象上的目标构建方案;按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件。
6.根据本技术实施例的另一方面,还提供了一种素材合成装置,包括:
7.获取模块,用于获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材;
8.生成模块,用于为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用挂载在全局对象上的目标构建方案;
9.合成模块,用于按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件。
10.根据本技术实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
11.根据本技术实施例的另一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方
法。
12.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法中任一实施例的步骤。
13.在本技术实施例中,采用获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材;为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用目标构建方案;按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件的方式,通过将构建方案挂载在全局对象上,为素材合成请求生成浏览器实例并加载素材页面,根据素材合成请求中的每个子请求在目标素材页面中实现目标构建方案的调用,将目标素材合成为目标文件,可以实现广告素材的自动合成,为广告素材合成提供了能够跨端调用的后端服务,达到了快速生产广告的目的,从而解决了由于广告素材需要大量人力手动合成,造成无法快速生产广告的技术问题。
附图说明
14.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
15.图1是puppeteer架构图;
16.图2是根据本技术实施例的素材合成方法的硬件环境的示意图;
17.图3是根据本技术实施例的一种可选的素材合成方法的流程图;
18.图4是根据本技术实施例的一种可选的静态图片合成方法的流程图;
19.图5是根据本技术实施例的一种可选的素材合成服务的示意图;
20.图6是根据本技术实施例的一种可选的素材合成装置的示意图;以及,
21.图7是根据本技术实施例的一种电子设备的结构示意图。
具体实施方式
22.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
23.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
24.首先,在对本技术实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
25.javascript,简称“js”,是运行在客户端的脚本语言,是一种具有函数优先的轻量级、解释型或即时编译型的编程语言,已经被广泛用于web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
26.全局对象(global object)是预定义的对象,作为javascript的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。在浏览器javascript中,通常window是全局对象,而node.js(运行于服务端的javascript解释器)中的全局对象是global。
27.puppeteer,是一个通过devtools协议控制无界面(headless)chrome的node库。puppeteer提供了高级的api并通过devtools协议来控制chrome(或chromium),通俗来说就是一个headless chrome浏览器,它可以生成网页截图或者pdf、抓取单页应用(spa)执行并渲染、做表单的自动提交等。如图1所示为puppeteer架构图,puppeteer使用devtools协议与browser进行通信;browser是一个可以拥有多个页面的浏览器(chroium)实例;page是至少含有一个frame的页面;frame是至少含有一个用于执行javascript的执行环境,也可以拓展多个执行环境。
28.根据本技术实施例的一方面,提供了一种素材合成的方法实施例。
29.可选地,在本实施例中,上述素材合成方法可以应用于如图2所示的由终端101和服务器103所构成的硬件环境中。如图2所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如广告合成服务、素材合成服务等),可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于pc、手机、平板电脑等。本技术实施例的素材合成方法可以由服务器103来执行,也可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本技术实施例的素材合成方法也可以是由安装在其上的客户端来执行。后续以在服务器上执行本技术实施例的一种素材合成方法为例进行说明。
30.图3是根据本技术实施例的一种可选的素材合成方法的流程图,如图3所示,该方法可以包括以下步骤:
31.步骤s202,获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材;
32.步骤s204,为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用挂载在全局对象上的目标构建方案;
33.步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件。
34.通过上述步骤s202至步骤s206,通过将构建方案挂载在全局对象上,为素材合成
请求生成浏览器实例并加载素材页面,根据素材合成请求中的每个子请求在目标素材页面中实现目标构建方案的调用,将目标素材合成为目标文件,可以实现广告素材的自动合成,为广告素材合成提供了能够跨端调用的后端服务,达到了快速生产广告的目的,从而解决了由于广告素材需要大量人力手动合成,造成无法快速生产广告的技术问题。
35.本技术可以应用在包括但不限于广告自动生成、海报自动生成、表情包自动合成等的场景中。
36.在步骤s202提供的技术方案中,服务器获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材。
37.服务器获取目标素材合成请求的方式不限,采用本技术的素材合成方法的素材合成服务可以运行在服务器中,调用该素材合成服务的调用方,可以在调用素材合成服务的接口api时,传入素材合成请求。素材合成服务的调用方仅需要将素材合成请求传入接口api,就能够得到素材合成服务对素材进行合成后的结果,无需对素材进行手动合成。
38.上述目标素材合成请求可以包括一个或多个子请求,每个子请求对应一个素材合成任务,每个素材合成任务用于将一个目标素材合成为一个目标文件。
39.目标素材的形式和内容不限,每个目标素材中可以包括一个或多个素材图片,还可以包括一个或多个素材文本,也可以包括其他信息。
40.在步骤s204提供的技术方案中,服务器为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用挂载在全局对象上的目标构建方案。
41.可选地,服务器可以通过puppeteer为目标素材合成请求生成目标浏览器实例:调用puppeteer的puppeteer.launch(即每次都启动一个浏览器实例的方法),创建一个browser实例(即目标浏览器实例)
42.可选地,服务器也可以通过其他方式生成目标浏览器实例,例如,采用selenium(web应用程序的自动化测试工具)创建浏览器实例。
43.通过生成浏览器实例,可以在服务端使用浏览器的一些方法,例如,获取浏览器的window属性。一个浏览器实例可以拥有多个页面。
44.在浏览器环境中,全局对象是window对象,这意味着任何创建的全局变量都是window对象的属性。
45.上述目标构建方案可以是在window上挂载的一个全局构建方案,全局构建方案是用于将目标素材构建成目标文件的方案,具体地,全局构建方案可以是通过一个javascript环境的sdk(software development kit,软件开发工具包)实现的方案,目标素材页面即为加载了目标构建方案的sdk的页面。
46.全局构建方案的功能不限,可以根据实际需要进行设置,可以是将素材合成为动画文件的构建方案,也可以是将素材合成为静态图片文件的构建方案,还可以是将素材合成为网页文件的构建方案。
47.全局构建方案的数量可以为一个或多个。在全局构建方案的数量为一个的情况下,只能将这个全局构建方案作为目标构建方案,浏览器实例可以只加载一个目标素材页面,该目标素材页面用于调用目标构建方案;浏览器实例也可以加载多个素材页面,每个素
材页面都用于调用该目标构建方案。
48.浏览器实例可以加载出多个素材页面,不同素材页面用于调用的全局构建方案可以相同,也可以不同。例如,目标浏览器实例用于加载出目标素材页面a、目标素材页面b、目标素材页面c,其中,目标素材页面a用于调用目标构建方案a,目标素材页面b用于调用目标构建方案b,目标素材页面c用于调用目标构建方案a。若某个全局构建方案是比较常用的方案,可以在多个素材页面中都加载该全局构建方案的sdk,以提高素材合成的效率。
49.在步骤s206提供的技术方案中,服务器按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件。
50.可选地,在全局构建方案的数量为一个的情况下,只能使用这个全局构建方案作为目标构建方案进行素材合成,则子请求中可以不包含用于指示构建方案的方案信息。
51.可选地,在全局构建方案为多个的情况下,每个子请求中包含用于指示构建方案的方案信息,如,方案标识、方案名称等,服务器可以通过子请求中的方案信息从所有全局构建方案中找到唯一对应的目标构建方案。
52.对于每个子请求,服务器按照子请求所指示的目标构建方案,可以在浏览器实例加载出的所有素材页面中,找到用于调用该目标构建方案的任一个目标素材页面,从而通过该目标素材页面对该子请求指示的目标素材进行合成处理,得到目标文件。例如,目标素材合成请求包括子请求01和子请求02,目标浏览器实例加载出多个目标素材页面,其中,目标素材页面a用于调用目标构建方案a,目标素材页面b用于调用目标构建方案b,目标素材页面c用于调用目标构建方案a;子请求01中的方案标识为a,则可以通过目标素材页面a或目标素材页面c对子请求01指示的目标素材01进行合成处理,得到目标素材01对应的目标文件01;子请求02中的方案标识为b,则可以通过目标素材页面b对子请求02指示的目标素材02进行合成处理,得到目标素材02对应的目标文件02。
53.服务器可以通过浏览器实例加载出的多个目标素材页面,同时对多个子请求进行处理,得到多个目标文件,同步执行多个素材合成任务,从而能够快速合成大批量的素材。
54.作为一种可选的实施例,在通过目标浏览器实例加载出多个目标素材页面的情况下,步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件,包括如下所述的步骤:
55.步骤s1,在多个目标素材页面中,按照指定子请求中指示的指定构建方案以及预设对应关系,确定出与指定子请求对应的指定素材页面,其中,每个目标素材页面用于调用一个唯一对应的目标构建方案,指定子请求为至少一个子请求中的任一个,预设对应关系用于指示目标素材页面与目标构建方案之间的对应关系;
56.步骤s2,将指定子请求对应的指定素材传入指定素材页面中;
57.步骤s3,在指定素材页面调用指定构建方案对指定素材进行处理后,得到由指定素材合成的指定文件,其中,指定文件为所有目标文件中的一个。
58.目标素材页面与目标构建方案之间的对应关系可以是一一对应的,也可以是多个
目标素材页面与同一个目标构建方案对应。
59.在指定子请求中指示的指定构建方案有多个对应的目标素材页面的情况下,可以在指定构建方案对应的多个目标素材页面中确定一个作为指定素材页面,确定的方式有多种,如,按照预设顺序确定、随机确定。
60.例如,数据库中保存有构建方案与素材页面的对应关系,目标构建方案a对应目标素材页面a和目标素材页面d,目标构建方案b对应目标素材页面b,目标构建方案c对应目标素材页面c;指定子请求中指示的指定构建方案为目标构建方案a,可以在目标素材页面a和目标素材页面d中,按照编号的先后,将目标素材页面a确定为指定素材页面。
61.通过上述步骤s1至s3,按照目标素材页面与目标构建方案之间的预设对应关系,为目标素材合成请求中的每个子请求找到对应的目标素材页面,多个目标素材页面可以分别对不同的子请求进行处理,可以同时进行多个素材处理任务,批量进行素材合成。
62.作为一种可选的实施例,目标构建方案包括至少一个动态合成方案,步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件,包括如下所述的步骤:
63.步骤s11,按照第一子请求所指示的目标动态合成方案,从多个目标素材页面中确定出与目标动态合成方案对应的第一目标素材页面,其中,至少一个子请求包括第一子请求,第一子请求用于将第一目标素材合成为动画文件;
64.步骤s12,将第一子请求中的素材参数所指示的第一目标素材传入第一目标素材页面;
65.步骤s13,通过第一目标素材页面调用目标动态合成方案对第一目标素材进行目标操作,得到作为目标文件的目标动画文件,其中,目标操作包括按照预设动画效果对第一目标素材进行动画渲染。
66.预设动画效果的形式不受限制,可以是对静态图片的翻页动画、旋转动画等,也可以是加入其它动画元素的动画效果,如,加入下雪场景中飘落的雪花,还可以是多种形式的动画效果的结合。
67.可选地,在本实施例中,目标动画文件可以为gif格式的文件,gif作为一种广泛使用的图片文件格式,大部分展示终端都能够支持gif格式的文件的展示,具有良好的通用性,避免在展示目标动画文件时出现播放卡顿、不清晰等问题。
68.可选地,在本实施例中,目标操作还可以包括在按照预设动画效果对第一目标素材进行动画渲染后得到的文件进行定时抽帧,得到目标动画文件(如,目标gif文件),减小目标动画文件的数据量,使得目标动画文件播放更流畅。
69.作为一种可选的实施例,目标构建方案包括至少一个静态合成方案,步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件,包括如下所述的步骤:
70.步骤s21,按照第二子请求所指示的目标静态合成方案,从多个目标素材页面中确定出与目标静态合成方案对应的第二目标素材页面,其中,至少一个子请求包括第二子请求,第二子请求用于将第二目标素材合成为静态图片文件;
71.步骤s22,将第二子请求中的素材参数所指示的第二目标素材传入第二目标素材页面;
72.步骤s23,在第二目标素材页面中,通过目标静态合成方案执行以下操作:从第二目标素材中选取目标元素,对目标元素进行图像绘制,并将绘制得到的目标图像转换为第二目标文件,其中,第二目标文件是采用字符编码表示目标图像的文件。
73.可选地,在本实施例中,第二目标素材可以在第二目标素材页面中用html地址表示,通过在第二目标素材页面中选取html元素(即目标元素),使用页面生成图片插件(html2canvas插件)对html元素进行绘制,转为canvas元素(即目标图像),并将canvas元素转换为base64编码。
74.通过该目标静态合成方案,实现了静态html转canvas的功能,同时将canvas转换为base64编码,进而实现base64编码图片的上传功能。
75.将html转canvas,有以下优点:

canvas更准确的还原html中dom的表现;

性能高,可以自己控制绘制过程,还能使用webgl;

可控性高,像素级控制;

内存占用少。
76.将canvas转base64的主要优点:

网页中使用base64格式的图片(base64相当于本地的文件,可以直接读取)时,不用再请求服务器调用图片资源,减少了服务器访问次数;

采用base64的图片随着页面一起下载,因此不会存在跨域请求的问题(base64就是一种资源格式,以字符编码的形式表示一个文件,相当于已经存在于代码中了)

base64格式的图片是文本格式,占用内存小,转换后的大小比例大概为1/3,降低了资源服务器的消耗。
77.静态合成方案还可以包括其他形式的方案,不受上述举例的限制,例如,按照预设规则将多个文案合成为一张jpg格式的图片的方案。
78.作为一种可选的实施例,在步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件之前,该方法还包括如下所述的步骤:
79.步骤s101,对于目标素材合成请求中每个子请求,按照子请求中的方案标识,校验子请求中的素材参数是否符合与方案标识指示的目标构建方案对应的预设要求,并得到子校验结果,其中,素材参数包括素材地址和/或素材信息;
80.步骤s102,在所有子校验结果指示目标素材合成请求中每个子请求中的素材参数均符合预设要求的情况下,生成与目标素材合成请求唯一对应的目标请求标识,并将目标请求标识存入数据库中的请求表;
81.步骤s103,将目标素材合成请求中的每个子请求对应的素材信息存入数据库的素材表中,其中,每个素材信息包括方案标识和素材参数。
82.为了提高素材合成的效率和素材合成服务的用户体验,服务器可以在获取到目标合成请求时对其中的每个子请求进行参数校验,校验规则可以根据实际需要设置,例如,子请求中的素材参数不能为空。
83.可选地,在本实施例中,可以为不同的构建方案设置不同的校验规则,例如,目标动态合成方案对应的校验规则为素材参数中的素材地址必须为base64地址,目标静态合成方案对应的校验规则为素材参数中的素材地址必须为html地址。
84.可选地,在本实施例中,在目标素材合成请求中存在至少一个子请求中的素材参
数不符合预设要求的情况下,向素材合成服务的调用方(通过接口api传入目标素材合成请求的一方)返回提示信息,提示信息用于提示调用方修改目标素材合成请求,以使目标素材合成请求符合预设要求。
85.服务器可以通过为每个素材合成请求生成一个浏览器实例,实现为不同的素材合成请求提供素材合成服务,上述请求表是数据库中用于记录每个素材合成请求的信息和执行情况的列表,可以包括素材合成请求id、素材合成请求方信息、素材合成请求的执行结果等,上述素材表是数据库中用于记录每个素材合成请求中的每个子请求的信息和处理情况的列表,可以包括素材合成请求id、子请求id、子请求中用于指示构建方案的方案id、子请求中用于指示目标素材的素材参数等。
86.可选地,在本实施例中,步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件,包括如下所述的步骤:
87.步骤s31,按照每个素材信息存入素材表的先后顺序、每个素材信息中的方案标识以及所有目标素材页面中的可用素材页面,确定出每个可用素材页面对应的当前素材信息,其中,每个可用素材页面用于调用每个可用素材页面对应的当前素材信息中方案标识所指示的当前构建方案;
88.步骤s32,在所有可用素材页面中进行并发的素材处理操作,包括按照如下方式对每个可用素材页面对应的当前素材信息进行素材处理操作:将当前素材信息所指示的当前目标素材传入可用素材页面,通过可用素材页面调用当前构建方案对当前目标素材进行处理,得到与当前素材信息对应的处理结果,并将当前素材信息对应的处理结果存入素材表中,其中,处理结果用于指示与素材信息对应的素材处理操作已执行完毕;
89.步骤s33,在对每个素材信息执行素材处理操作之后,按照素材信息与目标请求标识之间的对应关系,在请求表中生成与目标请求标识对应的执行结果,其中,执行结果用于指示请求标识对应的素材合成请求已执行完毕;
90.步骤s34,关闭目标浏览器实例。
91.可选地,在本实施例中,可以设置素材生产队列和等待队列,对素材生产队列中的子请求进行并发的素材处理操作,其余子请求在等待队列。
92.例如,目标浏览器实例加载出4个目标素材页面:目标素材页面a(用于调用目标构建方案a)、目标素材页面b(用于调用目标构建方案b),目标素材页面c(用于调用目标构建方案c),目标素材页面d(用于调用目标构建方案c)。目标素材合成请求中包括6个子请求,按照如下顺序存入素材表:子请求01(方案标识为a)、子请求02(方案标识为b)、子请求03(方案标识为c)、子请求04(方案标识为c)、子请求05(方案标识为c)、子请求06(方案标识为a)。首先,将子请求01、子请求02、子请求03、子请求04加入素材生产队列,在目标素材页面a对子请求01的素材信息执行素材处理操作,在目标素材页面b对子请求02的素材信息执行素材处理操作,在目标素材页面c对子请求03的素材信息执行素材处理操作,在目标素材页面d对子请求04的素材信息执行素材处理操作;此时目标浏览器实例中已经没有可用素材页面了,子请求05、子请求06在等待队列等待;子请求05待目标素材页面c或目标素材页面d中的素材处理操作完成后,加入素材生产队列,子请求06待目标素材页面a中的素材处理操
作完成后,加入素材生产队列。
93.请求表中可以包括用于记录每个素材合成请求的执行情况的信息,例如,在目标素材合成请求中存在至少一个子请求加入生产队列时,在请求表中为目标素材合成请求记录开始执行信息,在目标素材合成请求中所有子请求完成素材处理操作后,在请求表中为目标素材合成请求记录完成执行信息(如,执行结果)。从而可以通过请求表中记录的信息,确定请求表中所有素材合成请求的执行情况。
94.可选地,在本实施例中,在步骤s31,按照每个素材信息存入素材表的先后顺序、每个素材信息中的方案标识以及所有目标素材页面中的可用素材页面,确定出每个可用素材页面对应的当前素材信息之后,该方法还包括:
95.步骤s41,在执行素材处理操作的服务器从中断中恢复,且请求表中不存在与目标请求标识对应的执行结果的情况下,确定目标请求标识对应的目标素材合成请求未执行完毕;
96.步骤s42,将素材表中不存在处理结果的素材信息确定为所有素材信息中未完成素材处理操作的未完成素材信息;
97.步骤s43,继续在所有可用素材页面中进行并发的素材处理操作,直至所有未完成素材信息对应的素材处理操作均已执行完毕。
98.在服务器从中断中恢复的情况下,需要检查中断时正在进行的素材合成请求,可以通过请求表中记录的信息,确定请求表中所有素材合成请求中,中断时正在进行的素材合成请求,可以通过素材表中记录的信息,确定素材表中该素材合成请求的所有子请求中,未完成的子请求。
99.作为一种可选的实施例,下文结合具体实施方式示意性的描述本技术的技术方案:
100.由于近几年互联网电视行业(connected tv)简称ctv,在整个电视广告业中的市场份额逐步增加,ctv的流量逐渐增多,相应的ctv广告流量变现成为广告重要的收入来源,相应的广告主对于素材的投放有了更多由“静”到“动”的诉求。目前ctv上投放的广告主要是静态h5(即没有任何动画效果的页面),越来越多的广告主希望投放动态的广告,例如动态h5,但要想实现动态h5的投放需求,需要对动态h5进行拆解,并按帧对h5播放进行录屏,生产出视频进行投放,这种方式有以下弊端:

视频广告的文件较大,

加载慢,且不清晰,影响用户体验,

ctv低版本对h5本身支持度低,即低版本上存在无法加载h5的问题。那么对于广告素材生成来说,需要克服ctv上对于h5支持低,例如一些低版本的安卓,无法正常渲染展示h5、生产动态h5需要录屏,且录屏会出现播放卡顿、播放素材不清晰等问题,无法完美的实现动态h5。
101.另外,在广告目前的多种展现形式(大多以图片或h5为主)中,ctv对图片广告有良好的支持,因此提出使用图片广告代替h5,这不仅仅因为ctv上对于图片广告有较好的支持,还因为图片比h5有更好的性能,进而有更好的用户体验,而且图片天然的支持静态图片和动态图片(gif)这两种图片类型。但图片广告依赖广告信息的拼接,需要耗费大量人力资源手动合成广告素材。现有的合成广告素材的方式,不仅需要大量人力手动合成,且还有以下弊端:

无法定时抽帧生成合成的gif格式的广告,

无法监听素材构建、合成事件,无法给用户侧同步实时合成状态,

合成图片失败时,无法添加相应的报警提示。
102.针对以上问题,需要一种基于素材与广告信息组合来实现广告合成的服务,利用无头浏览器puppeteer headless处理服务的构建、合成等功能,对于用户侧仅需要调用接口,传入素材内容相关的参数,素材合成服务会自动触发素材合成的构建任务,帮助用户批量快速合成广告素材,实现广告批量生产及快速投放。
103.本方案首先需要构建通用素材模板,然后基于无头浏览器来实现接口服务,用户通过传入广告信息注册构建事件。无头浏览器监听到构建事件时,开始渲染素材动画,并且定时抽帧生成合成的gif素材。构建结束后上传素材并回传构建结果,并通知用户侧。用户也可以批量发起构建任务,实现广告素材的批量生产投放,可有效节约人力合成成本。由于图片素材合成是同步任务,用户需要等待数秒后才能等到结果,因此利用puppeteer headless浏览器来实现后端服务,处理素材抽帧、合成、实时同步用户侧状态以及报警等处理。
104.一、后台服务(即素材合成的后台服务,具体来说,素材合成服务其实就是一个部署在服务器的一个api接口,通过调用接口,从而合成素材)
105.1、启动后端接口,注册puppeteer事件:调用puppeteer的launch方法,该方法的作用是生成一个browser实例,从而可以在服务端使用浏览器的一些方法,例如获取浏览器的window属性。
106.2、入参模板地址以及模板参数,启动无头浏览器:由于素材合成服务是运行在后台服务器中的,对于调用方来说就是调用一个接口api,从而进行gif合成的,那么入参模板地址以及模板参数,就是调用方在调用接口api的时候传入的。
107.3、调用全局构建方法(如,window.lp.buildcreative,这个方法是素材合成服务中的一个方法。该方法是挂载在window上,该方法的作用是用于构建gif素材的,即将接口传入的素材,构建成gif的格式。)
108.4、等待构建结果,并做后续处理:构建成功后,会关闭初始化所注册的puppeteer实例,即关闭无头浏览器,销毁该实例。
109.二、全局模版构建(全局构建模板是一个sdk,是一个js文件,这个sdk是会在素材模板中通过加载script标签加载的,加载了这个sdk后,页面上就会有buildcreative等的构建方法。)
110.1、注册全局对象,并注册对应构建事件。
111.2、嵌入与素材模板对应素材合成文件(即一个素材模板可以是将素材转换成gif的形式,那么需要嵌入生成gif文件的sdk,或者是将素材转换成html的形式,那么需要嵌入生成html文件的sdk),并且通过postmessage传递构建信息(postmessage是浏览器窗口之间通信的方式,后台服务会使用无头浏览器打开素材模板的页面,页面上又引入了全局构建模板sdk,在服务器中会调用sdk中window.lp.buildcreative方法,当sdk中该方法执行完成,会通过postmessage给页面发送一个消息)。
112.3、监听构建结果:全局构建模板sdk监听自己构建的结果。
113.4、全局对象接受构建结果,等待无头浏览器监听。
114.三、素材模板(素材模板是一个素材模板的页面,页面中加载了全局构建模板的sdk。)
115.1、监听构建事件,调用素材模板构建方法:即素材模板监听到
window.lp.buildcreative方法的执行。
116.2、渲染素材动画,抽帧生成gif文件:动画效果是写入在sdk中的,调用构建方法,同时也会加入动画。
117.3、上传gif文件,回传上传结果
118.四、具体合成方案
119.1、静态图片合成服务(如图4所示是根据本技术实施例的一种可选的静态图片合成方法的流程图,静态图片合成方法是素材合成服务中一个具体的素材合成方法。)
120.a)入参(html地址)前置校验:入参所传递的素材地址不能为空。
121.b)在素材模板中选取html元素,将素材模板中的元素进行绘制,转换为canvas元素,需要通过元素的id进行选取。
122.c)使用页面生成图片插件(html2canvas插件)将html元素转换为canvas元素(canvas用于在网页上绘制图形)。
123.d)将canvas元素转化为base64编码。
124.e)图片上传。
125.静态图片合成服务主要实现了静态html转canvas的功能,同时将canvas转换为base64编码,进而实现base64编码图片的上传功能。将html转canvas,有以下优点:

canvas更准确的还原html中dom的表现;

性能高,可以自己控制绘制过程,还能使用webgl;

可控性高,像素级控制;

内存占用少。将canvas转base64的主要优点:

网页中使用base64格式的图片(base64相当于本地的文件,可以直接读取)时,不用再请求服务器调用图片资源,减少了服务器访问次数;

采用base64的图片随着页面一起下载,因此不会存在跨域请求的问题(base64就是一种资源格式,以字符编码的形式表示一个文件,相当于已经存在于代码中了)

base64格式的图片是文本格式,占用内存小,转换后的大小比例大概为1/3,降低了资源服务器的消耗。
126.2、动态图片合成服务(gif合成)
127.(1)后台服务
128.1)请求接口
129.a)定义接口请求方式、请求数据模板、返回方式:接口通常要定义好自己的请求方式,例如get、post请求,一个接口需要知道使用get还是post进行请求,请求数据模板其实就是对应接口的入参,接口的入参是需要提前定义好的,前端通过接口需要的参数进行请求,返回方式则是,前后端约定好的,要返回的数据。
130.b)数据库设计,请求表、素材表:后台服务需要连接数据库,而数据库是由表组成的,对于我们这个服务是需要请求表和素材表的,请求表是记录请求的信息,素材表则是记录所合成的素材信息,信息就是一些字段,比如素材地址、合成时间等)
131.c)基于模板id对应模板参数缺省校验,即根据模板所需字段优先校验,节省生产等待时间:根据模板id可以知道是哪个模板,每个模板需要的信息不同,比如gif合成模板,需要base64图片地址,缺失则无法完成构建。
132.2)处理素材
133.a)初始化处理方法,维护“素材生产队列”以及“素材等待队列”,按照素材维度填充(即给两个队列中增加素材数据)“素材生产队列”以及“等待队列”。
134.b)并发启动“素材生产队列”:并发是为了同时进行多个素材合成任务,如果不并发,一个素材合成需要等待上一个素材合成完成。
135.c)往数据库中存入素材生产结果(素材构建完成后得到的结果),同步补充更新“素材生产队列”以及“等待队列”:得到素材生产的结果后,对素材生产结果的信息进行补充,例如素材地址,生成时间,补充的方式为给该队列中增加一条信息。
136.d)触发请求回调:前端页面合成完成后,会请求后端接口,告诉接口已合成完毕,匹配请求回调结果
137.(2)模板服务
138.1)全局构建模板作为后台无头浏览器与素材模板的唯一连接(统一全局通用模板,通过url query的形式传入素材模板地址)。
139.2)通过无头浏览器打开一个嵌入素材模板的全局模板。
140.3)完成素材构建。
141.如图5所示是根据本技术实施例的一种可选的素材合成服务的示意图。业务方:指的是要使用gif服务的一方。gif服务:即本方案所描述的素材合成服务。
142.步骤(一):业务方请求gif服务,通过接口api调用的方式进行请求,业务方请求时需要携带:业务方id、模板id、模板参数列表、回调地址接口、回调成功key/value。
143.步骤(二):请求到达gif服务时,gif服务需要将本次请求的参数存入数据库,同时生成请求id,并且存入请求表中。
144.步骤(三):服务开始处理合成素材,处理完成后会请求业务方请求时所传递的回调地址接口,同时如果成功则回回调成功的key/value,失败则回调失败的key/value。
145.步骤(四):在处理合成时,gif服务会进行服务中断检查,会根据时间结点,遍历数据库中存储的素材信息,找出未合成的素材再次进行合成,同时继续执行步骤(三)。
146.步骤(五):gif服务对于合成失败的素材,再通知业务方的同时也会记录本次失败的日志,以及发送监控报警,告知此次合成失败。
147.上述素材合成服务可实现广告批量生产图片广告,实现广告的批量生产投放,有效节约人力合成成本,同时可生产gif动图,提高ctv上广告的吸引力,从而提升广告后续链路的转换率,提升广告收入。
148.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
149.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
150.根据本技术实施例的另一个方面,还提供了一种用于实施上述素材合成方法的素
材合成装置。图6是根据本技术实施例的一种可选的素材合成装置的示意图,如图6所示,该装置可以包括:
151.获取模块22,用于获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材;
152.生成模块24,用于为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用挂载在全局对象上的目标构建方案;
153.合成模块26,用于按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件。
154.需要说明的是,该实施例中的获取模块22可以用于执行本技术实施例中的步骤s202,该实施例中的生成模块24可以用于执行本技术实施例中的步骤s204,该实施例中的合成模块26可以用于执行本技术实施例中的步骤s206。
155.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
156.通过上述模块,将构建方案挂载在全局对象上,为素材合成请求生成浏览器实例并加载素材页面,根据素材合成请求中的每个子请求在目标素材页面中实现目标构建方案的调用,将目标素材合成为目标文件,可以实现广告素材的自动合成,为广告素材合成提供了能够跨端调用的后端服务,达到了快速生产广告的目的,从而解决了由于广告素材需要大量人力手动合成,造成无法快速生产广告的技术问题。
157.作为一种可选的实施例,生成模块24还包括:
158.方案确定单元,用于在通过目标浏览器实例加载出多个目标素材页面的情况下,在多个目标素材页面中,按照指定子请求中指示的指定构建方案以及预设对应关系,确定出与指定子请求对应的指定素材页面,其中,每个目标素材页面用于调用一个唯一对应的目标构建方案,指定子请求为至少一个子请求中的任一个,预设对应关系用于指示目标素材页面与目标构建方案之间的对应关系;
159.传输单元,用于将指定子请求对应的指定素材传入指定素材页面中;
160.处理单元,用于在指定素材页面调用指定构建方案对指定素材进行处理后,得到由指定素材合成的指定文件,其中,指定文件为所有目标文件中的一个。
161.作为一种可选的实施例,方案确定单元,还用于按照第一子请求所指示的目标动态合成方案,从多个目标素材页面中确定出与目标动态合成方案对应的第一目标素材页面,其中,目标构建方案包括至少一个动态合成方案,至少一个子请求包括第一子请求,第一子请求用于将第一目标素材合成为动画文件;传输单元,还用于将第一子请求中的素材参数所指示的第一目标素材传入第一目标素材页面;处理单元,还用于通过第一目标素材页面调用目标动态合成方案对第一目标素材进行目标操作,得到作为目标文件的目标动画文件,其中,目标操作包括按照预设动画效果对第一目标素材进行动画渲染。
162.作为一种可选的实施例,方案确定单元,还用于按照第二子请求所指示的目标静
态合成方案,从多个目标素材页面中确定出与目标静态合成方案对应的第二目标素材页面,其中,目标构建方案包括至少一个静态合成方案,至少一个子请求包括第二子请求,第二子请求用于将第二目标素材合成为静态图片文件;传输单元,还用于将第二子请求中的素材参数所指示的第二目标素材传入第二目标素材页面;处理单元,还用于在第二目标素材页面中,通过目标静态合成方案执行以下操作:从第二目标素材中选取目标元素,对目标元素进行图像绘制,并将绘制得到的目标图像转换为第二目标文件,其中,第二目标文件是采用字符编码表示目标图像的文件。
163.作为一种可选的实施例,所述装置还包括:
164.校验单元,用于在按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件之前,对于目标素材合成请求中每个子请求,按照子请求中的方案标识,校验子请求中的素材参数是否符合与方案标识指示的目标构建方案对应的预设要求,并得到子校验结果,其中,素材参数包括素材地址和/或素材信息;
165.生成单元,用于在所有子校验结果指示目标素材合成请求中每个子请求中的素材参数均符合预设要求的情况下,生成与目标素材合成请求唯一对应的目标请求标识,并将目标请求标识存入数据库中的请求表;
166.存储单元,用于将目标素材合成请求中的每个子请求对应的素材信息存入数据库的素材表中,其中,每个素材信息包括方案标识和素材参数。
167.可选地,生成模块24还包括:
168.素材确定单元,用于按照每个素材信息存入素材表的先后顺序、每个素材信息中的方案标识以及所有目标素材页面中的可用素材页面,确定出每个可用素材页面对应的当前素材信息,其中,每个可用素材页面用于调用每个可用素材页面对应的当前素材信息中方案标识所指示的当前构建方案;
169.并发操作单元,用于在所有可用素材页面中进行并发的素材处理操作,包括按照如下方式对每个可用素材页面对应的当前素材信息进行素材处理操作:将当前素材信息所指示的当前目标素材传入可用素材页面,通过可用素材页面调用当前构建方案对当前目标素材进行处理,得到与当前素材信息对应的处理结果,并将当前素材信息对应的处理结果存入素材表中,其中,处理结果用于指示与素材信息对应的素材处理操作已执行完毕;
170.结果生成单元,用于在对每个素材信息执行素材处理操作之后,按照素材信息与目标请求标识之间的对应关系,在请求表中生成与目标请求标识对应的执行结果,其中,执行结果用于指示请求标识对应的素材合成请求已执行完毕;
171.实例关闭单元,用于关闭目标浏览器实例。
172.可选地,素材确定单元可以包括方案确定单元。
173.可选地,并发操作单元可以包括传输单元,处理单元。
174.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
access memory,ram)、磁盘或光盘等。
187.本技术的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行素材合成方法的程序代码。
188.可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
189.可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
190.步骤s202,获取目标素材合成请求,其中,目标素材合成请求包括至少一个子请求,子请求用于请求将目标素材合成为目标文件,每个子请求具有唯一对应的目标素材;
191.步骤s204,为目标素材合成请求生成目标浏览器实例;通过目标浏览器实例加载出至少一个目标素材页面,其中,目标素材页面用于调用挂载在全局对象上的目标构建方案;
192.步骤s206,按照每个子请求所指示的目标构建方案以及至少一个目标素材页面中每个目标素材页面所用于调用的目标构建方案,通过至少一个目标素材页面对所有目标素材中的每个目标素材分别进行合成处理,得到与每个目标素材对应的目标文件。
193.可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
194.可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
195.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
196.上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
197.在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
198.在本技术所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
199.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
200.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
201.以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1