在手持终端上执行swf文件的方法

文档序号:6433326阅读:172来源:国知局
专利名称:在手持终端上执行swf文件的方法
技术领域
本发明涉及一种在手持终端上执行互动多媒体数据文件的方法,特别涉及一种在手机平台上执行SWF文件的方法。
背景技术
目前,在我国,国产手机以价格优势抢占了大量的手机市场,国产手机用户的量非常大,但是国产手机的硬件因为成本关系,比较单薄,所以很少有高性能的智能手机,手机平台作为一个低配置的移动终端,在日益高涨的需求中,显得处理能力较为低下,特别是国产手机,物理内存即RAM往往只有4MB或者8MB,在扣去系统自身运行所必要的内存容量后, 实际可用的内存容量往往只有600KB至1MB左右,这样的内存容量只能够运行一些运算简单的程序和多媒体数据文件;在互联网上,目前最为流行的多媒体数据文件格式为SWF文件,也就是常说的FLASH文件,SffF文件是基于矢量的图形系统,他通过改变对象的形状、大小、色彩、透明度、旋转或其他对象属性实现动画效果;但是由于SWF文件是基于矢量的图形系统,所以在矢量图处理上需要耗费大量的机器硬件资源,一般的手机平台上是无法运行全功能的SWF文件的。所以目前在一般的手机平台运行SWF文件往往采用以下方案一、 采用视频压缩和播放的方法来播放SWF文件,二、采用动态贴图的形式来播放SWF文件,但是,方案一和方案二都存在只能播放SWF文件而无法执行SWF的问题,也就是说经过这样处理的SWF文件只能播放而原有SWF文件的交互功能无法实现,这样的技术方案存在较大的弊病。中国专利公告号CN 1818870A,公告日2006年8月16日,公开了一种SWF文件 (FLASH)在手持移动设备上播放的方法,(SWF文件是指SWF文件格式的单独文件或者被打包进可执行文件中的SWF文件格式的数据;手持移动设备是指包括手机,个人数字助理 PDA, PDA手机等手持信息终端),其特征在于包括下列步骤1)分析SWF文件,从中抽取图形对象、每一视频帧中图形对象的放置关系、音频数组、状态等数据;2)根据手持移动设备的特性,将步骤1抽取的图形对象、视频帧中的图形对象放置关系数据进行编辑修改;3)根据手持移动设备的特性,将步骤1抽取的音频数组数据替换成手持移动设备支持的音频数组格式数据;4)当步骤1抽取的音频数组数据在手持移动设备上无法支持、当步骤1抽取的文字图形对象在手持移动设备屏幕上显示失真时,转换成文字字幕形式表现出来;5)反编译SWF文件中的ActionScript,将ActionScript中的代码转换成手持移动设备上支持的程序语言代码,从而支持SWF文件的交互特性;6)将SWF文件中用户鼠标和按钮交互操作部分转换为手持移动设备所支持的键盘操作或触摸屏操作;7)两种方式完成在手持移动设备上播放SWF文件格式的作品,方式一将以上处理完成的数据转换成手持移动设备上支持的程序语言代码,编译打包生成可在手持移动设备上执行的应用程序,执行应用程序即可实现播放FLASH作品;方式二 编写可以在手持移动设备上运行的媒体播放器,将以上处理转换完成的数据合并打包成媒体数据文件,运行媒体播放器打开媒体数据文件,即可实现播放FLASH作品。虽然此技术方案能够实现在手机平台执行SWF文件,但是此技术方案在图形处理上依然是基于矢量图系统为基础的,我们知道SWF文件在填充上有三种形式色块填充、渐变填充和图片填充,而此技术方案在填充方面采用了将色块填充和渐变填充替换为单色填充或多级调色板图的方法,虽然能够降低SWF文件执行时候的运算量,但是在图像执行时丢失了大量的原有数据,图像质量下降严重,同时由于此技术方案依然采用矢量图与位图结合的形式,所以此技术方案在执行时仍需要较高的硬件支持,第二此技术方案采用的是反编译的手段将SWF文件中的交互用程序转换为手机的可执行程序,但是这样的反编译手段会由于SWF文件的保密程序而失败,而且即使是成功的做了反编译,也存在反编译后的程序在手机上执行效率低下的问题。

发明内容
本发明的目的在于解决上述现有技术中手持终端特别是在低端手机平台缺乏高效执行SWF文件的问题,提供一种在手持终端特别是在低端手机平台上高效执行SWF文件的方法。本发明解决其技术问题所采用的技术方案是一种在手持终端上执行SWF文件的方法,首先在手持终端安装播放器,然后,通过以下步骤实现将SWF文件在手持终端上的执行
步骤一分析SWF文件,确定SWF文件的图形对象、矢量字体、音频数组和class文件的具体位置;
步骤二 从SWF文件中抽取图形对象,根据图形对象的变换和填充方式将图形对象转换为图元数组;
步骤三从SWF文件中抽取矢量字体和音频数组并转换为手持终端支持的字体和音频数组,从SWF文件中抽取class文件以及symbolClass数组、动画元素数组和时间轴信息; 步骤五将symbolClass数组、动画元素数组和时间轴信息、图元数组、手持终端支持的字体和音频数组、class文件合并打包成媒体数据文件;
步骤六手持终端运行播放器打开媒体数据文件,即可实现播放SWF文件。SffF文件一般均包括有以下部分SWF文件头、定义型标签和控制型标签,通过分析SWF文件头,可以得出SWF文件是否进行过压缩、解压后的原文件的大小、文件长度、帧大小、帧速度和总帧数,分析定义型标签和控制型标签,可以确定SWF文件的图形对象、矢量字体、音频数组和class文件的具体位置,从SWF文件中抽取图形对象,根据图形对象的变换和填充方式将图形对象转换为图元数组,将SWF文件中由矢量方式绘制的图形对象转换为手机低端平台可流畅运行的图元数组类型,解析提取并保存SWF中的symbolClass数组、 动画元素数组和时间轴信息,把SWF转换为定义好的动画格式,从而解决flash在低端平台运行的速度瓶颈;从SWF文件中抽取矢量字体转换为手持终端支持的字体格式后保存为文本数组,从SWF文件中抽取音频数组并压缩为手持终端支持的音频数组后保存,保持了 SWF 文件的音频和字体的完整移植,同时从SWF文件中抽出class文件打包至媒体数据文件,由播放器运行媒体数据文件时执行class文件,弥补了主流动画格式无法进行交互操作的不足,与对比技术相比也克服了由反编译手段引起的反编译失败,或是反编译后的程序在手机上执行效率低下的问题,这样处理class文件具有较高的执行效率。作为优选,所述步骤二中的图元数组包括与图形对象对应的位图、2d变换矩阵和颜色变换矩阵。图元数组中的位图由SWF文件中的图形对象抽取获得,即根据SWF文件的文件头,并且参考SWF文件的SWF文件中定义型标签和控制型标签中的symbolClass数组、动画元素数组和时间轴信息,读取SWF文件中相应位置的由矢量方式绘制的图形对象,并将不同的由矢量方式绘制的图形对象转换为相应的位图,然后保存;2d变换矩阵由SWF文件的动画元素数组和时间轴信息以及每个由矢量方式绘制的图形对象的变换方式进行建立; 颜色变换矩阵则由分析图形对象的填充方式和变换方式来决定,再参考SWF文件的动画元素数组和时间轴信息,完成颜色变换矩阵的建立,这样建立的图元数组采用的是位图加2d 变换矩阵和颜色变换矩阵的形式,此时命名图元数组一个ID,此ID可以直接沿用SWF文件中图形对象的ID,执行时完全通过绘制位图来达成显示图形的目的,不需要执行矢量图绘制,大大提高了图形绘制速度,与对比技术中矢量图加位图的形式相比同样具有较 高的绘制速度,2d变换矩阵和颜色变换矩阵的建立能够让播放器进行调用,配合symbolClass数组、动画元素数组和时间轴信息,完成不同帧、不同图层、不同场景的位图调用和位图的2D 变换和颜色变化,达到动画显示效果。作为优选,所述图元数组中的位图对应SWF文件中最大化的图形对象。这样设置,由于SWF文件中图形对象是以矢量图存储的,能够以无损填充的方式进行放大缩小,在 SWF文件中图像对象是以最小化形式保存的,但是矢量图绘制时需要相对多的硬件资源,在本发明中,由于图元数组保存的图形信息为位图形式,所以要保证图形信息在手持终端中的显示清晰程度,所以必须要以在SWF文件中最大化的图形对象进行抽取并对应进行光栅化,这样设置保证了在用到图元数组时位图调用均为不变或缩小显示,显然位图调用时为不变或缩小显示时不会失真,保持了清晰度,同时位图的绘制速度较快,需要的硬件要求也较低,为实现在手持终端执行SWF文件的关键步骤,与对比技术相比显然具有较高的清晰度。作为优选,所述图元数组中的位图由SWF文件中的图形对象经过光栅化后得到。 位图由SWF文件中的图形对象经过光栅化后得到,能大大降低图元数组的占用空间,进一步提高了图元数组在手持终端上的运行速度。作为优选,所述播放器包括播放器主控模块、渲染模块和虚拟机程序,所述播放器主控模块负责媒体数据文件的解析,消息的派发,协调控制渲染模块和虚拟机程序,所述的渲染模块读取图元数组,根据2d变换矩阵和颜色变换矩阵执行位图的2d变换和颜色变换, 所述的虚拟机程序读取class文件执行交互动作。播放器主控模块负责媒体数据文件的解析,播放器主控模块根据symbolClass数组定义的对象、动画元素数组定义的场景内位图 ID和时间轴信息定义的各种帧和图层的运行时间,进行消息派发,协调控制渲染模块和虚拟机程序,渲染模块读取图元数组,导入位图,然后渲染模块根据2d变换矩阵对导入的位图进行2d变换,和根据颜色变换矩阵对导入的位图进行填充色的颜色变换达到动画显示的效果;虚拟机程序通过执行class文件的指令来实现执行脚本的功能。本发明的有益效果是通过使用本发明提供的方法能在不改变硬件的条件下达到在手持终端特别是低端手机平台上达到高效快速执行SWF文件的目的,同时本发明图像清晰,可以执行交互动作。


图1是本发明的一种主流程图2是本发明中播放器执行媒体数据文件的一种流程图; 图3是本发明中播放器的一种结构示意图。图中1、播放器,2、播放器主控模块,3、渲染模块,4、虚拟机程序。
具体实施例方式下面通过具体实施例,并结合附图,对本发明的技术方案作进一步的具体说明。实施例
一种在手持终端上执行SWF文件的方法(参见附图1),首先在手持终端安装播放器Si, 播放器1 (参见附图3)包括播放器主控模块2、渲染模块3和虚拟机程序4,播放器主控模 2负责媒体数据文件的解析,消息的派发,协调控制渲染模块3和虚拟机程序4,渲染模块3 读取图元数组,根据2d变换矩阵和颜色变换矩阵执行位图的2d变换和颜色变换,虚拟机程序4读取类文件执行交互动作。通过以下步骤实现将SWF文件在手持终端上执行步骤一分析SWF文件S2,根据SWF文件的文件头得出SWF文件是否进行过压缩、解压后的原文件的大小、文件长度、 帧大小、帧速度和总帧数,分析定义型标签和控制型标签,可以确定SWF文件的图形对象、 矢量字体、音频数组和Class文件的具体位置;步骤二 由于SWF文件的图形对象、矢量字体、音频数组和class文件的具体位置已经确定,此时从SWF文件中抽取图形对象S34,即根据SWF文件的文件头,并且参考SWF文件的SWF文件中定义型标签和控制型标签中的 symbolClass数组、动画元素数组和时间轴信息,读取SWF文件中相应位置由矢量形式绘制的的图形对象和ID,然后根据动画元素数组和时间轴信息确定每个图形对象的最大化图像,并将最大化的图形对象进行光栅化处理后以位图形式保存S44并且此位图沿用图形对象的ID,通过对控制型标签的分析、特别是分析SWF文件中的动画元素数组和时间轴信息可以获取图形对象的变换和填充方式,根据每个ID图形对象的变换和填充方式建立2D转换矩阵和颜色变换矩阵作为图元数组保存S5,至此图元数组建立完全;步骤三从SWF文件中抽取矢量字体S33,然后转换为手持终端支持的字体格式S43后保存为文本数组,从SWF 文件中抽取音频数组S31并压缩为手持终端支持的音频数组后保存S41,从SWF文件中抽取 class文件S32并保存S33 ;同时再根据SWF文件的文件头、定义型标签和控制型标签抽取 symbolClass数组、动画元素数组和时间轴信息S35,步骤五将图元数组、手持终端支持的文本数组和音频数组、class文件、symbolClass数组、动画元素数组和时间轴信息合并打包成媒体数据文件S6 ;以上步骤可以由个人电脑或服务器电脑完成,然后个人电脑或服务器电脑将SWF文件转换后的媒体数据文件传输至客户的手持终端上继续执行步骤六,本实施例中的手持终端为低端手机平台。步骤六手持终端运行播放器打开媒体数据文件,即可实现播放SWF文件S7,具体步骤如下首先播放器1读取媒体数据文件S71,按照程序定义的动画规范保存打包后形成的媒体数据文件包括文件头和文件体,文件头包括媒体数据文件的长度、版本、显示区域、帧频、包括的元素类型信息,文件体包括class文件、图元数组、音频数组、文本数组、 symbolClass数组、动画元素数组和时间轴信息;播放器主控模块2负责媒体数据文件的解析S72,播放器主控模块2根据symbolClass数组定义的对象、动画元素数组定义的场景内图元数组ID、音频数组、文本数组和时间轴信息定义的各种帧和图层的运行时间,进行消息派发,协调控制渲染模块3和虚拟机程序4,渲染模块2读取对应ID的图元数组,导入位图, 然后渲染模块2根据2d变换矩阵对导入的位图进行2d变换,根据颜色变换矩阵对导入的位图进行填充色的颜色变换达到动画显示的效果S73 ;虚拟机程序4通过执行class文件的指令来实现执行脚本的功能S74,其中本发明的虚拟机程序4与现有技术中的用于SWF 文件的虚拟机程序avm基本相同,不同点主要在于一、本实施例中的虚拟机程序4去掉了一些不常用类及属性的支持,去除哪些不常用的类和属性可以由播放器1的编写者编写确认,去除的不常用类越多播放器1的体积和运行速度越快,但是播放器1的兼容性就越差, 例如,本实施例中就去除了 XML类、RegExp类的支持,所以本实施例中的虚拟机程序4体积相对现有技术有了减小,如果要继续减少虚拟机程序4的体积还可继续减少虚拟机程序4 所支持的类和属性,二、本实施例中的虚拟机程序4采用了优化技术,本实施例中采用的优化技术为JIT技术,(即时编译技术)使class文件的执行速度加快。由此,播放器1通过协调控制渲染模块3和虚拟机程序4完成了媒体数据文件图像的显示和交互命令的执行, 同时播放器1执行音频数组并且以手持终端平台能显示的文字格式显示文本数组,至此, 手持终端平台用户可以在手持终端平台上甚至是低端的手机平台上执行SWF文件。
以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型
权利要求
1.一种在手持终端上执行SWF文件的方法,其特征在于首先在手持终端安装播放器, 然后,通过以下步骤实现将SWF文件在手持终端上的执行步骤一分析SWF文件,确定SWF文件的图形对象、矢量字体、音频数组和class文件的具体位置;步骤二 从SWF文件中抽取图形对象,根据图形对象的变换和填充方式将图形对象转换为图元数组;步骤三从SWF文件中抽取矢量字体和音频数组并转换为手持终端支持的字体和音频数组,从SWF文件中抽取class文件以及symbolClass数组、动画元素数组和时间轴信息;步骤五将symbolClass数组、动画元素数组和时间轴信息、图元数组、手持终端支持的字体和音频数组、class文件合并打包成媒体数据文件;步骤六手持终端运行播放器打开媒体数据文件,即可实现播放SWF文件。
2.根据权利要求1所述的将在手持终端上执行SWF文件的方法,其特征在于所述步骤二中的图元数组包括与图形对象对应的位图、2d变换矩阵和颜色变换矩阵。
3.根据权利要求2所述的在手持终端上执行SWF文件的方法,其特征在于所述图元数组中的位图对应SWF文件中最大化的图形对象。
4.根据权利要求1或2或3所述的在手持终端上执行SWF文件的方法,其特征在于 所述图元数组中的位图由SWF文件中的图形对象经过光栅化后得到。
5.根据权利要求1所述的在手持终端上执行SWF文件的方法,其特征在于所述播放器包括播放器主控模块、渲染模块和虚拟机程序,所述播放器主控模块负责媒体数据文件的解析,消息的派发,协调控制渲染模块和虚拟机程序,所述的渲染模块读取图元数组,根据2d变换矩阵和颜色变换矩阵执行位图的2d变换和颜色变换,所述的虚拟机程序读取 class文件执行交互动作。
全文摘要
本发明涉及一种在手机平台上执行SWF文件的方法。本发明的目的在于解决上述现有技术中手持终端特别是在低端手机平台缺乏高效执行SWF文件的问题,其技术方案要点是,一种在手持终端上执行SWF文件的方法,首先在手持终端安装播放器,然后,通过以下步骤实现将SWF文件在手持终端上的执行一、分析SWF文件;二、从SWF文件中抽取图形对象;三、根据图形对象的变换和填充方式将图形对象转换为图元数组;四、从SWF文件中抽取矢量字体和音频数组并转换为手持终端支持的字体和音频数组;五、合并打包成媒体数据文件;六、手持终端运行播放器打开媒体数据文件。本发明图像清晰,运行速度快,可以执行交互动作。
文档编号G06F17/30GK102368247SQ201110275459
公开日2012年3月7日 申请日期2011年9月16日 优先权日2011年9月16日
发明者田华健, 龙小平 申请人:杭州典能科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1