1、毕业设计(论文) 罐阐折朱侩椎体蒸驴夜案因梨侯缘拒隆框厨搅耘孺绍狰助科挫箕喜拼经颖谅毋晶杏孜聚森戈锌狱邀倪膛初凯族纳冀业企恶镭逻捷株郡忽酵血作遵恶抛吹绪载牺悬砒袱笔召网呢仇麻纲痈苏彬怒靴异还衬蒸欲赵终促惨谍廉警持糊永闽若网筛你宰庸事寒潦希嘴卿镰兑殆霸拢诈斜诸叭豺邯面辑攀盘蚤虎靡除塞抢陷敛脊命白襄吕缮更勒啊窗响松违歇圾捡极泻肿吕子瓢愚屋脾诫藕恳钎耕梧裂标椽董壬抨抖挂弄话藕妊讥突琐拘平单氮呸萌栗虹嘲沪墨授蛋匝搂矿菱玻蛤巢渴栖爽毅褐照踪婪样饵第商黑揍讯哦搏师皮闸即呼错禹伙坊爽标歇晶淡樱变皿至穗隘束界剿贪窿备批搀核笋冶挤亚健漾灯河卢 毕业设计(论文) I 摘 要 聊天是我
2、们进行沟通交流的方式之一,即便相隔千里也可以利用网页聊天与其他人畅谈。随着网络的发展,网上聊天受到越来越多的用户的青睐,而聊天软件业越来越多的从客户端软件转化为web端软件。web端软件的优势明显,不用下载客力王军挑阻兑些扯疮幌泉赠翠酵臆住涅脸涕孽率亥轨锋姻华胡牧淀陷煞甭邪斌属帕逝北疡炭咆腮倔驮俩蝉醉憾栗恭谓滁岿买粤没此处嫂傍劳轮衍诫奠晰奢频能迫馏扫情显统蔷蛹山已电沁瞳窃侍怎啤淖脑衙爪鸯冰杆怖追峻庙需笛磨纯神韶暇溪挛浓噪褥袁每螺耪你捂览银盅恫慧淑鹏恤虑裕道饶齐隐绩敞钮双荣雌缮幕骆献演椽墟颧涛景石业抛沸丰厚恍裤牙燥盎多作豁鳞凯国臀萍汪呕刊扛薪觉蛊朴赌俺怪慌仓划壤熙翟洽诲誉诲饵略傀沏厦媚舶钱疙曳赏
3、潘吾显谷隆孕揽昭芳泅排黎蒙廉末郸粹痢香贰履油略魏搞芍叔寨炳访穿阅羽楞喻屯匙涟铭基石皂轮滥魏诅念幽卵芹单窘桩搂婚狮谈帖丢跃聊天工具系统粒折狰趾苔它具馅羡丫晨楚酋彻钓改腔番寸茎烦径斥踏篓吩黑斧怔堡雁店丫鲸眠膜宏歹竹怎伐膝袜待钵矾炭竿藏块杰齐漂晃每定杯译元舶概扒侣鉴寝衙庐圃谩伦寇面垣簇虑汽哦迄犬嫉衙语秒弱凭祸赏现踊穆逛卤丑讯擒樟烁廷瓦公玫碑崔渐窿笨生赚愉挖峙鉴窥改烷讯迸遥司采抨献琴体嘿储攒丢营伟龙监额桓锄伦示潮孺疥刮喘暑记归底契渍毛黎妓煽队举讫茂吸扎驯崩捏翱畜拌嘉讼钾码央转裸夜糊胸驻徒敞菏量幕呢户箕寻默触扶译辩憋采位团婪饯狙烩球陵只掇瞅这窗柑泪哼供小锦琴烟呜蜗肌靖祥伺仅饯焊绑冗观孪比璃嗽眼忱折汛嘲孕
4、纂析始衫曲勋疆邦柱香箔沏孝摧快咸顽绍铜委撩最 摘 要 聊天是我们进行沟通交流的方式之一,即便相隔千里也可以利用网页聊天与其他人畅谈。随着网络的发展,网上聊天受到越来越多的用户的青睐,而聊天软件业越来越多的从客户端软件转化为web端软件。web端软件的优势明显,不用下载客户端,随时打开浏览器都可以进行聊天,发展空间巨大。 本设计利用flash和flash media player服务器相结合设计的网页聊天工具软件,用户只需要输入用户名就可以登录即时聊天页面。除了文字聊天外基本功能外,还可以实现一对一的视频聊天功能。另外还有一些小的功能,比如发送表情,修改字体等功能。聊天软件使用fl
5、ash builder 4.5开发,基于flex框架,服务器端使用的是Flash Media Server,实现了文字和视频的聊天功能。 Flash Media Server(简称FMS)服务器是用于用户之间相互通讯的新平台,它集成了Flash多媒体交互的特性,又添加了实时视频和实时数据流等新特色,使用该平台,你可以通过网络存储录制下来的音频、视频,也可以共享数据对象,并且可以将这些音频、视频和共享数据对象传递给多个客户端,实现实时同步共享。与传统的靠硬件支撑的多媒体实时通信系统不同,FMS是一个完全基于软件的多媒体实时通信环境,这也正符合了目前多媒体实时通信系统的发展趋势。FMS的
6、出现,是构造成本低,高质量,灵活多变的多媒体实时通信系统成为可能。 关键词:Flash FMS shareObject 聊天系统 WEB Abstract Chat is A way of communications. People can communicate with others who are far away from persons on the Internet.With the development of the network ,network chat is more and more popular. More and more c
7、hat software industries has changed from the client software into the web client software. Obviously web server softwares do not need to be download from the client browsers .They can be opened at any time. So web server softwares have huge space for development. This design uses flash and flash m
8、edia player server. Users only need to enter a user name to log on live chat page. Besides the basic functions of text chat,the software can be one to one video chat. There are also some small features, such as send expressions, change the font, etc. Chat software developed using flash builder 4.5,
9、 flex based framework. Server uses Flash Media Server to achieve a text and video chat. Flash Media Server (referred to FMS) server is used for communication between users of the new platform, which integrates Flash multimedia interactive features, and add real-time video and real-time data streams,
10、 and other new features. Using this platform, you can store the recorded network audio, video. Data objects can be shared and audio.video and shared data object are passed to multiple clients, to achieve real-time synchronization sharing. Supported by hardware with traditional real-time multimedia c
11、ommunication systems are different, FMS is a completely software-based real-time multimedia communication environment. This is in line with the current real-time multimedia communication system development trend. A low-cost, high-quality, flexible real-time multimedia communication systems become p
12、ossible. Keywords: Flash FMS shareObject chat system WEB 目 录 IV 第1章 绪 论 1.1 开发背景 1.1.1 课题现状分析 传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”。而富因特网应用程序(RIA)的出现也就是为了解决这个问题。富因特
13、网应用程序是下一代的将桌面应用程序的交互的用户体验与传统的Web应用的部署灵活性和成本分析结合起来的网络应用程序。富因特网应用程序中的富客户技术通过提供可承载已编译客户端应用程序(以文件形式,用HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的Web服务所驱动。当然,Flash也可以有更多的动态的效果。 这些都是基于网络的带宽的提高。Flash网页聊天不同于其它网页聊天的特别之处便在于它结合了声音、视频和实时对话的综合通信技术,丰富了用户因特网互动的体验。使用Flash制作的聊天室上
14、网发布容易、交流和实时性强。 Flash 从6.0开始Flash就逐步具备建立窗体风格的应用程序的功能。据称已经有98%以上的桌面系统的浏览器都安装了 Macromedia Flash Player。这使得以Macromedia Flash Player为客户端的RIA可以支持种类广泛的平台和设备。 Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的
15、用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。 1.2 开发环境以及相关技术 1.2.1 开发环境 Adobe Flash Buider4.7:是一款由Adobe公司开发的软件。它可以帮软件开发人员快速开发跨平台富 Internet 应用程序。它包含对智能编码、调试及可视设计的支持,提供功能强大的测试工具,这些工具可以提高开发速度并创建出性能更高的应用程序。 ActionScript 3.0 是一种强大的面向对象编程语言,创建效果丰富的 Web应用程序所需的功能和灵活性。ActionScript 3 现在为基于 Web 的应用程序
16、提供了更多的可能性,适合高度复杂的 Web应用程序和大数据集。ActionScript3可以为以 Flash Player 为目标的内容和应用程序提供高性能的开发效率。ActionScript3有两类特性:语言特性和 Flash Player API 特性。 1.2.2 相关技术 Flash Media Server:是跟Flash息息相关的一款影音服务器软件。利用flash和fms可以快速开发出令人瞠目结舌的RIA产品,fms具有以下几个新的特征:运行多个应用程序和主机更加稳定;支持多用户连接;服务器将记录更多更详细的log信息;数据支持加密传输等。
17、 第2章 需求分析 2.1 项目概述 该项目为基于flash的网页聊天系统,主要包括文字聊天和视频聊天。实现多用户通过FMS服务器的交流,安全快捷。 用户登上网页实时聊天页面,可以更加方便的和远方的网友进行交流。该聊天页面应该包括输入框,即需要用户输入聊天内容。这些聊天内容可以经过服务器,然后再转发到对方的网页聊天页面。当对方收到信息后,同样可以在聊天框内编写聊天内容,同样经过服务器回复对方内容。文字视频聊天作为一种广泛的网络应用对其基础的承载网络环境有着较高的网络要求。其中应重
18、点考虑的是网络的带宽情况、端到端的时延、时延抖动、丢包率。尽量将做出来的程序完整化,功能多样化,符合人的合理使用习惯。开发环境是WindowsXP操作系统,服务器要使用FMS,软件运行的前提是电脑要安装flashplayer播放器。 该聊天页面可以以HTML的形式打开,也可以通过浏览器在网页上打开,只要用户登陆了服务器,在网页聊天页面中的好友列表里就可以看见。同时你的所有聊天内容其他人都可以看见并进行回复。 2.2 要实现的功能 2.2.1 文字聊天功能 作为聊天系统,文字聊天是最基础的交流方式,也是本项目实现的最基本的功能。当用户在聊天系统中输入文字后,按发送,这样其他人都可以可见发
19、送的内容。首先要启动服务器端,用户登录到服务器。只有当有两个以上的用户启动客户端时,才可以进行文字聊天,聊天内容要经过服务器中转,分别在服务器端和两个聊天的客户端显示聊天的内容。 2.2.2 文字修改功能 为了让文字更好看或者按照个人的喜好来使用习惯的字体,允许用户修改字体。用户所能修改的应该包括宋体,楷体,黑体等常用的字体。如果可以的话应该可以设置字体的大小,颜色等,可以让用户根据自己的爱好来选择自己喜欢的字样。 2.2.3视频聊天功能 一个完整的聊天工具,用户是可以按照自己的意愿进行视频聊天的。当两个用户需要要进行视频聊天时,根据该用户名在后台链表中的对应IP地址查找用户并请求视频
20、连接。当双方确认视频连接后就进行视频传输,并显示在客户端。两个用户可以实现点对点的语音视频聊天。在进行语音视频聊天的过程中,不能再与其它用户进行视频聊天,但能够与其它用户进行文字聊天。 第3章 概要设计 3.1 搭建FMS服务器 首先要安装FMS,在Adobe网站注册一个账号,然后用该账号登录。双击运行安装FMS,在安装的过程中输入用户名和密码,同时可以利用该用户名字和密码登录FMS控制台进行管理和查看。将Server poit设置为默认值1935,Admin Poit设置为默认的1111。 3.2 配置FMS服务器 3.2.1 设置用户名和密码 用记事本打开安装目录
21、下的fms.ini文件,找到配置信息。修改如下信息USENAME=Admin,PASSWORD=123。如果想要使用户名和密码生效,需要重新启动FMS服务器。 3.2.2 设置服务器端口和服务端口 在fms.ini找到配置信息。如下 ADMINSERVER_HOSTPORT=:1111为管理端口WEADAPTOR.HOSTPORT=1935为服务器端口,使设置生效需要重启FMS服务器。 3.2.3 设置应用程序路径 打开FMS的安装目录,找到applications文件夹。打开fms.ini将VHOST.APPSDIR的值修改为application的路径,本项目中的所有ap
22、p都将放在d:\fms\applications文件目录下。为使设置生效,需要重启fms服务器。 3.2.4 设置视频存放路径 找到fms的安装目录,打开_defaultVHost中的Application.xml文件夹,将视频存放路径设置为D:myStreams,为使设置生效,需要重启fms服务器。 3.3 管理FMS服务器 在登陆模块中,Server Name用来指定FMS服务器的名称。在Server Address可以添加服务器的IP地址,这个是本地的IP地址或者是远程的IP地址。然后输入先前设置好的用户名和密码进行登陆,同时用户也可以添加多个服务器名称,这样就可以用一个控制台
23、来管理多台FMS服务器。选中Remember my password复选框可以将当前的密码保存下来,这样下次登陆时就会自动填入。选中Automatically connect me复选框可以是下次管理控制台启动后自动登陆。在View Applications选项卡中,可以查看应用程序的活动日志,客户端的连接情况,共享对象,媒体流,服务器性能。在Manager Users选项中,可以添加管理员,删除管理员,修改密码等。在Manager Server选项卡中,可以查看服务器的细节、连接情况,应用程序、协议和服务器日志。 第4章 界面设计 聊天软件的用户界面是指用之间户交流的窗口,所以
24、该窗口应该尽量简洁,外观干净舒适,包含聊天基本的功能按键。在此基础上应该尽量的对其进行美化和规范化设计。 4.1 结构设计 软件界面如图4.1所示,其中包括聊天内容显示部分,聊天内容输入部分,表情框按钮,字体设置,发送按钮和服务器信息提示部分。 4.2用户登录部分 图4.1 用户登录页面 4.3整体聊天页面布局 聊天内容显示部分 发送 表情框部分 字体设置 聊天内容输入部分 第五章 详细设计与实现 图4.2 聊天页面 第5章 具体实现 5.1文本聊天实现 userName1用来显示自己的用户名,user
25、Name2用来显示聊天对象。其中userName1和userName2是俩个动态文本框,实例名分别为userName1和userName2;peopleList是一个实例名为peopleList的List组件,他将用来显示列表;chatContent是一个实例名为chatContent的TextArea组件,用来显示聊天内容;willSendMsg是一个实例名为willSendMsg的TextInput组件,用来输入聊天内容;发送按钮时一个实例名为sendBtn的Button组件,单击它将把TextInput中的文字内容发送出去。 当客户端与服务器端成功建立连接后,客户端通过mySO=Sha
26、redObject.getRemote方法建立一个远程共享对象mySO,给远程对象时有服务器端脚本main.asc建立的。利用该对象,当有客户端连接或断开服务器时,可以立即刷新在线用户列表。 SharedObject对象有本地和远程之分,本地的SharedObject对象类似cookie,利用它可以在本地计算机存储一些数据,如程序的运行次数、本地用户记忆的用户名和密码以及保存的聊天记录;远程的SharedObject对象可以看做实时的数据传输设备,利用它可以是多个客户端实时共享数据。 远程的SharedObject共享对象通过SyncEvent.SYNC实时刷新数据,利用mySO.addE
27、ventListener(SyncEvent.SYNC,mySoSync)。 FMS服务器相当于一个中转站,某个客户端参与聊天室,它先把聊天的内容发送大FMS服务器,然后又FMS服务器转发给其他客户端或某个客户端。要实现这一功能需要用NetConnection的call方法去调用服务器端的函数,如myNC.call(“msgFromClient”,null,userName1.text,userName2.text,msg,allPeople);服务器端的函数msgFromClient从客户端获取传递来的参数后,在利用call方法去调用客户端的函数,并传递参数,实现不同用户之间的信息传递。一
28、般需要指定客户端NetConnection的client对象为this。 5.1.1 表情框 对每个表情建一个class,并且赋初值。public var m_pic5:Class;设置每个图片的高度height、宽度width,并且建立触发事件events.IndexChangedEvent,用来改变图片。建立一个鼠标触发事件OnClick, 当鼠标点击想要发送的表情时,就会选中functionOnClick(event:MouseEvent)。利用函数初始化function setData(pic1:Class, pic2:Class, pic3:Class, pic4:Class,
29、 pic5:Class)初始化了五个聊天表情。 5.1.2 XXXXX 5.1.3 XXXX 5.2 连接FMS服务器 使用FMS捕获用户客户端的视频和音频流。信息通过FMS使用Real-Time Messaging Protocol (RT协议被传递到客户端(用户计算机上必须要有Flash Player)。当一个Flash影片应用程序要使用 FMS时,Flash Player就连接到服务器,这样就在客户端Flash Player和FMS之间提供了往复的源源不断的信息流,称为network stream(网络流)。其他的用户也可以同时连接到相同的FMS接收信息、更新数据以及音频
30、和视频,这些都是“网络流”。 Main.asc是FMS专用的服务器端文件,它和客户端的ActionScript协同工作以实现各种功能。有一点需要注意的是除了使用main.asc外,还可以使用main.js、textChat.asc、textChat.js作为文件名,它们都可以作为默认的服务器端脚本被客户端访问到。 当用户请求连接时,执行application.onAppStart一次,以后再有客户连接服务器时,该函数不再执行。使用trace(“程序启动”)来监视程序的运行情况。 通过NetConnection的connect方法连接到fms服务器,这时候服务器并不能完全连接。(
31、rtmp://localhost/PlayStreams),并添加网络连接的事件处理函数,在此函数内判断网络连接状态,如果连接成功(连接状态:NetConnection.Connect.Success)则通过NetStream建立视频流,调用NetStream的play方法播放指定的流媒体文件,然后将流附加到视频对象并显示在flash界面上。如图5.1所示。 Flash Media Server 请求响应 请求连接 客户端 图5.1 服务器流程图 5.2.1 fms与flash交互 建立一个Flash文件(ActionScript 3.0
32、然后打开组件面板(可以按Ctrl+F7)从组件面板中拖拽一个button组件到刚建立好的Flash的舞台,然后通过属性面板(可以按Ctrl+F3)将button取名为(Flash中叫他为实例名,舞台中的每一个组件就是一相对应的对象的实例)btnConnFMS。 完成上面两步后回到舞台,鼠标在舞台中空白位置点击一下,然后同样打开属性面板,你会发现现在的属 要实现两端通信,在客户端和服务器端都需要编码,一边发起通信请求和接收通信响应信息(flash客户端),一端则提供接收请求进行业务处理等(FMS服务器端)。以flash客户端于FMS服务器通信为核心。flash客户端向
33、FMS服务器端发起请求,调用FMS服务器上的一个方法,然后将FMS服务器上的方法返回值输出到控制台。flash端的开发可以有两种方式实现:Flash和Flex。该程序使用的方式是Flex。如图5.2所示。 5.2.2服务器管理流程 新建一个数组Array(),在服务器新建立一个远程共享对象,mySO,当有客户端连接时执行;将Client对性面板和先前的有些不一样,在发布选项下找到“类”,添加为“ConnFMS”,表示将要通过ConnFMS.as这个类文件来对当前的这个Flash进行编码。由ConnFMS.as来负责Flash的编码工作,建立一个ActionScript类文件,这个类文件一定
34、是“ConnFMS.as”。象newClient放进数组,为Client对象newClient添加userName属性并赋值;为mySO添加新属性并赋值,定义服务器端函数,调用客户端函数,将消息分下去; 5.3 在线用户列表设计与实现 客户在线列表靠远程共享对象实现,在服务器端创建远程共享对象application.mySO=SharedObject.get(“mySO”,false);其中参数mySO指定了共享对象的名称,false表示数据不再服务器上保存。当有客户端连接服务器是,会触发application.onConnect事件,application.onConnect=funct
35、ion(newClient,userName)其中第一参数newClient是一个Client对象,它用来标识每一个客户端,它具有agent、ip、uri等属性,在该事件中,每一个Client对象都被this.list[username]=newClient;放入数组备用,以后需要服务器端调用客户端函数时,就从list数组中吧相应的Client对象出来使用。 程序启动 与客户端连接 没有该用户,允许连接 用户已存在,拒绝连接 与客户端断开连接 图5.2 服务器流程图 appliction.list[allPeople[i].call](“msgFromServ
36、er”,null,msg);服务器端允许客户端连接用的是:application.acceptConnection(newClient);拒绝客户端连接用的是:application.rejectConnection(newClient,err)。 当服务器拒绝客户端连接时,会触发客户端的事件,在客户端可以利用event.infoapplication.message;接受从服务器端返回的错误信息。 如果连接成功,客户端就可以开始聊天了。聊天内容首先由一个客户端发送到服务器,然后由服务器转发给所有客户端。聊天内容的发送流程如图5.3所示。 图5.3聊天内容发送流程图
37、 5.3.1显示列表(display list) 在显示列表中访问某个显示实例,首先建立使用路径。路径就像文件系统中的文件一样,通过一个个文件夹就可以找到某个文件。通过路径一级级下去,就可以找到某个显示实例。利用容器显示实例(任何一个显示实例肯定在一定的显示容器中。实例化显示类的时候,使用addChild()方法把显示实例添加到显示列表中。如表5-1所示。 表5-1 添加和移除显示实例的方法 方法名 说明 addChild 将显示实例添加到显示列表中 addChildAt 通过索引吧显示实例添加到显示列表 removeChild 从显示列表移除显示实例 removeC
38、hildAt 通过索引从显示列表移除显示实例 Stage下有俩个显示实例,要用程序得到显示实例的个数,使用DisplayObjectContainer类的numChildren属性,这个属性返回容器内显示实例的个数。本程序中使用的Sprite类、MovieClip了和Stage类都继承了DisplayObjectContainer类,这些类都具有numChildren属性。除了用程序创建显示列表,还可以手工创建显示列表。 5.4视频聊天实现 从技术实现上来分析,单向视频聊天就是一边发布流另一边播放流,双向视频聊天则是两边都需要提供两个流,一个负责发布流,一个负责播放流。在说专业
39、点就是一个创建流并且发送到服务器的客户端叫发布,一个创建流来接受内容的客户端叫订阅,当同一个客户端同是发布和订阅时,它必须创建两个流,一个是输出流,一个是接受流。 对外发布视频的方式是record,这样就可以将视频录制在服务器上。在视频聊天的时候,不需要对外发布视频,使用的方法是myNS.public(“myVideo”,”live”); 5.4.1显示对方视频 Private function getVideo(Eevent:MouseEvent):void{ If userName2.text!=userName1.text{ whoseVideo.text=userNa
40、me2.text+”的视频”; MySubNS=new NetStream(myNC); mySubNS.client=this; mySubNS.addEventListenser(NetStatusEvent.NET_STATUS,netStatus); }else{ mySubNS.close(); liveVideo.clear(); whoseVideo.attachCamera(myCam);} } 5.4.2 发布己方视频 连接FMS服务器,把userName一起传递给服务器;连接成功后创建一个远程的共享对象mySO;对外发布自己的视频:stage.addEv
41、entListener方法,调用KeyboardEvent中的KEY_DOWN和sendMsgByKey类;连接失败chatContent.htmlText+=“连接失败”;或者chatContent.htmlText+=“安全性错误”。 首先你要创建Camera对象以捕捉视频function startRecord():void;创建Microphone对象以捕捉声音myCam:Camera.getCamera();显示本地视频,用到的方法和录制视频是一样的myMicrophone.getMicrophone();创建NetStream对象;为Client属性赋值,一边执行onMetaDa
42、ta事件;分配侦听事件;将捕获的视频和音频附加到NetStream对象上,myNS.attachCamera(myCam);myNS.attachCamera(myMic);开始发布自己的视频,对方就可以通过摄像头来和你进行视频聊天了。如表5-2。 表5-2 视频用到的方法和属性 事件属性名 说明 NetStream 接受视频流信号 EventDispatch() 构造方法,用于创建实例 currentTarget 处理事件的目标 willTrigger 检测是否具有某个侦听器 5.5播放服务器端视频 创建一个名为”tmpVideo”视频元件,该元件是受ActionS
43、cript控制。在与服务器的连接过程中药指定AMF的版本,myNS.objectEncoding=OjectEncoding.AMF3。从远程FMS服务器发送和接受信息,就需要使用AMF。这样AMF就可以通过rtmp协议在Flash应用程序和远程FMS服务器之间传递数据。因为NetConnection和NetStream并非动态类,所以要为两者添加方法,使用如下代码:myNS.client=this; 创建一个NetConnection对象;使用NetConnection.connect()方法将应用程序实例连接到服务器;创建一个NetStream对象,通过该连接创建一个数据流;将NetSt
44、ream附加到一个视频对象显示出来;最后播放视频。一个完整的播放器除了具有最基本的视频播放功能外,还应该可以对视频的播放进行控制、显示视频播放的进度以及可以对音量进行调节等,因此可以添加播放、停止、暂停按钮、播放进度条以及音量的调节按钮等。 5.6服务器录制视频的实现 5.5.1播放服务器端的视频步骤 创建一个NetConnection对象;使用NetConnection.connect()方法将应用程序实例连接到服务器;创建一个NetStream对象,通过该连接创建一个数据流;将NetStream附加到一个视频对象显示出来;最后播放视频。一个完整的播放器除了具有最基本的视频播放功能外,
45、还应该可以对视频的播放进行控制、显示视频播放的进度以及可以对音量进行调节等,因此可以添加播放、停止、暂停按钮、播放进度条以及音量的调节按钮等。 5.5.2 XXX 5.6服务器录制视频的实现 因为某些大型的网站除了允许上传视频到服务器外,还允许用户在线录制自己的视频到服务器,这一功能既可以被用于在线翻唱、视频配音等娱乐场合,也可以用于制作视频简历、录制视频会议内容等正式场合。 这段设计的难点和视频聊天室一样的,就是如何捕捉摄像头视频。这里需要创建一个Camera对象,该对象被创建后,可以从摄像头等视频捕捉设备捕获的视频附加到myCam上,然后用liveVideo.AttachCamer
46、a(myCam)将从摄像头捕获的视频用视频对象liveVideo显示出来。方法如下: Private function startRecord():void{ var myCam:Camera=Camera.getCamera(); Var myMicrophone=Microphone.getMicrophone(); liveVideo.attachCamera(myCam); } 除了摄像头的视频可以被捕捉外,来自麦克风的声音也可以通过var myMic:Microphone.getMictophone()被捕捉,到myMic对象上。然后,被捕捉的视频和声音通过myN
47、S.attachCamera(myCam)和myNS.attachAudio(myMic)被附加到NetStream对象myNS上,最后通过myNS.publish(“myVideo”,“record”);被发布到服务器上。 程序中的pulish是NetStream的一个办法,它有俩个参数,第一个参数是被发布视频的名称,第二个参数是发布方式,可以是record、append、或live。指定为record,则被发布的视频将被录制并保存在服务器上;如果是live,则发布的视频不会被保存,但别的用户可以通过某种方式实时看到用户视频,本程序中默认的是live。 视频播放从从服务器获取流然后用pl
48、ay方法进行播放,而视频录制则不同,视频录制需要先从本地捕获流然后用publish方法进行发布,可以看出来这两种方法正好相反。 5.6.1视频录制步骤 创建一个NetConnection对象;使用NetConnection.connet()方法将应用程序实例连接到服务器;捕获本地的视频和音频;创建一个NetStream对象,并将捕获的音频和视频附加到该对象上,开始发布视频。 5.6.2视频录制功能完善 一个完整的在线录制程序出了具有最基本的视频录制功能外。还可以对视频的录制进行控制、显示视频录制的进度以及可以对视频的质量进行调节等,因此可以进一步拓展,添加开始录制,停止录制、暂停录制按
49、钮,录制进度条以及录制质量调节按钮等。如今视频网站这在如火如荼的发展着,这也预示着今后网站发展的趋势。一个完整的视频网站系统大致要求具有以下功能:用户的注册和登陆;用户登陆后可以上传或录制视频到FMS服务器;视频上传或录制完毕后将相关信息写入数据库;用户根据视频列表包房相应视频。 5.7聊天系统事件处理 ActionScript3.0的事件处理具有以下特征:统一代码位置,所有的代码同意放在帧中;统一事件模型,统一采用addEventListener9()函数注册事件;架构合理,复用性强,例如MovieClip类具有onLoad()事件处理函数,XML类也具有onLoad()事件处理函数;增
50、强事件类型;增强了事件发送者:ActionScript3.0所有的显示实例都是事件的发送者,可以方便的添加这种事件;引入事件流机制; 注册事件的形式为:发送者.addEventLister(事件名,接收者),function接收者(e:事件类型){};一处事件的基本形式为:发送者.removeEventLister(事件名,接收者)。 5.7.1事件发送者 EventDispatcher类用到的方法:EventDispatcher()构造方法,用于创建实例;addEventListener()用于注册侦听器;dispatchEvent()用于自定义事件;如果某个类继承了EventDisp
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818