FLV Player实现的关键以及用AS3实现的优势

转载请保留:http://www.awflasher.com/blog/archives/820

Macromedia为了尽早用FLV格式来垄断Web Video应用,在FlashMX2004中匆匆Release了一个Video类。导致AS2时代的Video类设计的有许多问题。这些问题甚至可以追溯到“MovieClip大霸主”对AS2之前所有屏幕显示元素的垄断,在AS2时代中所有的Video对象必须包含在一个MovieClip中(即便是基于IDE导入的Video其实也是在_root这个大MovieClip中),而且也无法通过自定义类来extend。
如果基于AS2开发兼容Flashplayer7以下平台的FLV应用,最佳的方法就是把一个Video实例嵌入一个MovieClip,然后将这个MovieClip指定一个LinkageName,再通过AttacheMovie就能动态地调用这个MovieClip了。我们可以以成员的形式,将这个特殊的MovieClip传入自己的自定义Video扩展类,通过构造器接收一个MovieClip的参数即可。
例如,我想把与视频有关的逻辑整合到一个AVCore类中,我必须这么做:

var vdummy:MovieClip =this.attachMovieClip(“videoHost”,”vname”+this.getNextHighestDepth(),this.getNextHighestDepth());
//videoHost是Library中的一个MovieClip含有一个instanceName为”v”的Video实例
var AVCore:AVCore = new AVCore(vdummy);

这里的AVCore的构造函数负责接收这个vdummy,如:

class AVCore
{
private videoInstance:Video;
function AVCore(stage_mc:MovieClip)
{
this.videoInstance = stage_mc.v;
}
}

这一切在AS3中将得到改善,看看ActionScript3 CookBook中提到的Video类,非常强大,也挣脱了MovieClip的束缚,我们可以直接new一个Video实例,然后append之进入显示层(Display List),更可以自己extend了。除了Video以外,更多灵活的可视化资源也尽在掌控,在AS3种,不会再有麻烦的attachMovie;一个new一个append,非常干净优雅的代码。关于AS3的渲染模式,官方这张图说的很清楚:

DisplayList in Flash9

推荐一个FLV播放器(开源项目)

我自己的FLVPlayer项目 Vplayer

http://www.awflasher.com/vplayer/

推荐一个FLV播放器(开源项目) – 下载地址:点此进入

原来一直再想等我有空了也会做,但是估计到那个时候FLV播放器都满天飞了。

== 以上发表于06年3月,现在果然,FLV播放器已经满天飞了……

收藏几个吧:
FLV播放器汇总 – 不用说了,最好的去处!

看到Zas的新Player的一点畅想

看到Zas(http://Flashk.org 元老之一) 的LRC加载器,以及新的MP3Player,好生喜欢!
http://www.flashk.org/…..Sukii-o/mp3/
Zas真的是天才Flasher!他的OS精神以及那些教程无疑给国内的Flasher带来了极大的帮助!

我自己也想到一些东西,呵呵……

1 – 动态加载外部歌词文件, 优点:灵活

外部文件可以用现在流行的LRC,也可以用XML。我个人更加倾向于XML,因为这更容易实现标准化,加载近来之后的文本便可以利用Flash的优势实现漂亮的动画效果了。

2 – 静态JSFL实现歌词动画效果一步到位这个比较巨大,听起来有点恐怖,就是用JSFL分析XML或者LRC文件,然后根据FlashIDE的FPS等参数自动生成FLA格式的动画。这样的优点是,可以输出成AVI、FLV等视频格式。而且由于文本可以BreakApart,那么最终,可以实现各种各样制定的动画过渡效果!甚至可以在XML中定义得更加具体,哈哈~~

两者做起来都没有太大的技术难度,但是肯定是一个浩大的体力活,呵呵,不知道大家有
没有兴趣。