多媒体文件的渲染方法、装置、存储介质及电子装置与流程

文档序号:31079774发布日期:2022-08-09 22:12阅读:73来源:国知局
多媒体文件的渲染方法、装置、存储介质及电子装置与流程

1.本技术涉及应用开发技术领域,具体而言,涉及一种多媒体文件的渲染方法、装置、存储介质及电子装置。


背景技术:

2.在应用app的flutter相册package中,目前的相册库在进行多媒体预览,如视频预览的时候,加载慢,若视频较长,首次进入视频预览的时候会出现长时间的黑屏,且视频越长,黑屏时间越长,严重影响用户体验。
3.由此可知,相关技术中存在多媒体文件预览速度慢,用户体验差的问题。
4.针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种多媒体文件的渲染方法、装置、存储介质及电子装置,以至少解决相关技术中存在的多媒体文件预览速度慢,用户体验差的问题。
6.根据本发明的一个实施例,提供了一种多媒体文件的渲染方法,包括:确定接收到的获取指令中包括的第一标识信息,其中,所述第一标识信息用于标识所述多媒体文件;将所述第一标识信息传递到原生层,在所述原生层中基于所述第一标识信息获取所述多媒体文件,其中,所述原生层存储有所述多媒体文件;在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在所述原生层中获取的所述多媒体文件。
7.在一个示例性实施例中,将所述第一标识信息传递到原生层包括:创建由移动应用软件开发工具包到原生层的信息传递接口;基于所述信息传递接口将所述第一标识信息传递到所述原生层。
8.在一个示例性实施例中,创建由移动应用软件开发工具包到原生层的信息传递接口包括:创建多媒体播放器;创建所述多媒体播放器的平台接口;将所述平台接口确定为所述信息传递接口。
9.在一个示例性实施例中,在所述原生层中基于所述第一标识信息获取所述多媒体文件包括:基于所述第一标识信息获取系统相册资源对象;在所述原生层基于所述系统相册资源对象获取所述多媒体文件。
10.在一个示例性实施例中,在所述原生层基于所述系统相册资源对象获取所述多媒体文件之后,所述方法还包括:在所述原生层初始化系统多媒体播放器;基于所述多媒体文件生成目标纹理;将所述目标纹理与初始化后的所述系统多媒体播放器进行关联;将与所述系统多媒体播放器进行关联后的所述目标纹理发送给所述移动应用软件开发工具包,以指示所述移动应用软件开发工具包基于所述目标纹理的第二标识信息渲染所述多媒体文件。
11.在一个示例性实施例中,在移动应用软件开发工具包中渲染所述多媒体文件包括:向所述原生层发送所述预览指令,其中,所述预览指令中包括目标纹理的第二标识信
息;基于所述第二标识信息获取与所述目标纹理相关联的系统多媒体播放器;设置所述系统多媒体播放器的属性信息,以将所述多媒体文件渲染到移动应用软件开发工具包的页面中。
12.根据本发明的另一个实施例,提供了一种多媒体文件的渲染装置,包括:确定模块,用于确定接收到的获取指令中包括的第一标识信息,其中,所述第一标识信息用于标识所述多媒体文件;获取模块,用于将所述第一标识信息传递到原生层,在所述原生层中基于所述第一标识信息获取所述多媒体文件,其中,所述原生层存储有所述多媒体文件;渲染模块,用于在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在所述原生层中获取的所述多媒体文件。
13.在一个示例性实施例中,所述获取模块包括:创建单元,用于创建由移动应用软件开发工具包到原生层的信息传递接口;传递单元,用于基于所述信息传递接口将所述第一标识信息传递到所述原生层。
14.在一个示例性实施例中,创建单元通过如下方式实现创建由移动应用软件开发工具包到原生层的信息传递接口:创建多媒体播放器;创建所述多媒体播放器的平台接口;将所述平台接口确定为所述信息传递接口
15.在一个示例性实施例中,获取模块可以通过如下方式实现在所述原生层中基于所述第一标识信息获取所述多媒体文件:基于所述第一标识信息获取系统相册资源对象;在所述原生层基于所述系统相册资源对象获取所述多媒体文件。
16.在一个示例性实施例中,所述装置还可以用于在所述原生层基于所述系统相册资源对象获取所述多媒体文件之后:在所述原生层初始化系统多媒体播放器;基于所述多媒体文件生成目标纹理;将所述目标纹理与初始化后的所述系统多媒体播放器进行关联;将与所述系统多媒体播放器进行关联后的所述目标纹理发送给所述移动应用软件开发工具包,以指示所述移动应用软件开发工具包基于所述目标纹理的第二标识信息渲染所述多媒体文件。
17.在一个示例性实施例中,所述渲染模块可以通过如下方式实现在移动应用软件开发工具包中渲染所述多媒体文件:向所述原生层发送所述预览指令,其中,所述预览指令中包括目标纹理的第二标识信息;基于所述第二标识信息获取与所述目标纹理相关联的系统多媒体播放器;设置所述系统多媒体播放器的属性信息,以将所述多媒体文件渲染到移动应用软件开发工具包的页面中。
18.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
19.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
20.通过上述步骤,确定接收到的获取指令中包括的待预览的多媒体文件的第一标识信息,将第一标识信息传递到原生层,并在原生层根据第一标识信息获取多媒体文件,在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在原生层中获取的多媒体文件。由于可以直接将多媒体文件的第一标识信息传递到原生层,直接渲染在原生层获取到
的多媒体文件,以实现在移动应用软件开发工具包中快速预览多媒体文件,解决了相关技术中存在的多媒体文件预览速度慢,用户体验差的问题,提高了预览多媒体文件的速度,提升了用户体验。
附图说明
21.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
22.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1是根据本技术实施例的一种多媒体文件的浏览方法的硬件环境示意图;
24.图2是根据本发明实施例的多媒体文件的渲染方法的流程图;
25.图3是根据本发明示例性实施例的将第一标识信息传递到原生层流程图;
26.图4是根据本发明示例性实施例的在原生层中基于第一标识信息获取多媒体文件流程图;
27.图5是根据本发明具体实施例的多媒体文件的渲染方法时序图;
28.图6是根据本发明实施例的多媒体文件的渲染装置的结构框图。
具体实施方式
29.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
30.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
31.根据本技术实施例的一个方面,提供了一种多媒体文件的浏览方法。该多媒体文件的浏览方法广泛应用于智慧家庭(smart home)、智能家居、智能家用设备生态、智慧住宅(intelligence house)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述多媒体文件的浏览方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
32.上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wireless fidelity,无线保真),蓝牙。终端设备102可以并不限定于为pc、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
33.在相关技术中,flutter视频播放库提供的视频预览方式包括:asset、network、file等。其中,asset适合预览本地资源视频,network适合预览网络视频,file可通过文件路径预览相册视频。对于一些flutter相册是预览手机相册视频的app,只能通过file的方式预览视频。由于file方式预览视频需要在视频预览的时候拿到视频文件,flutter又不能直接访问手机相册的视频文件,因此,可以借助photomanager库的get file方法将系统相册的视频文件缓存到缓存文件中,从而拿到缓存文件中的缓存视频,从而进行视频预览,但此过程有视频的缓存过程,如果视频较长,需要的时间会比较长,从而影响视频预览体验。
34.针对相关技术中存在的上述问题,提出一些实施例:
35.在本实施例中提供了一种多媒体文件的渲染方法,图2是根据本发明实施例的多媒体文件的渲染方法的流程图,如图2所示,该流程包括如下步骤:
36.步骤s202,确定接收到的获取指令中包括的第一标识信息,其中,所述第一标识信息用于标识多媒体文件;
37.步骤s204,将所述第一标识信息传递到原生层,在所述原生层中基于所述第一标识信息获取所述多媒体文件,其中,所述原生层存储有所述多媒体文件;
38.步骤s206,在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在所述原生层中获取的所述多媒体文件。
39.在上述实施例中,用户可以通过app输入获取指令,获取指令用于指示获取待预览的多媒体文件,app在接收到获取指令后,可以确定获取指令中包括的第一标识信息。其中,第一标识信息为待预览的多媒体文件。多媒体文件可以为视频、图像等。app可以是物联网app,或者是用于控制智能设备的app,智能设备可以包括智能监控设备、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。app可以按照在智能终端中,如智能手机、平板电脑、计算机等终端,还可以安装在智能穿戴设备上,如智能手表、智能头戴设备等。
40.在上述实施例中,app可以安装在智能终端中,与智能监控设备连接。智能监控设备可以对监控区域进行监控,实时生成多媒体文件,如监控视频、抓拍图像等。生成的多媒体文件可以按照时间进行保存,例如,可以按照一天为周期,存成一个文件。当用户想要查看多媒体文件时,可以在app中点击想要查看的多媒体文件,即输入获取指令。在点击了想要查看的多媒体文件后,app可以确定点击的多媒体文件的第一标识信息。将第一标识信息
传递到native原生层,在原生层获取多媒体文件,并在用户通过app点击播放时,在移动应用软件开发工具包flutter中渲染在原生层中获取到的多媒体文件,以实现快速预览多媒体文件的效果。
41.需要说明的是,在将第一标识信息传递到原生层之前,可以对智能终端的文件管理系统进行初始化。
42.可选地,上述步骤的执行主体可以是app、后台处理器,或者其他的具备类似处理能力的设备,还可以是至少集成有数据处理设备的机器,其中,数据处理设备可以包括计算机、手机等终端,但不限于此。
43.通过上述步骤,确定接收到的获取指令中包括的待预览的多媒体文件的第一标识信息,将第一标识信息传递到原生层,并在原生层根据第一标识信息获取多媒体文件,在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在原生层中获取的多媒体文件。由于可以直接将多媒体文件的第一标识信息传递到原生层,直接渲染在原生层获取到的多媒体文件,以实现在移动应用软件开发工具包中快速预览多媒体文件,解决了相关技术中存在的多媒体文件预览速度慢,用户体验差的问题,提高了预览多媒体文件的速度,提升了用户体验。
44.在一个示例性实施例中,将所述第一标识信息传递到原生层包括:创建由移动应用软件开发工具包到原生层的信息传递接口;基于所述信息传递接口将所述第一标识信息传递到所述原生层。在本实施例中,由于移动应用软件开发工具包flutter无法直接访问原生native层,因此,可以创建由移动应用软件开发工具包到原生层的信息传递接口,通过信息传递接口将第一标识信息传递到原生层。从而可以从原生层获取多媒体文件。
45.在一个示例性实施例中,创建由移动应用软件开发工具包到原生层的信息传递接口流程图可参见附图3如图3所示,该流程包括:
46.步骤s302,创建多媒体播放器;
47.步骤s304,创建所述多媒体播放器的平台接口;
48.步骤s306,将所述平台接口确定为所述信息传递接口。
49.在本实施例中,创建多媒体播放器平台接口需要依赖多媒体文件播放器,因此,在创建多媒体播放器平台接口video player platform interface之前,可以创建video player。在创建了video player以及video player platform interface之后,可以通过video player以及video player platform interface将多媒体文件的第一标识信息传递给native原生层。即在将第一标识信息传递到原生层时,可以是预先创建多媒体播放器平台接口,如video player platform interface。通过创建后的video player platform interface将第一标识信息传递到原生层。其中,第一标识信息可以是多媒体文件统一资源定位符url,还可以是多媒体文件的文件地址标识,如file.uri。
50.在一个示例性实施例中,在所述原生层中基于所述第一标识信息获取所述多媒体文件流程图可参见附图4,如图4所示,该流程包括:
51.步骤s402,基于所述第一标识信息获取系统相册资源对象;
52.步骤s404,在所述原生层基于所述系统相册资源对象获取所述多媒体文件。
53.在本实施例中,在通过video player以及video player platform interface将多媒体文件的第一标识信息传递给native原生层后,可以在原生层通过第一标识信息获取
系统相册资源对象phasset,从而获取avpplayeritem。进而在原生层根据系统相册资源对象phasset获取多媒体文件。例如,可以将系统相册资源对象phasset中获取到与第一标识信息相同的文件确定为多媒体文件。
54.在一个示例性实施例中,在所述原生层基于所述系统相册资源对象获取所述多媒体文件之后,所述方法还包括:在所述原生层初始化系统多媒体播放器;基于所述多媒体文件生成目标纹理;将所述目标纹理与初始化后的所述系统多媒体播放器进行关联;将与所述系统多媒体播放器进行关联后的所述目标纹理发送给所述移动应用软件开发工具包,以指示所述移动应用软件开发工具包基于所述目标纹理的第二标识信息渲染所述多媒体文件。在本实施例中,在获取到多媒体文件之后,可以在原生层初始化系统多媒体播放器,根据多媒体文件生成目标纹理,将目标纹理与系统多媒体播放器进行关联。即在获取到多媒体文件之后,可以生成textureld。并将textureld与系统多媒体播放器进行关联。在关联了textureld与系统多媒体播放器之后,可以将textureld与系统多媒体播放器存储在map中,并将textureld的第二标识信息通过video player以及video player platform interface发送给flutter。在flutter接收到预览指令的情况下,请求根据第二标识信息渲染多媒体文件。
55.在一个示例性实施例中,在移动应用软件开发工具包中渲染所述多媒体文件包括:向所述原生层发送所述预览指令,其中,所述预览指令中包括目标纹理的第二标识信息;基于所述第二标识信息获取与所述目标纹理相关联的系统多媒体播放器;设置所述系统多媒体播放器的属性信息,以将所述多媒体文件渲染到所述移动应用软件开发工具包页面中。在本实施例中,当用户通过app输入预览指令时,如在app中点击播放指令时,可以通过video player以及video player platform interface将预览指令传递到原生层,其中,预览指令中包括第二标识信息。在原生层中,可以根据第二标识信息获取系统多媒体播放器,如视频播放器。设置系统多媒体播放器的属性信息,将多媒体文件渲染到移动应用软件开发工具包页面中。
56.其中,设置系统多媒体播放器的属性信息可以包括设置displaylink.paused为false,触发[_rugistry textureframeavailable:_textureld]。
[0057]
下面结合具体实施方式对多媒体文件的渲染方法进行说明:
[0058]
图5是根据本发明具体实施例的多媒体文件的渲染方法时序图,如图5所示,该方法包括:
[0059]
1.在flutter package中,initialize(file.url)初始化。
[0060]
2.创建video player。
[0061]
3.创建video player platform interface。
[0062]
4.在native原生层通过file.uri获取系统相册资源对象phasset,从而获取avplayeritem。
[0063]
5.在native原生层初始化视频播放器initwithavplayer。
[0064]
6.在native原生层生成textureld。
[0065]
7.在native原生层将textureld和视频播放器关联存储进map中。
[0066]
8.返回textureld到video player platform interface。
[0067]
9.返回textureld到video player。
[0068]
10.在flutter package中发送play指令,即预览指令。
[0069]
11.在video player中传递play textureld。
[0070]
12.在video player platform interface中传递play textureld。
[0071]
13.在native原生层根据textureld获取视频播放器。
[0072]
14.设置displaylink.paused为false,触发[_rugistry textureframeavailable:_textureld]。
[0073]
15.在flutter package中渲染多媒体文件。
[0074]
需要说明的是,通知flatter之前注册的纹理的内容已更新。在渲染时,将在光栅线程上触发对
“‑
[pixelbuffer]”的调用。即,notifies flutter that the content of the previously registered texture has been updated。this willtrigger a call to`-[fluttertexture copypixelbuffer]`on the raster thread.
[0075]
在前述实施例中,在flutter视频播放库增加一种视频加载方式photo。其传入系统相册视频id,并将id传递到native层。在native层,通过id查找到系统相册视频资源,并获取native视频播放器avplayeritem,从而初始化视频播放器,从而规避了之前相册视频预览的视频缓存操作,达到快速视频播放的效果。通过在视频播放器中增加photo方法,将系统相册视频id直接传入native侧,使用系统视频播放器avplayeritem,初始化视频方法器,从而达到快速预览视频的目的。随着移动端app发展,跨平台开发已越来越受市场欢迎,而flutter以其快速的ui渲染效率,优势明显。而通过上述实施例,在不影响相册基本功能的情况下,在预览视频的时候,使加载速度在体验上达到跟图片一样的效果,解决了flutter相册预览系统视频时,视频较长,预览有长时间黑屏的问题,极大的优化了用户体验。
[0076]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0077]
在本实施例中还提供了一种多媒体文件的渲染装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0078]
图6是根据本发明实施例的多媒体文件的渲染装置的结构框图,如图6所示,该装置包括:
[0079]
确定模块62,用于确定接收到的获取指令中包括的第一标识信息,其中,所述第一标识信息用于标识所述多媒体文件;
[0080]
获取模块64,用于将所述第一标识信息传递到原生层,在所述原生层中基于所述第一标识信息获取所述多媒体文件,其中,所述原生层存储有所述多媒体文件;
[0081]
渲染模块66,用于在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在所述原生层中获取的所述多媒体文件。
[0082]
在上述实施例中,用户可以通过app输入获取指令,取指令用于指示获取待预览的多媒体文件,app在接收到获取指令后,可以确定获取指令中包括的第一标识信息。其中,第一标识信息为待预览的多媒体文件。多媒体文件可以为视频、图像等。app可以是物联网app,或者是用于控制智能设备的app,智能设备可以包括智能监控设备、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。app可以按照在智能终端中,如智能手机、平板电脑、计算机等终端,还可以安装在智能穿戴设备上,如智能手表、智能头戴设备等。
[0083]
在上述实施例中,app可以安装在智能终端中,与智能监控设备连接。智能监控设备可以对监控区域进行监控,实时生成多媒体文件,如监控视频、抓拍图像等。生成的多媒体文件可以按照时间进行保存,例如,可以按照一天为周期,存成一个文件。当用户想要查看多媒体文件时,可以在app中点击想要查看的多媒体文件,即输入获取指令。在点击了想要查看的多媒体文件后,app可以确定点击的多媒体文件的第一标识信息。将第一标识信息传递到native原生层,在原生层获取多媒体文件,并在用户通过app点击播放时,在移动应用软件开发工具包flutter中渲染在原生层中获取到的多媒体文件,以实现快速预览多媒体文件的效果。
[0084]
需要说明的是,在将第一标识信息传递到原生层之前,可以对智能终端的文件管理系统进行初始化。
[0085]
通过上述步骤,确定接收到的获取指令中包括的待预览的多媒体文件的第一标识信息,将第一标识信息传递到原生层,并在原生层根据第一标识信息获取多媒体文件,在接收到预览指令的情况下,在移动应用软件开发工具包中渲染在原生层中获取的多媒体文件。由于可以直接将多媒体文件的第一标识信息传递到原生层,直接渲染在原生层获取到的多媒体文件,以实现在移动应用软件开发工具包中快速预览多媒体文件,解决了相关技术中存在的多媒体文件预览速度慢,用户体验差的问题,提高了预览多媒体文件的速度,提升了用户体验。
[0086]
在一个示例性实施例中,所述获取模块64包括:创建单元,用于创建由移动应用软件开发工具包到原生层的信息传递接口;传递单元,用于基于所述信息传递接口将所述第一标识信息传递到所述原生层。在本实施例中,由于移动应用软件开发工具包flutter无法直接访问原生native层,因此,可以创建由移动应用软件开发工具包到原生层的信息传递接口,通过信息传递接口将第一标识信息传递到原生层。从而可以从原生层获取多媒体文件。
[0087]
在一个示例性实施例中,创建单元可以通过如下方式实现创建由移动应用软件开发工具包到原生层的信息传递接口:创建多媒体播放器;创建所述多媒体播放器的平台接口;将所述平台接口确定为所述信息传递接口。
[0088]
在本实施例中,创建多媒体播放器平台接口需要依赖多媒体文件播放器,因此,在创建多媒体播放器平台接口video player platform interface之前,可以创建video player。在创建了video player以及video player platform interface之后,可以通过
video player以及video player platform interface将多媒体文件的第一标识信息传递给native原生层。即在将第一标识信息传递到原生层时,可以是预先创建多媒体播放器平台接口,如video player platform interface。通过创建后的video player platform interface将第一标识信息传递到原生层。其中,第一标识信息可以是多媒体文件统一资源定位符url,还可以是多媒体文件的文件地址标识,如file.uri。
[0089]
在一个示例性实施例中,获取模块64可以通过如下方式实现在所述原生层中基于所述第一标识信息获取所述多媒体文件:基于所述第一标识信息获取系统相册资源对象;在所述原生层基于所述系统相册资源对象获取所述多媒体文件。在本实施例中,在通过video player以及video player platform interface将多媒体文件的第一标识信息传递给native原生层后,可以在原生层通过第一标识信息获取系统相册资源对象phasset,从而获取avpplayeritem。进而在原生层根据系统相册资源对象phasset获取多媒体文件。例如,可以将系统相册资源对象phasset中获取到与第一标识信息相同的文件确定为多媒体文件。
[0090]
在一个示例性实施例中,所述装置还可以用于在所述原生层基于所述系统相册资源对象获取所述多媒体文件之后:在所述原生层初始化系统多媒体播放器;基于所述多媒体文件生成目标纹理;将所述目标纹理与初始化后的所述系统多媒体播放器进行关联;将与所述系统多媒体播放器进行关联后的所述目标纹理发送给所述移动应用软件开发工具包,以指示所述移动应用软件开发工具包基于所述目标纹理的第二标识信息渲染所述多媒体文件。在本实施例中,在获取到多媒体文件之后,可以在原生层初始化系统多媒体播放器,根据多媒体文件生成目标纹理,将目标纹理与系统多媒体播放器进行关联。即在获取到多媒体文件之后,可以生成textureld。并将textureld与系统多媒体播放器进行关联。在关联了textureld与系统多媒体播放器之后,可以将textureld与系统多媒体播放器存储在map中,并将textureld的第二标识信息通过video player以及video player platform interface发送给flutter。在flutter接收到预览指令的情况下,请求根据第二标识信息渲染多媒体文件。
[0091]
在一个示例性实施例中,所述渲染模块66可以通过如下方式实现在移动应用软件开发工具包中渲染所述多媒体文件:向所述原生层发送所述预览指令,其中,所述预览指令中包括目标纹理的第二标识信息;基于所述第二标识信息获取与所述目标纹理相关联的系统多媒体播放器;设置所述系统多媒体播放器的属性信息,以将所述多媒体文件渲染到移动应用软件开发工具包的页面中。在本实施例中,当用户通过app输入预览指令时,如在app中点击播放指令时,可以通过video player以及video player platform interface将预览指令传递到原生层,其中,预览指令中包括第二标识信息。在原生层中,可以根据第二标识信息获取系统多媒体播放器,如视频播放器。设置系统多媒体播放器的属性信息,将多媒体文件渲染到移动应用软件开发工具包页面中。
[0092]
其中,设置系统多媒体播放器的属性信息可以包括设置displaylink.paused为false,触发[_rugistry textureframeavailable:_textureld]。
[0093]
在前述实施例中,在flutter视频播放库增加一种视频加载方式photo。其传入系统相册视频id,并将id传递到native层。在native层,通过id查找到系统相册视频资源,并获取native视频播放器avplayeritem,从而初始化视频播放器,从而规避了之前相册视频
预览的视频缓存操作,达到快速视频播放的效果。通过在视频播放器中增加photo方法,将系统相册视频id直接传入native侧,使用系统视频播放器avplayeritem,初始化视频方法器,从而达到快速预览视频的目的。随着移动端app发展,跨平台开发已越来越受市场欢迎,而flutter以其快速的ui渲染效率,优势明显。而通过上述实施例,在不影响相册基本功能的情况下,在预览视频的时候,使加载速度在体验上达到跟图片一样的效果,解决了flutter相册预览系统视频时,视频较长,预览有长时间黑屏的问题,极大的优化了用户体验。
[0094]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0095]
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现上述任一项中所述的方法的步骤。
[0096]
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0097]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0098]
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0099]
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0100]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0101]
以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1