SWF文件格式解析
先概要的看看swf文件格式(swiff),swf设计的几个目标是: 2、可扩展。使用标记语言,在保持对以前标记兼容的前提下可以扩展新规格。 3、易于在网络上传输。一方面要求swf文件尽可能的小,对swf进行压缩(算法来源ZLIB),还大量使用bit-pack组织数据结构,另一方面要求flash播放器支持流式渲染,且swf不能对网络带宽做任何假设。 4、简单。文件格式尽量简单以方便flash播放器的实现,使其尽可能少的依赖于本地OS特殊,更易于移植。 5、独立。所有资源不再需要依赖其它外部文件。比如字库。 6、弹性。swf可令flash播放器工作在硬件能力受限的环境下,并且可以充分利用硬件能力。 7、高速。高速、高质量的渲染。 8、可被脚本控制。?
疑问:总帧数使用16位表示,这也就是说一般情况下(帧率12fps),flash影片长度为90分钟。 RECT是使用bit-pack的数据结构(如下表),这种方式在swf文件格式中大量使用, ?field |
len |
说明 |
Nbits |
5bits |
用于指明后面的每个字段各占几个字节 |
Xmin |
nbits |
? |
Xmax |
Nbits |
? |
Ymin |
Nbits |
? |
Ymax |
Nbits |
? |
|
swf文件结构
swf文件包含一个文件头,接下来就是各种数据包,最后以一个end数据包结尾。每个数据包由tag和数据组成。从长度上来说tag分长tag(24bit)和短tag(16bit)两种。
短tag格式:
长tag格式:
从类型上来说tag分为definition tag(负责定义文件内容)和control tag(负责控制内容的显示)。从swf8开始有一种特殊的tag——FileAttributeTag,并且它必须是第一个tag。后面的tag所依赖的内容必须在前面的tag中有定义,Stream Sound Tag必须按顺序出现,最后一个tag永远是End Tag。
definition tag在被解析出来之后被记录在dictionary里。dictionary为每个tag进行唯一编号,以供其它tag引用。编号的原则是从1开始顺序编号。
转自:http://blog.csdn.net/mmtogo/article/details/4179266
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!