加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

开源flashplayer汇总.

发布时间:2020-12-15 06:14:30 所属栏目:百科 来源:网络整理
导读:以前 刚开始研究flash的时候,搜集了很多开源的flashplayer,仅向vc上就移植了不下五款,但基本上没有一个可以直接使用用的。都存在诸如性能,内存,功能等方面的不足,下面我分别列举一些希望对有兴趣的朋友有点帮助。 1.swfdec. 这个知名度很高,曾作为一些
以前 刚开始研究flash的时候,搜集了很多开源的flashplayer,仅向vc上就移植了不下五款,但基本上没有一个可以直接使用用的。都存在诸如性能,内存,功能等方面的不足,下面我分别列举一些希望对有兴趣的朋友有点帮助。

1.swfdec.
这个知名度很高,曾作为一些linux发行版本的组件,但目前已经停止更新。
1).swfdec支持到swf 7,全部使用c开发,大量使用了glib这也限制了它的移植性。
2).采用cairo渲染,.
3).使用mad作为mp3解码器,后来版本也加入了flv支持,需要GStreamer 作为视频解码。
4).vm的实现上感觉结构混乱,object 属性采用hash存储,当然这样要比gnash使用std::map快一些(我在自己的fp中借鉴了lua hash的方式来实现属性的存取,效果的确很好)。

2.fadflash,gplflash,flirt.
这几个都还算不是完整的播放器,支持的swf版本也大都在flash 5以内,但这更适合初学者学习。其中感觉flirt的结构很好,可以很清楚的把flahsplayer的原理展现出来。

3.lightspark
这个可能知道的人很少,它是09年才发起的一个项目(好像是创始人的毕业设计),到目前为止一直都很活跃,它最初的目标是播放网络上大量的基于as3的flash视频,低版本使用gnash播放,但我看后来的代码也加入了渲染以及低版本的支持。
1). 知道的唯一支持as3的开源fp.
2).渲染上使用了cairo和opengl加速。
3).as3执行使用apple的llvm实现而没有使用adobe的开源的Tamarin,所以它更像是一个学术研究。

4.GameSWF,Gansh.
Gansh好像是06年从GameSWF迁移到GNU下的一款fp,经过几年的维护,是目前对swf8以下功能支持最全的一款开源fp,但swf8的Bitmap,filter等特性仍没有实现。gnash早先几个版本里也曾尝试支持avm2,但新版本里还是放弃了对as3的支持。我最奇怪的是gnash在设计上似乎从来没有考虑过“性能”这问题,更像一个swf功能的展示器。
gnash性能瓶颈:
1).render支持agg,cairo,虽然也支持opengl 但经我测试效果极差。agg算是支持最好的。我曾用google skia 实现了一个渲染后端,速度竟然就远远超过了默认的agg实现。gnash出于支持多种渲染后端考虑,在shape,style等渲染元素的存储上使用了自定义的格式,抽象出了Renderer接口进行绘制,agg,cairo等分别子类了Renderer_agg,Renderer_cairo,在绘制时要实时将中间渲染格式转换为agg或其他,这一点对性能损耗极大。
2).vm,在as性能最核心的地方gnash却大量的使用的std,boost等通用库,例如object属性存取使用std::map,这种平衡二叉树在处理大数据上的确很优秀,但对于as object这种轻巧的对象显然有些笨重。
3).结构,我认为结构是影响软件性能的最主要原因之一,Gansh在这方面做的却很少,看看最初GameSWF,发现Gansh的重构也是有限的。但整体上还是要好于swfdec的。

gnash很重:看一看gnash的依赖:render(agg,cairo..),gui(gtk,sdl...),sound,video(gstreamer,ffmpeg),boost,stl,curl.libgif,jpeg,png等,想想如果不做裁剪的话这些库加起来应该大于20MB.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读