`
udj38udj
  • 浏览: 14341 次
社区版块
存档分类
最新评论

FMS视频聊天室的开发

 
阅读更多

FMS视频聊天室的开发
2009年06月07日
  由于FLASH技术的发展,
  FLASH对本地P2P的支持,越来越进这就出现了FMS FLASH视频聊天室的开发。
  flash聊天室,fms聊天室源码
  一,首先我们要准备软件
  1.Flash Media Server 2 (就是大家常说的FMS,以前的版本叫FCM)
  2.Macromedia Flash
  二,安装FMS(一般默认安装就可以了)
  我们要制作聊天室 除了制作软件和运行环境外,还需要一个服务器端文件,来接受和处理客户端(swf),发出的请求.一般运行的服务器端脚本放在 C:\Program Files\Macromedia\Flash Media Server 2\applications 目录下.
  三.编写服务器端脚本
  首先,我们先在 C:\Program Files\Macromedia\Flash Media Server 2\applications 建立一个文件夹
  chat 然后在这个文件夹内 创建一个文本文件 然后改名为 main.asc (注意后缀名也要改哦!)
  用flash打开 main.asc 我们开始编写代码
  application.onAppStart = function() {
  trace("onAppStart");
  };
  application.onConnect = function(client, uName) {
  trace("onConnect = "+uName);
  client.UserName = uName;
  application.acceptConnection(client);
  //有人登陆
  hellomsg="系统信息:"+client.UserName+": 进入聊天室
";
  application.broadcastMsg("showmsg",hellomsg)
  //接收客户端传来的数据 (跟客户端的 client_nc.call 相对应)
  client.sendmsg = function(msg) {
  mesg = ""+client.UserName+": "+msg+"
";
  //发送给客户端数据 (跟客户端的 chat_so.showmsg 相对应)
  application.broadcastMsg("showmsg",mesg)
  };
  };
  application.onDisconnect = function(client) {
  trace("onDisconnect ="+client.UserName);
  //有人离开
  hellomsg="系统信息:"+client.UserName+": 离开聊天室
";
  application.broadcastMsg("showmsg",hellomsg)
  };
  application.onAppStop = function() {
  trace("onAppStop");
  };
  四.制作客户端文件
  用flash新建立一个文件,然后编写代码如下 (只有主要代码,其它的代码请看源文件)
  client_nc = new NetConnection();
  client_nc.onStatus = function(info) {
  if (info.code == "NetConnection.Connect.Success") {
  //trace("连接成功"+info.level);
  } else if (info.code == "NetConnection.Connect.Closed") {
  //trace("已经离开"+info.level);
  } else if (info.code == "NetConnection.Connect.Failed") {
  //trace("连接失败"+info.level);
  }
  trace("info.code="+info.code);
  trace("info.level="+info.level);
  };
  //我们在 服务器端 applications 建立的文件夹 为 chat 所以连接服务器地址为 rtmp:/chat
  //如果是远程服务器 写法为 rtmp://www.stonemx.com/chat
  client_nc.connect("rtmp:/chat", _global.ChatUserName);
  //接收服务器端传来的数据 (跟服务器端的 aapplication.broadcastMsg 相对应)
  client_nc.showmsg = function(msg) {
  txtChat.text += msg;
  };
  btSend.onRelease = function() {
  if (txtInput.text != "") {
  //把要说的话发送给服务器 (跟服务器端的 client.sendmsg 相对应)
  client_nc.call("sendmsg", null, txtInput.text);
  txtInput.text = "";
  }
  };
  好了到这里已经制作完成,你可以打开两个swf 然后看看效果
  源文件下载:
  fms聊天室源码UploadFiles/2007-5/515538378.rar
  --------------------------------------------------------------------------------------------------------------
  为了完成公司新项目:用FMS+php做视频聊天。所以最近半个月一直在努力学习FMS,在这之前做了5年的flash动画,也编过一些复杂的AS程序,但是弄FMS还是第一次,所以就借着这个机会与新手菜鸟们一起分享我的学习经验,也请老手们多评价,在架设FMS服务器的时候需要注意哪些问题,为大家指点迷津。下面就开始:
  用FlashMediaServer2做为我的学习阶段使用的服务器,用flash。PHP+MYSQL+APACHE在这里先不提了,等在以后做聊天程序的时候再详细说明。今天就先弄第一个简单的application,实现flash在本地读取摄像头,并且publish到服务器,通过服务器再显示到本地。
  1、安装FlashMediaServer2,可以到http://www.flashcom.com.cn/bbs/showthread.php?t=413 这个帖子下载。安装过程中需要输入name和password(记住哈),下一步是服务器的端口(1935),和管理员管理服务器的端口(1111),默认就可以了,到这里最好再做一件事情,在防火墙中把这两个端口打开,为了以后方便。下一步安装目录默认,安装结束。
  2、找到C:\Program Files\Macromedia\Flash Media Server 2\applications ,新建文件夹,取名字为myfirstApp,在myfirstApp里新建main.asc文件,在里边写上load("components.asc");就可以了。
  3、在「开始」菜单\程序\Flash Media Server 2里,分别启动Start Flash Media Admin Server 2和Start Flash Media Server 2之后,点击Management Console.lnk,此时弹出的就是Media Server 2的管理程序。输入serverName:akins,Server Address:127.0.0.1,username password。登陆后,在程序左下方有个New Instance...,点击后向上弹出菜单,点击myfirstApp。这个就是在第2部我们建立的application。
  4、在D:\Project下新建文件:test_060304.fla,拉入2个video组件,分别起名字为local_video和server_video。在帧上写上如下代码:
  var client_cam:Camera = Camera.get();//获取摄像头
  client_cam.setMode(176, 144, 20);//三个参数分别为摄像头捕捉的宽度高度帧率
  client_cam.setQuality(57000, 1);//设置带宽和质量
  local_video.attachVideo(client_cam);//向本地local_video添加摄像头图像
  _global.Username="akins";
  doConnect();
  publishMe();
  playMe(_global.Username);
  function doConnect() {
  client_nc = new NetConnection();//建立连接对象
  client_nc.onStatus = function(info) {
  trace("Level: "+info.level+newline+"Code: "+info.code);
  };
  client_nc.connect("rtmp://127.0.0.1/myfirstApp");
  out_ns = new NetStream(client_nc);
  in_ns = new NetStream(client_nc);
  }
  function publishMe() {
  out_ns.attachVideo(client_cam);
  out_ns.publish(_global.Username);
  }
  function playMe(toPlay) {
  server_video.attachVideo(in_ns);
  in_ns.play(toPlay);
  }
  Ctrl+Enter发布,完成。
  附件是客户端的例子,由于也是初学,希望在这里和大家一起探讨交流。
  客户端例子:http://www.flashcom.com.cn/bbs/attachment.php?attachmentid=140&d=1141455295
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics