swfdec android,swf 格式Flash 动画播放器在Android上的实现
首先明确一点,swf格式和其他的一些视频格式有很大的区别。它里面不仅有音频还有其他的各种元素(术语叫块类型)包括但不仅限于:矢量图、图片、文字、字体、片段动画、按钮、帧、动作、音频等等你需要将这些元素一一解析并渲染出来。这种格式是允许用户来互动的,你像大多数flash游戏,用户可以点击按钮产生不同的动画效果。这就说明swf格式里面还有代码来控制这些行为。下面来谈实现:我们要想自己来写一个swf格式
首先明确一点,swf格式和其他的一些视频格式有很大的区别。
它里面不仅有音频还有其他的各种元素(术语叫块类型)包括但不仅限于:
矢量图、图片、文字、字体、片段动画、按钮、帧、动作、音频等等
你需要将这些元素一一解析并渲染出来。
这种格式是允许用户来互动的,你像大多数flash游戏,用户可以点击按钮产生不同的动画效果。这就说明swf格式里面还有
代码来控制这些行为。
下面来谈实现:
我们要想自己来写一个swf格式的播放器似乎不太现实,因为有文件解析,mp3解码,事件处理,图片渲染等等对于我们来说
太复杂,也太耗时。
在网上找了几个开源的swf播放器源码,像swfdec fliter等,我最近有研究了下fliter。但发现它只被维护到2006年就没再继续维护,所以
我们后来出来的一些flash它都没法播放,这个需要我们自己去添加相应的块类型处理。
android上实现需要将swfdec或者fliter移植到android平台,但是无论是swfdec还是fliter都依赖好些lib ,如fliter依赖与libz libjpeg libmad等
而且这些都是必须的,比如libz 因为有的块采用的是压缩的格式所以要解压,libjpeg是解析图片,libmad是mp3解码。因此我们要移植fliter首先
得把这三个lib使用交叉编译的方式用ndk编译出来,再来供libfliter来使用。
另外还有一个艰巨的任务就是音频和视频的渲染,需要使用到android的audiotrack和surface,这些跟系统相关的需要我们自己来实现。
目前就是这个思路,接下来我会开始实现这些功能。
更多推荐
所有评论(0)