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