- 浏览: 1449937 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
呵呵!临近毕业了,本人选择的毕业设计题目是(基于B/S模式的视频监控软件的设计与实现),对于这个题目,我打算用Flex+FMS(FlashMediaServer)进行开发,从今天起,本人会不定期的把一些成果拿出来与大家分享,有什么描述不妥的地方还请大家批评指正。
这次要解决的问题是FMS的视频流共享。问题的大概描述是:我们把被监控的一方叫做Server,对Flex熟悉的同学都知道,Flex中的<mx:VideoDisplay>+AS3.0中的Camera.getCamera()组合可以很容易的捕捉摄像头的视频数据并将其显示在<mx:VideoDisplay>中,但是这里有个问题,这里所谓的显示,只是基于本地机器,而捕捉摄像头的动作也只是捕捉本机的摄像头,我们要设计的视频监控软件是B/S模式,假如我们把编译好的swf文件放到WebAppServer下,用户远程访问,将看不到Server端的实时视频,这样至少从实时监控来说,就完全失去了意义!
解决思路:
创建两个文件,一个文件用来捕捉Server端的视频数据,并将其发布到FMS中,假设这段视频流名为wwww。
另一个文件用来显示给客户,其所起的作用就是播放Server端口发布到FMS的wwww视频流。
实现步骤:
1 在FMS_HOME/applications/下建立一个example文件夹,用来做本例的FMS工程实例。
2 编写<解决思路>中涉及的第一个文件server.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="571">
- <mx:Script>
- <![CDATA[
- import mx.core.UIComponent;
- import flash.media.Microphone ;
- import mx.controls.Alert ;
- import flash.display.Graphics ;
- //测试网络可行性
- private var conne:NetConnection = new NetConnection() ;
- private function xianshi():void {
- //必须 在AS3.0中默认的ObjectEncoding为AMF3,但是FMS不支持AMF3,所以
- //要显示的声明为AMF0
- conne.objectEncoding = ObjectEncoding.AMF0 ;
- //FMS所在机器的IP地址
- conne.connect("rtmp://172.30.209.75/example") ;
- conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ;
- }
- private var nnnns:NetStream = null ;//专门用来向连接到服务器的客户端提供共享视频流
- private var time:String = null ;//定义时间寄存器
- private function chuli(e:NetStatusEvent):void {
- var result:String = e.info.code ;
- switch(result) {
- case "NetConnection.Connect.Success":
- vd.attachCamera(Camera.getCamera()) ;
- nnnns = new NetStream(conne) ;
- nnnns.attachAudio(Microphone.getMicrophone()) ;
- nnnns.attachCamera(Camera.getCamera()) ;
- //播放server端的视频流
- nnnns.publish("wwww","live") ;
- break;
- case "NetStream.Play.StreamNotFound":
- Alert.show("失败") ;
- break;
- default :
- Alert.show("缺省") ;
- break ;
- }
- }
- //停止播放
- private function tingzhi():void {
- nnnns.close() ;
- conne.close() ;
- }
- ]]>
- </mx:Script>
- <mx:VideoDisplay x="0" y="0" width="264" height="213" id="vd"/>
- <mx:Button label="连接服务器" click="xianshi()" x="10" y="247">
- </mx:Button>
- <mx:Button click="tingzhi()" x="99" y="247" width="125" height="21" label="断开与服务器连接">
- </mx:Button>
- <mx:VideoDisplay x="285" y="11" width="276" height="202" id="vv"/>
- </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="571"> <mx:Script> <![CDATA[ import mx.core.UIComponent; import flash.media.Microphone ; import mx.controls.Alert ; import flash.display.Graphics ; //测试网络可行性 private var conne:NetConnection = new NetConnection() ; private function xianshi():void { //必须 在AS3.0中默认的ObjectEncoding为AMF3,但是FMS不支持AMF3,所以 //要显示的声明为AMF0 conne.objectEncoding = ObjectEncoding.AMF0 ; //FMS所在机器的IP地址 conne.connect("rtmp://172.30.209.75/example") ; conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ; } private var nnnns:NetStream = null ;//专门用来向连接到服务器的客户端提供共享视频流 private var time:String = null ;//定义时间寄存器 private function chuli(e:NetStatusEvent):void { var result:String = e.info.code ; switch(result) { case "NetConnection.Connect.Success": vd.attachCamera(Camera.getCamera()) ; nnnns = new NetStream(conne) ; nnnns.attachAudio(Microphone.getMicrophone()) ; nnnns.attachCamera(Camera.getCamera()) ; //播放server端的视频流 nnnns.publish("wwww","live") ; break; case "NetStream.Play.StreamNotFound": Alert.show("失败") ; break; default : Alert.show("缺省") ; break ; } } //停止播放 private function tingzhi():void { nnnns.close() ; conne.close() ; } ]]> </mx:Script> <mx:VideoDisplay x="0" y="0" width="264" height="213" id="vd"/> <mx:Button label="连接服务器" click="xianshi()" x="10" y="247"> </mx:Button> <mx:Button click="tingzhi()" x="99" y="247" width="125" height="21" label="断开与服务器连接"> </mx:Button> <mx:VideoDisplay x="285" y="11" width="276" height="202" id="vv"/> </mx:Application>
3 编写<解决思路>中涉及的第二个文件client.mxml,此文件显示给用户远程观看
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
- <mx:Script>
- <![CDATA[
- import mx.core.UIComponent;
- import flash.media.Microphone ;
- import mx.controls.Alert ;
- //测试网络可行性
- private var conne:NetConnection = new NetConnection() ;
- private function xianshi():void {
- conne.objectEncoding = ObjectEncoding.AMF0 ;
- conne.connect("rtmp://172.30.209.75/example") ;
- //网络连接时间处理器
- conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ;
- }
- private var nnnns:NetStream = null ;
- private function chuli(e:NetStatusEvent):void {
- var result:String = e.info.code ;
- switch(result) {
- case "NetConnection.Connect.Success":
- bofang() ;
- break;
- case "NetStream.Play.StreamNotFound":
- Alert.show("失败") ;
- break;
- default :
- Alert.show("缺省") ;
- break ;
- }
- }
- private function tingzhi():void {
- nnnns.close() ;
- conne.close() ;
- }
- //网络连接成功时 播放server端发布到FMS的wwww视频流
- private function bofang():void {
- nnnns = new NetStream(conne) ;
- var v:Video = new Video() ;
- v.attachNetStream(nnnns) ;
- v.width = 276 ;
- v.height = 202 ;
- vv.addChild(v) ;
- nnnns.play("wwww") ;
- }
- ]]>
- </mx:Script>
- <mx:VideoDisplay x="0" y="0" width="264" height="213" id="vd"/>
- <mx:Button label="连接服务器" click="xianshi()" x="72" y="247">
- </mx:Button>
- <mx:Button click="tingzhi()" x="190" y="247" width="123" height="21" label="断开与服务器连接">
- </mx:Button>
- <mx:VideoDisplay x="285" y="11" width="276" height="202" id="vv"/>
- </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.core.UIComponent; import flash.media.Microphone ; import mx.controls.Alert ; //测试网络可行性 private var conne:NetConnection = new NetConnection() ; private function xianshi():void { conne.objectEncoding = ObjectEncoding.AMF0 ; conne.connect("rtmp://172.30.209.75/example") ; //网络连接时间处理器 conne.addEventListener(NetStatusEvent.NET_STATUS,chuli) ; } private var nnnns:NetStream = null ; private function chuli(e:NetStatusEvent):void { var result:String = e.info.code ; switch(result) { case "NetConnection.Connect.Success": bofang() ; break; case "NetStream.Play.StreamNotFound": Alert.show("失败") ; break; default : Alert.show("缺省") ; break ; } } private function tingzhi():void { nnnns.close() ; conne.close() ; } //网络连接成功时 播放server端发布到FMS的wwww视频流 private function bofang():void { nnnns = new NetStream(conne) ; var v:Video = new Video() ; v.attachNetStream(nnnns) ; v.width = 276 ; v.height = 202 ; vv.addChild(v) ; nnnns.play("wwww") ; } ]]> </mx:Script> <mx:VideoDisplay x="0" y="0" width="264" height="213" id="vd"/> <mx:Button label="连接服务器" click="xianshi()" x="72" y="247"> </mx:Button> <mx:Button click="tingzhi()" x="190" y="247" width="123" height="21" label="断开与服务器连接"> </mx:Button> <mx:VideoDisplay x="285" y="11" width="276" height="202" id="vv"/> </mx:Application>
4 启动FMS,打开编译好的server.swf,先点击按钮:连接服务器
5 把编译好的client.swf拷贝到任何客户端,然后点击按钮:连接服务器,即可以看到server端传送过来的视频流。
如果想要部署swf文件到WebApplication下,可以把FlexBuilder工程目录下的server.html和client.html拷贝到相应的目录,然后通过URL访问。
好了,关于FMS视频流共享的问题到此为止,各位有何疑问,不妨留言一起探讨!下一次我将解决怎样在不切断server端输出流的情况下进行视频录像。
发表评论
-
控制连接数量和密码保护-flashcom教程 密码保护
2008-10-30 14:03 1233学习flashcom+学习英语(烂到死),无任何目的,本篇仅 ... -
AMF3 + AS 3.0 + ASP.NET 完整配置过程及源文件
2008-09-11 16:04 3575AMF3 + AS 3.0 + ASP.NET 完整配置过程及 ... -
FLEX结合FMS制作在线视频认证
2008-09-09 14:24 3825很多交友网站都具体在线视频认证能,如51.com。参考它的认 ... -
flex 3 + .net开发flash Remoting四[完整代码
2008-08-28 16:11 2208一. 相关说明: 本篇将呈现完整的Flash Remot ... -
FMS Client AS 自訂類別物件傳遞
2008-08-27 15:04 1056透過與 FMS 連線,可以共享 SharedObject 物件 ... -
FMS 常常会用到 3个Call 和3个Send
2008-08-27 14:51 2196FMS 常常会用到 3个Call 和3个Send 关于Flas ... -
flex as3 fms相关的资料(转)
2008-08-27 14:36 1695FMS.rar FMS系列教程http://www.fs2 ... -
视频类
2008-08-27 09:21 1845Flash Player作为流媒体的表现形式之一,视频编码是其 ... -
一步一步学Flash Media Server
2008-08-26 18:03 4353从今天起,我们来学习一下 Flash Media Server ... -
再说说onSync,SharedObject
2008-08-26 16:44 1602* 最多人不懂的就是:那个list参数看代码: my_rso ... -
视频监控软件(2)---异步录像
2008-08-26 16:10 1378不好意思,让大家久等了!今天我要实现的一个功能是异步录像!先讲 ... -
flash fms WebService 交互过程
2008-08-26 16:01 1726//flash客户端call服务器端的方法,服务器端调用WS的 ... -
游戏开发常用FMS类
2008-08-26 15:51 1450游戏开发常用FMS类 ... -
FLEX提高篇--------ShareObject对象详解
2008-08-26 14:23 1125ShareObject,顾名思义共享对象,而通常意义上的共享, ... -
客户端呼叫Flash Medis Server3服务端入门
2008-08-26 14:02 1466当你不仅仅只想用FLEX来做纯业务数据的管理时,或者当你的项目 ... -
FMS两种方式实现简易聊天室
2008-08-26 14:01 1683原理和代码都很简单,没什么好说的. 一:利用ShareOb ... -
FLEX提高篇---------FMS简易聊天室加强版
2008-08-26 13:37 1828今天写了下简易聊天室的加强版 , 其实功能也十分有很 , 不过 ... -
Flex连接FMS实现用户列表(使用SharedObject)
2008-08-26 13:33 39851.先在FMS的安装目录中添加自己的应用(例如我的目录D:\M ... -
FMS 教程(SharedObject)用户列表
2008-08-26 13:32 2929FMS实现用户列表,一般都是利用List组件,和SharedO ... -
Fms教程7 理解共享对象
2008-08-26 13:13 1919理解共享对象 共享对象 ...
相关推荐
1. **多路音视频流同步**:每个参会者都需要发送自己的音视频流到服务器,同时接收其他参会者的音视频流。FMS3.0通过RTMP协议处理这些流的传输,确保不同设备间的同步。 2. **带宽管理**:视频会议需要根据网络状况...
FMS 4.5 是Adobe提供的流媒体服务器,它支持实时媒体流传输、实时数据共享以及与客户端应用的交互。 1. **客户端呼叫服务器** 在客户端呼叫服务器的场景中,我们首先看到服务器端的`main.asc`代码,定义了一个名...
FMS(Flash Media Server)是Adobe提供的多媒体服务器平台,用于实时流媒体和互动应用。本文将详细阐述如何使用Flex连接到FMS,并实现视频发送功能。 **一、准备工作** 1. **开发工具**: 首先,你需要安装Flash MX...
5. **Camera and Microphone**:用于捕捉和传输音频及视频流。 ### 二、设置开发环境 1. **启动FMS服务器**:确保服务器已经启动,可以通过控制台或命令行工具管理。 2. **配置连接URL**:例如`new_nc.connect('...
FMS是用于提供流媒体和交互式服务的服务器,支持即时启动、直播视频流和根据用户带宽调整流速率等功能。本指南涵盖了从服务器版本选择、FMS的基本概念、开发环境配置、简单的"Hello World"应用程序创建,到应用程序...
- 它们支持视频流、音频流以及使用AMF进行的高级数据通信,如FlashRemoting。 - FMS/FCS可以扩展Flash应用程序的功能,例如实时视频聊天、多人游戏和实时数据共享。 - 通过FMS/FCS,开发者可以构建高度互动的应用...
- **录制功能**:FMS可以录制用户的音视频流,方便后期处理或点播。 - **互动性**:通过共享对象,FMS允许用户之间进行实时交互,如聊天室、游戏等。 - **可扩展性**:开发者可以通过ActionScript 3.0在服务器端编写...
Flash Media Server(简称FMS)是Adobe Systems公司推出的一款专为流媒体传输设计的服务器软件。它支持实时数据和流媒体传输,广泛应用于在线视频播放、直播、互动式远程教育等领域。FMS最初被称为Flash ...
Adobe Flash Media Server (FMS) 是一款强大的实时流媒体服务器,用于发布视频、音频和其他交互式富媒体内容。在FMS运行过程中,它会生成Access日志,记录所有与服务器交互的详细信息。这些日志数据对于监控服务器...
其核心功能包括音频和视频流的实时传输、录制和回放、共享对象的支持以及远程调用能力,适用于视频网站、在线教育、视频会议和网络游戏等多个领域。 2. **Red5安装步骤**: - **环境准备**:首先,需访问java.sun....
Flash Media Server(FMS)是Adobe公司推出的一款专业级的流媒体服务器,它为开发者提供了一种高效、稳定的方式来发布和管理实时音频、视频内容,以及交互式的富媒体应用程序。本资料集合了针对Flash Media Server ...
Red5 Server是一款开源的流媒体服务器,主要用于处理实时的音频、视频流,支持RTMP(Real Time Messaging Protocol)、HLS(HTTP Live Streaming)等多种协议。它由Java编写,因此可以在任何支持Java的平台上运行,...
- **Flash Media Server (FMS)**:FMS是Adobe提供的一款流媒体服务器,用于实现视频直播、点播等功能。 通过上述知识点的梳理,《AS3高手之路》不仅涵盖了AS3的基础概念和技术细节,还涉及了大量的实践经验和高级...
网络通讯协议是现代信息技术的基础之一,它们不仅构成了网络通信的技术骨架,还为数据传输和资源共享提供了坚实的保障。通过对这些协议的深入了解和掌握,可以更好地设计和优化网络系统,满足不同应用场景的需求。
开发人员可以利用Adobe Media Server 5 构建自定义的视频播放器,确保跨设备的一致用户体验,同时利用服务器提供的API进行数据共享、服务器插件、日志记录和监控。 6. **术语表和在线资源** 文档中的术语表有助于...
LogObject提供了日志记录功能,对于调试和监控流媒体服务器的运行状态至关重要。通过日志,开发者可以追踪问题来源,优化性能,并确保系统的稳定运行。 #### NetConnectionObject NetConnectionObject负责建立和...