基于FMS(Flash Media Service)的多人视频聊天
?
记得以前在XP系统上做过一个基于Flex和Fms的多人视频程序,但是最近把它拿过来放在我的Win7的本里面运行竟然总是报告NetConnection.Call.Failed弄得我莫名奇妙,又有点不知所措,但是作为一个与程序打交道的人,就必须试着去解决这个问题。花了好长时间终于解决了。我看到网上好多人有和我同样的问题,但是似乎还没有解决所以我就在这里写下一片博客与大家分享。 为了给想学的人一些帮助,我尽量详细一些。 首先FMS简介: Adobe? flash? meida? 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安装目录下看看官方的例子就会知道什么是对的,之后给予对的来改正有问题的。 有两个文件夹值得我们看看 我们先要看的就是applications下的live或者vod文件夹下的内容,这里看live下的文件,注意里面的readme.txt 这里面有给我们的很重要的提示。 里面有下面这四条建议: To deploy an unsigned version of live service you can either replace 1. [New Service] Create a new folder in the 2. [New Service] (Optional) To make your new folder the default live 4. Copy all files from {FMS-Install-Dir}/samples/applications/live to 也就是说我们要把除了readme.txt之外的四个文件拷贝到自己的在application文件夹下建的应用程序文件夹下。这是第一步,第一步完成。 第二步,win7的权限问题,因为我的是win7系统,所以在启动fms服务的时候总是提示:系统错误5?? 拒绝访问,FMS服务总是无法启动,这个很明显是Win7的权限设置所知, 可以在运行中输入msconfig查看一下启动项,当然还有更简单的方法,就是更改权限。 在你的FMS安装目录中 明白人一看就明白了,给StartServerService.bat和StopserverService.bat创建快捷方式,之后再在快捷方式上单击右键选择以管理员身份运行。这样成功解决权限问题,这样就避开了因为权限问题而出现NetConnection.Call.Failed这个问题。但是还没有彻底解决。 第三步,在控制台中总会出现Method Not found(communicateServer) 的提示,看看自己下载的源码和使用提示,明明在服务器端代码都已经正确了,客户端的也正确了,为什么还找不到方法。这个问题我也解释不好,但是通过查找资料解决了,首先设置客户编码为AMF0 直接改代码就行 netConnection = new NetConnection(); 解释可以看看这个博客: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。 到这里就结束了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |