手把手系列:打造基于FMS2的视频聊天室(二)

上传人:大米 文档编号:549124860 上传时间:2022-11-26 格式:DOC 页数:20 大小:116.50KB
返回 下载 相关 举报
手把手系列:打造基于FMS2的视频聊天室(二)_第1页
第1页 / 共20页
手把手系列:打造基于FMS2的视频聊天室(二)_第2页
第2页 / 共20页
手把手系列:打造基于FMS2的视频聊天室(二)_第3页
第3页 / 共20页
手把手系列:打造基于FMS2的视频聊天室(二)_第4页
第4页 / 共20页
手把手系列:打造基于FMS2的视频聊天室(二)_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《手把手系列:打造基于FMS2的视频聊天室(二)》由会员分享,可在线阅读,更多相关《手把手系列:打造基于FMS2的视频聊天室(二)(20页珍藏版)》请在金锄头文库上搜索。

1、第一讲:页面编写编写应用性软件,页面的布局、相关组件的摆放等因素相当重要,它将直接影响到用户的使用体验,然而,对于程序员来说,页面的编写也是一项极其繁杂的工作。基于这个原因,一些可以快速构建页面的编程语言和工具也应用而生。例如:SpringRichClient(一种可以快速构建Swing程序的工具)、各种IDE的页面部件拖拽功能等。Adobe出品的MXML语言也是这样一种工具:它可以帮助程序员快速的构建页面,而使用起来就和HTML一样简单。在编写前,大家可以参考Flex SDK自带的Component Exlorer,那里面对所有的页面部件都进行了详细的讲解并提供了相当优秀的示例本软件的页面主

2、要应用了几个常用的元素:HBOX、VBOX、Panel、List、Button下面是整体页面代码:各位可以先不用管那些事件方法,例如:chatWith()、init()等。本页面编写要素: 利用HBOX、VBOX作为整体框架 Panel作为部件容器 相对百分比控制部件尺寸下一讲:连接FMS服务器成功后实现本地视频的播放第二讲:连接FMS服务器成功后实现本地视频的播放利用ActionScript 3和VideoDisplay元素可以很容易的实现本地视频的播放;至于和FMS的连接,AS3里也有相关的API供使用。以本软件为例:连接FMS服务器的代码放到了init()方法,即:页面初始化完成后将触发

3、FMS的连接动作首先定义程序变量:/与FMS之间通讯的桥梁对象(后面会详细讲解此对象的用处)private var fmsObj:Object = new Object();/与FMS相连的connection对象private var fmsConn:NetConnection = new NetConnection();/播放到FMS的视频流(此stream负责采集本地视频并传送到FMS服务器)private var fmsStream:NetStream = null;/FMS连接串(例如rtmp:/127.0.0.1/videochat)private var fmsUrl:Strin

4、g = null;/连接的用户名(在线用户名)private var userName:String = null;/用户在线数据private static var userData:ArrayCollection = new ArrayCollection();编写init()方法实现FMS的连接:private function init():void /HTML传参,后面讲解fmsUrl = Application.application.parameters.fms;/HTML传参,后面讲解userName = Application.application.parameters.u

5、ser;/定义客户端与FMS端通讯的client对象(后面讲解)fmsConn.client = fmsObj;fmsObj.userUpLine = upLine;fmsObj.userDownLine = downLine;/必须设置,原因:FMS端AS和客户端AS的版本不统一fmsConn.objectEncoding = ObjectEncoding.AMF0; /开始连接FMS服务器fmsConn.connect(fmsUrl,userName) ; /网络连接事件处理器(后面会有connectFMS的实现) fmsConn.addEventListener(NetStatusEve

6、nt.NET_STATUS,connectFMS) ;connectFMS()的实现:private function connectFMS(e:NetStatusEvent):void var result:String = e.info.code ;switch(result) case NetConnection.Connect.Success:playStream(); break;default : break ;playStream()的实现:private var camera:Camera = null;/摄像头对象private var mic:Microphone = nu

7、ll;/麦克风对象private var showVideo:Video = null;/远程视频的呈现对象private function playStream():void fmsStream = new NetStream(fmsConn);/创建连接FMS的stream对象camera = Camera.getCamera();/获取机器默认的摄像头if(camera = null) Alert.show(未检测到摄像头,请确认摄像头已被正确安装);mic = Microphone.getMicrophone();/获取机器默认的麦克风if(mic = null) Alert.show

8、(未检测到MIC,请确认MIC已被正确安装);if(camera != null) camera.setMode(320,240,15);/分辨率:320*240 每秒15帧camera.setQuality(100 * 1000,90);/设置视频质量if(mic != null) mic.setUseEchoSuppression(true); /本地视频播放的实现,将cameraattach到videodisplay即可localVideo.attachCamera(camera); fmsStream.attachCamera(camera);fmsStream.attachAudio

9、(mic);/将本地视频发布到FMS上,发布的音视频流名字是在线的用户名fmsStream.publish(userName,live);上面涉及到的类和相关API可以参照手册:Adobe_Flex_2.0.1_Language_Reference_Flex2.org.chm如需要的话,可mail: 索取下一讲:在线用户功能的实现第三讲:在线用户功能的实现本功能的实现主要是利用FMS服务端ActionScript和客户端client对象的交互编写服务端ActionScript/此方法在连接到FMS时触发application.onConnect = function(newClient, na

10、me) newClient.name = name; /接受客户端的连接 application.acceptConnection(newClient);var msg = Hello! You are connected as: + newClient.name;trace(Sending this message: + newClient);for(i=0;iapplication.clients.length;i+) for(j=0;japplication.clients.length;j+) if(application.clientsi.name!=application.clie

11、ntsj.name )application.clientsi.call(userUpLine,null,application.clientsj.name);下面解释重要代码的含义 application.onConnect在客户端连接到FMS时触发 function(newClient, name) name的值来自客户端代码 fmsConn.connect(fmsUrl,userName);中的userName trace方法后的两个for循环作用:每次有客户端连接到FMS时,都将调用客户端的userUpLine方法,其中userUpLine方法在客户端代码 fmsConn.client = fmsObj; fmsObj.userUpLine = upLine;中定义,其中真正的实现是客户端的upLine 诀窍:在ActionScript中,所有Object的本质都是一个Diction

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号