该篇文档取材于Cumulus官网上的视频会议代码,详见
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工具了。

下面是官网最新版本的flash player调试版链接地址,如果你不使用桌面版本而是默认选择网页内嵌的Flash player,也可以不下载安装:
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搭建视频会议示例相关推荐

  1. flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?

    ActiveX 是属于 IE 且仅有 IE 支持(其他浏览器不支持)的插件技术,基于 COM 和 OLE 技术,貌似迄今在 IE11 (IE 已经停止更新)仍能使用!所以如果某个网站要求必须用 IE, ...

  2. [翻译]Adobe Flash Player 11新特性

    Adobe Flash Player 11带来了很多改进,您将在网络上看到更多精彩的内容.就像当年Flash Player 7改变了网络视频,ActionScript 3改变了开发Flash内容的方式 ...

  3. 通过Stratus 服务器在Flash Player中使用RTMFP 开发P2P应用

    通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用(网文转摘) 作者:Jozsef Vass 译者:巴巴鲁 (请转载时注明和改编时出处,谢谢) Adobe Flas ...

  4. 搭建视频会议系统OpenMeetings

    当前,新型的软件视频会议系统,利用现有的PC资源和各类互联网络接入,为使用者构建具有视频.音频.白板.文档协作.程序共享等功能的即时沟通平台.由于本身又是纯软件解决方案,所以在造价和维护费用上几乎是硬 ...

  5. Flash Builder 找不到所需的Adobe Flash Player调试器版本的解决办法

    Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adobe Flash Player调试器版本 解决方法: 1. 进入Flash Builder的安装目录 ...

  6. Flash Player漏洞利用Exploiting Flash Reliably

    以下消息来自幻影论坛[Ph4nt0m]邮件组   前两天推荐过Mark Dowd的Paper "Exploiting Flash Reliably" [url]http://hi. ...

  7. 在 Ubuntu 14.04 Chrome中安装Flash Player(转)

    在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium 一个 Pepper Flash Player For Chromium 的安装器已经被 Ubun ...

  8. Ubuntu 64位系统安装flash player

    ubuntu 64下 flash player 安装方法  1 下载 http://labs.adobe.com/downloads/flashplayer10_square.html wget ht ...

  9. Ubuntu 17.4下如何安装和配置flash player

    Ubuntu Linux系统下没有自带的flash player,要自己手动安装.下面post出简单的安装过程. 首先打开终端,输入命令:sudo apt-get install flashplugi ...

最新文章

  1. 夏天来了,你的数据中心应该跟着热起来
  2. 固态铝电解电容与液态铝电解电容
  3. Asp.Net MVC CodeFirst模式数据库迁移步骤
  4. 论文浅尝 | 基于深度强化学习的远程监督数据集的降噪
  5. mui封装的ajax请求
  6. js tostring 16 java_js中toString()和String()区别详解
  7. 使用 Nginx 部署静态页面
  8. 将windows项目移植到linux上
  9. 78. 子集-LeetCode
  10. c语言冒险游戏代码大全,C语言简易文字冒险游戏源代码.doc
  11. 差分编码 Differential Encoding
  12. Vue仿微信朋友圈项目
  13. 常见摄像机外部接口类型
  14. 弘辽科技:直通车测款测图
  15. 1972:【15NOIP普及组】推销员
  16. 定时任务 未执行完不执行下一个任务
  17. PDF文件如何编辑?这两种方法是我一直在用的
  18. SpringBoot系列之(三):启动过程
  19. 希腊字母书写以及发音,常用场景
  20. word中实现图表的自动编号功能

热门文章

  1. MySQL重置root用户密码的方法
  2. 直接在sublime中运行php
  3. 「UI 测试自动化selenium」汇总
  4. (原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员
  5. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
  6. AlexNet中的局部响应归一化(LRN)
  7. linux定时任务定向到空,Linux 定时任务下 /dev/null 21 相关知识说明
  8. 税友报税软件让修改服务器地址,税友报税软件让修改服务器地址
  9. android 监控app卸载,Android应用监听自身卸载
  10. cli vue 卸载,vue Cli 环境删除与重装教程 - 版本文档