我这里是做了两个程序,其实一个程序也能达到目的,只不过这样看起来更清晰易懂一些.
分别建立两个项目,一个为发送视频,一个为接受视频(这样做仅仅是为了更好的看清楚而已)
发送端代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="1024" minHeight="768">
<mx:Script>
<![CDATA[
import flash.media.Camera;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import mx.controls.Alert;
private var vi:Video;//播放器
private var cam:Camera;//摄像头
private var inStream:NetStream; //网络流
private var outStream:NetStream; //网络输出流
private var nc:NetConnection; //网络连接
private var connectionURL:String="rtmp://localhost/test"; //FMS媒体服务器地址
/*连接媒体服务器*/
protected function connectFMS():void
{
nc=new NetConnection(); //创建连接对象
nc.client=this; //将客户端设置为本地
nc.connect(connectionURL, "admin", "admin"); //第一个参数是连接地址,后面是账号密码(可省略)
nc.addEventListener(NetStatusEvent.NET_STATUS, ncHandler);//流状态侦听器
}
//判断FMS服务器连接
protected function ncHandler(evt:NetStatusEvent):void
{
if (evt.info.code == "NetConnection.Connect.Success")
{
//开始录制
beginRec();
}
else
{
Alert.show("连接失败", "提示");
}
}
//开始录制
protected function beginRec():void
{
cam=Camera.getCamera();
cam.setMode(320, 240, 30);//大小与帧率
cam.setQuality(0, 100); //设置清晰度
outStream=new NetStream(nc);
outStream.client=this;//将客户端设置为this,如有特殊需求可以写一个自定义的client,比如传播文本信息
outStream.attachCamera(cam);//激活视频
outStream.publish("1111", "live");//第二个参数live代表实况流,当连接中断后,在FMS流媒体服务器中不会残留视频文件
}
private function sendMsg():void{
// outStream.send("myFunction",cam.name,msgTxt.text);
// trace("发送结束");
}
//停止录制
protected function endRec():void
{
//outStream.close();
//Alert.show("成功关闭摄像头!", "提示")
}
]]>
</mx:Script>
<mx:Button label="发送视频" click="connectFMS()"/>
</mx:Application>
接收端代码如下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="1024" minHeight="768">
<mx:Script>
<![CDATA[
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import mx.controls.Alert;
private var conn:NetConnection; //网络连接
private var inStream:NetStream; //网路接受流
private var outStream:NetStream; //网路输出流
private var connectName:String="1111"; //网络连接名称只有相同的链接名称才能对应相同的发布方视频流
private var serverURL:String="rtmp://localhost/test"; //FMS服务器地址
private var vi:Video;
//链接FMS服务器
private function connectServer():void
{
conn=new NetConnection();
conn.client=this;
conn.connect(serverURL, "admin", "admin");
conn.addEventListener(NetStatusEvent.NET_STATUS, connHandler); //添加网络监听事件
}
private function connHandler(evt:NetStatusEvent):void
{
if (evt.info.code == "NetConnection.Connect.Success")
{
getVideo();
}
else
{
Alert.show("网络连接失败!", "提示");
}
}
//开始接受视频
private function getVideo():void
{
inStream=new NetStream(conn);
inStream.addEventListener(NetStatusEvent.NET_STATUS, inStreamHandler);
inStream.client=this;
inStream.play(connectName); //1111为流的名字,对应于视频流发布端的publish("1111","live").
vi=new Video();
vi.width=viewDisplay.width;
vi.height=viewDisplay.height;
vi.smoothing=true;
vi.attachNetStream(inStream);
viewDisplay.addChild(vi);
}
private function stopVideo():void{
inStream.close();
conn.close();
viewDisplay.removeChild(vi);
}
private function inStreamHandler(evt:NetStatusEvent):void
{
}
]]>
</mx:Script>
<mx:VideoDisplay id="viewDisplay" x="141" y="125" width="332" height="232"/>
<mx:Button x="141" y="95" label="开始接受视频流" click="connectServer()"/>
</mx:Application>
写好这两个工程以后咱们来配置FMS(如果仅仅是简单实现的话,其实配置起来真的不是很难的)
1.先在X:\Adobe\Flash Media Server 3.5\applications建立一个目录,名称为test里面可以没有任何东西(如果需要特殊配置,在此目录下有live和vod两个目录下有参考).
2.如果已经启动了FMS服务器,则重启FMS服务器
3.打开X:\Adobe\Flash Media Server 3.5\tools目录下的StartServerService.bat批处理文件,启动服务器
4.服务器启动成功后,打开同目录下的fms_adminConsole.swf文件(或fms_adminConsole.html)
5.在登录之后选择左下角的NewInstance,选择test如图:
6.默认名称为_default_,在这里敲回车键默认如图:
7.发送方与接收方运行的先后顺序没有强制规定,先打开哪个都能在接收方接受到视频流
附录:
如有必要可以写一个自定义的client(其实就是一个VO)用于处理一些特殊需求
package cn.com.util
{
import mx.controls.Label;
import mx.controls.TextArea;
public class CustomClient
{
private var text:Label;
private var msgArea:TextArea;
public function CustomClient(text:Label,msgArea:TextArea)
{
this.text=text;
this.msgArea=msgArea;
}
public function myFunction(event:String,msg:String):void {
text.text=event;
msgArea.text+=msg+"\n\n";
}
}
}
以上为我配置的过程.如有失误还请指出,我真心的..嘿嘿,真的希望有高手能带带我
分享到:
相关推荐
4. **接收与播放**:服务器接收到数据后,转发给其他客户端,每个客户端解码并播放收到的音视频流。 5. **交互数据**:利用FMS3的数据通道功能,实现文本聊天和附加信息的交换。 **Flex与Flash的集成** Flex是基于...
本文将详细阐述如何使用Flex连接到FMS,并实现视频发送功能。 **一、准备工作** 1. **开发工具**: 首先,你需要安装Flash MX Authoring工具,这是Flex的基础。同时,你也需要Flash MX Communication Server,它是...
【fms 视频会议】是一种基于Adobe Flash Media Server (FMS) 技术实现的在线视频交流系统。FMS是Adobe公司推出的一款强大的流媒体服务器软件,它能够支持实时的音频、视频通信以及数据共享功能,广泛应用于在线直播...
Adobe Flash Media Server(FMS)是Adobe公司推出的一款专业流媒体服务器软件,其中FMS3是其第三个主要版本。本教程将详细介绍FMS3的相关知识,帮助你掌握流媒体服务的核心技术。 一、FMS3基础概念 1. 流媒体:流...
这个项目展示了如何利用Flex框架进行客户端开发,并与服务器端的FMS进行交互,实现视频流的传输和聊天功能。 在源码中,开发者能够学习到以下几个关键知识点: 1. **Flash Media Server (FMS)**:FMS是Adobe公司...
1. **FMS服务器配置与管理**:FMS提供RTMP(Real-Time Messaging Protocol)协议来传输视频流,开发者需要了解如何配置和管理FMS服务器,设置合适的直播和点播通道,以及调整服务器性能参数以适应不同规模的观众。...
在这个视频聊天室中,FMS负责处理视频流的传输和互动,确保低延迟和高质量的视频体验。 4. **.flexProperties** 文件: 这个文件包含了项目的特定配置,如Flex SDK版本、编译选项等,用于控制Flex编译器的行为。 5....
你可以在这个目录下创建新的文件夹来定义你的FMS应用,例如创建一个名为"firstFMS"的文件夹,以此作为你的第一个FMS应用。 接下来,我们将使用Flash CS 4和ActionScript 3.0来实现连接到FMS服务器的功能。首先在...
### 安装与使用Flash Media Server 2及与FLEX...对于初学者而言,了解FMS 2的基本原理及其与Flex的结合使用方法是非常重要的第一步。随着实践经验的积累,开发者将能够更好地利用这些工具和技术来实现自己的创意想法。
FMS是Adobe公司提供的一款用于实时流媒体和交互性应用程序的服务,它支持视频、音频的直播和点播,以及数据共享和实时通信功能。在这个场景中,我们关注的是如何在本地计算机上设置并运行FMS服务,以便进行测试和...
标题中的“抛弃LCDS和FMS,在tomcat下开发Red5应用(第十一篇)-电子白板协同浏览”表明本文将介绍如何在不使用LCDS(LiveCycle Data Services)和FMS(Flash Media Server)的情况下,利用Tomcat服务器来开发一个基于...
Flash Media Server是Adobe提供的一款服务器软件,用于实时流媒体和交互式应用,它与Flex紧密配合,支持视频和音频的直播、点播,以及数据共享和实时通信。FMS3是该产品的第三个主要版本,发布于2007年。这个中文...
#### 二、编写运行第一个程序 1. **编写服务器端代码**:使用Java编写简单的Red5服务器端逻辑,例如实现一个简单的聊天室功能。 2. **编写客户端代码**:使用Flex开发客户端界面,实现与服务器端的数据交互。 3. ...
Flash Media Server 3是FMS系列的第三个主要版本,它提升了性能,增强了稳定性和可扩展性,尤其对于实时流媒体服务有着显著提升。FMS3支持Flash Player 9及以上版本,能够处理FLV、F4V等视频格式,以及MP3、AAC等...
1. **编写第一个程序**: 开始 Red5 开发,首先要学习如何编写服务器端和客户端代码。服务器端通常使用 ActionScript 3.0 或 Java,客户端则主要使用 Flex 或 Flash Player。书中会提供详细的代码示例,帮助开发者...
OpenMeetings是一款基于Flex技术的开源视频会议软件,它提供了丰富的功能,如在线聊天、视频会议、文件共享以及桌面共享等,能够满足大多数用户的远程协作需求。为了更好地理解和安装OpenMeetings,我们首先需要了解...