使用Cumulus和Flash Player搭建视频会议示例
https://github.com/OpenRTMFP/Cumulus/wiki/Server-Application,-Samples
我根據(jù)它的指示來(lái)逐步完成了實(shí)現(xiàn)細(xì)節(jié).
下面是該示例所用到的代碼,我已經(jīng)上傳到如下網(wǎng)址:
http://download.csdn.net/detail/tao_627/6900621
作為RTMFP協(xié)議的交互實(shí)例,總體演示環(huán)境上需要:
服務(wù)器:CentOS 6.3 64bit上運(yùn)行Cumulus(安裝配置參見(jiàn)前面的博文),運(yùn)行在192.168.90.26上并監(jiān)聽(tīng)1935端口.
客戶端:2臺(tái)Windows環(huán)境的主機(jī),以我的配置為例,Windows7 64位,安裝有FlashBuilder 4.7 64位破解版,同時(shí)要求安裝有攝像頭,便于視頻會(huì)話.
下面是FlashBuilder 4.7破解版的下載鏈接,按照自己的操作系統(tǒng)選擇安裝32位或是64位版本:
http://332374363.blog.51cto.com/5262696/1102036
你需要首先登陸http://www.adobe.com/downloads/,才能下載成功。另外在安裝時(shí),選擇試用版安裝,需要輸入你的AdobeID。win 7和win 8.1都可以安裝。
我選擇的是32位版本FlashBuilder_4_7_LS10.exe,在win 8.1系統(tǒng)上面.安裝完成后在安裝目錄下依次修改下列3個(gè)文件:
(1)..\Adobe\AdobeFlashBuilder4.7(64Bit)\eclipse\plugins\com.adobe.flexbuilder.project_4.7.0.349722\META-INF下面的MANIFEST.MF
修改:Bundle-Version: 0.0.0
(2)..\Adobe\AdobeFlashBuilder4.7(64Bit)\eclipse\features\com.adobe.flexide.feature_4.7.0.349722下面的feature.xml
修改:<plugin id="com.adobe.flexbuilder.project" download-size="0" install-size="0" version="0.0.0"/>
(3)..\Adobe\AdobeFlashBuilder4.7(64Bit)\eclipse\plugins\com.adobe.flexbuilder.flex_4.7.0.349722
下面:復(fù)制config.xml并重命名為config_builder.xml
注:以上紅色文字部分為具體的版本號(hào),請(qǐng)跟據(jù)實(shí)際版本號(hào)進(jìn)行查找
修改完成之后,再啟動(dòng)AdobeFlashBuilder4.7,恭喜你,你會(huì)發(fā)現(xiàn)自己徹底擁有了這款RIA工具了。
http://www.adobe.com/support/flashplayer/downloads.html
服務(wù)器端配置:
將下面的內(nèi)容保存為main.lua文件,存放到Cumulus的如下目錄下面:
CumulusServer/www/meeting/main.lua
這是一個(gè)擴(kuò)展的服務(wù)器應(yīng)用meeting:
function onStart(path)NOTE("Application '"..path.."' started")
endfunction onStop(path)NOTE("Application '"..path.."' stopped")
endfunction onConnection(client, userName, meeting)client.userName = userName;client.meeting = meeting;INFO("User connected: ", client.userName , "meeting: ", client.meeting);function client:getParticipants(meeting)result = {}i = 0;for key, cur_client in cumulus.clients:pairs() doif (cur_client.meeting == meeting) theni = i+1;participant = {};participant.userName = cur_client.userName;participant.meeting = cur_client.meeting;if cur_client.id thenparticipant.protocol = 'rtmfp';endparticipant.farID = cur_client.id; result[i] = participant;endend return result;endfunction client:sendMessage(meeting, from, message)for key, cur_client in cumulus.clients:pairs() doif (cur_client.meeting == meeting) then cur_client.writer:writeAMFMessage("onMessage", from, message);endendendsendParticipantUpdate(client.meeting);
endfunction onDisconnection(client)INFO("User disconnecting: "..client.userName);sendParticipantUpdate(client.meeting);
endfunction sendParticipantUpdate(meeting)for key, cur_client in cumulus.clients:pairs() doif (cur_client.meeting == meeting) then cur_client.writer:writeAMFMessage("participantChanged");endend
end
注意:
先要在www(如果沒(méi)有可以先創(chuàng)建一個(gè))下面生成一個(gè)子目錄meeting,這個(gè)目錄是客戶端和服務(wù)器共同協(xié)商好的,客戶端連接時(shí)的url中要指明這個(gè)path,當(dāng)然你也可以改為其它
的名字,只要在Client請(qǐng)求url中相應(yīng)修改path就可以了.然后將上面的main.lua放到meeting中去.
然后,使用下面的命令開(kāi)啟Cumulus服務(wù)器:
sudo ./CumulusServer --pidfile=./CumulusServer.pid -l8 --dump=all
下面是相關(guān)的服務(wù)器端運(yùn)行界面:
客戶端配置:
1.安裝好FlexBuilder 4.7后,下面開(kāi)始搭建VideoMeeting工程,首先從adobe官網(wǎng)下載相應(yīng)的樣例代碼
http://www.adobe.com/devnet/flashmediaserver/articles/real-time-collaboration.html
注意:只需要提取出Client使用的內(nèi)容,參見(jiàn)下面上傳的壓縮包
2.打開(kāi)FlexBuilder 4.7,開(kāi)始創(chuàng)建一個(gè)名為VideoMeeting的Flex項(xiàng)目,會(huì)默認(rèn)生成一個(gè)VideoMeeting.mxml和其他的一些文件(夾),將相應(yīng)的源文件
VideoMeeting.mxml (replace existing VideoMeeting.mxml in src folder),?
ConnectionManager.as,?
SessionManager.as,?
LoginWindow.mxml,?
Participant.as,?
ParticipantListRenderer.mxml,?
ParticipantEvent.as,?
MessageEvent.as,?
Settings.as,
Logger.as
到VideoMeeting/src目錄下面,我實(shí)際上,會(huì)將這些文件手動(dòng)復(fù)制到FlexBuilder4.7的相應(yīng)工程目錄下面:
C:\Users\dell\Adobe Flash Builder 4.7\VideoMeeting\src下面
注意不要添加main.asc,它是給FMS服務(wù)器端使用的腳本,我們這里使用的是Cumulus,因而用不上.
3.在VideoMeeting.mxml中指定相關(guān)參數(shù),主要是如下配置:
// this is the name of the FMS application in [fms install folder/applications]
private const Application:String = "meeting";
該參數(shù)指明Cumulus等服務(wù)器上對(duì)應(yīng)應(yīng)用程序的名稱,比如,按照當(dāng)前的配置,在Cumulus上對(duì)應(yīng)的應(yīng)用路徑為CumulusServer/www/meeting/,這里
CumulusServer是服務(wù)器程序所在的目錄.
private const ServiceDefault:String = "192.168.90.26:1935";
private const UserDefault:String = "taoyx";
private const MeetingDefault:String = "meeting";
上面的參數(shù)依次指定了Cumulus服務(wù)器偵聽(tīng)的ip和port,默認(rèn)注冊(cè)的用戶名,和當(dāng)前用戶界面上顯示的應(yīng)用程序的名稱.
4.將上述文件修改并保存后,勾選工具欄上的"項(xiàng)目(p)"中的"自動(dòng)構(gòu)建(M)"選項(xiàng),每次文件修改后,會(huì)像Eclipse那樣,自動(dòng)編譯并生成可執(zhí)行程序.
在編譯過(guò)程中,發(fā)現(xiàn)編譯時(shí)顯示了幾處錯(cuò)誤,我覺(jué)得是程序源碼和FlexBuilder類庫(kù)有個(gè)別不兼容的問(wèn)題,就相應(yīng)的注釋了這幾處地方.然后,順利通過(guò)
編譯.
現(xiàn)在在工程的bin-debug目錄中,雙擊對(duì)應(yīng)的VideoMeeting.html,就會(huì)看到類似如下的畫(huà)面:
當(dāng)兩個(gè)客戶端都配置好了后,我們可以看到兩個(gè)人的視頻畫(huà)面,同時(shí)從下面的畫(huà)面中可以看到數(shù)據(jù)發(fā)送,接收的速率,丟包率等等.同時(shí)從服務(wù)器端可以
看到數(shù)據(jù)交互日志,便于理解Cumulus源碼的處理邏輯和RTMFP協(xié)議的細(xì)節(jié).
總結(jié)
以上是生活随笔為你收集整理的使用Cumulus和Flash Player搭建视频会议示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Notepad++ 列操作
- 下一篇: AS3.0编程 So本地数据存储(“超级