由於項目需要,在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方面的所有的努力,都是以失敗為結局的。領導問我,“研究的怎樣,幹啥了??”我說,挺好的。正如我導師曾說過,我做的工作成果是證明出了很多方案是不可性的。