五千年(敝帚自珍)

主题:【原创】新时代新潮流WebOS 【1】 -- 邓侃

共:💬594 🌺1902
全看分页树展 · 主题 跟帖
家园 【原创】【12】解剖Adobe Flash

【12】解剖Adobe Flash

前文说到,Adobe Flash系统,包括三个方面,1. 制作工具,2. 播放器,Flash Player,3. 数据传输协议。理解Adobe Flash系统,或许可以从数据传输协议入手。数据传输协议体现在Flash的文件格式,Flash的文件格式很多,其中最重要的有三个,SWF,FLV 和AS。理解了这三个文件格式,Adobe Flash制作工具和播放器,就不难理解了。

1. SWF,传输动画的文件格式。用户一边下载.swf文件,一边使用Flash Player播放。

2. FLV,传输视频的文件格式,Flash制作者可以把FLV作为一个独立的文件,用户一边下载.flv文件,一边用Flash Player播放。也可以把FLV插入到SWF文件中去,作为一个片段。

3. AS,ActionScript的缩写。ActionScript类似于JavaScript,解决与用户交互的问题。

[1] SWF 动画格式

1. 整个SWF由若干frames按顺序串联组成,每个frame的结尾处有特殊的tag(ShowFrame)作为标识。

2. 每段frame的内容分成两部分,一部分定义该frame中出现的角色(character),譬如形体,图像,按钮,文字等等。另一部分控制这些角色显现的位置,移动和变形,以及配音的播放等等。

3. Flash Player开始播放一段SWF前,它先处理几段frames。处理的结果,主要是把每一段frame的内容绘制在一幅bitmap上,把这幅 bitmap缓存在内存中。当完成了若干幅bitmaps以后,就可以开始播放,播放过程中,逐步处理后续的frames。

4. 假如整个SWF中总共出现N个角色,不需要在文件初始一揽子把它们全部定义清楚,而是可以在后续的frames中,陆续添加角色。Flash player开始播放前,会准备一份空白的角色名单。每出现一个新角色,就把它添加到名单中。

5. 每段frame可以调用先前frames中已经定义过了的角色,但是不可以调用后续frames中定义的角色。这样做的好处,是flash player不需要下载完整的SWF文件,而是在下载了一部分数据后,就可以开始播放。一边播放,一边继续下载后续的数据。

6. SWF采用分段压缩,也就是把每段frame的数据分别压缩,而不是把SWF文件作为一个整体压缩。这样做的好处,是支持一边播放一边下载的功能。但是也有代价,因为分段压缩的压缩比,显然不如整体压缩比。

7. Frame中出现的角色和控制键,都是以tag的形式来定义。Flash的制作者,可以自行定义特殊类型的tags,以便扩充现有flash的功能。但是每增加一个新类型的tag,不要忘记给flash player提供相应的插件。

8. 如果flash player在播放某一个SWF文件的过程中,遇到不能识别的tags,它会自动跳过,而不至于因为个别陌生的tags,影响整个SWF文件的播放。这样设计的好处,是既方便用户扩展flash的功能,又保证flash player播放的稳定。

点看全图

外链图片需谨慎,可能会被源头改

Figure 1. Illustration of Flash Animation

Courtesy http://www.dedecms.com/upimg/20070117/11E00M5bF43427.gif

[2] FLV 视频格式

FLV是Flash Video的文件格式。其实FLV本身并不是一个视频格式,而是一个容器。容器里面可以装H.263,H.264, VP6或者其它格式的视频,同时可以装MP3格式的音乐。2007年8月推出的新版Flash Player 9,更是强大到,能够支持MPEG-4旗下诸多格式的解码,包括H.264(MPEG-4, P10),音频压缩格式AAC(MPEG-4,P3),MP4(MPEG-4,P14),屏幕下方文字走马格式3GPP(MPEG-4, P17)等等。

在Flash Player播放一段.flv文件时,Player知道,它将播放的是一段视频或者音乐,然后它进一步识别这段视频或者音乐用的是什么编码格式,根据不同格式,选择相应的解码器。这里有两个问题,

1. 譬如说有一段MP3的音乐,为什么不直接传输MP3,而要在外卖裹一层FLV的包装,而FLV的包装并没有实际功能。

如果直接下载MP3音乐,那么播放时需要启动识别MP3的播放器。直接使用MP3播放器,播放.mp3文件,比用Flash Player,播放.flv文件的效率高。因为.flv文件里实际包括的就是那个.mp3文件,丝毫不差。但是识别编码格式,选择相应解码器,这些都是中间环节,中间环节多了,效率自然低。

让MP3成为音乐的标准格式,这是很多人的愿望。但是视频的标准是什么,众说纷纭,莫衷一是。不同网页使用不同的视频格式,用户浏览这些网页,需要事先下载并安装各种各样的视频播放器,烦不胜烦。

如果Flash Player能包含所有常用的视频播放器,那么无论用户浏览哪个网页,他只需要预先下载并安装Flash Player一套软件,就可以包打天下。更何况,反正Flash Player已经无所不在了,现在要做的,是扩充Flash Player的功能,使它能够播放更多格式的视频。

2. 既然FLV支持MPEG-4旗下所有格式,为什么林立山头,把文件后缀定为.flv,不如干脆把文件后缀定为.mpeg4好了。

实际上,Adobe公司的确有意向,今后取消.flv文件格式,而使用标准的.mpeg4格式。

点看全图

外链图片需谨慎,可能会被源头改

Figure 2. The video format H.264 and audio format AAC wrapped inside FLV

Courtesy http://farm4.static.flickr.com/3587/3372083431_f9b0a9e5d9_o.gif

关键词(Tags): #硅谷评论
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河