CN112331235B - 多媒体内容的编辑控制方法、装置、电子设备和存储介质 - Google Patents
多媒体内容的编辑控制方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112331235B CN112331235B CN202110000662.9A CN202110000662A CN112331235B CN 112331235 B CN112331235 B CN 112331235B CN 202110000662 A CN202110000662 A CN 202110000662A CN 112331235 B CN112331235 B CN 112331235B
- Authority
- CN
- China
- Prior art keywords
- native
- application
- sub
- multimedia content
- instruction
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 106
- 230000015654 memory Effects 0.000 claims description 123
- 238000009877 rendering Methods 0.000 claims description 26
- 230000005540 biological transmission Effects 0.000 claims description 17
- 230000003993 interaction Effects 0.000 abstract description 12
- 239000010410 layer Substances 0.000 description 33
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 241000282472 Canis lupus familiaris Species 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000005477 standard model Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/02—Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
- G11B27/031—Electronic editing of digitised analogue information signals, e.g. audio or video signals
- G11B27/034—Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/102—Programmed access in sequence to addressed parts of tracks of operating record carriers
- G11B27/105—Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
-
- 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/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及计算机技术领域,尤其涉及多媒体内容的编辑控制方法、装置、电子设备和存储介质,用以为子应用提供多媒体内容编辑能力的同时,减小应用包体积。其中,方法包括:在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,对象创建指令包含待创建的原生对象对应的参数信息,以使原生应用创建原生对象,原生对象用于对多媒体内容进行编辑控制,子应用嵌套于原生应用中;确定原生应用已创建原生对象时,向原生应用发送对象调用指令,以使原生应用调用原生对象;接收原生应用返回的调用结果,根据调用结果对目标多媒体内容进行编辑控制。通过子应用和原生应用的交互实现子应用多媒体内容编辑能力,不需引入第三方库,可有效减小包体积。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及多媒体内容的编辑控制方法、装置、电子设备和存储介质。
背景技术
随着通信技术的发展和智能终端的普及,子应用作为轻型应用已成为移动互联网应用的重要形式,如用户可以通过基于原生应用的子应用来办理各种业务或进行社交活动等。其中,原生应用可以是社交类应用,如即时通讯软件;工具类应用,如美图软件,办公软件;影音娱乐类应用,如短视频软件、游戏软件;内容发布类应用,如第三方消费点评软件;内容资讯类应用,如浏览器,新闻软件;系统类应用,例如车载应用等。由于子应用具有不需要下载安装即可使用的特点,不会占用电子设备的存储空间,因此得到用户的广泛认可。
在相关技术中,子应用要实现音视频能力只能依赖第三方音视频编辑库才能实现。但是,在web(World Wide Web,万维网)端引入第三方音视频编辑库会导致前端web应用包体积很大,而子应用一般都会限制包体积。
发明内容
本申请实施例提供多媒体内容的编辑控制方法、装置、电子设备和存储介质,用以为子应用提供多媒体内容编辑能力的同时,减小应用包体积。
本申请实施例提供的第一种多媒体内容的编辑控制方法,包括:
在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,所述对象创建指令包含待创建的原生对象对应的参数信息,以使所述原生应用根据所述参数信息创建所述原生对象,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
确定所述原生应用已创建所述原生对象时,向所述原生应用发送对象调用指令,以使所述原生应用调用所述原生对象;
接收所述原生应用返回的调用结果,并根据所述调用结果对所述目标多媒体内容进行编辑控制。
本申请实施例提供的第二种多媒体内容的编辑控制方法,包括:
在接收到子应用发送的对象创建指令后,根据所述对象创建指令中待创建的原生对象的参数信息,创建所述原生对象,其中所述对象创建指令是所述子应用检测到浏览目标多媒体内容时发送的,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
接收到所述子应用发送的对象调用指令后,调用所述原生对象,其中所述对象调用指令是所述子应用确定所述原生应用已创建所述原生对象时发送的;
将调用结果返回给所述子应用,以使所述子应用根据所述调用结果对所述目标多媒体内容进行编辑控制。
可选的,所述方法还包括:
接收到所述子应用发送的针对所述原生对象的对象释放指令后,释放为所述原生对象分配的内存,其中所述对象释放指令是所述子应用在完成对所述目标多媒体内容的编辑控制之后发送的。
本申请实施例提供的第一种多媒体内容的编辑控制装置,包括:
第一传输单元,用于在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,所述对象创建指令包含待创建的原生对象对应的参数信息,以使所述原生应用根据所述参数信息创建所述原生对象,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
第二传输单元,用于确定所述原生应用已创建所述原生对象时,向所述原生应用发送对象调用指令,以使所述原生应用调用所述原生对象;
控制单元,用于接收所述原生应用返回的调用结果,并根据所述调用结果对所述目标多媒体内容进行编辑控制。
可选的,所述第二传输单元具体用于:
在接收到所述原生应用返回的所述原生对象的对象信息时,确定所述原生应用已创建所述原生对象;
根据所述对象信息向所述原生应用发送所述对象调用指令。
可选的,所述对象信息包括内存地址和类名,所述内存地址是指所述原生应用为所述原生对象分配的内存的地址,所述类名是指所述原生对象的类型;所述第二传输单元具体用于:
在调用针对所述原生对象的对象方法时,将所述内存地址和所述类名添加到所述对象调用指令中,并将所述对象调用指令发送给所述原生应用,以使所述原生应用根据所述内存地址确定为所述原生对象分配的内存,并根据所述类名确定所述原生对象的类型,通过指针索引到为所述原生对象分配的内存后,根据所述原生对象的类型调用所述原生对象相应的对象方法。
可选的,所述目标多媒体内容的播放界面展示在所述子应用的子应用页面中,所述目标多媒体内容对应的播放界面是与所述子应用页面是通过同层渲染得到的。
可选的,所述装置还包括:
第三传输单元,用于在完成对所述目标多媒体内容的编辑控制之后,向所述原生应用发送针对所述原生对象的对象释放指令,以使所述原生应用释放为所述原生对象分配的内存。
可选的,所述子应用与所述原生应用之间通过浏览器组件进行交互。
本申请实施例提供的第二种多媒体内容的编辑控制装置,包括:
对象创建单元,用于在接收到子应用发送的对象创建指令后,根据所述对象创建指令中待创建的原生对象的参数信息,创建所述原生对象,其中所述对象创建指令是所述子应用检测到浏览目标多媒体内容时发送的,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
对象调用单元,用于接收到所述子应用发送的对象调用指令后,调用所述原生对象,其中所述对象调用指令是所述子应用确定所述原生应用已创建所述原生对象时发送的;
第一反馈单元,用于将调用结果返回给所述子应用,以使所述子应用根据所述调用结果对所述目标多媒体内容进行编辑控制。
可选的,所述装置还包括:
第二反馈单元,用于在所述对象创建单元创建所述原生对象之后,在所述对象调用单元接收到所述子应用发送的对象调用指令之前, 将通过创建所述原生对象所获得的对象信息返回给所述子应用,以使所述子应用在接收到所述对象信息时,确定所述原生应用已创建所述原生对象,并根据所述对象信息发送所述对象调用指令。
可选的,所述对象创建单元具体用于:
通过解析所述对象创建指令中的参数信息,从API(Application ProgrammingInterface,应用程序编程接口)集合中选取创建所述原生对象待调用的目标API,其中所述API集合中的API是预先配置的,与所述子应用的音视频编辑能力相关联的API;
调用所述目标API创建所述原生对象。
可选的,所述对象信息包括内存地址和类名,所述对象调用指令也包括所述内存地址和所述类名,所述内存地址是指所述原生应用为所述原生对象分配的内存的地址,所述类名是指所述原生对象的类型;所述对象调用单元具体用于:
根据所述内存地址确定为所述原生对象分配的内存,并根据所述类名确定所述原生对象的类型;
通过指针索引到为所述原生对象分配的内存后,根据所述原生对象的类型调用所述原生对象相应的对象方法。
可选的,所述装置还包括:
存储单元,用于在所述对象创建单元根据对象创建指令中待创建的原生对象的参数信息,创建所述原生对象之后,使用全局字典存储所述原生对象,以保持所述子应用对所述原生对象的引用。
可选的,所述装置还包括:
内存释放单元,用于在接收到所述子应用发送的针对所述原生对象的对象释放指令后,释放为所述原生对象分配的内存,其中所述对象释放指令是所述子应用在完成对所述目标多媒体内容的编辑控制之后发送的。
本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任意一种多媒体内容的编辑控制方法的步骤。
本申请实施例提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任意一种多媒体内容的编辑控制方法的步骤。
本申请实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行上述任意一种多媒体内容的编辑控制方法的步骤。
本申请有益效果如下:
本申请实施例提供了一种多媒体内容的编辑控制方法、装置、电子设备和存储介质。具体的,在通过子应用浏览目标多媒体内容时,向原生应用发送对象创建指令,并在确定原生应用已经创建好原生对象之后,再向原生对象发送对象调用指令,该原生对象是用于对多媒体内容进行编辑控制的对象,因而通过调用该原生对象,根据调用结果即可实现对目标多媒体内容的编辑控制。由于本申请实施例结合了原生系统的能力,通过子应用与原生应用的交互,让子应用拥有基础的多媒体内容编辑能力。并且,本申请实施例中不需要引入第三方音视频编辑库,没有包体积增量,使得子应用拥有和原生应用一样好的性能,同时有更小的包体积。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为相关技术中的一种在小程序中引入第三方音视频编辑库的示意图;
图2为本申请实施例中的一种应用场景的一个可选的示意图;
图3为本申请实施例中的第一种多媒体内容的编辑控制方法的流程示意图;
图4为本申请实施例中的一种小程序与原生应用之间的交互流程的示意图;
图5为本申请实施例中的一种原生应用创建的原生对象内存的示意图;
图6为本申请实施例中的一种未引入同层渲染时的界面层级示意图;
图7为本申请实施例中的一种引入同层渲染时的界面层级示意图;
图8为本申请实施例中的一种WKWebView节点树的示意图;
图9为本申请实施例中的另一种小程序与原生应用之间的交互流程的示意图;
图10为本申请实施例中的第二种多媒体内容的编辑控制方法的流程示意图;
图11为本申请实施例中的一个可选的交互实现时序流程示意图;
图12为本申请实施例中的第一种多媒体内容的编辑控制装置的组成结构示意图;
图13为本申请实施例中的第二种多媒体内容的编辑控制装置的组成结构示意图;
图14为应用本申请实施例的一种电子设备的一个硬件组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
下面对本申请实施例中涉及的部分概念进行介绍。
原生应用:原生应用程序和网络应用程序相反,原生应用程序被安装在终端设备上,它能够使用终端设备硬件功能(扬声器、加速度传感器、摄像头等)。它定义性的特点是能够从应用程序市场中下载。本申请实施中的子应用和原生应用具有嵌套关系,子应用嵌套于原生应用中。
子应用:是指一种基于特定编程语言开发完成,无需下载和安装,就可以使用的移动端应用程序,其可以运行在跨平台移动客户端上。子应用可以包括基于原生应用运行的小程序等。小程序的最大特点是使用便捷,用户扫一扫或者搜一下即可打开应用,无需手动在移动端的操作系统中安装,从而用户不用关心是否安装太多应用程序的问题。另外,小程序开发者可便捷地把插件添加到自己的小程序内,丰富小程序的服务。当用户在使用小程序时,将可以在小程序内使用插件提供的服务。
DOM(Document Object Model,文档对象模型):是处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。
对象和类:对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。类则是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。日常生活中的所有东西都是对象,是类的实例化。比如:推土车是汽车的实例化;小白(狗的名字)是狗的实例化;而具有同种属性的对象称为类,是个抽象的概念。比如:汽车、狗。
原生对象:JS(JavaScript,脚本)中的所有事物都是对象,包括但不限于字符串、数值、数组、函数等等,还包括自定义对象。原生对象是指独立于宿主环境的ECMAScript(European Computer Manufacturers Association,一种脚本程序设计语言)实现提供的对象。
字典:是一种以键-值对形式存储数据的数据结构,比如:名字-电话号码,通过名字就能找到对应的电话号码,名字就是键(key),电话号就是值(value)。字典中的键,是值在字典中的索引。对于JavaScript来说,字典类(Dictionary)的基础是Array(数组)类,JS中的Array既是一个数组,同时也是一个字典。在本申请实施例中,原生应用可基于全局字典存储创建的所有原生对象,以保持子应用对原生对象的引用。
插件(Plug-in):是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数库或者数据。很多软件都有插件,插件有无数种。在本申请实施例中的插件,主要是在原生应用侧提供的音视频插件,这些插件有大量接口API,可以让子应用灵活组合设计出功能丰富的音视频编辑能力。
同层渲染:指通过一定的技术手段把原生组件直接渲染到WebView(网页视图)层级上,此时原生组件层已经不存在,原生组件此时已被直接挂载到WebView节点上。在本申请实施例中,目标多媒体内容的播放界面是展示在子应用的子应用页面中的,在渲染过程中,目标多媒体内容对应的播放界面是与子应用页面是通过同层渲染得到的。
下面对本申请实施例的设计思想进行简要介绍:
随着通信技术的不断发展和计算机技术的普及,各种应用程序(Application,APP)走进人们的日常生活,而子应用作为一种不需要下载安装即可使用的程序,只需要扫描二维码,或搜一搜,就能立即使用。其具有无需安装、无需卸载、用完即走,不占手机内存的特点,更是得到各行各业的广泛关注。目前各种行业的APP纷纷开发子应用,以便于自己的推广,抢占用户流量,而在子应用中实现音视频播放正逐渐成为人们的迫切实现的一种需求。
在相关技术中,子应用要实现音视频能力只能依赖第三方音视频编辑库才能实现。例如图1所示,在小程序应用中带上FFmpeg(Fast Forward Mpeg,一种开源计算机程序)或WebRTC(Web Real-Time Communication,网页实时通信)库,以实现小程序应用的音视频编辑能力。其他子应用也都是类似的处理方式。但是,在web端引入第三方音视频编辑库会导致前端web应用包体积很大,而子应用一般都会限制包体积。
有鉴于此,本申请实施例提出了一种多媒体内容的编辑控制方法、装置、电子设备和存储介质。具体的,在通过子应用浏览目标多媒体内容时,向原生应用发送对象创建指令,并在确定原生应用已经创建好原生对象之后,再向原生对象发送对象调用指令,该原生对象是用于对多媒体内容进行编辑控制的对象,因而通过调用该原生对象,根据调用结果即可实现对目标多媒体内容的编辑控制。由于本申请实施例结合了原生系统的能力,通过子应用与原生应用的交互,让子应用拥有非常完善的音视频编辑能力,基础音视频编辑能力。并且,本申请实施例中不需要引入第三方音视频编辑库,没有包体积增量,使得子应用拥有和原生应用一样好的性能,同时有更小的包体积,让音视频应用更容易实现和落地。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图2所示,其为本申请实施例的应用场景示意图。该应用场景图中包括两个终端设备210和一个服务器220。终端设备210与服务器220之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络是有线网络或无线网络。终端设备210以及服务器220可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在本申请实施例中,终端设备210为用户使用的电子设备,该电子设备可以是个人计算机、手机、平板电脑、笔记本、电子书阅读器、智能家居等具有一定计算能力并且运行有即时通讯类软件及网站或者社交类软件及网站的计算机设备。各终端设备210通过无线网络与服务器220,服务器220可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,每个终端设备210中都可以安装有具有多媒体内容编辑能力的原生应用,例如具有音视频编辑能力的原生应用,具有图像动画编辑能力的原生应用等,子应用则嵌套于原生应用中。
在本申请实施例中主要是以音视频编辑为例进行举例说明的,子应用中的基础音视频编辑能力可以用在各种有音视频编辑需求的产品上。子应用可以基于该能力实现如:音视频裁剪、变速、特效、模板、红包效果等功能。常见的可以在子应用中实现音视频编辑能力的产品包括:影音娱乐类应用,比如可以通过短视频软件小程序给发布的视频加红包,让用户浏览短视频的同时领取红包,还可以在用户录制短视频时提供特效;再比如游戏软件,可以让用户通过小程序边游戏边直播等。工具类,比如美图软件,可以让用户通过小程序做基础图片编辑;再比如办公软件,可以通过小程序为用户提供模板。内容发布类,比如第三方消费点评软件,可以让用户在小程序上传视频发布评价。内容资讯类应用,比如浏览器,可以让用户通过网页小程序进行音视频裁剪、变速等。社交类,比如即时通讯软件,可以通过小程序浏览音视频,等等。
另外,本申请实施例中列举的小程序不仅可以嵌套在上述所列举的终端APP上流转,也可流转到互联网汽车上,为用户提供从出行到生活一站式的服务,实现上车前、行车中、下车后串联的服务场景。对应的,原生应用可以为系统类应用,例如车载应用,可以让用户通过车载小程序实现音视频裁剪、变速、特效、模板、红包效果等功能,基于上述音视频编辑能力的实现,可以围绕车场景为用户提供从出行到生活的各类智慧服务。
与相关技术相比,本申请实施例中的多媒体内容的编辑控制方法结合了WebView的JS交互技术,WebView同层渲染,子应用插件模式,内存管理机制。在应用层,基于WebView之上,子应用代码被加载到WebView上运行。原生代码监听Webkit(浏览器)的JS API调用,以及向WebView发送JS消息,以此来达到子应用和原生API交互。
下面主要以子应用为小程序应用为例,结合附图对本申请实施例中的编辑控制方法进行详细介绍:
参阅图3所示,为本申请实施例提供的一种多媒体内容的编辑控制方法的实施流程图,应用于子应用,该方法的具体实施流程如下:
S31:在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,对象创建指令包含待创建的原生对象对应的参数信息,以使原生应用根据参数信息创建原生对象,原生对象用于对多媒体内容进行编辑控制,子应用嵌套于原生应用中;
在本申请实施例中,对多媒体内容进行编辑控制时,分为好多种控制类型,比如:裁剪,变速,编解码,贴纸,特效,模板等。这里的原生对象是指对多媒体内容进行具体的某一类控制的,意思是说:在对目标多媒体内容进行裁剪时,需要创建一类用于对多媒体内容进行裁剪控制的原生对象A,在对目标多媒体内容进行变速时,需要创建一类用于对多媒体内容进行变速控制的原生对象B,等等。
其中,原生应用在接收到子应用发送的对象创建指令后,会根据对象创建指令中待创建的原生对象的参数信息,来创建原生对象,为原生对象分配内存。
另外,考虑到使用web端提供的基础API实现小程序音视频编辑能力的这种方式,由于web在音视频处理上的API不够完善,会造成部分能力很难实现或者性能较差。本申请实施例结合了原生系统的能力,直接暴露原生能力的基础API,让小程序拥有基础音视频编辑能力,并同时有更小的包体积和更好的渲染性能。
具体的,在原生应用侧的原生层,通过插件的方式,将支持的音视频编辑能力注册到小程序API列表中。在原生层收到JS消息后,会自动调用注册的插件类和方法。
其中,本申请实施例提供的音视频插件有两个特点,一是这个插件有大量接口API,例如编解码接口API,裁剪接口API,变速接口API,贴纸接口API,特效接口API,模板接口API等,对应不同的音视频编辑能力。由于本申请实施例中的音视频插件提供的是基础的音视频编辑接口,可以让小程序灵活组合设计出功能丰富的音视频编辑能力。二是原生对象需要和小程序做绑定关系,让小程序可以向原生对象发送消息,原生对象也可以向小程序发送消息。
可选的,在原生应用侧,原生应用根据对象创建指令中待创建的原生对象的参数信息,创建原生对象时,需要解析该指令中的参数信息,通过解析参数信息,从API集合中选取创建原生对象待调用的目标API;调用目标API创建原生对象。其中,该API集合中的API是预先配置的,与子应用的音视频编辑能力相关联的API。在本申请实施例中的API集合主要是指API列表,该列表可以包括上述所列举的6中接口API。
例如,需要通过小程序对目标多媒体内容进行裁剪时,参数信息中的类名可以是“TAVClip”,对应的目标API即裁剪接口API;若需要通过小程序对音视频进行编解码时,参数信息中的类名可以是“TAVPlayer”,对应的目标API即编解码接口API,等等。
需要说明的是,本申请实施例中所列举的原生应用提供的音视频编辑能力相关的API接口只是举例说明,实际上,任何一种音视频编辑能力相关的API接口都适用于本申请实施例,在此不做具体限定。另外,本申请实施例中所列举的小程序消息发送的API格式也只是举例说明,并不仅限于此,在此不再一一列举。
在原生对象内存管理机制上,通过小程序和原生交互创建的对象有一个问题,原生对象在被创建后,如果没有被持有,内存会被系统释放。小程序下一次发消息就会找不到这个对象。为解决上述问题,本申请实施例中提出了基于全局字典的对象存储方法。
在原生层,使用了全局字典存储创建的对象,只要是小程序创建的对象都会存储到全局字典中,保持引用。
S32:确定原生应用已创建原生对象时,向原生应用发送对象调用指令,以使原生应用调用原生对象;
S33:接收原生应用返回的调用结果,并根据调用结果对目标多媒体内容进行编辑控制。
比如目标多媒体内容为视频文件A,若需要将视频文件A的播放速度调整成2倍速,小程序根据原生应用返回的调用结果,对视频文件A进行倍速播放。
在本申请实施例中,小程序应用在调用JS的时候,会将包含对象调用指令的JS消息发送到原生层,原生层根据JS消息解析出要处理的逻辑。也就是说,原生应用接收到子应用发送的对象调用指令后,调用原生对象对应的方法,进行相应的处理,进而将调用结果返回给子应用。
具体的,在原生应用提供了对应的API后,小程序上就可以使用对应的API调用JS方法。原生应用插件在收到JS调用后,会自动分发到不同的原生对象去调用对应的方法。因而,本申请实施例可以通过解析参数,然后再分发到具体API上,实现大量API在分发时的简单扩展,提高音视频编辑控制效率。
可选的,本申请实施例中的子应用是嵌套于原生应用中的,例如小程序应用。子应用和原生应用之间通过浏览器组件进行交互。参阅图4所示,其为本申请实施例中的一种小程序与原生应用之间的交互流程的示意图。其中,浏览器组件即WebView、Webkit。
比如用户点击打开某一网页,通过小程序浏览目标多媒体内容时,小程序应用代码被加载到WebView上运行,此时小程序调用JS方法,JS方法会通过Webkit发送给原生应用。原生应用根据JS消息判断调用哪个功能代码,最后将调用结果发送给Webkit,再通过Webkit发送给小程序,以此来达到小程序和原生API交互。
需要说明的是,图4所示的插件具体是指音视频编辑能力相关的插件,例如图4中所列举的编解码,裁剪,变速,贴纸,特效,模板等都是与音视频编辑相关的。在通过小程序对目标多媒体内容进行编辑控制时,需要向原生应用发送对象创建指令,该指令中包含的参数信息具体是指对象类型,对象类名等,以指示该原生对象用于多媒体内容进行哪一类型的编辑控制,对应不同的音视频编辑能力。比如对音视频进行裁剪,对应的类名为“TAVClip”,对音视频进行编解码,对应的类名为“TAVPlayer”等。
在本申请实施例中,基于图4所示的交互流程和音视频插件的特点,为小程序提供三个基础接口:创建对象、释放对象、调用对象方法,具体配置如下:
接口一:创建对象接口。
func tav_creatObject(className:String,methodName:String,param:Param)->
(object:TAVObject);
其中,func表示函数function的缩写,该接口函数名称为tav_creatObject,className表示类名,className:String表示类名为字符串类型;methodName表示方法名,methodName:String表示方法名也为字符串类型;param表示参数,Param具体可以包括name(参数名)和value(值)。
例如,创建一个对象(object),对象名称为TAVObject(音视频对象)。
接口二:释放对象。
func tav_raleaseObject(object:TAVObject);
其中,该接口函数名称为tav_raleaseObject。
接口三:调用对象方法。
func tav_sendMsgToObject(object:TAVObject,methodName:String,param:
Param)。
其中,该接口函数名称为tav_sendMsgToObject,object表示要调用的对象,TAVObject即要调用的对象的名称,methodName:String表示方法名也为字符串类型;param表示参数。
在本申请实施例中,通过这三个基础协议接口,再配合不同的参数,即可让小程序调用原生层的各种音视频接口,可以满足小程序和原生层的基础通信。
在本申请实施例中,在原生应用提供了对应的API后,小程序上就可以使用对应的API调用JS方法。例如图5所示,其为本申请实施例中的一种原生应用里的插件根据小程序调用的API创建的原生对象内存的示意图。其中,图的上半部分是指小程序应用调用API的形式,下半部分是指原生应用里的插件根据小程序调用的API创建的原生对象内存。在图5中列举了原生应用插件中的几种API,分别为TAVClip(音视频裁剪)、TAVPlayer(音视频播放)、TAVExportSession(音视频导出)。
具体的,小程序通过xx.inokeNativePlugin(调用原生插件)创建对象、调用对象方法;具体的,小程序应用调用API时的具体代码如下:
xx.inokeNativePlugin({ /调用原生插件
api_name:“tav_creatObject”,/接口名称:tav_creatObject(音视频_创建对象)
data:{ /数据
“className”:“TAVClip”, /类名:TAVClip(音视频裁剪)
“methodName”:“resource”,“param”:{“resource”:resource} /方法名:resource(资源),参数{资源:资源}
},
Success:{}, /成功
fail:{} /失败
})
上述代码表示调用原生插件中接口名称为tav_creatObject的接口API来创建对象类名为TAVClip的原生对象,用于对音视频进行裁剪;方法名称为resource。
原生应用根据className(类名)、methodName(方法名)、param参数分发到对应的API,进行处理。然后消息回传给JS。如上述代码所述的示例,原生应用需要分发给插件中的TAVClip这一API进行相应的处理。
在本申请实施例中,在原生应用提供了对应的API后,小程序上就可以使用对应的API调用JS方法。由于音视频编辑接口是由原生应用提供,所以生成的纹理画面都在原生应用。而小程序和原生应用是通过JS消息进行通信,所以无法做到纹理数据的传递。
为解决原生应用音视频编辑渲染上屏的问题,本申请实施例中的小程序提供了同层渲染的技术。也就是说,目标多媒体内容的播放界面展示在子应用的子应用页面中,目标多媒体内容对应的播放界面是与子应用页面是通过同层渲染得到的。
在本申请实施例中,同层渲染的核心原理就是将原生层的view放入到webview内的视图层级,可以把原生层的view当成是一个html(HyperText Markup Language,超文本标记语言)标签一样使用。这是因为Webview在渲染的时候,可以将DOM元素按标签创建出原生的view,同层渲染就是在这些view中找到合适的位置然后插入进去即可。
在相关技术中,小程序的内容大多是渲染在WebView上的,如果把WebView看成单独的一层,那么由系统自带的这些原生组件则位于另一个更高的层级。两个层级是完全独立的。正如图6所示,表示未引入同层渲染时的界面层级示意图,非原生组件位于WebView层,而原生组件则位于另一个较高的层级。其中,非原生组件层渲染的是小程序页面,即子应用页面。原生组件层渲染的是目标多媒体内容的播放界面。
而本申请实施例中提出的同层渲染则是指通过一定的技术手段把原生组件直接渲染到WebView层级上,此时原生组件层已经不存在,原生组件此时已被直接挂载到WebView节点上。用户几乎可以像使用非原生组件一样去使用同层渲染的原生组件。启用同层渲染之后的界面层级如图7所示。在原生应用渲染的画面,直接渲染到原生view上,然后嵌入到了小程序里。显然,子应用页面与目标多媒体内容的播放界面是通过同层渲染得到的。
参阅图8所示,其为本申请实施例中的一种WKWebView节点树的示意图。其中,WKWebView用于进行网页的渲染与展示,可以进行自定义配置。小程序在使用WKWebView进行渲染时,WKWebView在内部采用的是分层的方式进行渲染,它会将Webkit内核生成的CompositingLayer(合成层)渲染成一个WKCompositingView(WK合成视图),这是一个客户端原生的View,不过内核一般会将多个DOM节点渲染到一个CompositingLayer上,因此合成层与DOM节点之间不存在一对一的映射关系。不过当把一个DOM节点的CSS(CascadingStyle Sheets,层叠样式表)属性设置为overflow:scroll(溢出:滚动)之后,WKWebView会为其生成一个WKChildScrollView(WK子滚动视图),与DOM节点存在映射关系,这是一个原生的UIScrollView(用户界面滚动视图)的子类,也就是说WebView里的滚动实际上是由真正的原生滚动组件来承载的,以使WebView滚动有更流畅的体验。
小程序的同层渲染也正是基于WKChildScrollView实现的,如图8所示,将原生组件挂载到该WKChildScrollView节点上作为其子View,在WKChildScrollView节点插入原生组件,实现同层渲染,具有更好的渲染性能。
在一种可选的实施方式中,步骤S32的具体实现流程如下:
S321:在接收到原生应用返回的原生对象的对象信息时,确定原生应用已创建原生对象;
S322:根据对象信息向原生应用发送对象调用指令。
也就是说,原生应用在接收到子应用发送的对象创建指令后,会创建相应的原生对象,并将通过创建原生对象所获得的对象信息返回给子应用,这样,子应用在接收到对象信息时,即可确定原生应用已创建原生对象。进而,在需要调用对象方法时,根据原生应用返回的对象信息,向原生应用发送针对该原生对象的对象调用指令。
考虑到使用全局字典可以存储之前创建的对象,但是有一些情况下还是会遇到对象无法找到的问题。比如尽管创建的对象都会存储在全局字典中,但是如果是对象上通过get(获取)方法获取到的对象属性,不在字典中,就会遇到对象无法找到的问题。如果用户在使用get方法调用的时候做一次字典存储,可以确保对象能被查找到,但是这样会加重API的实现麻烦程度。在本申请实施例中,提出了一种解决这个问题的更好的方法,考虑到get得到的对象实际上一直会存在于系统内存中,因为它是存在引用关系的,因而只要有这个对象的内存地址和类名,就可以动态得到实例对象。
可选的,原生应用在创建原生对象之后,将为该原生对象所分配的内存的地址,原生对象的类名等信息作为对象信息,通过原生层向小程序返回对象时的数据结构会提供内存地址和类名,其中,内存地址是指原生应用为原生对象分配的内存的地址,类名是指原生对象的类型。小程序在接收到针对该对象信息后,可确定原生应用已创建原生对象。小程序在调用对象方法的时候,将内存地址和类名作为对象数据,添加到对象调用指令中,传回给原生应用的原生层,由原生层使用指针动态创建对象实例,并调用对象方法。
具体过程为:在小程序调用针对该原生对象的对象方法时,将内容地址和类名添加到对象调用指令中,并将该对象调用指令发送给原生应用;在原生应用接收到包含有内容地址和类名的对象调用指令之后,根据内存地址确定为原生对象分配的内存,并根据类名确定原生对象的类型;通过指针索引到为原生对象分配的内存后,根据原生对象的类型调用原生对象相应的对象方法。
参阅图9所示,其为本申请实施例中的另一种小程序与原生应用之间的交互流程的示意图。小程序创建Clip对象时,向原生应用发送创建对象命令(即对象创建指令),原生应用在接收到该命令后,首先在临时内存中完成对象创建。之后将对象内存移动到常驻内存(即通过全局字典进行对象存储),确保小程序可以访问到对象。之后,将该原生对象的对象信息返回给小程序,具体包括identifier(对象ID)和className(对象类名)。在小程序要调用Clip方法时,将identifier和className添加到对象调用指令中,发送给原生应用,以调用对应的对象方法。
例如图9,其中identifier为0x3df3459,表示原生对象的内存地址为0x3df3459,className为Clip,在原生应用接收到这些信息后,基于方法转发器,根据identifier转到内存,根据className确定类型,之后即可通过指针索引到为原生对象分配的内存后,根据原生对象的类型调用原生对象相应的对象方法。
在上述实施方式中,只要有原生对象的内存地址和类名,就可以动态得到实例对象,以解决通过get方法获取到的对象属性不在字典中,导致对象无法找到的问题。
可选的,小程序可在完成对目标多媒体内容的编辑控制后,向原生应用发送针对原生对象的对象释放指令。原生应用在接收到针对原生对象的对象释放指令后,释放之前为该原生对象分配的内存。
具体的,小程序可以通过调用release消息,释放对象资源。比如,目标多媒体内容为视频文件A,在完成对视频文件A的裁剪之后,即结束了对目标多媒体内容的编辑控制,此时可向原生应用发送针对原生对象TAVClip的release消息,即对象释放指令,该指令中可包含该原生对象的内存地址和类名(类名,对象id)等信息,在原生应用接收到release消息之后,即可通过对应的API接口,例如上述所列举的释放对象的API接口,释放之前为该原生对象分配的内存。另外,在插件销毁时,原生层也会自动清理所有引用对象。一般,在退出小程序或者其他情况下,即可进行插件销毁,自动清理掉相关的所有原生对象。
在上述实施方式中,可在小程序完成对目标多媒体内容的某一种编辑控制时,即可向原生应用发送针对用于该类编辑控制的原生对象的对象释放指令,由原生对象释放相应的内存,以避免内存溢出。
基于相同的发明构思,本申请实施例还提供一种多媒体内容的编辑控制方法,应用于原生应用。参阅图10所示,为本申请实施例提供的第二种多媒体内容的编辑控制方法的实施流程图,该方法的具体实施流程如下:
S101:在接收到子应用发送的对象创建指令后,根据对象创建指令中待创建的原生对象的参数信息,创建原生对象,其中对象创建指令是子应用检测到浏览目标多媒体内容时发送的,原生对象用于对多媒体内容进行编辑控制,子应用嵌套于原生应用中;
S102:接收到子应用发送的对象调用指令后,调用原生对象,其中对象调用指令是子应用确定原生应用已创建原生对象时发送的;
S103:将调用结果返回给子应用,以使子应用根据调用结果对目标多媒体内容进行编辑控制。
可选的,在创建原生对象之后,在接收到子应用发送的对象调用指令之前,还包括:
将通过创建原生对象所获得的对象信息返回给子应用,以使子应用在接收到对象信息时,确定原生应用已创建原生对象,并根据对象信息发送对象调用指令。
可选的,根据对象创建指令中待创建的原生对象的参数信息,创建原生对象,具体包括:
通过解析对象创建指令中的参数信息,从API集合中选取创建原生对象待调用的目标API,其中API集合中的API是预先配置的,与子应用的音视频编辑能力相关联的API;
调用目标API创建原生对象。
可选的,对象信息包括内存地址和类名,对象调用指令也包括内存地址和类名,内存地址是指原生应用为原生对象分配的内存的地址,类名是指原生对象的类型;
接收到子应用发送的对象调用指令后,调用原生对象,具体包括:
根据内存地址确定为原生对象分配的内存,并根据类名确定原生对象的类型;
通过指针索引到为原生对象分配的内存后,根据原生对象的类型调用原生对象相应的对象方法。
可选的,在根据对象创建指令中待创建的原生对象的参数信息,创建原生对象之后,还包括:
使用全局字典存储原生对象,以保持子应用对原生对象的引用。
可选的,方法还包括:
接收到子应用发送的针对原生对象的对象释放指令后,释放为原生对象分配的内存,其中对象释放指令是子应用在完成对目标多媒体内容的编辑控制之后发送的。
需要说明的是,上述所列举的应用于原生应用侧的这些编辑控制方法的具体实施方式可参见上述实施例,重复之处不再赘述。
参阅图11所示,为一种多媒体内容的编辑控制方法的交互时序图。该方法的具体实施流程如下:
步骤S1101:小程序应用在检测到通过小程序页面浏览目标多媒体内容时,向原生应用发送对象创建指令;
步骤S1102:原生应用根据对象创建指令解析得到对象创建指令中的参数信息,并根据解析出的参数信息,从API集合中选取创建原生对象所需调用的目标API;
步骤S1103:原生应用调用目标API创建原生对象,并通过全局字典存储创建的原生对象;
步骤S1104:原生应用向通过创建原生对象所获得的对象信息返回给子应用,对象信息包括内存地址和类名;
步骤S1105:小程序应用在调用针对原生对象的对象方法时,将内存地址和类名添加到对象调用指令中,并将对象调用指令发送给原生应用;
步骤S1106:原生应用根据内存地址确定为原生对象分配的内存资源,并根据类名确定原生对象的类型;
步骤S1107:通过指针索引到为原生对象分配的内存后,根据原生对象的类型调用相应的对象方法,以对目标多媒体资源进行相应的数据处理;
步骤S1108:原生应用将调用结果返回给小程序应用;
步骤S1109:小程序应用根据调用结果对目标多媒体内容进行编辑控制。
基于相同的发明构思,本申请实施例还提供一种多媒体内容的编辑控制装置。如图12所示,其为本申请实施例提出的一种多媒体内容的编辑控制装置1200的结构示意图,应用于子应用,可以包括:
第一传输单元1201,用于在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,对象创建指令包含待创建的原生对象对应的参数信息,以使原生应用根据参数信息创建原生对象,原生对象用于对多媒体内容进行编辑控制,子应用嵌套于原生应用中;
第二传输单元1202,用于确定原生应用已创建原生对象时,向原生应用发送对象调用指令,以使原生应用调用原生对象;
控制单元1203,用于接收原生应用返回的调用结果,并根据调用结果对目标多媒体内容进行编辑控制。
可选的,第二传输单元1202具体用于:
在接收到原生应用返回的原生对象的对象信息时,确定原生应用已创建原生对象;
根据对象信息向原生应用发送对象调用指令。
可选的,对象信息包括内存地址和类名,内存地址是指原生应用为原生对象分配的内存的地址,类名是指原生对象的类型;第二传输单元1202具体用于:
在调用针对原生对象的对象方法时,将内存地址和类名添加到对象调用指令中,并将对象调用指令发送给原生应用,以使原生应用根据内存地址确定为原生对象分配的内存,并根据类名确定原生对象的类型,通过指针索引到为原生对象分配的内存后,根据原生对象的类型调用原生对象相应的对象方法。
可选的,目标多媒体内容的播放界面展示在子应用的子应用页面中,目标多媒体内容对应的播放界面是与子应用页面是通过同层渲染得到的。
可选的,装置还包括:
第三传输单元1204,用于在完成对目标多媒体内容的编辑控制之后,向原生应用发送针对原生对象的对象释放指令,以使原生应用释放为原生对象分配的内存。
可选的,子应用与原生应用之间通过浏览器组件进行交互。
基于相同的发明构思,本申请实施例还提供一种多媒体内容的编辑控制装置。如图13所示,其为本申请实施例提出的一种多媒体内容的编辑控制装置1300的结构示意图,应用于原生应用,可以包括:
对象创建单元1301,用于在接收到子应用发送的对象创建指令后,根据对象创建指令中待创建的原生对象的参数信息,创建原生对象,其中对象创建指令是子应用检测到浏览目标多媒体内容时发送的,原生对象用于对多媒体内容进行编辑控制,子应用嵌套于原生应用中;
对象调用单元1302,用于接收到子应用发送的对象调用指令后,调用原生对象,其中对象调用指令是子应用确定原生应用已创建原生对象时发送的;
第一反馈单元1303,用于将调用结果返回给子应用,以使子应用根据调用结果对目标多媒体内容进行编辑控制。
可选的,装置还包括:
第二反馈单元1304,用于在对象创建单元1301创建原生对象之后,在对象调用单元1302接收到子应用发送的对象调用指令之前, 将通过创建原生对象所获得的对象信息返回给子应用,以使子应用在接收到对象信息时,确定原生应用已创建原生对象,并根据对象信息发送对象调用指令。
可选的,对象创建单元1301具体用于:
通过解析对象创建指令中的参数信息,从API集合中选取创建原生对象待调用的目标API,其中API集合中的API是预先配置的,与子应用的音视频编辑能力相关联的API;
调用目标API创建原生对象。
可选的,对象信息包括内存地址和类名,对象调用指令也包括内存地址和类名,内存地址是指原生应用为原生对象分配的内存的地址,类名是指原生对象的类型;对象调用单元1302具体用于:
根据内存地址确定为原生对象分配的内存,并根据类名确定原生对象的类型;
通过指针索引到为原生对象分配的内存后,根据原生对象的类型调用原生对象相应的对象方法。
可选的,装置还包括:
存储单元1305,用于在对象创建单元1301根据对象创建指令中待创建的原生对象的参数信息,创建原生对象之后,使用全局字典存储原生对象,以保持子应用对原生对象的引用。
可选的,装置还包括:
内存释放单元1306,用于在接收到子应用发送的针对原生对象的对象释放指令后,释放为原生对象分配的内存,其中对象释放指令是子应用在完成对目标多媒体内容的编辑控制之后发送的。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
在介绍了本申请示例性实施方式的多媒体内容的编辑控制方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。该电子设备可以用于资源对象的转移控制。在一种实施例中,该电子设备可以是服务器,如图2所示的服务器220,也可以是终端设备,如图2所示的终端设备210。在该实施例中,电子设备的结构可以如图14所示,包括存储器1401,通讯模块1403以及一个或多个处理器1402。
存储器1401,用于存储处理器1402执行的计算机程序。存储器1401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1401可以是易失性存储器(volatile memory),例如随机存取存储器(ranDOM-access memory,RAM);存储器1401也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1401是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1401可以是上述存储器的组合。
处理器1402,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1402,用于调用存储器1401中存储的计算机程序时实现上述多媒体内容的编辑控制方法。
通讯模块1403用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器1401、通讯模块1403和处理器1402之间的具体连接介质。本公开实施例在图14中以存储器1401和处理器1402之间通过总线1404连接,总线1404在图14中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1404可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1401中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的多媒体内容的编辑控制方法。处理器1402用于执行上述的多媒体内容的编辑控制方法,如图3或图10所示。
在一些可能的实施方式中,本申请提供的多媒体内容的编辑控制方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的多媒体内容的编辑控制方法中的步骤,例如,计算机设备可以执行如图3或图10中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDOM Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些更改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (15)
1.一种多媒体内容的编辑控制方法,其特征在于,应用于子应用,该方法包括:
在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,所述对象创建指令包含待创建的原生对象对应的参数信息,其中,所述参数信息包括对象类型和对象类名中的至少一种,所述参数信息用于指示所述原生对象用于对多媒体内容进行编辑控制的控制类型,以使所述原生应用根据所述参数信息创建所述原生对象,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
确定所述原生应用已创建所述原生对象时,向所述原生应用发送对象调用指令,以使所述原生应用调用所述原生对象;
接收所述原生应用返回的调用结果,并根据所述调用结果对所述目标多媒体内容进行编辑控制。
2.如权利要求1所述的方法,其特征在于,确定所述原生应用已创建所述原生对象时,向所述原生应用发送对象调用指令,具体包括:
在接收到所述原生应用返回的所述原生对象的对象信息时,确定所述原生应用已创建所述原生对象;
根据所述对象信息向所述原生应用发送所述对象调用指令。
3.如权利要求2所述的方法,其特征在于,所述对象信息包括内存地址和类名,所述内存地址是指所述原生应用为所述原生对象分配的内存的地址,所述类名是指所述原生对象的类型;
所述根据所述对象信息向所述原生应用发送所述对象调用指令,具体包括:
在调用针对所述原生对象的对象方法时,将所述内存地址和所述类名添加到所述对象调用指令中,并将所述对象调用指令发送给所述原生应用,以使所述原生应用根据所述内存地址确定为所述原生对象分配的内存,并根据所述类名确定所述原生对象的类型,通过指针索引到为所述原生对象分配的内存后,根据所述原生对象的类型调用所述原生对象相应的对象方法。
4.如权利要求1所述的方法,其特征在于,所述目标多媒体内容的播放界面展示在所述子应用的子应用页面中,所述目标多媒体内容对应的播放界面是与所述子应用页面通过同层渲染得到的。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
在完成对所述目标多媒体内容的编辑控制之后,向所述原生应用发送针对所述原生对象的对象释放指令,以使所述原生应用释放为所述原生对象分配的内存。
6.如权利要求1~5任一所述的方法,其特征在于,所述子应用与所述原生应用之间通过浏览器组件进行交互。
7.一种多媒体内容的编辑控制方法,其特征在于,应用于原生应用,该方法包括:
在接收到子应用发送的对象创建指令后,根据所述对象创建指令中待创建的原生对象的参数信息,创建所述原生对象,其中,所述参数信息包括对象类型和对象类名中的至少一种,所述参数信息用于指示所述原生对象用于对多媒体内容进行编辑控制的控制类型,所述对象创建指令是所述子应用检测到浏览目标多媒体内容时发送的,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
接收到所述子应用发送的对象调用指令后,调用所述原生对象,其中所述对象调用指令是所述子应用确定所述原生应用已创建所述原生对象时发送的;
将调用结果返回给所述子应用,以使所述子应用根据所述调用结果对所述目标多媒体内容进行编辑控制。
8.如权利要求7所述的方法,其特征在于,在所述创建所述原生对象之后,在所述接收到所述子应用发送的对象调用指令之前,还包括:
将通过创建所述原生对象所获得的对象信息返回给所述子应用,以使所述子应用在接收到所述对象信息时,确定所述原生应用已创建所述原生对象,并根据所述对象信息发送所述对象调用指令。
9.如权利要求7所述的方法,其特征在于,根据对象创建指令中待创建的原生对象的参数信息,创建所述原生对象,具体包括:
通过解析所述对象创建指令中的参数信息,从应用程序编程接口API集合中选取创建所述原生对象待调用的目标API,其中所述API集合中的API是预先配置的,与所述子应用的音视频编辑能力相关联的API;
调用所述目标API创建所述原生对象。
10.如权利要求8所述的方法,其特征在于,所述对象信息包括内存地址和类名,所述对象调用指令也包括所述内存地址和所述类名,所述内存地址是指所述原生应用为所述原生对象分配的内存的地址,所述类名是指所述原生对象的类型;
所述接收到所述子应用发送的对象调用指令后,调用所述原生对象,具体包括:
根据所述内存地址确定为所述原生对象分配的内存,并根据所述类名确定所述原生对象的类型;
通过指针索引到为所述原生对象分配的内存后,根据所述原生对象的类型调用所述原生对象相应的对象方法。
11.如权利要求7~10任一所述的方法,其特征在于,根据对象创建指令中待创建的原生对象的参数信息,创建所述原生对象之后,还包括:
使用全局字典存储所述原生对象,以保持所述子应用对所述原生对象的引用。
12.一种多媒体内容的编辑控制装置,其特征在于,应用于子应用,包括:
第一传输单元,用于在检测到浏览目标多媒体内容时,向原生应用发送对象创建指令,所述对象创建指令包含待创建的原生对象对应的参数信息,以使所述原生应用根据所述参数信息创建所述原生对象,其中,所述参数信息包括对象类型和对象类名中的至少一种,所述参数信息用于指示所述原生对象用于对多媒体内容进行编辑控制的控制类型,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
第二发送单元,用于确定所述原生应用已创建所述原生对象时,向所述原生应用发送对象调用指令,以使所述原生应用调用所述原生对象;
接收单元,用于接收所述原生应用返回的调用结果,并根据所述调用结果对所述目标多媒体内容进行编辑控制。
13.一种多媒体内容的编辑控制装置,其特征在于,应用于原生应用,包括:
对象创建单元,用于在接收到子应用发送的对象创建指令后,根据所述对象创建指令中待创建的原生对象的参数信息,创建所述原生对象,其中,所述参数信息包括对象类型和对象类名中的至少一种,所述参数信息用于指示所述原生对象用于对多媒体内容进行编辑控制的控制类型,所述对象创建指令是所述子应用检测到浏览目标多媒体内容时发送的,所述原生对象用于对多媒体内容进行编辑控制,所述子应用嵌套于所述原生应用中;
对象调用单元,用于接收到所述子应用发送的对象调用指令后,调用所述原生对象,其中所述对象调用指令是所述子应用确定所述原生应用已创建所述原生对象时发送的;
第一反馈单元,用于将调用结果返回给所述子应用,以使所述子应用根据所述调用结果对所述目标多媒体内容进行编辑控制。
14.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~6中任一所述方法的步骤或权利要求7~11中任一所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~6中任一所述方法的步骤或权利要求7~11中任一所述方法的步骤。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110000662.9A CN112331235B (zh) | 2021-01-04 | 2021-01-04 | 多媒体内容的编辑控制方法、装置、电子设备和存储介质 |
PCT/CN2022/070027 WO2022144016A1 (zh) | 2021-01-04 | 2022-01-04 | 应用程序控制方法、装置、电子设备和存储介质 |
EP22734741.6A EP4210053A4 (en) | 2021-01-04 | 2022-01-04 | APPLICATION PROGRAM CONTROL METHOD AND APPARATUS, ELECTRONIC DEVICE, AND STORAGE MEDIUM |
US17/974,454 US11722555B2 (en) | 2021-01-04 | 2022-10-26 | Application control method and apparatus, electronic device, and storage medium |
US18/212,090 US11909812B2 (en) | 2021-01-04 | 2023-06-20 | Application control method and apparatus, electronic device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110000662.9A CN112331235B (zh) | 2021-01-04 | 2021-01-04 | 多媒体内容的编辑控制方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112331235A CN112331235A (zh) | 2021-02-05 |
CN112331235B true CN112331235B (zh) | 2021-04-06 |
Family
ID=74302410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110000662.9A Active CN112331235B (zh) | 2021-01-04 | 2021-01-04 | 多媒体内容的编辑控制方法、装置、电子设备和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11722555B2 (zh) |
EP (1) | EP4210053A4 (zh) |
CN (1) | CN112331235B (zh) |
WO (1) | WO2022144016A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112331235B (zh) | 2021-01-04 | 2021-04-06 | 腾讯科技(深圳)有限公司 | 多媒体内容的编辑控制方法、装置、电子设备和存储介质 |
CN113204393A (zh) * | 2021-04-25 | 2021-08-03 | 随锐科技集团股份有限公司 | 原生与js交互的消息处理方法 |
CN113470701B (zh) * | 2021-06-30 | 2022-07-01 | 深圳万兴软件有限公司 | 音视频的编辑方法、装置、计算机设备及存储介质 |
CN113791988B (zh) * | 2021-11-17 | 2022-02-18 | 畅捷通信息技术股份有限公司 | 一种降低小程序包体积的渲染方法、装置及存储介质 |
CN116775164A (zh) * | 2022-03-08 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 子应用程序运行方法、装置、电子设备及可读存储介质 |
CN114885207B (zh) * | 2022-03-21 | 2024-04-19 | 青岛海尔科技有限公司 | 多媒体文件的渲染方法、装置、存储介质及电子装置 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6401109B1 (en) * | 1996-11-18 | 2002-06-04 | International Business Machines Corp. | Virtual socket for JAVA interprocess communication |
US6324685B1 (en) * | 1998-03-18 | 2001-11-27 | Becomm Corporation | Applet server that provides applets in various forms |
US7136857B2 (en) * | 2000-09-01 | 2006-11-14 | Op40, Inc. | Server system and method for distributing and scheduling modules to be executed on different tiers of a network |
US7752214B2 (en) * | 2000-09-01 | 2010-07-06 | Op40, Inc. | Extended environment data structure for distributed digital assets over a multi-tier computer network |
GB0222420D0 (en) * | 2002-09-27 | 2002-11-06 | Ibm | Optimized corba software method invocation |
US8266201B2 (en) * | 2010-03-29 | 2012-09-11 | The Aerospace Corporation | System and method for distributing processing of a single-process application having first and second objects in a network having local and remote processes |
US9170808B2 (en) * | 2013-11-07 | 2015-10-27 | Sap Se | Dynamic containerization |
US9875121B2 (en) * | 2014-09-17 | 2018-01-23 | International Business Machines Corporation | API server |
CN104636139B (zh) * | 2015-01-26 | 2018-05-15 | 北京邮电大学 | 一种可视化跨平台移动应用开发与生成系统 |
US9497606B1 (en) * | 2016-03-24 | 2016-11-15 | Peerless Network, Inc. | Native dialer fall-back |
CN106502736B (zh) * | 2016-10-18 | 2018-04-06 | 腾讯科技(深圳)有限公司 | 应用程序处理方法和装置 |
CN108108205B (zh) * | 2016-11-25 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 应用程序页面处理方法和装置 |
CN108255546B (zh) * | 2016-12-29 | 2021-09-24 | 腾讯科技(北京)有限公司 | 一种数据加载动画的实现方法及装置 |
CN106873871B (zh) * | 2017-01-06 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 页面截图方法和装置 |
WO2018152111A1 (en) * | 2017-02-14 | 2018-08-23 | Sherman Brian Arthur | System for creating data-connected applications |
CN111052045B (zh) * | 2017-09-29 | 2022-07-15 | 苹果公司 | 计算机生成的现实平台 |
CN108228894B (zh) * | 2018-02-05 | 2023-07-04 | 腾讯科技(深圳)有限公司 | 查看最近使用文件的方法、装置及终端 |
CN109032691B (zh) * | 2018-06-25 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种小程序运行方法、装置及存储介质 |
CN109548018B (zh) * | 2019-01-11 | 2021-11-23 | 腾讯科技(深圳)有限公司 | 无线网络接入方法、装置、设备及系统 |
CN110401878A (zh) * | 2019-07-08 | 2019-11-01 | 天脉聚源(杭州)传媒科技有限公司 | 一种视频剪辑方法、系统及存储介质 |
CN111208997A (zh) * | 2019-12-30 | 2020-05-29 | 广东飞企互联科技股份有限公司 | 一种基于微信小程序的动态图文添加组件及其实现方法 |
CN111367635B (zh) * | 2020-02-28 | 2023-04-25 | 北京百度网讯科技有限公司 | 宿主平台层中的应用接口实现方法、装置、设备和介质 |
CN113760362A (zh) * | 2020-06-03 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 应用程序的移植方法、装置、设备及介质 |
CN112169320B (zh) * | 2020-09-23 | 2023-10-10 | 腾讯科技(深圳)有限公司 | 应用程序的启动及存档方法、装置、设备及存储介质 |
CN112331235B (zh) * | 2021-01-04 | 2021-04-06 | 腾讯科技(深圳)有限公司 | 多媒体内容的编辑控制方法、装置、电子设备和存储介质 |
US11647052B2 (en) * | 2021-04-22 | 2023-05-09 | Netskope, Inc. | Synthetic request injection to retrieve expired metadata for cloud policy enforcement |
-
2021
- 2021-01-04 CN CN202110000662.9A patent/CN112331235B/zh active Active
-
2022
- 2022-01-04 EP EP22734741.6A patent/EP4210053A4/en active Pending
- 2022-01-04 WO PCT/CN2022/070027 patent/WO2022144016A1/zh unknown
- 2022-10-26 US US17/974,454 patent/US11722555B2/en active Active
-
2023
- 2023-06-20 US US18/212,090 patent/US11909812B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11909812B2 (en) | 2024-02-20 |
US20230059097A1 (en) | 2023-02-23 |
CN112331235A (zh) | 2021-02-05 |
US11722555B2 (en) | 2023-08-08 |
EP4210053A1 (en) | 2023-07-12 |
WO2022144016A1 (zh) | 2022-07-07 |
US20230336619A1 (en) | 2023-10-19 |
EP4210053A4 (en) | 2024-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112331235B (zh) | 多媒体内容的编辑控制方法、装置、电子设备和存储介质 | |
CN111158818B (zh) | 一种页面渲染方法和装置 | |
EP2075976A1 (en) | Adaptive Streaming for On Demand Wireless Services | |
WO2023093414A1 (zh) | 微应用的开发方法、装置、设备、存储介质及程序产品 | |
WO2014107987A1 (en) | File presenting method and apparatus for a smart terminal | |
CN111408138A (zh) | 基于游戏引擎的渲染方法、装置及电子设备 | |
CN105072461A (zh) | 一种数据处理方法和装置 | |
WO2017107851A1 (zh) | 一种桌面应用组件发布、更新方法及装置 | |
CN101346994A (zh) | 优化多媒体场景的呈现的方法及相应的程序、信号、数据载体、终端和接收方法 | |
US20240007701A1 (en) | Continuing video playback when switching from a dynamic page to a non-dynamic page | |
CN108156009B (zh) | 一种服务调用方法及装置 | |
US8938522B2 (en) | Tiered XML services in a content management system | |
CN113568661A (zh) | 一种基于Android sdk实现app混合开发的方法 | |
KR102519049B1 (ko) | 동적 컴포넌트를 포함하는 비디오의 효율적 렌더링 | |
CN111708519B (zh) | 一种业务组件的处理方法、装置、设备和存储介质 | |
CN111327941B (zh) | 一种离线视频播放方法、装置、设备及介质 | |
CN115175002B (zh) | 一种视频播放方法及设备 | |
CN116257707B (zh) | 一种应用发布方法、装置、电子设备及存储介质 | |
CN116820555B (zh) | 应用程序的分包方法、装置、电子设备及可读存储介质 | |
CN109614234B (zh) | 资源优化方法、装置、介质及电子设备 | |
WO2016119744A1 (en) | Interactive operation method, and transmitter machine, receiver machine and interactive operation system using the same | |
CN113946387A (zh) | App分享扩展外部调用方法 | |
CN116170643A (zh) | 多媒体数据处理方法、系统、设备、存储介质及程序产品 | |
CN115842815A (zh) | 基于Web的视频效果添加 | |
CN116107599A (zh) | 安装包优化方法、装置、电子设备及存储介质 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40038311 Country of ref document: HK |