您的位置:首页 > 其它

FLEX利用FLASH MEDIA SERVER进行视频的在线录制和回放

2009-03-21 14:03 671 查看
安装好fms后,在Flash Media Server 2\applications目录下建立test文件夹,重新启动fms。

编写录制和回放的代码:

录制程序和界面:

xml 代码

xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>

import mx.controls.Spacer;

import flash.net.*;

import flash.events.*;

import flash.utils.*;

import flash.media.Camera;

import flash.media.Microphone;

import mx.controls.*;

//import mx.core.UIComponent;

//由于fms使用的是amf0而flex2中的as3默认使用的是amf3.所以要让flex使用AFM0

NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;

//定义一个连接

public var netConnection:NetConnection;

//定义一个本地视频

public var localVideo:Video;

//定义一个输出流

public var outStream:NetStream = null;

//定义一个摄像头

public var camera:Camera;

//定义一个麦克风

public var microphone:Microphone;

//应用程序初始化

public function initCamera():void

{

//初始化连接

netConnection = new NetConnection();

//为连接添加状态监听器

netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

//为连接添加安全错误监听器

netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

//定义一个视频持有人

//var videoHolder:UIComponent = new UIComponent();

//初始化本地视频

localVideo = new Video();

//将本地视频添加到持有人

//videoHolder.addChild(localVideo);

//设置本地视频的位置

myVideo.addChild(localVideo);

localVideo.x = 0;

localVideo.y = 0;

localVideo.width = 640;

localVideo.height = 480;

//连接到服务器

netConnection.connect("rtmp://localhost/test");

}

private function netStatusHandler(event:NetStatusEvent):void

{

outStream = new NetStream(netConnection);

camera = Camera.getCamera();

camera.setMode(640,480,30);

microphone = Microphone.getMicrophone();

localVideo.attachCamera(camera);

outStream.attachCamera(camera);

outStream.attachAudio(microphone);

outStream.publish("testVideo","record");

Alert.show(event.info.code);

}

private function securityErrorHandler(event:SecurityErrorEvent):void

{

Alert.show("securityErrorHandler: " + event);

}

]]>

mx:Script>

<mx:VideoDisplay id="myVideo" x="0" y="0" height="240" width="320" creationComplete="initCamera();"/>

mx:Application>

回放程序和界面:

xml 代码

xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>

import mx.controls.Spacer;

import flash.net.*;

import flash.events.*;

import flash.utils.*;

import flash.media.Camera;

import mx.controls.*;

//由于fms使用的是amf0而flex2中的as3默认使用的是amf3.所以要让flex使用AFM0

NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;

//定义一个连接

public var netConnection:NetConnection;

//定义一个本地视频

public var localVideo:Video;

//定义一个输入流

public var inStream:NetStream = null;

//应用程序初始化

public function initCamera():void

{

//初始化连接

netConnection = new NetConnection();

//为连接添加状态监听器

netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

//为连接添加安全错误监听器

netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

//连接到服务器

netConnection.connect("rtmp://localhost/test");

}

private function netStatusHandler(event:NetStatusEvent):void

{

//Alert.show(event.info.code);

switch (event.info.code)

{

case "NetConnection.Connect.Failed":

//Alert.show("连接失败!!");

case "NetConnection.Connect.Success":

connectStream();

break;

case "NetStream.Play.StreamNotFound":

//Alert.show("Stream not found: " + "rtmp://localhost/myapp");

break;

}

}

private function securityErrorHandler(event:SecurityErrorEvent):void

{

//Alert.show("securityErrorHandler: " + event);

}

private function connectStream():void

{

inStream = new NetStream(netConnection);

inStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

inStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,streamErrorHandler);

//初始化本地视频

localVideo = new Video();

//设置本地视频的位置

localVideo.x = 0;

localVideo.y = 0;

localVideo.width = 640;

localVideo.height = 480;

localVideo.attachNetStream(inStream);

inStream.play("testVideo");

myVideo.addChild(localVideo);

}

private function streamErrorHandler(event:AsyncErrorEvent):void

{

//Alert.show(event.error.message);

}

]]>

mx:Script>

<mx:VideoDisplay id="myVideo" x="0" y="0" height="640" width="480" creationComplete="initCamera();"/>

mx:Application>



--------------------------

新闻:
微软网页开发调试利器SuperPreview(附下载)

导航:
博客园首页
知识库
新闻
招聘
社区
小组
博问
网摘
找找看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: