安装好fms后,在Flash Media Server 2\applications目录下建立test文件夹,重新启动fms。
编写录制和回放的代码:
录制程序和界面:
xml 代码
- <!--sp-->xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
- <mx:Script>
- <!--DATA[ </sp-->
- 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 代码
- <!--sp-->xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
- <mx:Script>
- <!--DATA[ </sp-->
- 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>