基于FMS(Flash Media Service)的多人视频聊天

 

记得以前在XP系统上做过一个基于Flex和Fms的多人视频程序,但是最近把它拿过来放在我的Win7的本里面运行竟然总是报告NetConnection.Call.Failed弄得我莫名奇妙,又有点不知所措,但是作为一个与程序打交道的人,就必须试着去解决这个问题。花了好长时间终于解决了。我看到网上好多人有和我同样的问题,但是似乎还没有解决所以我就在这里写下一片博客与大家分享。

为了给想学的人一些帮助,我尽量详细一些。

首先FMS简介:

Adobe  flash  meida  server 提供了一个流媒体的集合和为建立富媒体应用的群集交互模
式。Flash media server 提供了即时开始,实况视频流和基于用户带宽的可变的流的码率。 
Flash media server 有三个版本
Flash Media Interactive Server  :拥有完整特性的服务
Flash Media Development Server:一个用于开发的交互式服务的版本。支持所有的特性,
但是有连接数的限制。 
Flash Media Streaming Server:只支持实况和视频点播的服务。这个版本不支持服务器
端的脚本或视频编码。

 在视频方面FMS应该是很成功的,不知大家有没有注意其实土豆视频就是基于FMS实现的,类似的还有酷六。

关于它的介绍我就不说了,大家可以看看这篇博文,相当于介绍+帮助文档了:http://www.cnblogs.com/dzone/archive/2011/05/05/2037333.html

找一个现成的程序:

因为好多都是现成的东西,所以用不着自己写,只需更改一下别人写过的,改一改符合自己的要求就行(当然,这是针对初学的人)大家可以参考这个博客,里面关于Flex和FMS的介绍和用法及各种实现很多:http://www.cnblogs.com/aierong/archive/2009/01/14/Flex_Fms_VideoChat.html

我就拿这个例子来说:把源码下载下来之后可以试试能不能直接在你自己的机器上运行,如果是Win7的话,我觉得肯定不行。

对于没有安装FMS的首先要下载一个版本的服务器,我在官网下的是4.5版本

安装我就不介绍了,上面介绍的博客里都有。

首先第一个问题:NetConnection.Call.Failed

对于一个对于FMS很陌生的人肯定不知所措,但是稍微对于调试有点经验的人来说,对于陌生的东西,我要先看官方给的demo,到你的FMS安装目录下看看官方的例子就会知道什么是对的,之后给予对的来改正有问题的。

有两个文件夹值得我们看看

基于FMS(Flash Media Service)的多人视频聊天_第1张图片

我们先要看的就是applications下的live或者vod文件夹下的内容,这里看live下的文件,注意里面的readme.txt 这里面有给我们的很重要的提示。

里面有下面这四条建议:

To deploy an unsigned version of live service you can either replace
the existing service, or create a new service:

1. [New Service] Create a new folder in the
   {FMS-Install-Dir}/applications/ folder.

2. [New Service] (Optional) To make your new folder the default live
   service, open the file, {FMS-Install-Dir}/conf/fms.ini and edit
   the LIVE_DIR parameter and point to the new folder you created
   in step 1.
  
3. [Existing Service] To replace the default Adobe signed
   live service, first back up the following files from the folder
   {FMS-Install-Dir}/applications/live:
  
   * main.far
   * Application.xml
   * allowedHTMLDomains.txt
   * allowedSWFDomains.txt

4. Copy all files from {FMS-Install-Dir}/samples/applications/live to
   the folder you created in step 1 or to the existing folder,
   {FMS-Install-Dir}/applications/live.

也就是说我们要把除了readme.txt之外的四个文件拷贝到自己的在application文件夹下建的应用程序文件夹下。这是第一步,第一步完成。

第二步,win7的权限问题,因为我的是win7系统,所以在启动fms服务的时候总是提示:系统错误5   拒绝访问,FMS服务总是无法启动,这个很明显是Win7的权限设置所知,

可以在运行中输入msconfig查看一下启动项,当然还有更简单的方法,就是更改权限。

在你的FMS安装目录中

基于FMS(Flash Media Service)的多人视频聊天_第2张图片

明白人一看就明白了,给StartServerService.bat和StopserverService.bat创建快捷方式,之后再在快捷方式上单击右键选择以管理员身份运行。这样成功解决权限问题,这样就避开了因为权限问题而出现NetConnection.Call.Failed这个问题。但是还没有彻底解决。

第三步,在控制台中总会出现Method Not found(communicateServer) 的提示,看看自己下载的源码和使用提示,明明在服务器端代码都已经正确了,客户端的也正确了,为什么还找不到方法。这个问题我也解释不好,但是通过查找资料解决了,首先设置客户编码为AMF0

直接改代码就行

netConnection = new NetConnection();
netConnection.objectEncoding=ObjectEncoding.AMF0;

解释可以看看这个博客:http://www.51tianqi.com/reflush-tianqi/resolve/277.html

这样,NetConnection.call.Failed这个问题应该就差不多了。

紧接着是无法找到方法的问题

这个问题综合了两个建议,首先改变服务器端的方法声明,改为

 Client.prototype.communicateServer = function(value)

原来的是:currentClient.communicateServer= function(value)

之后再一个英文文章中了解到,如果你的服务器端的asc文件名是main 那么你应该删除main.far这个文件,可是我的不是,那我也这么做,把源代码中的test_video2.asc改成main.asc 之后删除main.far

之后重启服务,登陆控制台,结果成功了。

这就是在win7下对他人的代码更改的过程。你也可能遇到安装FMS时,无法登陆控制台问题,可以换一下端口,源端口是1111,可以换成一个没有占用的,最后要注意address:应该写成IP:port如:   127.0.0.1:8978。

到这里就结束了


 

你可能感兴趣的:(server,service,服务器,Flex,Flash,Adobe)