使用Cumulus和Flash Player搭建视频会议示例
https://github.com/OpenRTMFP/Cumulus/wiki/Server-Application,-Samples
我根據它的指示來逐步完成了實現細節.
下面是該示例所用到的代碼,我已經上傳到如下網址:
http://download.csdn.net/detail/tao_627/6900621
作為RTMFP協議的交互實例,總體演示環境上需要:
服務器:CentOS 6.3 64bit上運行Cumulus(安裝配置參見前面的博文),運行在192.168.90.26上并監聽1935端口.
客戶端:2臺Windows環境的主機,以我的配置為例,Windows7 64位,安裝有FlashBuilder 4.7 64位破解版,同時要求安裝有攝像頭,便于視頻會話.
下面是FlashBuilder 4.7破解版的下載鏈接,按照自己的操作系統選擇安裝32位或是64位版本:
http://332374363.blog.51cto.com/5262696/1102036
你需要首先登陸http://www.adobe.com/downloads/,才能下載成功。另外在安裝時,選擇試用版安裝,需要輸入你的AdobeID。win 7和win 8.1都可以安裝。
我選擇的是32位版本FlashBuilder_4_7_LS10.exe,在win 8.1系統上面.安裝完成后在安裝目錄下依次修改下列3個文件:
(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
下面:復制config.xml并重命名為config_builder.xml
注:以上紅色文字部分為具體的版本號,請跟據實際版本號進行查找
修改完成之后,再啟動AdobeFlashBuilder4.7,恭喜你,你會發現自己徹底擁有了這款RIA工具了。
http://www.adobe.com/support/flashplayer/downloads.html
服務器端配置:
將下面的內容保存為main.lua文件,存放到Cumulus的如下目錄下面:
CumulusServer/www/meeting/main.lua
這是一個擴展的服務器應用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(如果沒有可以先創建一個)下面生成一個子目錄meeting,這個目錄是客戶端和服務器共同協商好的,客戶端連接時的url中要指明這個path,當然你也可以改為其它
的名字,只要在Client請求url中相應修改path就可以了.然后將上面的main.lua放到meeting中去.
然后,使用下面的命令開啟Cumulus服務器:
sudo ./CumulusServer --pidfile=./CumulusServer.pid -l8 --dump=all
下面是相關的服務器端運行界面:
客戶端配置:
1.安裝好FlexBuilder 4.7后,下面開始搭建VideoMeeting工程,首先從adobe官網下載相應的樣例代碼
http://www.adobe.com/devnet/flashmediaserver/articles/real-time-collaboration.html
注意:只需要提取出Client使用的內容,參見下面上傳的壓縮包
2.打開FlexBuilder 4.7,開始創建一個名為VideoMeeting的Flex項目,會默認生成一個VideoMeeting.mxml和其他的一些文件(夾),將相應的源文件
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目錄下面,我實際上,會將這些文件手動復制到FlexBuilder4.7的相應工程目錄下面:
C:\Users\dell\Adobe Flash Builder 4.7\VideoMeeting\src下面
注意不要添加main.asc,它是給FMS服務器端使用的腳本,我們這里使用的是Cumulus,因而用不上.
3.在VideoMeeting.mxml中指定相關參數,主要是如下配置:
// this is the name of the FMS application in [fms install folder/applications]
private const Application:String = "meeting";
該參數指明Cumulus等服務器上對應應用程序的名稱,比如,按照當前的配置,在Cumulus上對應的應用路徑為CumulusServer/www/meeting/,這里
CumulusServer是服務器程序所在的目錄.
private const ServiceDefault:String = "192.168.90.26:1935";
private const UserDefault:String = "taoyx";
private const MeetingDefault:String = "meeting";
上面的參數依次指定了Cumulus服務器偵聽的ip和port,默認注冊的用戶名,和當前用戶界面上顯示的應用程序的名稱.
4.將上述文件修改并保存后,勾選工具欄上的"項目(p)"中的"自動構建(M)"選項,每次文件修改后,會像Eclipse那樣,自動編譯并生成可執行程序.
在編譯過程中,發現編譯時顯示了幾處錯誤,我覺得是程序源碼和FlexBuilder類庫有個別不兼容的問題,就相應的注釋了這幾處地方.然后,順利通過
編譯.
現在在工程的bin-debug目錄中,雙擊對應的VideoMeeting.html,就會看到類似如下的畫面:
當兩個客戶端都配置好了后,我們可以看到兩個人的視頻畫面,同時從下面的畫面中可以看到數據發送,接收的速率,丟包率等等.同時從服務器端可以
看到數據交互日志,便于理解Cumulus源碼的處理邏輯和RTMFP協議的細節.
總結
以上是生活随笔為你收集整理的使用Cumulus和Flash Player搭建视频会议示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Notepad++ 列操作
- 下一篇: AS3.0编程 So本地数据存储(“超级