CN113966619A - 渲染具有动态组件的视频 - Google Patents
渲染具有动态组件的视频 Download PDFInfo
- Publication number
- CN113966619A CN113966619A CN202080008316.9A CN202080008316A CN113966619A CN 113966619 A CN113966619 A CN 113966619A CN 202080008316 A CN202080008316 A CN 202080008316A CN 113966619 A CN113966619 A CN 113966619A
- Authority
- CN
- China
- Prior art keywords
- layers
- dynamic
- video
- static
- rendered
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 75
- 230000003068 static effect Effects 0.000 claims abstract description 107
- 238000000034 method Methods 0.000 claims abstract description 50
- 239000002131 composite material Substances 0.000 claims abstract description 14
- 238000003860 storage Methods 0.000 claims description 32
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000002156 mixing Methods 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 30
- 238000012545 processing Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 12
- 238000009795 derivation Methods 0.000 description 10
- 238000009826 distribution Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000013515 script Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44012—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
- H04N21/4318—Generation of visual interfaces for content selection or interaction; Content or additional data rendering by altering the content in the rendering process, e.g. blanking, blurring or masking an image region
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/53—Network services using third party service providers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23424—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234327—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8173—End-user applications, e.g. Web browser, game
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/222—Studio circuitry; Studio devices; Studio equipment
- H04N5/262—Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
- H04N5/278—Subtitling
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Marketing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Processing Or Creating Images (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
对于某些实施方式描述了一种用于高效动态视频渲染的方法。该方法可以包括识别用于渲染包括一个或多个静态图层和一个或多个动态图层的视频的文件,基于分析用于渲染视频的文件的一个或多个字段来检测一个或多个静态图层和一个或多个动态图层,其中每个动态图层包括指示变量组件的注释,渲染文件的一个或多个静态图层,从用户设备接收对包括用户信息的视频的请求,基于用户信息来确定被指定为插入动态图层的变量定义,使用变量定义来渲染一个或多个动态图层,以及从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频。
Description
背景技术
本文档涉及一种用于高效渲染具有动态组件的视频的方法。
发明内容
通常,本说明书中描述的主题的一个创新方面可以体现在一种用于高效渲染具有动态组件的视频的方法中。该方法可以包括识别用于渲染包括一个或多个静态图层和一个或多个动态图层的视频的文件,基于分析用于渲染视频的文件的一个或多个字段来检测一个或多个静态图层和一个或多个动态图层,其中每个动态图层包括指示变量组件的注释,渲染文件的一个或多个静态图层,从用户设备接收对包括用户信息的视频的请求,基于用户信息来确定被指定为插入动态图层的变量定义,使用变量定义来渲染一个或多个动态图层,以及从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频。
这些和其他实施例可以各自可选地包括以下特征中的一个或多个。
在一些实施方式中,该方法包括使用深度优先遍历算法来展平用于渲染视频的文件的文档对象模型。该方法可以包括基于所渲染的一个或多个静态图层,生成指示一个或多个静态图层和一个或多个动态图层的模板。使用变量定义来渲染一个或多个动态图层可以包括使用变量定义来填充模板。
在一些实施方式中,文件包括一个或多个帧,并且渲染文件的一个或多个静态图层包括,对于一个或多个静态图层中的每个图层,保存每个帧的图像。
在一些实施方式中,从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频包括执行阿尔法混合操作以组合所渲染的一个或多个静态图层和所渲染的一个或多个动态图层。
在一些实施方式中,一个或多个动态图层中的至少一个包括表示徽标的图像、文本、视频和颜色中的至少一个。
该方面的其他实施例可以包括对应的系统、装置和计算机程序,被配置为执行在计算机存储设备上编码的方法的动作。
可以实施本文档中描述的主题的特定实施例,以便实现以下优点中的一个或多个。在某些环境中,先前没有办法动态地更改视频设计,使得该设计可以被定制并渲染以在请求时以可预测的或恒定的时间呈现给用户,使得用户体验不被更改。该缺点可由本文讨论的技术、设备和系统解决。本文档中描述的技术使得系统能够使用更少的资源并且执行更少的操作以生成与特定应用、用户、产品或服务等用例相关的定制视频。
通常,视频合成程序渲染时间取决于正在渲染的视频项目的复杂性。视频编辑和合成的现有解决方案需要完全重新渲染整个视频项目,以便对视频项目的一部分进行改变。这些解决方案通常是时间和资源密集型的,并且不能在请求时执行而不导致请求者在接收到编辑的视频之前引发明显的延迟。
该新系统可以支持独立于图形复杂性的恒定渲染时间。换句话说,系统可以以O(1)时间动态地更改和渲染视频,而不管图形复杂性如何。系统可以例如将层组保存为图像序列或保存静态图层。当系统检测到被指示为动态图层的层时,系统可以例如保存指示层的结构及其相对于其他层的位置而不是图像的指令数据。所保存的指令数据用于形成动态图层。动态图层可以与静态图层一起保存在位置中。因为静态图层已经被保存为图像,所以最终渲染所需的大部分计算工作是合成,或者将层(静态和动态两者)以正确的z深度顺序组合为单个图像。该新系统被优化以用于执行合成,因此能够更新动态图层的动态元素,并在可预测的或恒定的时间执行最终渲染,而不管图形复杂性如何。
该系统提供了一种高效的解决方案,其允许在运行时以最小的计算来传送定制的视频,因为它能够降低当接收到对视频的请求时所需的操作的复杂性。通过将静态图层保存为图像,系统在请求之前执行大量计算密集型处理,因此减少在请求时间更改和渲染视频所需的计算资源量,进而减少请求视频的最终用户的延迟。
该系统允许针对特定应用、用户偏好和地理地点等因素定制视频项目。除了减少针对每个请求定制和渲染视频所需的资源量之外,该系统还通过允许对单个视频项目进行改编并用于不同的应用和观众来减少消耗的资源总量。
利用该方法允许定制更满足用户要求和期望的视频,同时节省资源并减少需要重做的视频设计工作。此外,改进的更新过程通过消除重新渲染将不被动态更改或更新的视频部分的需要,在内容个性化和传送系统中提供了效率。该系统为视频设计者、开发者和内容提供者提供了在设计、编辑和后处理阶段之后专门制作图像和视频内容的途径,这需要大量的资源支出。
本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。从描述、附图和权利要求中,本主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是用于高效、动态视频编辑和渲染的示例环境的框图。
图2描绘了高效和动态视频渲染过程的数据流。
图3是用于高效、动态视频编辑和渲染的示例过程的流程图。
图4是示例计算系统的框图。
不同附图中的相同附图标记和名称指示相同的元件。
具体实施方式
本文档描述了可以提高视频编辑和渲染速度并且允许单个视频项目用于多种应用并迎合不同观众偏好的方法、系统和设备。
在一些实施方式中,系统允许在请求时更改完成的视频项目,并以很少甚至没有明显的延迟提供给请求用户。用户可以例如是希望为用于内容分发的系统的特定客户端或最终用户改编视频项目的视频创建者。该系统可以例如以合成项的形式从视频合成程序接收视频项目文件。系统然后可以展平(flatten)并处理文件以识别图层;确定每个图层是动态的还是静态的;以及基于在图层内包含的数据类型对每个图层进行分类和标记。动态图层可以包括例如在最终渲染之前要填充或更改的变量组件。在已经对图层进行分类之后,图层数据被包裹(wrap)在类中,以转换为包含渲染图层所需的所有源数据的对象。连续的静态图层可以被包裹在一起,因为这些静态图层可以作为预渲染的图像被一起输出,节省了存储空间和导出时间。然后基于数据类型将对象导出到多图层模板,预渲染静态图层并包括用于动态图层的指令数据。在一些实施方式中,系统针对每个模板执行一次静态图层的预渲染。当接收到对与视频项目文件相关联的视频的请求时,系统可以填充动态图层的变量部分,并执行预渲染的静态图层和填充的动态图层的合成,以产生要响应于请求而呈现的最终视频。在一些实施方式中,系统可以针对视频的一个或多个实例化(诸如视频的不同版本)填充动态图层的变量部分以及预渲染的静态图层和填充的动态图层的合成。
图1是用于高效、动态视频编辑和渲染的示例环境100的框图。示例环境100包括网络102,诸如局域网(LAN)、广域网(WAN)、互联网或其组合。网络102连接电子文档服务器104(“电子Doc服务器”)、用户设备106和数字组件分发系统110(也称为DCDS 110)。示例环境100可以包括许多不同的电子文档服务器104和用户设备106。
用户设备106是能够通过网络102请求和接收资源(例如,电子文档)的电子设备。示例用户设备106包括个人计算机、移动通信设备以及可以通过网络102传送和接收数据的其他设备。用户设备106通常包括诸如网络浏览器的用户应用,以便于通过网络102传送和接收数据,但是由用户设备106执行的本地应用也可以便于通过网络102传送和接收数据。
一个或多个第三方150包括内容提供者、产品设计者、产品制造商以及涉及视频、产品和/或服务的设计、开发、营销或分发的其他方。
电子文档是在用户设备106处呈现内容集合的数据。电子文档的示例包括网页、文字处理文档、便携式文档格式(PDF)文档、图像、视频、搜索结果页面和提要源(feedsource)。诸如安装在移动、平板或桌面计算设备上的应用的本地应用(例如,“app”)也是电子文档的示例。电子文档105(“电子Doc”)可以由电子文档服务器104提供给用户设备106。例如,电子文档服务器104可以包括托管发布者网站的服务器。在该示例中,用户设备106可以发起对给定发布者网页的请求,并且托管给定发布者网页的电子文档服务器104可以通过传送发起在用户设备106处呈现给定网页的机器超文本标记语言(HTML)代码来响应该请求。
电子文档可以包括各种内容。例如,电子文档105可以包括静态内容(例如,文本或其他指定内容),其在电子文档本身内和/或不随时间改变。电子文档还可以包括动态内容,其可以随时间或基于每个请求而改变。例如,给定的电子文档的发布者可以维护用于填充电子文档的部分的数据源。在该示例中,给定的电子文档可以包括标签或脚本,其使得用户设备106在给定的电子文档由用户设备106处理时(例如,渲染或执行)从数据源请求内容。用户设备106将从数据源获得的内容集成到给定的电子文档的呈现中,以创建包括从数据源获得的内容的合成电子文档。
在一些情况下,给定的电子文档可以包括引用DCDS 110的数字内容标签或数字内容脚本。在这些情况下,当给定的电子文档由用户设备106处理时,数字内容标签或数字内容脚本由用户设备106执行。数字内容标签或数字内容脚本的执行配置用户设备106来生成对数字内容的请求108,其中该请求108通过网络102被发送到DCDS 110。例如,数字内容标签或数字内容脚本可以使用户设备106能够生成包括报头和有效载荷数据的分组化数据请求。请求108可以包括数据,诸如正从其请求数字内容的服务器的名称(或网络地点)、请求设备(例如,用户设备106)的名称(或网络地点)和/或DCDS110可以用于选择响应于请求而提供的数字内容的信息。请求108由用户设备106通过网络102(例如,电信网络)发送到DCDS110的服务器。
请求108可以包括指定电子文档和可以呈现数字内容的地点的特性的数据。例如,指定对将呈现数字内容的电子文档(例如,网页)的引用(URL)、可用于呈现数字内容的电子文档的可用地点(例如,数字内容槽)、可用地点的大小、可用地点在电子文档的呈现内的位置和/或有资格在该地点中呈现的媒体类型的数据可以被提供给DCDS 110。类似地,指定为电子文档的选择指定的关键字(“文档关键字”)或电子文档引用的实体(例如,人、地方或事物)的数据也可以被包括在请求108中(例如,作为有效载荷数据)并提供给DCDS 110,以便于识别有资格与电子文档一起呈现的数字内容项。
请求108还可以包括与其他信息相关的数据,诸如用户已经提供的信息、指示从其提交请求的州或地区的地理信息、或提供将显示数字内容的环境的上下文的其他信息(例如,将显示数字内容的设备类型,诸如移动设备或平板设备)。用户提供的信息可以包括用户设备106的用户的人口统计数据。例如,人口统计信息可以包括年龄、性别、地理地点、教育水平、婚姻状况、家庭收入、职业、爱好、社交媒体数据以及用户是否拥有特定项等特性。
对于这里讨论的系统收集关于用户的个人信息或者可以利用个人信息的情况,可以向用户提供机会来控制程序或功能是否收集个人信息(例如,关于用户的社交网络、社交动作或活动、专业、用户偏好或用户当前地点的信息),或者控制是否和/或如何从内容服务器接收可能与用户更相关的内容。此外,某些数据可以在被存储或使用之前以一种或多种方式匿名化,使得个人可识别信息被移除。例如,用户身份可以被匿名化,使得不能针对用户确定个人可识别信息,或者用户的地理地点可以被概括为获得地点信息的地方(诸如城市、ZIP码(邮政编码)或州级),使得不能确定用户的特定地点。因此,用户可以控制如何关于他或她收集信息以及如何由内容服务器使用信息。
指定用户设备106的特性的数据也可以在请求108中被提供,诸如标识用户设备106的型号、用户设备106的配置或呈现电子文档的电子显示器(例如,触摸屏或桌面监视器)的尺寸(例如,物理尺寸或分辨率)的信息。请求108可以例如通过分组化网络发送,并且请求108本身可以被格式化为具有报头和有效载荷数据的分组化数据。报头可以指定分组的目的地,并且有效载荷数据可以包括上面讨论的任何信息。
响应于接收到请求108和/或使用包括在请求108中的信息,DCDS 110选择将与给定的电子文档一起呈现的数字内容。在一些实施方式中,DCDS110在分布式计算系统(或环境)中实施,其中该分布式计算系统(或环境)包括例如服务器以及互连并响应于请求108而识别和分发数字内容的多个计算设备的集合。多个计算设备的集合一起操作以从数百万或更多可用数字内容的语料库当中识别有资格在电子文档中呈现的数字内容集合。可以例如在数字组件数据库112中索引数百万或更多可用数字内容。每个数字内容索引条目可以引用对应的数字内容和/或包括决定(condition)对应的数字内容的分发的分发参数(例如,选择标准)。
在一些实施方式中,来自数字组件数据库112的数字组件可以包括由第三方150提供的内容。例如,数字组件数据库112可以从使用机器学习和/或人工智能来导航公共街道的第三方150接收公共十字路口的照片。在另一个示例中,数字组件数据库112可以从向自行车骑手提供服务的第三方150接收第三方150想要来自用户的响应的特定问题。可附加地,DCDS 110可以呈现视频内容,包括来自例如视频渲染处理器130的内容和存储在数字组件数据库112中的由视频渲染处理器130提供的视频内容。
识别有资格的数字内容可以被分割为多个任务,其中该多个任务然后在多个计算设备的集合内的计算设备当中分配。例如,不同的计算设备可以各自分析数字组件数据库112的不同部分,以识别具有与包括在请求108中的信息相匹配的分发参数的各种数字内容。
DCDS 110聚合从多个计算设备的集合接收的结果,并且使用与聚合的结果相关联的信息来选择将响应于请求108而提供的数字内容的一个或多个实例。反过来,DCDS 110可以通过网络102生成并发送使用户设备106能够将所选择的数字内容集合集成到给定的电子文档中的回复数据114(例如,表示回复的数字数据),使得所选择的数字内容集合和电子文档的内容一起呈现在用户设备106的显示器处。
视频合成程序(VCP)120允许用户创建视频项目文件。视频项目文件表示用于渲染视频的数据集合。在一些实施方式中,视频项目文件是合成项,其中该合成项各自能够被操纵并提供关于项集合内的对象的信息。合成项可以是例如包括阿尔法通道阿尔法混合在一起的几个图层的项。为了便于解释,VCP 120被描述为视频合成程序,但是VCP 120也可以执行数字视觉效果、运动图形和/或合成处理。例如,VCP 120可以是用于视频的后期制作处理的程序。
视频渲染处理器(VRP)130从VCP 120接收视频项目文件,并且处理视频项目文件以检测、标记、填充和渲染视频项目文件组件。VRP 130包括展平器132、分类器134和导出器136。展平器132展平所接收的视频项目文件的组件,诸如图层。分类器134对所接收的视频项目文件的图层进行分类和标记。导出器136确定如何处理所标记的图层以产生模板文件,以及如何处理模板文件和一个或多个更改的或填充的图层以用于最终输出。
为了便于解释,展平器132、分类器134和导出器136在图1中示出为VRP 130的单独组件。VRP 130可以被实施为非暂时性计算机可读介质上的单个系统。在一些实施方式中,展平器132、分类器134和导出器136中的一个或多个可以被实施为单个系统的集成组件。VRP 130、其组件展平器132、分类器134、导出器136以及它们各自的输出在下面进一步详细描述。
模板实例化系统140实例化由VRP 130创建的模板,这填充和/或更改模板的动态图层。在一些实施方式中,模板实例化系统140可以例如通过实例化视频的每个版本的一个或多个模板来填充和/或更改视频的一个或多个版本的动态图层。在该特定实施方式中,模板实例化系统140被示出为与VRP130分离。模板实例化系统140可以例如接收指示应该如何实例化特定图层的输入。模板实例化系统140可以接收来自系统100的其他组件(包括用户设备106、VCP 120和第三方150)的输入。在一些实施方式中,模板实例化系统140包括预定值以填充由VRP 130创建的模板的特定图层。模板实例化系统140可以基于来自例如用户设备106、VCP 120和/或第三方150的输入来确定用于填充模板的不同值。
在一些实施方式中,模板实例化系统140可以与VRP 130或VRP 130的组件集成。例如,模板实例化系统140可以是VRP 130的模块,并且可以与系统100的其他组件通信。
模板实例化系统140将实例化的模板提供给VRP 130以用于最终渲染和输出。例如,模板实例化系统140可以将动态图层中的每一个实例化为填充了图层的变量组件的对象。这些对象然后可以被存储在集合中,以传递给VRP130以用于最终渲染。在一些实施方式中,模板实例化系统140可以将集合作为多图层渲染请求提供给VRP 130。
下面描述的技术使系统能够高效地编辑和渲染视频,而不管复杂性如何。
图2示出了图1的示例环境中的高效、动态视频编辑和渲染过程的示例数据流200。数据流200的操作由系统100的各种组件执行。例如,数据流200的操作可以由与DCDS 110、视频合成程序120、模板实例化系统140和用户设备106通信的视频渲染处理器130执行。
该流程以步骤A开始,其中VCP 120向VRP 130提供视频项目文件202。视频项目文件202是表示合成的对象。例如,视频项目文件202可以是具有项集合的CompItem对象。可以操纵视频项目文件202,并且可以获得关于对象及其项集合的信息。在一些实施方式中,视频项目文件202的集合中的项可以通过集合中的位置索引号来访问。这些项是对象,诸如组成视频的视频图层,其包含图像、文本、音频和/或对象等组件。
视频项目文件202可以由VCP 120的用户生成。例如,视频创建者或设计者可以创建视频项目文件202。用户可以指示视频可以被替换或更改的部分。在一些实施方式中,用户可以使用VCP 120的内置字段(诸如注释字段)来将特定图层标示为动态。例如,VCP 120的用户可以使用图层的注释字段来将变量“var”设置为真,从而指示图层的至少一部分可以被替换或更改。在一些实施方式中,如果所指示的图层的一部分没有被替换或更改,则用户可以指示要使用的默认值,诸如现有图层。在一些实施方式中,用户可以基于诸如用户偏好、用户人口统计、地点信息和接收到的其他信息等因素来指示要代替所指示的层的一部分使用的预定值集合。
流程继续到步骤B,其中VRP 130展平视频项目文件202的文档对象模型(DOM)。DOM是用逻辑树结构表示文档的跨平台和独立于语言的接口,其中每个节点是表示文档的一部分的对象。树的每个分支以节点结束,并且每个节点包含对象。在一些实施方式中,视频项目文件202中的图层中的每一个是另一合成的指针,这提供层级点(a point ofhierarchy)或深度。VRP 130的展平器132可以跨视频项目文件202的DOM中的对象进行迭代。例如,VRP 130的展平器132可以进行对视频项目文件202的DOM内的所有图层的深度优先展平。深度优先展平可以通过例如以下来实施:选择视频项目文件202的DOM的起始节点并将其所有相邻节点推入堆栈;从堆栈弹出节点以选择要访问的下一个节点,并将该节点的所有相邻节点推入堆栈;以及重复该过程,直到堆栈为空。在一些实施方式中,展平器132可以以z深度顺序或以横向(breadth-wise)顺序跨每个图层进行迭代。横向展平可以通过例如,通过以视频项目文件202的DOM根起始并在移动到下一个深度级别的节点之前探索当前深度的所有邻近节点,使用相反的策略作为深度优先展平来实施。
流程继续到步骤C,其中VRP 130对视频项目文件202的图层中的每一个进行分类,以便适当的导出模块可以被识别以用于稍后使用。在一些实施方式中,步骤C与步骤B同时执行,使得VRP 130在图层通过深度优先算法展平时对图层进行分类。例如,当展平器132探索节点中的每一个时,分类器134可以检测每个检测的图层的特定文件格式并标记图层,使得VRP 130可以选择用于渲染图层的适当导出模块。
分类器134可以检测图层是动态图层——具有变量组件或可以被更改的组件的图层——还是静态图层——不具有变量组件或可以被更改的组件的图层。例如,静态图层可以是图像,诸如保留在视频背景中的太阳图像。在一些实施方式中,静态图层可以是在最终渲染时不会改变的图层。例如,视频中的静态图层可以包括不具有变量组件的所有图层,并且可以在请求时间之前被渲染。在一些实施方式中,动态图层可以是例如需要在视频场景周围放置或移动的2D或3D图像或视频。例如,动态图层可以是业务逻辑图像元素,诸如评级星(对于五颗星中的评级)或颜色图层,诸如绿色背景。
在一些实施方式中,分类器134可以通过确定图层的字段是否具有特定值来识别图层是否是动态图层。分类器134可以确定例如图层的注释字段是否包含特定变量或文本集合。在一个示例中,分类器134可以检查特定图层的语句Layer.comment.contains('var=true')的值是否为TRUE(真),以确定图层是否是动态的。
除了确定图层是动态的还是静态的之外,分类器134还可以基于在图层内包含的数据类型对每个图层进行分类和标记。这些标记可以用于确定用于渲染图层的适当导出模块。例如,分类器134可以检查语句Layer.constructor==AVLayer的值是否为TRUE,以确定图层是否是视频图层。视频图层可以包括例如音频或图像数据。
在另一个示例中,分类器134可以检查语句Layer.constructor==TextLayer的值是否为TRUE,以确定图层是否是文本图层。例如,如果图层是动态文本图层,则可以被改变的图层的特性包括文本本身、放置、透明度、大小、颜色和字体等特性。文本图层可以包括例如2D或3D文本。
在另一个示例中,分类器134可以检查语句Layer.source.typeName=='Composition'的值是否为TRUE,以确定图层是否是DOM的层级节点。例如,如果分类器134确定图层是层级节点,则VRP 130使用该节点作为DOM层级中的点,并且使用递归来继续展平视频项目文件202的DOM,直到已经遍历了整个树。
在另一个示例中,分类器134可以检查语句Layer.comment DOES NOT contain('var=true')的值是否为TRUE,以确定图层是否是静态图层。静态图层在最终渲染时不会改变,因此可以与动态图层不同对待。静态和动态图层的处理将在下面的步骤中进一步解释。
流程继续到步骤D,其中VRP 130使用视频项目文件202的展平的、分类的图层来创建模板。例如,导出器136可以创建表示视频项目文件202的动态和静态图层的模板。在对每个图层进行分类之后,导出器136可以将图层包裹在排队的类中。例如,导出器136可以将图层包裹在包含渲染图层所需的所有源材料的类中。这些项可以被存储在队列中,以被导出到模板。在一些实施方式中,在图层被包裹在类中并且该类的项被实例化之后,不进行对视频项目文件202的附加引用。该格式允许VRP 130减少对视频项目文件202的引用和访问次数,从而减少渲染视频所需的计算资源量。
在一些实施方式中,可以将多于一个静态图层包裹到类的单个项中。例如,z深度顺序或其他适当排序方案的连续静态图层可以作为预渲染图像被一起导出到模板。例如,导出器136可以将z深度顺序的三个连续静态图层渲染为单个PNG。在一些实施方式中,导出器136可以识别要导出作为单个图像的静态图层序列。导出器136例如可以在检测到静态图层时开始序列,并在它检测到动态图层时结束序列,使得序列不包括动态图层。通过一次导出多个静态图层,导出器136减少了保存静态图层所需的存储资源量,并且减少了最终渲染过程所花费的时间量。
在一些实施方式中,其他类型将仅包括一个图层。例如,仅一个动态图层可以被包裹到类的单个项中。包含动态图层的类的项可以包括信息,诸如图层的可变的部分和关于项的结构的指令等信息。
在一些实施方式中,导出器136处理排队项的存储,将项导出为输出格式以创建模板,并且当模板被实例化时,导出器136填充模板并且将填充的模板保存到磁盘。例如,导出器136可以保存模板本身作为JavaScript对象表示(JSON)格式的协议缓冲(protocolbuffer)对象。协议缓冲对象或消息可以使用相对路径来引用所保存的源材料。
在模板被实例化之后,导出器136用视频项目文件202的属性填充模板变量。例如,导出器136可以用来自视频项目文件202的视频参数填充实例化模板。导出器136使用变换库来用参数填充模板。
变换允许图层的时变调整。一个或多个变换可以被应用于图层内的任何给定帧。例如,导出器136可以应用变换,诸如位置、透明度、遮罩(mask)、模糊和纹理变换。例如,导出器136可以使用图像序列来执行遮罩变换。在另一个示例中,导出器136可以执行计算对象位置的变换。导出器136例如可以使用通过将一类型的空元素放置并锁定到每个元素的角上并将不同类型的空元素添加到每个空元素的角来计算每个帧中的对象的2D投影图像位置的库。例如,导出器136可以将空3D元素放置并锁定到每个元素的角上,并将2D空添加到每个3D元素的角。在一些实施方式中,导出器136可以使用来自诸如VCP 120的程序的现有库。
每个帧的一组变换提供了在该帧内调整对象的所有所需数据。变换在给定帧内是自包含的,使得不需要关键帧,并且不需要前瞻性和后瞻性外推,这允许并行化。导出器136例如可以并行执行所有帧变换,以减少处理时间。变换共享每个帧上的起始时间、结束时间和时间戳。导出器136通过仅使用这些值中的一个来减少所需的存储资源量,这允许将另外两个值用于检错和纠错。例如,导出器136可以使用时间戳将透明度变换应用于特定帧,并且可以使用起始时间来验证透明度变换的时间属性中不包含错误。
导出器136包括用于每种类型的图层的导出模块。基于VRS的分类,导出器136可以选择并使用特定的导出模块来产生适当的输出。导出模块例如可以类似于VCP 120的导出模块进行操作。
导出器136包括静态图层导出模块、媒体图层导出模块和文本图层导出模块等类型的导出模块。
导出器136的静态图层导出模块接收已经被分类为静态的图层,并且输出被指定为静态图层消息的协议缓冲消息。静态图层输出模块输出来自一个或多个静态图层的协议缓冲消息。例如,静态图层导出模块可以接收六个静态图层,并输出表示六个静态图层的协议缓冲消息。静态图层输出模块可以输出视频项目文件202的所有静态图层。在一些实施方式中,静态图层必须是连续的。静态图层导出模块可以通过例如禁用视频项目文件202已经被分类为除静态图层之外的类型的所有图层,启用视频项目文件202已经被分类为静态图层的所有图层,并且调用每个帧的保存图像来导出静态图层。在一些实施方式中,导出器136的静态图层导出模块通过调用每个帧的保存图像来预渲染视频项目文件202的所有静态图层,因为这些帧在最终渲染时不会改变,因此减少了需要在最终渲染时进行以完成视频的处理量。
导出器136的媒体图层导出模块接收已经被分类为动态媒体图层的图层,并且输出被指定为动态媒体图层消息的协议缓冲消息。动态媒体图层包括图像和视频。例如,动态媒体图层导出模块可以接收包括可变的并且可以被替换的图像的图层,并导出指示动态媒体图层的协议缓冲消息。动态媒体图层可以包括例如诸如徽标和照片的图像、诸如视频徽标的视频、产品剪辑、来自发言人的消息、诸如颜色和纹理的视觉元素、以及文本(诸如标语、口号或名称)等对象。
当模板被实例化时,媒体图层导出模块用视频项目文件202的属性填充模板变量。例如,媒体图层导出模块可以使用来自VCP 120的库来填充特定动态媒体图层的模板变量的侧面和位置属性。
流程继续到步骤E,其中DCDS 110从用户设备106接收对内容的请求108。当客户端设备与数字内容交互时,请求108由用户设备106发送到DCDS110。例如,如果用户设备106的用户点击链接以下载购物应用,则链接可以使得用户设备106向DCDS 110发送请求108。请求108可以包括来自客户端设备106的交互跟踪数据。例如,请求108可以包括跟踪数据,诸如交互的指示、用户设备106与其交互的数字内容以及唯一标识用户设备106的标识符。在一些实施方式中,请求108包括数字内容的提供者的指示和托管所请求的资源的目的地服务器的地点。
DCDS 110处理请求,并向模板实例化系统140转发对特定视频的请求,包括定制信息。例如,DCDS 110可以使用上面关于图1描述的内容选择过程来选择特定视频,并确定模板实例化系统140的个性化信息。在一些实施方式中,DCDS 110基于用户设备106的用户的用户信息来确定个性化信息。在一些实施方式中,DCDS 110基于来自例如向DCDS 110提供内容的第三方140的信息来确定个性化信息。
在一些实施方式中,步骤E不出现在数据流200中,并且VCP 120、VRP130或用户设备106的用户可以直接向模板实例化系统140提供对更改的视频的请求。
流程继续到步骤F,其中模板实例化系统140实例化模板,这提供关于如何填充模板的变量部分的变量定义或指令,并且导出器136填充变量。在一些实施方式中,变量定义包括定义模板内的特定变量的数据。例如,模板实例化系统140用关于动态图层的变量组件的填充的指令实例化模板,这生成多图层请求。模板实例化系统140然后向导出器136提供多图层请求。
导出器136接收多图层请求,并且使用静态图层协议缓冲消息形式的预渲染静态图层和由模板实例化系统140在多图层请求中提供的指令来执行视频的最终渲染。因为静态图层是在生成视频项目文件202的模板时预渲染的,所以在请求时执行的最终渲染操作仅包括变量的填充和图层的合成。例如,导出器136可以执行静态图层协议缓冲消息中的图像和填充的动态图层的阿尔法混合,以产生视频项目文件202的最终渲染。这些操作在VRP130中被优化,使得渲染时间在请求不同级别的图形复杂度的视频时为O(1),因为静态图层是在生成模板时预渲染的。因此,系统100和由系统100执行的过程200提供了对现有视频更改和渲染解决方案的技术改进。
流程继续到步骤G,其中VRP 130向DCDS 110提供所渲染的视频,以连同回复114一起或作为回复114呈现给用户设备106。如上所述,除了所请求的电子文档之外,回复数据114还可以指示由VRP 130渲染的视频内容。响应于DCDS 110接收到请求108并基于所接收的分发参数和请求108中指示的用户数据来确定满足分发参数,回复数据114由DCDS 110发送到用户设备106。
图3是用于高效且动态地更改和渲染视频的示例过程300的流程图。在一些实施方式中,过程300可以由一个或多个系统执行。例如,过程300可以由图1-图2的VRP 130、DCDS110、用户设备106和/或第三方140实施。在一些实施方式中,过程300可以被实施为存储在非暂时性计算机可读介质上的指令,并且当指令由一个或多个服务器执行时,该指令可以使得一个或多个服务器执行过程300的操作。
过程300开始于识别用于渲染包括一个或多个静态图层和一个或多个动态图层的视频的文件(302)。例如,VRP 130可以接收或识别用于渲染由VCP120生成的视频的视频项目文件202。视频项目文件202可以包含一个或多个静态图层和一个或多个动态图层。在一些实施方式中,VCP 120向VRP 130提供视频项目文件202。在一些实施方式中,VRP 130可以从存储设备检索视频项目文件202。
过程300继续,基于分析用于渲染视频的文件的一个或多个字段来检测一个或多个静态图层和一个或多个动态图层,其中每个动态图层包括指示变量组件的注释(304)。例如,VRP 130的展平器132可以展平视频项目文件202的DOM。同时,VRP 130的分类器134可以分析视频项目文件202的一个或多个字段,以检测例如指示特定图层是静态的还是动态的或者可变的注释字段。
过程300通过渲染文件的一个或多个静态图层(306)来继续。例如,导出器136可以将图层包裹并导出到协议缓冲消息中。导出器136生成包括动态图层和预渲染静态图层的变量的模板。例如,导出器136可以通过调用静态图层的帧的保存图像并导出那些保存图像来预渲染静态图层中的每一个。文件的一个或多个静态图层的渲染发生在请求时间之前、或者接收到对包括用户信息的视频的请求之前,使得静态图层被预渲染,并且减少了必须在请求时完成的渲染量。
过程300继续,从用户设备接收对包括用户信息的视频的请求(308)。例如,DCDS110可以从用户设备106的用户接收请求108,并将请求转发给模板实例化系统140。
过程300继续,基于用户信息来确定被指定为插入动态图层的变量定义(310)。例如,模板实例化系统140可以基于由DCDS 110转发的请求中提供的用户信息来确定用于更改或替换动态图层的变量的指令。模板实例化系统140然后可以实例化由导出器136生成的模板。
过程300继续,使用变量定义来渲染一个或多个动态图层(312)。例如,VRP 130的导出器136可以基于由模板实例化系统140提供的用于更改或替换动态图层的变量的指令来填充由模板实例化系统140实例化的模板。
过程300以从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频(314)结束。例如,VRP 130的导出器136可以使用填充的模板来执行视频项目文件202的视频的最终渲染,以产生用于回放的视频。因为模板包括静态图层的预渲染,所以最终渲染过程的相对大量是将图层阿尔法混合在一起,并且填充模板的附加处理时间不构成最终渲染过程的相当一部分。因此,系统100提供了用于在恒定时间更改和动态渲染不同图形复杂度的视频的高效解决方案。
图4是可以用于执行上述操作的示例计算机系统400的框图。系统400包括处理器410、存储器420、存储设备430和输入/输出设备440。组件410、420、430和440中的每一个可以例如使用系统总线450互连。处理器410能够处理用于在系统400内执行的指令。在一个实施方式中,处理器410是单线程处理器。在另一个实施方式中,处理器410是多线程处理器。处理器410能够处理存储在存储器420或存储设备430上的指令。
存储器420存储系统400内的信息。在一个实施方式中,存储器420是计算机可读介质。在一个实施方式中,存储器420是易失性存储单元。在另一个实施方式中,存储器420是非易失性存储单元。
存储设备430能够为系统400提供大容量存储。在一个实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或一些其他大容量存储设备。
输入/输出设备440为系统400提供输入/输出操作。在一个实施方式中,输入/输出设备440可以包括一个或多个网络接口设备(例如,以太网卡)、串行通信设备(例如,RS-232端口)、和/或无线接口设备(例如,802.11卡)。在另一个实施方式中,输入/输出设备可以包括被配置为接收输入数据并将输出数据传送到其他输入/输出设备(例如,键盘、打印机和显示设备460)的驱动设备。然而,也可以使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图4中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式可以在其他类型的数字电子电路中实施,或者在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实施,或者在它们中的一个或多个的组合中实施。
电子文档(为简洁起见,将简称为文档)不一定对应于文件。文档可以被存储在持有其他文档的文件的一部分中,被存储在专用于所讨论的文档的单个文件中,或者被存储在多个协同文件中。
本说明书中描述的主题和操作的实施例可以在数字电子电路中或在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其等同结构,或以其一种或多种的组合来实施。本说明书中描述的主题的实施例可以被实施为一种或多种计算机程序,即,计算机程序指令的一个或多个模块,其被编码在计算机存储介质(或多个计算机存储介质)上以由数据处理装置执行或控制数据处理装置的操作。可选地或另外,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,其被生成以对信息进行编码以传输到合适的接收器装置以通过数据处理装置来执行。计算机存储介质可以是或包括在计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是以人工生成的传播信号编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储设备)或包括在其中。
本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机、片上系统、或前述的多个或组合。装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或其中一个或多个的组合的代码。装置和执行环境可以实施各种不同的计算模型基础结构,诸如网络服务、分布式计算和网格计算架构。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,声明性或程序性语言,并且可以以任何形式进行部署,包括作为独立程序或作为模块、组件、子例程、对象或其他适合在计算环境中使用的单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于所讨论程序的单个文件中或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)。可以将计算机程序部署为在一个计算机上执行,或者在位于一个站点上或分布在多个站点上并通过数据通信网络互连的多个计算机上执行。
本说明书中描述的处理和逻辑流程可以由执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程计算机来执行。处理和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
例如,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括或可操作地耦合以从一个或多个用于存储数据的大容量存储设备(例如,磁、磁光盘或光盘)接收数据或将数据传输到一个或多个大容量存储设备或两者。然而,计算机不必具有此类设备。此外,计算机可以嵌入到另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如通用串行总线(USB)闪存驱动器),仅举几例。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,可以在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及键盘和指示设备(例如,鼠标或轨迹球,用户可通过其向计算机提供输入)的计算机上实施本说明书中描述的主题的实施例。其他种类的设备也可以用于提供与用户的交互,例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户进行交互,例如,通过响应从网络浏览器收的请求,将网页发送到用户设备上的网络浏览器。
本说明书中描述的主题的实施例可以被实施在包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)或包括前端组件(例如,具有图形用户界面或网络浏览器的客户端计算机,用户可以通过图形用户界面或网络浏览器与本说明书中描述的主题的实施方式进行交互)的计算系统或者一个或多个这样的后端组件、中间件组件或前端组件的任意组合中。系统的组件可以通过数字数据通信的任何形式或介质(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、网际网络(例如,互联网)和对等网络(例如,ad hoc对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系通过在各自计算机上运行并彼此具有客户端-服务器关系的计算机程序产生。在一些实施例中,服务器向用户设备发送数据(例如HTML页面)(例如为了向与客户端设备交互的用户显示数据并从中接收用户输入的目的)。可以在服务器上从客户端设备接收在客户端设备处生成的数据(例如用户交互的结果)。
尽管本说明书包括许多特定实施细节,但是这些细节不应被解释为对任何发明或所要求保护的范围的限制,而应解释为对特定发明的特定实施例而言特定的特征的描述。在单独的实施例的上下文中在本说明书中描述的特定特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合来实施。此外,尽管上面可以将特征描述为以特定组合起作用并且甚至最初如此宣称,但是在一些情况下,可以从组合中删除所要求保护的组合中的一个或多个特征,并且可以将所要求保护的组合用于子组合或子组合的变型。
类似地,尽管在附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以实现期望的结果。在特定情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品或打包成多个软件产品。
因此,已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。另外,附图中描绘的处理不一定需要所示的特定顺序或连续顺序来实现期望的结果。在特定实施方式中,多任务和并行处理可能是有利的。
Claims (20)
1.一种用于高效动态视频渲染的计算机实施方法,包括:
识别用于渲染包括一个或多个静态图层和一个或多个动态图层的视频的文件;
基于分析用于渲染视频的所述文件的一个或多个字段来检测所述一个或多个静态图层和所述一个或多个动态图层,其中每个动态图层包括指示变量组件的注释;
渲染所述文件的一个或多个静态图层;
从用户设备接收对包括用户信息的所述视频的请求;
基于所述用户信息来确定被指定为插入动态图层的变量定义;
使用所述变量定义来渲染所述一个或多个动态图层;以及
从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频。
2.根据权利要求1所述的方法,还包括使用深度优先遍历算法来展平用于渲染所述视频的文件的文档对象模型。
3.根据权利要求2所述的方法,还包括基于所渲染的一个或多个静态图层,生成指示所述一个或多个静态图层和所述一个或多个动态图层的模板。
4.根据权利要求3所述的方法,其中,使用所述变量定义来渲染所述一个或多个动态图层包括使用所述变量定义来填充所述模板。
5.根据权利要求1所述的方法,其中,所述文件包括一个或多个帧;并且其中渲染所述文件的一个或多个静态图层包括,对于所述一个或多个静态图层中的每个图层,保存每个帧的图像。
6.根据权利要求1所述的方法,其中,从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频包括执行阿尔法混合操作以组合所渲染的一个或多个静态图层和所渲染的一个或多个动态图层。
7.根据权利要求1所述的方法,其中,所述一个或多个动态图层中的至少一个包括表示徽标的图像、文本、视频和颜色中的至少一个。
8.一种系统,包括:
一个或多个处理器;和
一个或多个存储器元件,包括指令,所述指令在被执行时使得所述一个或多个处理器执行操作,所述操作包括:
识别用于渲染包括一个或多个静态图层和一个或多个动态图层的视频的文件;
基于分析用于渲染视频的所述文件的一个或多个字段来检测所述一个或多个静态图层和所述一个或多个动态图层,其中每个动态图层包括指示变量组件的注释;
渲染所述文件的一个或多个静态图层;
从用户设备接收对包括用户信息的所述视频的请求;
基于所述用户信息来确定被指定为插入动态图层的变量定义;
使用所述变量定义来渲染所述一个或多个动态图层;以及
从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频。
9.根据权利要求8所述的系统,所述操作还包括使用深度优先遍历算法来展平用于渲染所述视频的文件的文档对象模型。
10.根据权利要求9所述的系统,所述操作还包括基于所渲染的一个或多个静态图层,生成指示所述一个或多个静态图层和所述一个或多个动态图层的模板。
11.根据权利要求10所述的系统,其中,使用所述变量定义来渲染所述一个或多个动态图层包括使用所述变量定义来填充所述模板。
12.根据权利要求8所述的系统,其中,所述文件包括一个或多个帧;并且其中渲染所述文件的一个或多个静态图层包括,对于所述一个或多个静态图层中的每个图层,保存每个帧的图像。
13.根据权利要求8所述的系统,其中,从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频包括执行阿尔法混合操作以组合所渲染的一个或多个静态图层和所渲染的一个或多个动态图层。
14.根据权利要求8所述的系统,其中,所述一个或多个动态图层中的至少一个包括表示徽标的图像、文本、视频和颜色中的至少一个。
15.一种用指令编码的非暂时性计算机存储介质,所述指令在由分布式计算系统执行时使得所述分布式计算系统执行操作,所述操作包括:
识别用于渲染包括一个或多个静态图层和一个或多个动态图层的视频的文件;
基于分析用于渲染视频的所述文件的一个或多个字段来检测所述一个或多个静态图层和所述一个或多个动态图层,其中每个动态图层包括指示变量组件的注释;
渲染所述文件的一个或多个静态图层;
从用户设备接收对包括用户信息的所述视频的请求;
基于所述用户信息来确定被指定为插入动态图层的变量定义;
使用所述变量定义来渲染所述一个或多个动态图层;以及
从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频。
16.根据权利要求15所述的非暂时性计算机存储介质,所述操作还包括使用深度优先遍历算法来展平用于渲染所述视频的文件的文档对象模型。
17.根据权利要求16所述的非暂时性计算机存储介质,所述操作还包括基于所渲染的一个或多个静态图层,生成指示所述一个或多个静态图层和所述一个或多个动态图层的模板。
18.根据权利要求17所述的非暂时性计算机存储介质,其中,使用所述变量定义来渲染所述一个或多个动态图层包括使用所述变量定义来填充所述模板。
19.根据权利要求15所述的非暂时性计算机存储介质,其中,所述文件包括一个或多个帧;并且其中渲染所述文件的一个或多个静态图层包括,对于所述一个或多个静态图层中的每个图层,保存每个帧的图像。
20.根据权利要求15所述的非暂时性计算机存储介质,其中,从所渲染的一个或多个静态图层和所渲染的一个或多个动态图层生成用于回放的合成视频包括执行阿尔法混合操作以组合所渲染的一个或多个静态图层和所渲染的一个或多个动态图层。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2020/032889 WO2021230872A1 (en) | 2020-05-14 | 2020-05-14 | Rendering video having dynamic components |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113966619A true CN113966619A (zh) | 2022-01-21 |
CN113966619B CN113966619B (zh) | 2024-08-27 |
Family
ID=71016631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080008316.9A Active CN113966619B (zh) | 2020-05-14 | 2020-05-14 | 一种用于高效动态视频渲染的方法、系统及存储介质 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230058512A1 (zh) |
EP (1) | EP3928223A1 (zh) |
JP (1) | JP7248802B2 (zh) |
KR (1) | KR102519049B1 (zh) |
CN (1) | CN113966619B (zh) |
WO (1) | WO2021230872A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046010A1 (zh) * | 2022-08-31 | 2024-03-07 | 华为技术有限公司 | 一种界面显示方法、设备及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11587208B2 (en) * | 2021-05-26 | 2023-02-21 | Qualcomm Incorporated | High quality UI elements with frame extrapolation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050285875A1 (en) * | 2004-06-28 | 2005-12-29 | Microsoft Corporation | Interactive viewpoint video system and process |
US20070006064A1 (en) * | 2005-07-01 | 2007-01-04 | Microsoft Corporation | Aspects of media content rendering |
CN105320662A (zh) * | 2014-06-10 | 2016-02-10 | 腾讯科技(北京)有限公司 | 网页生成方法及装置 |
CN107767437A (zh) * | 2017-09-15 | 2018-03-06 | 欧昊 | 一种多层混合异步渲染方法 |
US10002115B1 (en) * | 2014-09-29 | 2018-06-19 | Amazon Technologies, Inc. | Hybrid rendering of a web page |
CN109308729A (zh) * | 2017-07-27 | 2019-02-05 | 阿里巴巴集团控股有限公司 | 图片合成处理方法、装置及系统 |
CN110580163A (zh) * | 2018-06-07 | 2019-12-17 | 腾讯科技(深圳)有限公司 | 通过模板制作挂件的方法、装置及存储设备 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4167747B2 (ja) * | 1998-04-13 | 2008-10-22 | 株式会社ルネサステクノロジ | 周波数可変発振回路及びそれを用いた位相同期回路 |
US10157236B2 (en) * | 2011-05-23 | 2018-12-18 | Radware, Ltd. | Optimized rendering of dynamic content |
US9277198B2 (en) * | 2012-01-31 | 2016-03-01 | Newblue, Inc. | Systems and methods for media personalization using templates |
US20150346938A1 (en) * | 2013-02-04 | 2015-12-03 | Visible Spectrum, Inc. | Variable Data Video |
KR101953710B1 (ko) * | 2013-03-14 | 2019-05-31 | 윅스.컴 리미티드 | 다이알로그 커스터마이제이션을 위한 시스템 및 방법 |
GB2520334B (en) * | 2013-11-18 | 2015-11-25 | Helen Bradley Lennon | A video broadcast system and a method of disseminating video content |
US9361635B2 (en) * | 2014-04-14 | 2016-06-07 | Yahoo! Inc. | Frequent markup techniques for use in native advertisement placement |
US9996976B2 (en) * | 2014-05-05 | 2018-06-12 | Avigilon Fortress Corporation | System and method for real-time overlay of map features onto a video feed |
KR101980414B1 (ko) * | 2015-02-06 | 2019-08-29 | 전자부품연구원 | 확장형 비디오 렌더링 방법 및 시스템 |
US11412312B2 (en) * | 2016-09-28 | 2022-08-09 | Idomoo Ltd | System and method for generating customizable encapsulated media files |
US11423063B2 (en) * | 2018-07-31 | 2022-08-23 | Salesforce, Inc. | Flattening hierarchical database records using inverted indexing |
-
2020
- 2020-05-14 JP JP2021539667A patent/JP7248802B2/ja active Active
- 2020-05-14 CN CN202080008316.9A patent/CN113966619B/zh active Active
- 2020-05-14 EP EP20731266.1A patent/EP3928223A1/en active Pending
- 2020-05-14 WO PCT/US2020/032889 patent/WO2021230872A1/en unknown
- 2020-05-14 US US17/417,268 patent/US20230058512A1/en active Pending
- 2020-05-14 KR KR1020217021523A patent/KR102519049B1/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050285875A1 (en) * | 2004-06-28 | 2005-12-29 | Microsoft Corporation | Interactive viewpoint video system and process |
US20070006064A1 (en) * | 2005-07-01 | 2007-01-04 | Microsoft Corporation | Aspects of media content rendering |
CN105320662A (zh) * | 2014-06-10 | 2016-02-10 | 腾讯科技(北京)有限公司 | 网页生成方法及装置 |
US10002115B1 (en) * | 2014-09-29 | 2018-06-19 | Amazon Technologies, Inc. | Hybrid rendering of a web page |
CN109308729A (zh) * | 2017-07-27 | 2019-02-05 | 阿里巴巴集团控股有限公司 | 图片合成处理方法、装置及系统 |
CN107767437A (zh) * | 2017-09-15 | 2018-03-06 | 欧昊 | 一种多层混合异步渲染方法 |
CN110580163A (zh) * | 2018-06-07 | 2019-12-17 | 腾讯科技(深圳)有限公司 | 通过模板制作挂件的方法、装置及存储设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046010A1 (zh) * | 2022-08-31 | 2024-03-07 | 华为技术有限公司 | 一种界面显示方法、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021230872A1 (en) | 2021-11-18 |
EP3928223A1 (en) | 2021-12-29 |
JP2022536009A (ja) | 2022-08-12 |
JP7248802B2 (ja) | 2023-03-29 |
KR20210141444A (ko) | 2021-11-23 |
KR102519049B1 (ko) | 2023-04-06 |
US20230058512A1 (en) | 2023-02-23 |
CN113966619B (zh) | 2024-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102626274B1 (ko) | 이미지 교체 복원 | |
CN109863527B (zh) | 用于展现的本地内容的服务器侧渲染的方法和系统 | |
US8930832B2 (en) | Multimedia communication system and method | |
US11269953B2 (en) | Server-based conversion of autoplay content to click-to-play content | |
US20130326333A1 (en) | Mobile Content Management System | |
US20140245196A1 (en) | User interface generation and preview | |
CN113966619B (zh) | 一种用于高效动态视频渲染的方法、系统及存储介质 | |
US20200042493A1 (en) | Managing white space in a portal web page | |
US11361048B2 (en) | Conditional interpretation of a single style definition identifier on a resource | |
US8756487B2 (en) | System and method for context sensitive content management | |
CN113228003A (zh) | 基于与单个内容项的变化用户交互来提供不同的内容页面 | |
Li | Web mapping/GIS services and applications | |
US20170315972A1 (en) | Transforming web-based digital content to enable native rendering | |
CN117951409A (zh) | 页面嵌套关系元素处理方法、装置、设备及存储介质 | |
EP4384929A1 (en) | Efficient, flexible, and secure dynamic digital content creation | |
CN114630194A (zh) | 弹幕跳转链接的方法、系统、设备及计算机可读存储介质 | |
CN118331549A (zh) | 页面渲染的方法、装置、设备以及存储介质 | |
CN114302229A (zh) | 一种场景素材转换为视频的方法、系统及存储介质 | |
Le | Using Web Services for Image Processing in a Desktop Widgets Engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |