五、FlashCom(FMS)
這一篇是前四個(LoadVars(XML)、Flash Remoting、Webservice、XMLSocket)的補充篇,本來我沒有考慮進去,因為FlashCom(FMS)主要用于流媒體技術(shù),今天要感謝Danger提出來了,呵呵,今天心情不錯,就一氣合成了!
FlashCom(FMS)主要用于與服務(wù)端進行流媒體通信,目前應(yīng)用領(lǐng)域就是Flash流媒體播放,Flash在線直播,Flash視頻音頻聊天,Flash視頻會議,Flash在線游戲等。
FlashCom的運行環(huán)境(FMS的運行環(huán)境):
1、Windows操作系統(tǒng):Windows 2000 Server或者Windows NT 4.0 Server(sp6);
2、Linux操作系統(tǒng):Red Hat Linux 7.3 或者 8.0;
3、服務(wù)器的CPU是Pentium III 500 MHz或者更高(推薦值是雙個Pentium 4 CPU);
4、服務(wù)器的內(nèi)存是256M RAM 或者更高(推薦值是512M)。
FlashCom(FMS)的優(yōu)點:
1、能夠?qū)崿F(xiàn)即時視頻音頻通信(當(dāng)然它也支持文本通信的);
2、能夠流媒體同步播放(也叫在線直播);
3、能夠通過Flash Player(6.0以上版本)錄制視頻音頻,無需其他客戶端;
4、能夠?qū)崿F(xiàn)客戶端實現(xiàn)之間的控制(如會議主持人權(quán)限)。
FlashCom(FMS)的缺點:
1、FlashCom(FMS)服務(wù)端軟件是MM公司的產(chǎn)品,需要花銀子去買的(一筆不小的投入),好在現(xiàn)在有一個正在完善中的開源項目——RED5;
2、由于是流媒體服務(wù)端軟件,所以對服務(wù)器的帶寬,內(nèi)存,以及CPU也是很高的要求的(上面已經(jīng)作說明了);
3、同時在線視頻通信的人數(shù)不能太多。
//=======================================; // Flash客戶端(以簡單的在線錄制視頻為例) //=======================================; stop(); var nc:NetConnection = new NetConnection(); var ns:NetStream; var cam:Camera = Camera.get(); var mic:Microphone = Microphone.get(); //預(yù)覽本地攝像頭視頻; video_box.attachVideo(cam); //初始化NetStream; function initNetStream():Void { ns = new NetStream(nc); //設(shè)置2秒的緩沖時間; ns.setBufferTime(2); //使用NetStream加載視頻和音頻對象; ns.attachVideo(cam); ns.attachAudio(mic); //NetStream狀態(tài)信息; ns.onStatus = function(info:Object) { trace("ns.onStatus:"+info.code); }; } //錄制視頻音頻; function recordStream(){ ns.publish("kinglong","record"); } //停止錄制; function stopStream(){ ns.close(); } //刪除視頻音頻文件; function deleteStream(){ nc.call("clearStream",null,"kinglong"); } //NetConnection狀態(tài)信息; nc.onStatus = function(info:Object) { trace("nc.onStatus:"+info.code); switch (info.code) { case "NetConnection.Connect.Success" : initNetStream(); break; } }; //連接FlashCom服務(wù)器 nc.connect("rtmp:/"+"recordstream"); |
//=======================================; // FlashCom(FMS)服務(wù)端代碼 //將下列代碼存成main.asc文件(此文件名固定),在FlashCom的applications目錄下建立一個recordstream目錄(對應(yīng)著客戶端的”recodstream”),并將main.asc放在這個目錄中。 //=======================================; application.onAppStart = function(){ } application.onAppStop = function(){ } application.onConnect = function(client){ application.acceptConnection(client); } application.onDisconnect = function(client){ } //=======================================; //獲取flv文件時間長度; function getStreamLength(name) { return Stream.length(name);; } //=======================================; //刪除flv文件; function clearStream(name) { trace("clearStream("+name+");"); var stream = Stream.get(name); return stream.clear(); } //=======================================; //設(shè)置Client.prototype; //=======================================; Client.prototype.getStreamLength = getStreamLength; Client.prototype.clearStream = clearStream; |