`
hereson
  • 浏览: 1444669 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

阅读更多

安装好fms后,在Flash Media Server 2\applications目录下建立test文件夹,重新启动fms。

编写录制和回放的代码:

录制程序和界面:

xml 代码
  1. <!--sp-->xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  
  3.     <mx:Script>  
  4.         <!--DATA[ </sp-->  
  5.          
  6.              import mx.controls.Spacer;
  7.              import flash.net.*;
  8.              import flash.events.*;
  9.              import flash.utils.*;
  10.              import flash.media.Camera;
  11.              import flash.media.Microphone;
  12.              import mx.controls.*;
  13.              //import mx.core.UIComponent;
  14.              
  15.              //由于fms使用的是amf0而flex2中的as3默认使用的是amf3.所以要让flex使用AFM0
  16.              NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
  17.              //定义一个连接
  18.              public var netConnection:NetConnection;
  19.              //定义一个本地视频
  20.              public var localVideo:Video;
  21.              //定义一个输出流
  22.              public var outStream:NetStream = null;
  23.              //定义一个摄像头
  24.              public var camera:Camera;
  25.              //定义一个麦克风
  26.              public var microphone:Microphone;
  27.              
  28.              //应用程序初始化
  29.              public function initCamera():void
  30.              {
  31.                  //初始化连接
  32.                  netConnection = new NetConnection();
  33.                  //为连接添加状态监听器
  34.                  netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  35.                  //为连接添加安全错误监听器
  36.                  netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
  37.                  //定义一个视频持有人
  38.                  //var videoHolder:UIComponent = new UIComponent();
  39.                  //初始化本地视频
  40.                  localVideo = new Video();
  41.                  //将本地视频添加到持有人
  42.                  //videoHolder.addChild(localVideo);
  43.                  //设置本地视频的位置
  44.                  myVideo.addChild(localVideo);
  45.                  localVideo.x = 0;
  46.                  localVideo.y = 0;
  47.                  localVideo.width = 640;
  48.                  localVideo.height = 480;
  49.                  
  50.                  //连接到服务器
  51.                  netConnection.connect("rtmp://localhost/test");
  52.              }
  53.              
  54.              
  55.              private function netStatusHandler(event:NetStatusEvent):void  
  56.              {
  57.                  outStream = new NetStream(netConnection);
  58.                  camera = Camera.getCamera();
  59.                  camera.setMode(640,480,30);
  60.                  microphone = Microphone.getMicrophone();
  61.                  localVideo.attachCamera(camera);
  62.                  outStream.attachCamera(camera);
  63.                  outStream.attachAudio(microphone);
  64.                  outStream.publish("testVideo","record");
  65.                  
  66.                  Alert.show(event.info.code);
  67.              }
  68.              private function securityErrorHandler(event:SecurityErrorEvent):void  
  69.              {  
  70.                  Alert.show("securityErrorHandler: " + event);
  71.              }
  72.          ]]>  
  73.     mx:Script>  
  74.     <mx:VideoDisplay id="myVideo" x="0" y="0" height="240" width="320" creationComplete="initCamera();"/>  
  75. mx:Application>  

回放程序和界面:

xml 代码

 

  1. <!--sp-->xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  
  3.     <mx:Script>  
  4.         <!--DATA[ </sp-->  
  5.              
  6.              import mx.controls.Spacer;
  7.              import flash.net.*;
  8.              import flash.events.*;
  9.              import flash.utils.*;
  10.              import flash.media.Camera;
  11.              import mx.controls.*;
  12.              
  13.              //由于fms使用的是amf0而flex2中的as3默认使用的是amf3.所以要让flex使用AFM0
  14.              NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
  15.              //定义一个连接
  16.              public var netConnection:NetConnection;
  17.              //定义一个本地视频
  18.              public var localVideo:Video;
  19.              //定义一个输入流
  20.              public var inStream:NetStream = null;
  21.              
  22.              //应用程序初始化
  23.              public function initCamera():void
  24.              {
  25.                  //初始化连接
  26.                  netConnection = new NetConnection();
  27.                  //为连接添加状态监听器
  28.                  netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  29.                  //为连接添加安全错误监听器
  30.                  netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
  31.                  //连接到服务器
  32.                  netConnection.connect("rtmp://localhost/test");
  33.              }
  34.              
  35.              private function netStatusHandler(event:NetStatusEvent):void  
  36.              {
  37.                  //Alert.show(event.info.code);
  38.                  switch (event.info.code)  
  39.                  {
  40.                      case "NetConnection.Connect.Failed":
  41.                          //Alert.show("连接失败!!");
  42.                      case "NetConnection.Connect.Success":
  43.                          connectStream();
  44.                          break;
  45.                      case "NetStream.Play.StreamNotFound":
  46.                          //Alert.show("Stream not found: " + "rtmp://localhost/myapp");
  47.                          break;
  48.                  }
  49.              }
  50.              private function securityErrorHandler(event:SecurityErrorEvent):void  
  51.              {  
  52.                  //Alert.show("securityErrorHandler: " + event);
  53.              }
  54.              
  55.              private function connectStream():void  
  56.              {
  57.                  inStream = new NetStream(netConnection);
  58.                  inStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
  59.                  inStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,streamErrorHandler);
  60.                  //初始化本地视频
  61.                  localVideo = new Video();
  62.                  //设置本地视频的位置
  63.                  localVideo.x = 0;
  64.                  localVideo.y = 0;
  65.                  localVideo.width = 640;
  66.                  localVideo.height = 480;
  67.                  localVideo.attachNetStream(inStream);
  68.                  inStream.play("testVideo");
  69.                  myVideo.addChild(localVideo);
  70.              }
  71.              private function streamErrorHandler(event:AsyncErrorEvent):void
  72.              {
  73.                  //Alert.show(event.error.message);
  74.              }
  75.          ]]>  
  76.     mx:Script>  
  77.     <mx:VideoDisplay id="myVideo" x="0" y="0" height="640" width="480" creationComplete="initCamera();"/>  
  78. mx:Application>  
分享到:
评论

相关推荐

    视频音频在线录制

    Flash Player内置了H.264视频编码和AAC音频编码,Flex可以利用这些技术将原始数据转换为可传输的格式。 2. **服务器端**:服务器端使用了mfs,这可能指的是Adobe Media Server,一个专为流媒体内容设计的服务器平台...

    FLEX资源------Flash Media Managment Server中文版下载

    在IT领域,Flash Media Management Server(FMS)是Adobe公司推出的一款强大的流媒体服务器,专为在线视频、音频直播和点播服务提供支持。本文将深入探讨FMS的功能、应用以及中文版的特点。 FMS的核心功能在于其...

    Flex视频会议系统

    Flex视频会议系统是一种基于Adobe Flex技术构建的在线交互式沟通平台,主要利用FMS(Flash Media Server)服务器作为后台支持,提供高效、稳定的音视频通信服务。Flex是ActionScript 3.0的一个开发框架,它使得...

    采用FLAH MEDIA SERVER技术,录象加播放系统,供初学测试.zip

    在“采用FLASH MEDIA SERVER技术,录象加播放系统,供初学测试”的项目中,我们可以推测这是一个专为初学者设计的教育工具,旨在帮助他们理解和掌握如何利用FMS进行录像和播放功能的实现。下面我们将深入探讨FMS的...

    flex做的在线录音

    Flex可以通过集成第三方库如Flash Media Server (FMS) 或 Red5等实时流媒体服务器来实现在线录音。首先,你需要在客户端(浏览器中的Flex应用)获取用户麦克风的访问权限。然后,通过ActionScript与服务器建立RTMP...

    FluorineFxVideo

    在Flex客户端,你可以使用Flash Media Server APIs或Adobe AIR的Media Capture API来捕获用户的摄像头输入。然后,通过FluorineFx的AMF通道,将这些原始的视频数据发送到.NET服务器端。在服务器端,你可以使用各种...

    fms + flex 开发

    - 若要设置服务器在系统启动时自动开启或手动启动,可以通过“开始”-&gt;“运行”-&gt;输入`services.msc`,然后在服务列表中找到“Flash Media Server”,进行相应设置。 3. **管理服务器** - 通过运行`fms2_console....

    FMS案例开发[整理].pdf

    此外,案例开发还包括了如何创建可交互的FMS连接、基于FMS的流媒体播放程序、在线视频录制与回放以及如何利用远程共享对象实现多人实时在线聊天的详细步骤。这些系列文章深入浅出地讲解了从零开始构建这样一个系统的...

    fms 中文 教程

    本教程将深入探讨如何管理和利用FMS进行高效的内容发布,以及如何开发基于Flash的媒体应用程序。 一、FMS基础概念 1.1 FMS架构:FMS采用分布式架构,由核心服务器、边缘服务器等组成,能处理大规模的并发流媒体...

    red5入门教程.....

    其核心功能包括音频和视频流的实时传输、录制和回放、共享对象的支持以及远程调用能力,适用于视频网站、在线教育、视频会议和网络游戏等多个领域。 2. **Red5安装步骤**: - **环境准备**:首先,需访问java.sun....

    FMS2.0官方教程-中文版(PDF)

    FMS2.0,全称Flex Media Server 2.0,是一款强大的流媒体服务器软件,能够处理、分发和优化实时音频、视频流,广泛应用于在线教育、直播服务、企业内部通讯等多个领域。 教程首先会引导读者了解FMS2.0的基础概念,...

    setup-Red5-0.9.1.rar

    Red5的出现主要是为了提供与Adobe Flash Media Server(FMS)类似的功能,但作为一个开源解决方案,它为开发者提供了更多的自由度和成本优势。FMS是商业软件,而Red5则是一个由Java编写,基于GPL许可证的开放源码...

Global site tag (gtag.js) - Google Analytics