由于项目需要,在Flex 3下已经对流媒体应用研究了很长时间,先是对FMS的配置研究,主要作为流媒体服务器(相应配置已经掌握),已经成功应用起来了。后来在再次阅读FluorineFx(这是Flex与.NET交互的服务器)时,发现FluorineFx也支持RTMP协议,所以我突发奇想:是否可以使用FluorineFx作为流媒体服务器?如果可以,那就不用购买FMS了,节省项目费用了。经过两天的深入研究,参看FluorineFx文档,在FluorineFx社区搜寻,结果发现FluorineFx当前版本还不支持流媒体服务。尽管它的RTMP协议也是基于Red5,据社区说,下一版本会支持的。
因为领导对节省费用很感兴趣,所以我硬着头皮转向开源的流媒体服务器Red5了,之前没有直接选择它有两个原因:一,帮助资料较少,实例较少;二,使用JAVA做后台开发,JAVA本人没用过。
“天下的事,就怕你用心研究!”已经成功应用RED5的示例了,后来又自己提出问题:“如果更改应用程序目录,不采用webapps?”继续查看它的帮助文档,上网查找,最后终于也解决了。现在是对Red5作为流媒体服务器方面已经混熟了。
Flex 3与Flex4在流媒体方面的区别:
1. Flex3 需要自己建立连接——》创建流对象——》操作流对象(播放,暂停,停止)——》Video和Sound对象绑定流——》加入到VideoPlayer控件中(算是从底层编写吧)
2.Flex4的Video Player 控件已经封装了整个流媒体播放过程,自动识别RTMP 和HTTP协议,自动区分这两种协议。
3. Flex3的VideoPlayer对HTTP协议支持很好,但是自动不支持RTMP,即对流媒体支持不好。
Flex4的Video Player 控件在功能和样式上都比原来有很大改善。同事说,项目中自己做的播放器太丑了,我就想把FLEX 4中的Video Player功能引入。
实施思路:1.将项目转到Flash Builder 4平台下,失败!主要原因:ArcGis提供的库仍然仅支持Flex 3,FLEX的样式中应用了命名控件,我没法更改ArcGis库的样式,所以转换后所有的GIS方面样式无法使用,界面很丑了。
2.将VideoPlayer.as 文件及相关引用文件制成单独的库,失败!主要原因:相关文件太多,无法理顺条例,且文件间耦合度太高,无法解耦。且大量是在FLEX SDK 4.0平台下特有的。
3.将VideoPlayer控件功能封装到SWF,然后在Flex3平台下调用该SWF,失败!主要原因:该SWF同样会调用很多相关SWF,涉及平台不兼容,某些函数被改写过。
最后,我放弃引入Flex4的VideoPlayer控件了,转向原功能界面的美化,和功能优化,引进配置设置。似乎我在Flex4方面的所有的努力,都是以失败为结局的。领导问我,“研究的怎样,干啥了??”我说,挺好的。正如我导师曾说过,我做的工作成果是证明出了很多方案是不可性的。