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

FMS3系列(五):通过FMS实现时时视频聊天(Flash|Flex)【转】

阅读更多

本系列的前几篇文章中分别介绍了,连接FMS服务器、建立播放程序以及在线视频录制以及回放等功能的实现。相信看过前面几篇文章的朋友已经对FMS有了一定的认识,并熟悉了常用的编程模式。本文将结合前面几篇文章所出现的技术点,来实现一个时时视频聊天程序。

      通过FMS实现视频时时聊天其实很简单,也就是操作时时流。如果是单向视频聊天,则两端一边一边为发布端一边为订阅端,如果是双向视频聊天,则两边都分别是发布端和订阅端。

      如果从技术实现上来分析,单向视频聊天就是一边发布流另一边播放流,双向视频聊天则是两边都需要提供两个流,一个负责发布流,一个负责播放流。在说专业点就是一个创建流并且发送到服务器的客户端叫发布,一个创建流来接受内容的客户端叫订阅,当同一个客户端同是发布和订阅时,它必须创建两个流,一个是输出流,一个是接受流。

       说了这么多下面看看具体是怎么实现的,要实现视频聊天上面分析过,就是一边发布时时视频流一边播放,这同样离不开连接FMS,代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->private function onPublishClick(evt:MouseEvent):void
{
      nc 
= new NetConnection();
      nc.connect(
"rtmp://localhost/LiveStreams");
      nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
}

 

       通过点击按扭连接(NetConnection)FMS服务器,然后向FMS发布(publish)视频流,达到视频发布的目的。这里需要注意一点,在发布方法publish()中后一参数为“live”,表示时时视频流。以live的形式发布的流不会在FMS里生成.fla文件,不同于“record”录制视频流生成.flv的视频文件。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->private function onNetStatusHandler(evt:NetStatusEvent):void
 {
       trace(evt.info.code);
       
if(evt.info.code=="NetConnection.Connect.Success")
       {
           ns
=new NetStream(nc);
           ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
           ns.client
=new CustomClient();
           ns.attachCamera(cam);
           ns.attachAudio(mic);
           ns.publish(txtInput.text,
"live");
       }
}

 

      实现视频发布的核心技术点就是获取视频、音频数据,分别通过Camera和Microphone的静态方法实现。参考代码:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->public function PublishStream():void
{
    btnPublish.label
="发布视频";
    btnPublish.addEventListener(MouseEvent.CLICK,onPublishClick);
            
    
//获取视频和声音,并将视频显示到Flash界面
    cam = Camera.getCamera();
    mic 
= Microphone.getMicrophone();
    video 
= new Video(320,240);
    video.attachCamera(cam);
    video.x
=20;
    video.y
=20;
    addChild(video);
}

 

      通过以上步骤就完成了视频聊天的视频流发布端的开发,完整的示例代码如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->package
{
    import flash.net.
*;
    import flash.events.
*;
    import flash.display.
*;
    import flash.media.
*;
    import fl.controls.
*;
    
    
public class PublishStream extends Sprite
    {
        
private var video:Video;
        
private var nc:NetConnection;
        
private var ns:NetStream;
        
private var cam:Camera;
        
private var mic:Microphone;
        
        
public function PublishStream():void
        {
            btnPublish.label
="发布视频";
            btnPublish.addEventListener(MouseEvent.CLICK,onPublishClick);
            
            
//获取视频和声音,并将视频显示到Flash界面
            cam = Camera.getCamera();
            mic 
= Microphone.getMicrophone();
            video 
= new Video(320,240);
            video.attachCamera(cam);
            video.x
=20;
            video.y
=20;
            addChild(video);
        }
        
        
private function onPublishClick(evt:MouseEvent):void
        {
            nc 
= new NetConnection();
            nc.connect(
"rtmp://localhost/LiveStreams");
            nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
        }
        
        
private function onNetStatusHandler(evt:NetStatusEvent):void
        {
            trace(evt.info.code);
            
if(evt.info.code=="NetConnection.Connect.Success")
            {
                ns
=new NetStream(nc);
                ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
                ns.client
=new CustomClient();
                ns.attachCamera(cam);
                ns.attachAudio(mic);
                ns.publish(txtInput.text,
"live");
            }
        }
    }
}

 

      视频接收端相对发布端更简单,提供一个NetConnetion连接到发布端的FMS,通过NetStream播放时时视频流就完成。代码很简单,基本上都是在本系列前几篇文章中出现过的代码片段整合而成,详细见下代码块:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->package
{
    import flash.net.
*;
    import flash.events.
*;
    import flash.display.
*;
    import flash.media.
*;
    
    
public class LiveStream extends Sprite
    {
        
private var video:Video;
        
private var nc:NetConnection;
        
private var ns:NetStream;
        
        
public function LiveStream():void
        {
            nc 
= new NetConnection();
            nc.connect(
"rtmp://localhost/LiveStreams");
            nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
        }
        
        
private function onNetStatusHandler(evt:NetStatusEvent):void
        {
            
if(evt.info.code=="NetConnection.Connect.Success")
            {
                ns
=new NetStream(nc);
                ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
                ns.client
=new CustomClient();
                video
=new Video();
                video.attachNetStream(ns);
                ns.play(
"1111");//1111为流的名字,对应于视频流发布端的publish("1111","live").
                addChild(video);
            }
        }
    }
}

 

      OK,到这里视频聊天的两端都完成了,如果需要做双向视频聊天,只需要在每一边多提供一个流就可以了,两端都实现发布视频流和接收视频流数据。

      或许看完文章的朋友回问到CustomClient是那里来的,CustomClient是为了处理元数据的,可以通过元数据向实况视频添加一些格外的属性,本文暂时不讨论,有兴趣的朋友可以查看官方文档了解。

本文示例程序下载:点击下载Flash版示例源代码    点击下载Flex版示例源代码 

分享到:
评论

相关推荐

    FMS3系列(五):通过FMS实现时时视频聊天(Flash|Flex)

    在本篇博文中,我们将深入探讨“FMS3系列”的第五部分,主要关注如何通过Adobe Flash Media Server (FMS) 3实现实时视频聊天功能。这个话题对于开发交互性强、实时性高的网络应用来说至关重要,特别是对于那些需要...

    通过FMS实现时时视频聊天(Flash|Flex)源码

    【标题】中的“通过FMS实现时时视频聊天(Flash|Flex)源码”是指使用Adobe的Flash Media Server (FMS)技术,结合Flash和Flex这两种编程语言,开发出一款能够实现实时视频通信的应用程序。这个标题暗示了我们将在...

    FMS.rar_flex_flex FMS_fms_site:www.pudn.com

    【描述】中的“fms实现的视频播放系统”指的是使用FMS作为后台服务器,配合Flex前端展示,构建的视频播放解决方案。该系统包括“带说明,带安装说明带文档”,意味着用户可以详细了解到如何配置、安装和使用这套系统...

    Fms3和Flex打造在线多人视频会议和视频聊天附原代码

    总的来说,通过Flex和FMS3的结合,我们可以构建出功能完善的在线多人视频会议和视频聊天系统。这个过程中,不仅需要扎实的编程基础,还需要对音视频处理、网络通信和服务器管理有深入的理解。提供的"Video2"文件可能...

    flex+fms实现视频直播源码

    Flex+FMS实现视频直播源码是一种基于Adobe Flex和Flash Media Server (FMS)技术的视频直播解决方案。这个项目提供了一个简单示例,演示了如何利用Flex进行摄像头和音频的捕获与录制,以及如何将这些内容实时推送到...

    fms.rar_flex_flex and fms_fms_fms rtmp_fms flex

    标题"Fms.rar_flex_flex and fms_fms_fms rtmp_fms flex"和描述中的关键词揭示了这个压缩包包含的是与Adobe Flex和Flash Media Server(FMS)相关的项目资源,主要用于创建一个实时通信应用,例如聊天室。Flex是一种...

    Fms3和Flex打造在线多人视频会议和视频聊天(附原代码)

    本教程将聚焦于使用Adobe Flash Media Server 3 (FMS3) 和 Adobe Flex 来实现这样的系统。下面我们将深入探讨这两个工具以及构建此类应用的关键知识点。 **Adobe Flash Media Server 3 (FMS3)** FMS3是Adobe公司...

    基于FMS的视频聊天源码

    【基于FMS的视频聊天源码】是一种使用Adobe Flash Media Server (FMS)技术实现的实时视频聊天应用程序的源代码。这个项目展示了如何利用Flex框架进行客户端开发,并与服务器端的FMS进行交互,实现视频流的传输和聊天...

    fms3视频教程.PDF

    - **FMS**(Flash Media Server)是Adobe公司推出的一款强大的媒体服务器软件,主要用于处理实时音视频流,支持多种协议如RTMP等,适用于视频聊天、视频会议、视频直播以及视频监控等多种场景。 - **应用场景**: ...

    Flex和Fms3打造在线聊天室 源码和文档

    Flex和FMS3是构建实时互动应用程序的强大工具,尤其适合创建在线聊天室这样的实时通信平台。这个源码和文档集合提供了详细的步骤和技术说明,帮助开发者理解如何利用这些技术实现一个功能完备的聊天室。 Flex是一种...

    流媒体服务器---fms3教程

    2. ActionScript 3:FMS3与ActionScript 3紧密集成,开发者可以通过AS3代码控制服务器行为。 3. API接口:FMS3提供了丰富的API接口,允许开发者进行高级定制和扩展。 五、FMS3优化与维护 1. 性能监控:监控服务器...

    FMS3.0实现视频会议代码

    在本文中,我们将深入探讨如何使用Flex 3.0和FMS3.0(Flash Media Server 3.0)来实现视频会议系统。对于初学者来说,这是一个极具价值的实践项目,可以让你对实时多媒体通信有更深入的理解。 首先,让我们了解一下...

    Flex FMS 发送和接收视频

    Flex FMS(Flash Media Server)是Adobe公司推出的一款强大的流媒体服务器软件,它允许开发者创建交互式的、实时的视频和音频应用。在这个“Flex FMS 发送和接收视频”的实例中,我们将深入探讨如何利用Flex技术和...

    fms.rar_flex_fms_流媒体

    在IT行业中,流媒体技术是实现在线视频和音频传输的关键技术之一,而Adobe的Flash Media Server(FMS)就是一种广泛使用的流媒体服务器解决方案。本文将深入探讨如何利用FMS作为流媒体服务器,进行实时通信视频聊天...

    利用fms服务器和flex来做在线视频聊天.docx

    本文将详细介绍如何利用FMS服务器(Flash Media Server)和Flex技术实现在线视频聊天功能。FMS服务器是一种强大的实时流媒体服务器,它支持多种实时通信协议,包括RTMP(Real-Time Messaging Protocol),使得视频和...

    免费多人视频会议功能加强版本(Fms3和Flex开发(附源码))

    标题中的“免费多人视频会议功能加强版本(Fms3和Flex开发(附源码))”指的是一个基于Fms3(Flash Media Server 3)和Flex技术开发的多人视频会议系统,该系统不仅提供基本的视频交流功能,还进行了性能优化和功能增强...

    flex 视频聊天程序

    在Flex中,这一部分通常通过Adobe的Flash Media Server(FMS)或Adobe AIR实现。FMS作为一个服务器端平台,支持RTMP(Real-Time Messaging Protocol)协议,用于在客户端和服务器之间传输音视频数据。Flex应用可以...

    fms3中文文档

    ### FMS3中文文档知识点详解 #### 一、FMS3概述 - **产品定位**:Adobe ...综上所述,FMS3 是一款强大的实时音视频流传输解决方案,通过合理的架构设计和技术选型,可以有效地支持大规模实时互动应用的开发与部署。

Global site tag (gtag.js) - Google Analytics