您好,欢迎访问三七文档
FMS3系列(一):FMS程序连接到FMS服务器FMS是个很牛X的东西,到底有多牛X我不想在这里多说,有兴趣的朋友可以baidu一把了解一下,如果实在是不想动手,那你就点下面的连接吧,我搜索了点资料简单的总结了一下。通常做FMS都是和Flash或是Flex结合开发的,特别是在视频流这方面相当的突出,成功案例也不少,比如://挂钩。本人也是因为工作需要,趁工作之余来学习这门技术,想通过写博客的方式来巩固和分享学习,更希望爱好或是在从事这方面开发工作的朋友多多指正,交流。OK,本文就以连接FMS服务器作为写作话题,来看看我们学习FMS应该从什么地方出发,逐步的走上更高的台阶。Adobe公司的产品Flash和Flex都可以结合FMS进行编程,本文示例比较简单,为了多凑几个字我打算通过Flash和Flex两种实现来介绍怎么来实现我们的第一个FMS程序“连接到FMS服务器”。上山砍柴不忘磨柴刀,那么我们做技术开发肯定也离不开对开发环境,开发工具,开发语言的选择和准备。本文中我们的工具就是FlashCS4,FlexBuilder3和FMS3.0,所使用的开发语言是ActionScript3.0,这里我不想浪费时间去介绍软件的安装,相信看这篇文章的你对于安装软件不会存在有什么难度,OK,下面看看怎么编码实现。一、FMS应该做些什么本文中所使用到的FMS是非常简单的,主要就就是建立一个FMS应用,方法很简单。找到你安装FMS的目录你会发现里面有一个appliations的目录。对的,它就是管理FMS应用的目录,进入该目录在里面建立一个文件夹就OK,我建立的文件夹为firstFMS。二、Flash连接到FMS服务器首先建立一个Flash文件(ActionScript3.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的完整代码:以下为引用的内容:1package2{3importflash.net.NetConnection;4importflash.net.NetStream;5importflash.display.MovieClip;6importflash.net.Responder;7importflash.events.MouseEvent;8importflash.events.NetStatusEvent;9importflash.events.AsyncErrorEvent;1011publicclassConnFMSextendsMovieClip12{13privatevarnc:NetConnection;1415publicfunctionConnFMS()16{17btnConnFMS.label=连接到FMS;18}1920privatefunctiononClickHandler(evt:MouseEvent):void21{22trace(正在连接FMS服务器);23nc=newNetConnection();24nc.connect(rtmp://localhost/firstFMS);25nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);26}2728privatefunctiononNetStatusHandler(evt:NetStatusEvent):void29{30switch(evt.info.code)31{32caseNetConnection.Connect.Success:33trace(成功连接FMS服务器!);34break;35caseNetConnection.Connect.Rejected:36trace(访问FMS服务器权限不足,连接被拒绝!);37break;38caseNetConnection.Connect.InvalidApp:39trace(指定的应用程序名称没有找到);40break;41caseNetConnection.Connect.Failed:42trace(连接失败!);43break;44caseNetConnection.Connect.AppShutDown:45trace(服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭!);46break;47caseNetConnection.Connect.Closed:48trace(与FMS的连接中断!);49break;50}51}52}53}三、Flex连接到FMS服务器首先建立好Flex项目,默认会创建一个MXML文件,简单化实现这里就直接在这个MXML文件里来实现连接FMS。代码上和Flash连接到FMS几乎没有什么差别,主要就是学习NetConnection类来完成,如下代码定义:以下为引用的内容:1//Flex与FMS建立连接的对象2privatevarnetConn:NetConnection;3//FMS服务器的地址,使用rtmp协议4privatevarrtmpUrl:String=rtmp://localhost/firstFMS;NetConnection指示FlashPlayer是通过持久性的RTMP连接连接到服务器,实现这一步操作是通过NetConnection类的connect()方法来完成的。如下:以下为引用的内容:1//当Flex应用程序启动的时候就建立与FMS服务器的连接,2internalfunctiononInit():void3{4netConn=newNetConnection();5netConn.connect(rtmpUrl);6netConn.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);7netConn.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);8}connect()方法打开指定rtmp协议地址的FMS服务器的连接。一旦调用该方法NetConnection的对象就会捕捉到FMS返回的一个网络连接状态,通过NetStatusEvent事件监听可以得到返回状态的值(详细见本文前Flash部分),AsyncErrorEvent事件为异步引发异常(既本机异步代码)时调度。关于NetConnection的各种状态的详细请查看本文之前的Flash实例有详细的介绍。由于实例比较简单,这里我就不在多说废话,下面是通过Flex实现连接到FMS的完整代码:以下为引用的内容:1?xmlversion=1.0encoding=utf-8?2mx:Applicationxmlns:mx==absolute3mx:Script4![CDATA[5importmx.controls.Alert;6//Flex与FMS建立连接的对象7privatevarnc:NetConnection;8//FMS服务器的地址,使用rtmp协议9privatevarrtmpUrl:String=rtmp://localhost/firstFMS;1011//当Flex应用程序启动的时候就建立与FMS服务器的连接12internalfunctiononClick():void13{14nc=newNetConnection();15nc.connect(rtmpUrl);16nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);17nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);18}1920privatefunctiononClickHandler(evt:MouseEvent):void21{22trace(正在连接FMS服务器);23nc=newNetConnection();24nc.connect(rtmp://localhost/firstFMS);25nc.client=this;26nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);27nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR,onAsyncErrorHandler);28}2930privatefunctiononNetStatusHandler(evt:NetStatusEvent):void31{32switch(evt.info.code)33{34caseNetConnection.Connect.Success:35trace(成功连接FMS服务器!);36break;37caseNetConnection.Connect.Rejected:38trace(访问FMS服务器权限不足,连接被拒绝!);39break;40caseNetConnection.Connect.InvalidApp:41trace(指定的应用程序名称没有找到);42break;43caseNetConnection.Connect.Failed:44trace(连接失败!);45break;46caseNetConnection.Connect.AppShutDown:47trace(服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭!);48break;49caseNetConnection.Connect.Closed:50trace(与FMS的连接中断!);51break;52}53}5455privatefunctiononAsyncErrorHandler(evt:AsyncErrorEvent):void56{}57]]58/mx:Script59mx:Buttonx=135y=89label=Buttonclick=onClick()fontSize=12fontWeight=normal/60/mx:Application四、注意事项通常新手在学习FMS的时候都会遇到一个问题,那就是通过NetConnection连接FMS服务器的时候,连接状态总是返回“NetConnection.Connect.Rejected”这样的状态结果,然后接着还有会有一个“NetConnection.Connect.Failed”状态,是什么原因造成这样的错误的呢?第一个错误从本文实例中你可以得到,是访问FMS服务器的权限问题,如果FMS没有开设足够的访问权限,通常在访问FMS的客户端都会接受到这样一个异常状态。第二个错误又是怎么产生的呢?这还是又访
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:FMS3系列
链接地址:https://www.777doc.com/doc-6116648 .html