一种页面多媒体数据导出方法及装置与流程

文档序号:18414394发布日期:2019-08-13 19:09阅读:211来源:国知局
一种页面多媒体数据导出方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种页面多媒体数据导出方法及装置。



背景技术:

随着企业对数据分析的需求增多,数据可视化的需求也随之增加。平台上的数据可视化并不能满足大部分数据可视化需求,在一些场景下还需要对所有数据进行导出并备份。比如将页面上的每个图表导出打印,将每个图表数据导出为excel格式进行其他数据上的分析。传统的导出方法包括以下两种:

一,将图表的导出过程交给服务端执行,由服务器导出完成后,将导出的内容打包后供使用者下载。

二,另外一种方式就是由浏览器端直接进行导出操作。

第一种方式中虽然可以通过多线程的方式来实现数据导出,但是需要依赖服务端,扩展性较差,服务端造成的网络请求成本越大。

第二种方式中,浏览器端导出时使用javascript单线程模式导出的速率较慢,甚至出现浏览器崩溃的情况。

对于第二种方式举例如下:页面展示时需要显示多个不同地区的天气情况,需要用到将近300个的图表同时渲染到浏览器端,此时采用的图表渲染是canvas或者svg的方式进行渲染,进行可视化展示时需要导出所有这些图表到本地进行打印,这个时候需要对所有图表进行转化,转化为png格式的图片,然后进行压缩打包成一个zip格式的压缩包,最终提供给用户。整个流程的处理全部由主线程完成,需要大量的计算和读写操作,容易造成浏览器卡顿的情况,甚至造成浏览器崩溃的情况。

如何解决浏览器javascript单线程带来的瓶颈问题,如何在浏览器端快速导出多媒体数据均是需要解决的技术问题。



技术实现要素:

为了解决上述技术问题,本发明提供了一种页面多媒体数据导出方法及装置。

本发明提供的页面数据导出方法,包括:

获取页面中的多媒体渲染对像;

获取每个多媒体渲染对像的多媒体编码数据;

使用多个工作线程并行处理所述多媒体编码数据,将多媒体编码数据转换为多媒体文件;

将所述多个工作线程中获取的多媒体文件发送至主线程,通过所述主线程进行多媒体文件整合。

上述页面数据导出方法还具有以下特点:

获取每个多媒体渲染对像的多媒体编码数据后,所述方法还包括:对所述多媒体渲染对像的多媒体编码数据进行分组;

所述使用多个工作线程并行处理所述多媒体编码数据包括:使用多个工作线程并行处理所述分组中的所述多媒体编码数据。

上述页面数据导出方法还具有以下特点:

所述对所述多媒体渲染对像的多媒体编码数据进行分组包括:

确定工作线程的数量,将所述多媒体渲染对像的多媒体编码数据分成多个分组,分组的数量与所述工作线程的数量相同。

上述页面数据导出方法还具有以下特点:

所述将所述多个工作线程中获取的多媒体文件发送至主线程包括:

通过发送消息的方式将所述多个工作线程中获取的多媒体文件发送至主线程。

上述页面数据导出方法还具有以下特点:

所述获取每个多媒体渲染对像的多媒体编码数据包括:

设置转换函数中多媒体数据类型;所述转换函数用于将多媒体渲染对像至多媒体编码数据统一资源标识符;

调用所述转换函数,获得所述多媒体渲染对像对应的多媒体编码数据统一资源标识符。

本发明提供的页面数据导出装置,包括:

对像获取模块,用于获取页面中的多媒体渲染对像;

数据获取模块,用于获取每个多媒体渲染对像的多媒体编码数据;

工作线程处理模块,用于使用多个工作线程并行处理所述多媒体编码数据,将多媒体编码数据转换为多媒体文件,将多媒体文件发送至主线程处理模块;

主线程处理模块,用于进行多媒体文件整合。

上述页面数据导出装置还具有以下特点:

所述装置还包括分组模块,用于对所述多媒体渲染对像的多媒体编码数据进行分组;

所述工作线程处理模块,用于采用以下方法使用多个工作线程并行处理所述多媒体编码数据:使用多个工作线程并行处理所述分组中的所述多媒体编码数据。

上述页面数据导出装置还具有以下特点:

所述分组模块,还用于使用以下方法对所述多媒体渲染对像的多媒体编码数据进行分组:确定工作线程的数量,将所述多媒体渲染对像的多媒体编码数据分成多个分组,分组的数量与所述工作线程的数量相同。

上述页面数据导出装置还具有以下特点:

所述工作线程处理模块,还用于使用以下方法将多媒体文件发送至主线程处理模块:通过发送消息的方式将所述多个工作线程中获取的多媒体文件发送至主线程。

上述页面数据导出装置还具有以下特点:

所述数据获取模块,用于使用以下方法获取每个多媒体渲染对像的多媒体编码数据:设置转换函数中多媒体数据类型;所述转换函数用于将多媒体渲染对像至多媒体编码数据统一资源标识符;调用所述转换函数,获得所述多媒体渲染对像对应的多媒体编码数据统一资源标识符。

本发明将计算量较大的数据处理工作通过并行的工作进程处理,在同一时间实现多个javascript脚本的执行,在操作系统方面分担浏览器主线程的处理压力,主线程只负责从工作线程接收处理完成的数据并整合,可以在浏览器端快速导出多媒体数据同时保证浏览器端的正常运行。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是实施例中页面多媒体数据导出方法的流程图;

图2是实施例中页面多媒体数据导出装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

如图1所示,实施例中页面数据导出方法,包括:

步骤101,获取页面中的多媒体渲染对像;

步骤102,获取每个多媒体渲染对像的多媒体编码数据;

步骤103,使用多个工作线程并行处理多媒体编码数据,将多媒体编码数据转换为多媒体文件;

步骤104,将多个工作线程中获取的多媒体文件发送至主线程,通过主线程进行多媒体文件整合。

本发明将计算量较大的数据处理工作通过并行的工作进程处理,在同一时间实现多个javascript脚本的执行,在操作系统方面分担浏览器主线程的处理压力,主线程只负责从工作线程接收处理完成的数据并整合,可以在浏览器端快速导出多媒体数据同时保证浏览器端的正常运行。

其中,

步骤102中获取每个多媒体渲染对像的多媒体编码数据包括:设置转换函数中多媒体数据类型;此转换函数用于将多媒体渲染对像至多媒体编码数据统一资源标识符;调用此转换函数,获得多媒体渲染对像对应的多媒体编码数据统一资源标识符。

本方法中多媒体数据包括图像数据、音频数据、视频数据等。以图像数据为例,调用转换函数为htmlcanvaselement.todataurl(),用于获得包含图片数据的datauri。可以设置此函数中的type参数设置图片的类型,例如可以设置图片的类型为png、jpg等类型。

步骤102获取每个多媒体渲染对像的多媒体编码数据后,此方法还包括:对多媒体渲染对像的多媒体编码数据进行分组。步骤103中使用多个工作线程并行处理多媒体编码数据包括:使用多个工作线程并行处理分组中的多媒体编码数据。其中,对多媒体渲染对像的多媒体编码数据进行分组包括:确定工作线程的数量,将多媒体渲染对像的多媒体编码数据分成多个分组,分组的数量与工作线程的数量相同。将多媒体渲染对像的多媒体编码数据进行分组时可以按策略进行分组,可以按预设策略进行分组,根据具体数量(例如用指定数目的方式)进行平均分配,或者根据文件大小进行平均分配。通常情况下数量较少的情况直接根据指定数目进行平均即可,如果数量较多,需要根据文件整体大小和已知客户端能处理的临界值大小进行分组。

步骤103中主线程通知webkit创建工作线程,webkit记录工作线程任务的脚本文件,创建工作线程在工作线程中调用转换函数获得多媒体文件。

步骤104中将多个工作线程中获取的多媒体文件发送至主线程包括:通过发送消息的方式将多个工作线程中获取的多媒体文件发送至主线程。

本方法中,在浏览器端实现大量数据读写并导出,可以减少服务端的消耗,对于高并发的场景可以轻松通过用户的浏览器的上述功能而释放服务端压力。本方法可以在浏览器端独立实现,独立做定制化需求,无需考虑浏览器端和服务器端的耦合问题。本方法在应对并发场景时仍然可以保持较高的处理速度。

如图2所示,实施例中页面数据导出装置,包括:

对像获取模块,用于获取页面中的多媒体渲染对像;

数据获取模块,用于获取每个多媒体渲染对像的多媒体编码数据;

工作线程处理模块,用于使用多个工作线程并行处理所述多媒体编码数据,将多媒体编码数据转换为多媒体文件,将多媒体文件发送至主线程处理模块;

主线程处理模块,用于进行多媒体文件整合。

其中,

数据获取模块,用于使用以下方法获取每个多媒体渲染对像的多媒体编码数据:设置转换函数中多媒体数据类型;所述转换函数用于将多媒体渲染对像至多媒体编码数据统一资源标识符;调用所述转换函数,获得所述多媒体渲染对像对应的多媒体编码数据统一资源标识符。

此装置还包括分组模块,用于对所述多媒体渲染对像的多媒体编码数据进行分组。所述工作线程处理模块,用于采用以下方法使用多个工作线程并行处理所述多媒体编码数据:使用多个工作线程并行处理所述分组中的所述多媒体编码数据。

此分组模块,还用于使用以下方法对所述多媒体渲染对像的多媒体编码数据进行分组:确定工作线程的数量,将所述多媒体渲染对像的多媒体编码数据平均分成多个分组,分组的数量与所述工作线程的数量相同。

工作线程处理模块,还用于使用以下方法将多媒体文件发送至主线程处理模块:通过发送消息的方式将所述多个工作线程中获取的多媒体文件发送至主线程。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1