`
fengzgxing
  • 浏览: 242983 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

ActionScript vedioDisplay rmtp

阅读更多
公司要用flash实现实况转播,好不容易把实验品搞定.总结下~~~

在flash页面上放置一个按钮,点击按钮就将本地的摄像头和麦克风捕获的信息发送到服务器.


连接到服务器步骤.


1. 添加监听,连接服务器.


       nc = new NetConnection();
            nc.client = new Client();
            nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            nc.connect(strServer);

2. 发布视频


         ns = new NetStream(nc);
            ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            ns.client = new CustomClient();
            camera = Camera.getCamera();
            micophone = Microphone.getMicrophone();

            if (camera != null && micophone != null) {
                   camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                   micophone.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                   ns.attachCamera( camera );
                   ns.attachAudio( micophone );             
                   ns.publish(strName,"record");
                } else {
                trace("Please check your camera and microphone");
              }


得到本地的摄像头和麦克风之后,就可以通过netstream的publish方法直接发送.




代码:


package{
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.NetStatusEvent;

    import flash.events.MouseEvent;
    import flash.events.ActivityEvent;
    import flash.display.MovieClip;
    import flash.media.Camera;
    import flash.media.Microphone;
    import fl.controls.Button;
    import fl.controls.TextInput;
   
    public class ServerStream extends MovieClip{
       
        var nc:NetConnection;
        var stream:NetStream;       
        var ns:NetStream;
        //var video:Video;


        private var camera:Camera;            //摄像头变量
        private var micophone:Microphone;    //麦克风变量
       
        private var strName:String;
        private var strServer:String;
        private var strStream:String;
       
        //构造函数
        public function ServerStream(){
           
            strName = "livestream";
            strServer = "rtmp://localhost/live";
            strStream = "live";
           
            startBtn.addEventListener(MouseEvent.CLICK,StartBtnHandle);
        }
       
        public function StartBtnHandle(evt:MouseEvent):void{
            startBtn.enabled = false;
            trace("StartBtnHandle");
            ListenAndConnection();
        }
       
        //添加监听,然后连接到服务器.
        public function ListenAndConnection(){
            nc = new NetConnection();
            nc.client = new Client();
            nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            nc.connect(strServer);
        }
       
        //发布视频
        private function publishLiveStream():void {
            ns = new NetStream(nc);
            ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            ns.client = new CustomClient();
            camera = Camera.getCamera();
            micophone = Microphone.getMicrophone();

            if (camera != null && micophone != null) {
                   camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                   micophone.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                ns.attachCamera( camera );
                    ns.attachAudio( micophone );
                // start publishing
              // triggers NetStream.Publish.Start
             trace(strName+strStream);
                   ns.publish(strName,"record");
                } else {
                trace("Please check your camera and microphone");
              }
        }
       
        public function Refreash():void{           
            if (camera != null){               
                //camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);               
                ns.attachCamera(camera);
            }
           
            if (micophone != null) {               
                //micphone.addEventListener(ActivityEvent.ACTIVITY, activityHandler);                               
                ns.attachAudio(micophone);
            }           
        }
       
        //处理ActivityEvent发出的事件
        private function activityHandler(event:ActivityEvent):void {
           trace("activityHandler: " + event);
           trace("activating: " + event.activating);
        }
       
        //处理NetConnection和NetStreme发出的事件
        private function netStatusHandler(event:NetStatusEvent):void{
            trace("connected is: " + nc.connected );
            trace("event.info.level: " + event.info.level);
            trace("event.info.code: " + event.info.code);
           
            switch (event.info.code){
                case "NetConnection.Connect.Success":
                     trace("Congratulations! you're connected");
                     publishLiveStream();
                    // createPlayList(nc);
                     // instead you can also call createPlayList() here
                     break;
               
                case "NetConnection.Connect.Failed":
                case "NetConnection.Connect.Rejected":
                     trace ("Oops! the connection was rejected");
                     break;
                
                case "NetStream.Play.Stop":
                     trace("The stream has finished playing");
                     break;
                
                case "NetStream.Play.StreamNotFound":
                     trace("The server could not find the stream you specified");
                     break;
                
                case "NetStream.Publish.BadName":
                     trace("The stream name is already used");
                     break;
                case "NetStream.Publish.Start":
                     trace("Adding metadata to the stream");
                     // when publishing starts, send the metadata
                     //var metaData:Object = new Object();
                     //metaData.title = "liveDJconcert";
                     //metaData.width = 400;
                     //metaData.height = 200;
                     //stream.send("@setDataFrame", "onMetaData", metaData);
                     break;

            }
        }
    }
}

class Client{       
         public function onBWCheck( rest):Number{
            return 0;
        }
       
        public function onBWDone( rest):void{
               var p_bw:Number;
            if (rest.length > 0)
                p_bw = rest[0];
            trace("bandwidth = " + p_bw);
        }
}
   
class CustomClient{
        public function onMetaData(info:Object):void{
            trace("width: " + info.width);
            trace("height: " + info.height);
            }

}


分享到:
评论

相关推荐

    ActionScript 3.0 API文档(CHM+HTML最新中文完整)

    《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...

    flash actionscript 2.0 语言参考,中文,清晰,pdf

    《Flash ActionScript 2.0 语言参考》是学习和掌握Flash编程不可或缺的资源,尤其对于初学者和希望深入理解ActionScript的开发者来说,它提供了详尽的语法和功能介绍。ActionScript是Adobe Flash平台上用于创建交互...

    ActionScript菜鸟基础终极教程

    ActionScript 基础知识点总结 ActionScript 是 Flash 内置的编程语言,用它为动画编程,可以实现各种动画特效、对影片的良好控制、强大的人机交互以及与网络服务器的交互功能。ActionScript 是一门吸收了 C++、Java...

    Flash ActionScript3.0教程示例(从入门到精通).rar

    《Flash ActionScript3.0教程示例(从入门到精通)》是一本全面解析ActionScript3.0编程语言在Flash平台上的应用的教程。ActionScript3.0是Adobe Flash Professional中的核心编程语言,用于创建交互式动画、游戏、富...

    ActionScript3.0 Game Programing中文版

    《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...

    ActionScript基础教程,是学习actionscript的入门级教程

    ### ActionScript基础教程知识点解析 #### 一、ActionScript概览与基本语法 ActionScript是一种强大的脚本语言,主要用于Adobe Flash平台,使开发者能够创建动态交互式内容、游戏和应用程序。ActionScript的发展...

    ActionScript

    ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的编程语言,主要被应用于Adobe Flash平台,用于创建交互式内容、富互联网应用程序(RIA)以及动画。在“ActionScript开发技术大全”这个主题中,我们...

    Actionscript中文帮助文档

    ActionScript是一种基于ECMAScript规范的编程语言,主要用于开发Adobe Flash平台上的交互式内容,如网页游戏、动画和应用程序。这个“Actionscript中文帮助文档”是开发者在学习和使用ActionScript 3.0时的重要参考...

    Adobe Flash 中的 ActionScript 2

    ActionScript 2.0 是 Adobe Flash 平台中用于创建交互式内容的主要脚本语言。在 Flash 中,ActionScript 允许开发者编写控制动画、处理用户输入、与服务器通信等功能的代码。下面是关于 ActionScript 2.0 中变量、...

    spring actionscript 入门例子

    Spring ActionScript 是一个开源框架,它将 Spring 框架的核心概念和功能带入了 Adobe Flex 和 ActionScript 开发环境中。这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ...

    使用Visual Studio Code调试基于ActionScript的LayaAir HTML5游戏的例子.zip

    "LayaAir IDE"扩展提供代码提示、语法高亮和编译功能,"AS3 & MXML"扩展则用于ActionScript的语法支持,而"Debugger for Chrome"扩展允许我们在Chrome浏览器中直接调试我们的游戏。 在“LayaAir-ActionScript-Debug...

    ActionScript开发技术大全

    《ActionScript开发技术大全》是一本全面覆盖ActionScript编程语言的教程,旨在帮助读者深入理解和掌握这一关键的脚本语言,特别是在Flash和Flex应用开发中的使用。ActionScript是Adobe Flash平台的核心,它使得动态...

    actionscript3

    本书是国内第一本“面向原因式”(Why-Oriented Book)、全面系统介绍Flash ActionScript 3的书籍。全书共分为5个部分。第一部分:ActionScript 3语言基础;第二部分:ActionScript 3 面向对象编程;第三部分:...

    actionscript 3.0动画制作教程

    ActionScript 3.0是Adobe Flash Professional、Flash Player以及Adobe AIR中的主要编程语言,用于创建交互式内容、游戏和富互联网应用程序(RIA)。本教程针对ActionScript 3.0的动画制作进行了深入讲解,旨在帮助...

    flash+actionscript学习的实例和教程

    在IT领域,Flash和ActionScript是 Adobe Animate (曾经名为Flash Professional) 中的关键组成部分,用于创建交互式动画、游戏和富互联网应用程序。本资源包包含了关于"flash+actionscript学习的实例和教程",旨在...

    ActionScript3.0cookbook中文版

    《ActionScript3.0 Cookbook中文版》是一本专注于ActionScript3.0编程技术的实践指南。ActionScript是Adobe Flash平台上广泛使用的脚本语言,尤其在创建互动内容、游戏和富互联网应用程序(RIA)中扮演着核心角色。...

    ActionScript 3.0开发技术大全(第一部分)

    第1篇 ActionScript3.0语言基础  第1章 ActionScript3.0概述  第2章 搭建ActionScript3.0开发环境  第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性  第4章 ActionScript3.0面向对象编程  第...

    ActionScript 2.0 3.0完全手册

    《ActionScript 2.0 3.0完全手册》是一本深入探讨ActionScript编程语言的权威指南,涵盖了从ActionScript 2.0到3.0的全面内容。ActionScript是Adobe Flash平台上用于创建动态交互式内容的核心编程语言,广泛应用于...

    ActionScript权威指南.pdf

    《ActionScript权威指南》是关于ActionScript编程语言的一本详尽深入的参考书籍。ActionScript是一种基于ECMAScript规范的脚本语言,主要用于Adobe Flash平台,包括Flash Player和Adobe AIR,广泛应用于创建交互式...

Global site tag (gtag.js) - Google Analytics