开源flashplayer汇总.

2024-02-24 14:48
文章标签 汇总 开源 flashplayer

本文主要是介绍开源flashplayer汇总.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前 刚开始研究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.

这篇关于开源flashplayer汇总.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742443

相关文章

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man