FMS3系列视频聊天.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FMS3 系列 视频 聊天
- 资源描述:
-
FMS3系列(一):FMS程序连接到FMS服务器 2009-04-27 14:26:38 来源:Cnblogs 【大 中 小】 评论:0 条 我要投稿 我要收藏 买空间、服务器就上主机网(CNIDC.COM) 虚拟主机评测+IDC导航=主机之家。 FMS是个很牛X的东西,到底有多牛X我不想在这里多说,有兴趣的朋友可以baidu一把了解一下,如果实在是不想动手,那你就点下面的连接吧,我搜索了点资料简单的总结了一下。 通常做FMS都是和Flash或是Flex结合开发的,特别是在视频流这方面相当的突出,成功案例也不少,比如, , 等视频网站都与FMS挂钩。本人也是因为工作需要,趁工作之余来学习这门技术,想通过写博客的方式来巩固和分享学习,更希望爱好或是在从事这方面开发工作的朋友多多指正,交流。OK,本文就以连接FMS服务器作为写作话题,来看看我们学习FMS应该从什么地方出发,逐步的走上更高的台阶。 Adobe公司的产品Flash和Flex都可以结合FMS进行编程,本文示例比较简单,为了多凑几个字我打算通过Flash和Flex两种实现来介绍怎么来实现我们的第一个FMS程序“连接到FMS服务器”。 上山砍柴不忘磨柴刀,那么我们做技术开发肯定也离不开对开发环境,开发工具,开发语言的选择和准备。本文中我们的工具就是Flash CS 4,Flex Builder 3和FMS 3.0,所使用的开发语言是ActionScript 3.0,这里我不想浪费时间去介绍软件的安装,相信看这篇文章的你对于安装软件不会存在有什么难度,OK,下面看看怎么编码实现。 一 、FMS应该做些什么 本文中所使用到的FMS是非常简单的,主要就就是建立一个FMS应用,方法很简单。找到你安装FMS的目录你会发现里面有一个appliations的目录。对的,它就是管理FMS应用的目录,进入该目录在里面建立一个文件夹就OK,我建立的文件夹为"firstFMS"。 二、Flash连接到FMS服务器 首先建立一个Flash文件(ActionScript 3.0)并将其保存在某个目录(自己决定吧)中。然后打开组件面板(可以按Ctrl+F7)从组件面板中拖拽一个button组件到刚建立好的Flash的舞台(也就是Flash显示东西的那一块地方),然后通过属性面板(可以按Ctrl+F3)将刚拖拽出的button取个名字(Flash中叫他为实例名,舞台中的每一个组件就是一相对应的对象的实例),我取的是btnConnFMS。 完成上面两步后回到舞台,鼠标在舞台中空白位置点击一下,然后同样打开属性面板,你会发现现在的属性面板和先前的有些不一样,在发布选项下找到“类”,这里我填写的为“ConnFMS”,表示我将要通过ConnFMS.as这个类文件来对当前的这个Flash进行编码。 上面承诺了由ConnFMS.as来负责Flash的编码工作,那该怎么做呢?建立一个ActionScript类文件,保存在之前保存Flash文件的同一目录就OK,记住这个类文件一定是“ConnFMS.as”。下面是ConnFMS.as的完整代码: 以下为引用的内容: 1 package 2 { 3 import .NetConnection; 4 import .NetStream; 5 import flash.display.MovieClip; 6 import .Responder; 7 import flash.events.MouseEvent; 8 import flash.events.NetStatusEvent; 9 import flash.events.AsyncErrorEvent; 10 11 public class ConnFMS extends MovieClip 12 { 13 private var nc:NetConnection; 14 15 public function ConnFMS() 16 { 17 btnConnFMS.label="连接到FMS"; 18 } 19 20 private function onClickHandler(evt:MouseEvent):void 21 { 22 trace("正在连接FMS服务器"); 23 nc = new NetConnection(); 24 nc.connect("rtmp://localhost/firstFMS"); 25 nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler); 26 } 27 28 private function onNetStatusHandler(evt:NetStatusEvent):void 29 { 30 switch (evt.info.code) 31 { 32 case "NetConnection.Connect.Success": 33 trace("成功连接FMS服务器!"); 34 break; 35 case "NetConnection.Connect.Rejected": 36 trace ("访问FMS服务器权限不足,连接被拒绝!"); 37 break; 38 case "NetConnection.Connect.InvalidApp": 39 trace("指定的应用程序名称没有找到"); 40 break; 41 case "NetConnection.Connect.Failed": 42 trace("连接失败!"); 43 break; 44 case "NetConnection.Connect.AppShutDown": 45 trace("服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭!"); 46 break; 47 case "NetConnection.Connect.Closed": 48 trace("与FMS的连接中断!"); 49 break; 50 } 51 } 52 } 53 } FMS3系列(一):FMS程序连接到FMS服务器(2) 2009-04-27 14:26:38 来源:Cnblogs 【大 中 小】 评论:0 条 我要投稿 我要收藏 买空间、服务器就上主机网(CNIDC.COM) 虚拟主机评测+IDC导航=主机之家。 三、Flex连接到FMS服务器 首先建立好Flex项目,默认会创建一个MXML文件,简单化实现这里就直接在这个MXML文件里来实现连接FMS。代码上和Flash连接到FMS几乎没有什么差别,主要就是学习NetConnection类来完成,如下代码定义: 以下为引用的内容: 1 //Flex与FMS建立连接的对象 2 private var netConn:NetConnection; 3 //FMS服务器的地址,使用rtmp协议 4 private var rtmpUrl:String="rtmp://localhost/firstFMS"; NetConnection指示 Flash Player 是通过持久性的 RTMP 连接连接到服务器,实现这一步操作是通过NetConnection类的connect()方法来完成的。如下: 以下为引用的内容: 1 //当Flex应用程序启动的时候就建立与FMS服务器的连接, 2 internal function onInit():void 3 { 4 netConn = new NetConnection(); 5 netConn.connect(rtmpUrl); 6 netConn.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler); 7 netConn.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler); 8 } connect()方法打开指定rtmp协议地址的FMS服务器的连接。一旦调用该方法NetConnection的对象就会捕捉到FMS返回的一个网络连接状态,通过NetStatusEvent事件监听可以得到返回状态的值(详细见本文前Flash部分),AsyncErrorEvent事件为异步引发异常(既本机异步代码)时调度。关于NetConnection的各种状态的详细请查看本文之前的Flash实例有详细的介绍。 由于实例比较简单,这里我就不在多说废话,下面是通过Flex实现连接到FMS的完整代码: 以下为引用的内容: 1<?xml version="1.0" encoding="utf-8"?> 2<mx:Application xmlns:mx=" layout="absolute"> 3 <mx:Script> 4 <![CDATA[ 5 import mx.controls.Alert; 6 //Flex与FMS建立连接的对象 7 private var nc:NetConnection; 8 //FMS服务器的地址,使用rtmp协议 9 private var rtmpUrl:String="rtmp://localhost/firstFMS"; 10 11 //当Flex应用程序启动的时候就建立与FMS服务器的连接 12 internal function onClick():void 13 { 14 nc = new NetConnection(); 15 nc.connect(rtmpUrl); 16 nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler); 17 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler); 18 } 19 20 private function onClickHandler(evt:MouseEvent):void 21 { 22 trace("正在连接FMS服务器"); 23 nc = new NetConnection(); 24 nc.connect("rtmp://localhost/firstFMS"); 25 nc.client=this; 26 nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler); 27 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler); 28 } 29 30 private function onNetStatusHandler(evt:NetStatusEvent):void 31 { 32 switch (evt.info.code) 33 { 34 case "NetConnection.Connect.Success": 35 trace("成功连接FMS服务器!"); 36 break; 37 case "NetConnection.Connect.Rejected": 38 trace ("访问FMS服务器权限不足,连接被拒绝!"); 39 break; 40 case "NetConnection.Connect.InvalidApp": 41 trace("指定的应用程序名称没有找到"); 42 break; 43 case "NetConnection.Connect.Failed": 44 trace("连接失败!"); 45 break; 46 case "NetConnection.Connect.AppShutDown": 47 trace("服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭!"); 48 break; 49 case "NetConnection.Connect.Closed": 50 trace("与FMS的连接中断!"); 51 break; 52 } 53 } 54 55 private function onAsyncErrorHandler(evt:AsyncErrorEvent):void 56 {} 57 ]]> 58 </mx:Script> 59 <mx:Button x="135" y="89" label="Button" click="onClick()" fontSize="12" fontWeight="normal"/> 60</mx:Application> FMS3系列(一):FMS程序连接到FMS服务器(3) 2009-04-27 14:26:38 来源:Cnblogs 【大 中 小】 评论:0 条 我要投稿 我要收藏 买空间、服务器就上主机网(CNIDC.COM) 虚拟主机评测+IDC导航=主机之家。 四、注意事项 通常新手在学习FMS的时候都会遇到一个问题,那就是通过NetConnection连接FMS服务器的时候,连接状态总是返回“NetConnection.Connect.Rejected”这样的状态结果,然后接着还有会有一个“NetConnection.Connect.Failed”状态,是什么原因造成这样的错误的呢? 第一个错误从本文实例中你可以得到,是访问FMS服务器的权限问题,如果FMS没有开设足够的访问权限,通常在访问FMS的客户端都会接受到这样一个异常状态。第二个错误又是怎么产生的呢?这还是又访问权限引起,当客户端没有主够的权限访问FMS服务器,就将返回“NetConnection.Connect.Rejected”状态并自动断开与FMS服务器的连接,“NetConnection.Connect.Failed”状态本身是由于连接服务器失败产生,而这里是因为权限问题而引发的。 前几天很多朋友就在问我这个问题,怎么来解决这个问题呢?如果你是一个技术专研者,如果又你赶兴趣的技术在你面前,你首先会做什么?查看官方提供的文档?实例代码?还是什么? OK,其实要解决这个问题很简单,在FMS服务器安装好后的目录下有一个"applications"目录,里面有两个FMS默认安装的FMS服务器(live和vod),随便打开一个默认安装然后打开里面的"readme.txt"文件会看到下面的字样: ================================================================ Deploying an unsigned vod service ================================================================ 1. Create a new folder in the {FMS-Install-Dir}/applications folder. 2. If you are replacing the default Adobe signed live service, back up the following files: * main.far * Application.xml * allowedHTMLDomains.txt * allowedSWFDomains.txt 3. Copy files from {FMS-Install-Dir}/samples/applications/vod to the directory you created in step 1. 现在你知道怎么解决上面出现的问题了吗??将这main.far、Application.xml、allowedHTMLDomains.txt和allowedSWFDomains.txt这四个文件复制到你创建的FMS服务器目录下就解决了,运行上面的实例程序,然后可以通过FMS的管理控制台查看到详细的连接信息。 我通常是使用的FMS安装目录下的fms_adminConsole.swf 来查看连接信息,也可以使用FMSfms_adminConsole.htm查看。 FMS3系列(二):创建可交互的FMS连接 2009-04-28 10:13:56 来源:Cnblogs 【大 中 小】 评论:1 条 我要投稿 我要收藏 买空间、服务器就上主机网(CNIDC.COM) 虚拟主机评测+IDC导航=主机之家。 在做FMS开发中,flash客户端与FMS服务器通信交互数据等是常见的,比如flash客户端需要一播放一个视频,需要获得FMS发向flash端的一条消息等。那么我们要怎么才能实现flash客户端与FMS服务器建立可交互的连接、通信呢? 本文将以flash客户端于FMS服务器通信为核心,以经典的"Hello World"示例详细介绍flash客户端于FMS服务器通信的实现。要实现两端通信,在客户端和服务器端都需要编码,一边发起通信请求和接收通信响应信息(flash客户端),一端则提供接收请求进行业务处理等(FMS服务器端)。 首先从flash客户端入手,本文的实例非常简单,要实现的功能就是flash客户端向FMS服务器端发起请求,调用FMS服务器上的一个方法,然后将FMS服务器上的方法返回值输出到控制台。 flash端的开发可以有两种方式实现:Flash和Flex。本文会将这两种方式的实现都给出实例。首先看看Flash里的实现。 启动Flash CS开发环境,新建立ActionScript 3.0的Flash文件,如下图: 然后在上面新建立的ActionScript 3.0的Flash文件上,按F9进入动作面板(输入程序代码的地方,当然也可以将代码封装到单独的类文件里),如下图: 上图中已经将通过Flash开发连接到FMS服务器的代码全部贴出,代码很简单。NetConnection这个类在 Flash Player 和 Flash Media Server 应用程序之间或者 Flash Player 和运行 Flash Remoting 的应用程序服务器之间创建双向连接。 通过NetConnection建立于FMS服务器的连接,然后使用NetConnection类的公共方法connect()通过RTMP协议连接到指定的FMS服务器上指定的应用,如上图示为连接的FMS服务器上名为的“HelloWorld”的这个应用。如果对NetConnection还不熟悉的朋友请先阅读下我的这系列文章的第一篇:FMS3系列(一):FMS程序连接到FMS服务器,随后通过调用call()方法调用FMS服务器上的方法,这里通过调用服务器上提供的sayHelloWorld()方法。 Responder 类提供了一个对象,该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。详细见构造Responder对象的时候构造方法的参数,一个方法处理操作成功的逻辑,一个方法处理操作失败的逻辑。 OK,完成了上面的flash客户端的开发现在就只差FMS服务器端的开发了,FMS服务器理需要有一个通信文件来负责于flash客户端的连接交互,通常情况下就是建立一个main.asc的通信文件。本文中的通信文件的程序代码非常简单,就是接受客户端的连接,然后提供一个客户端调用的方法。完整代码入下: 以下为引用的内容: 1 application.onConnect = function(client) 2 { 3 client.sayHelloWorld=function(str) 4 { 5 return "I can say:Hello "+ str; 6 } 7 this.acceptConnection(client); 8 } FMS3系列(二):创建可交互的FMS连接(2) 2009-04-28 10:13:56 来源:Cnblogs 【大 中 小】 评论:1 条 我要投稿 我要收藏 买空间、服务器就上主机网(CNIDC.COM) 虚拟主机评测+IDC导航=主机之家。 通过上面的客户端和FMS服务器的开发,现在这样可以按Ctrl+Enter测试了,看看我们的flash小程序是否能够成功的连接到FMS服务器上指定的HelloWorld,并成功调用服务器端指定的方法呢?打开FMS管理控制台可以看到如下截图效果。OK,我们的小程序已经成功的连接到了FMS服务器上指定的应用(HelloWorld): 下面是测试输出结果截图: 上面的实现是直接将代码写在Flash中,我们也可以将代码提取出来形成ActionScript文件(类),只要该类文件继承于显示对象,通过Flash CS3的新特性设置舞台文档类就可以调用了,下面是提取为ActionScript类的编程实现: 以下为引用的内容: 1 package 2 { 3 import .*; 4 import flash.events.*; 5 import flash.display.*; 6 7 public class ClientCallServer extends Sprite 8 { 9 private var nc:NetConnection; 10 private var rs:Responder; 11 public function ClientCallServer():void 12 { 13 nc=new NetConnection(); 14 rs=new Responder(onSuccess,onFailed); 15 nc.connect("rtmp://localhost/HelloWorld"); 16 nc.client=this; 17 nc.call("sayHelloWorld",rs,"World"); 18 } 19 20 private function onSuccess(rs:Object):void 21 { 22 trace(rs.toString()); 23 } 24 25 private function onFailed(rs:Object):void 26 { 27 trace(rs.description()); 28 } 29 } 30 } 或许有的朋友已经习惯了使用Flex开发,喜欢用拖拽控件的方式来完成一些常用的功能,其实在Flex下开发和Flash差别不是很大,其实在编码层次上是没什么区别的,不同的只是界面的呈现方式不一样。 以下为引用的内容: 1 private var nc:NetConnection; 2 private var fmsServer:String="rtmp://localhost/HelloWorld"; 3 private var rs:Responder; 4 5 private function initApp():void 6 { 7 nc = new NetConnection(); 8 nc.connect(fmsServer); 9 nc.client=this; 10 } 在Flex下开发,建立好mxml后可以直接在其内部的组件里编写ActionScript代码,如上定义了连接FMS服务器的NetConnection类的实例等。还定义了一个在Flex应用初始化的使用调用的方法initApp(),用来 完成flash客户端与FMS服务器的连接。 以下为引用的内容: 1 private function onClick():void 2 { 3 rs = new Responder(onSuccess,onFailed); 4 nc.call("sayHelloWorld",rs,"World"); 5 nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus); 6 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler); 7 } BenNiao FMS3系列(二):创建可交互的FMS连接(3) 2009-04-28 10:13:56 来源:Cnblogs 【大 中 小】 评论:1 条 我要投稿 我要收藏 买空间、服务器就上主机网(CNIDC.COM) 虚拟主机评测+IDC导航=主机之家。 同Flash中开发一样,给Responder指定了成功和失败后的处理函数,详细如下:如上就完成了Flex中调用FMS服务器并调用FMS上所提供的方法,服务器端的程序和前面 Flash中的一样。到此我们只需要调用onClick()方法就可以测试了,通过一个按钮组件来调用,如下: 以下为引用的内容: /** * 通信成功并返回结果时被调度 */ private function onSuccess(result:Object):void { Alert.show(result.toString(),"调用结果"); } /** * 通信失败并返回结果时被调度 */ private function onFailed(result:Object):void { Alert.show(result.description); Alert.show(result.code); } 如上就完成了Flex中调用FMS服务器并调用FMS上所提供的方法,服务器端的程序和前面 Flash中的一样。到此我们只需要调用onClick()方法就可以测试了,通过一个按钮组件来调用,如下: <mx:Button x="91" y="219" label="Call" click="onClick()"/> 以下为引用的内容: 1<?xml version="1.0" encoding="utf-8"?> 2<mx:Application xmlns:mx=" layout="absolute" fontSize="12" 3 creationComplete="initApp()"> 4 <mx:Script> 5 <![CDATA[ 6 import mx.controls.Alert; 7 private var nc:NetConnection; 8 private var fmsServer:String="rtmp://localhost/HelloWorld"; 9 private var rs:Responder; 10 11 private function initApp():void 12 { 13 nc = new NetConnection(); 14 nc.connect(fmsServer); 15 nc.client=this; 16 } 17 18 private function onClick():void 19 { 20 rs = new Responder(onSuccess,onFailed); 21 nc.call("sayHelloWorld",rs,"World"); 22 nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus); 23 nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncHandler); 24 } 25 26 private function onStatus(evt:NetStatusEvent):void 27 { 28 Alert.show(evt.info.code); 29 } 30 31 public function onAsyncHandler(evt:AsyncErrorEvent):void 32 { 33 34 } 35 36 /**//** 37 * 通信成功并返回结果时被调度 38 */ 39 private function onSuccess(result:Object):void 40 { 41 Alert.show(result.toString(),"调用结果"); 42 } 43 44 /**//** 45 * 通信失败并返回结果时被调度 46 */ 47 private function onFailed(result:Object):void 48 { 49 Alert.show(result.description); 50 Alert.show(result.code); 51 } 52 53 private function onBWDone(rs:Object):void 54 {} 55 ]]> 56 57 </mx:Script> 58 <mx:Button x="91" y="219" label="Call" click="onClick()"/> 59</mx:Application> FMS3展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




FMS3系列视频聊天.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/7900454.html