读书人

AS3跟FMS的视频录制小例子

发布时间: 2012-12-26 14:39:29 作者: rapoo

AS3和FMS的视频录制小例子

<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="connectFMS()"><mx:Script><![CDATA[import mx.controls.Alert;private var vi:Video;private var cam:Camera;private var outStream:NetStream;private var nc:NetConnection;private var connectionURL:String="rtmp://192.168.1.101:1935/test";private function connectFMS():void{//创建连接nc = new NetConnection();//回调为本机客户端nc.client = this;//根据url连接nc.connect(connectionURL);//添加 状态变化处理函数nc.addEventListener(NetStatusEvent.NET_STATUS,ncHandler);}             private function ncHandler(evt:NetStatusEvent):void              {   //如果连接成功                  if (evt.info.code == "NetConnection.Connect.Success")                   {                   Alert.show("连接成功", "提示");         //录制视频                beginRec();                           }                   else                  {                       Alert.show("连接失败", "提示");                   }               }                           private function beginRec():void{            //得到当前本机视频设备的流对象            cam = Camera.getCamera();            if(cam == null){            Alert.show("无摄像头","提示");            }else{            //大小与帧率              cam.setMode(320,240,30);            //设置清晰度            cam.setQuality(0,100);            //输出流对象  封装fms服务器连接             outStream = new NetStream(nc);            //服务器回调客户端为本机            outStream.client = this;            //激活视频            outStream.attachCamera(cam);             //发布       参数一为视频name   参数二为视频传送策略                outStream.publish("1111","live");            //监听流的状态            outStream.addEventListener(NetStatusEvent.NET_STATUS,netHandler);            }            }            private function netHandler(evt:NetStatusEvent):void{//如果已经开始              if(evt.info.code == "NetStream.Publish.Start"){//从FMS服务器得到视频流            getVideo();            }            }                                       private function getVideo():void              {               //创建输入流  封装fms连接                var inStream:NetStream=new NetStream(nc);                //服务器回调为本机                   inStream.client=this;                //订阅名字为connectName的流对象                   inStream.play("1111"); //1111为流的名字,对应于视频流发布端的publish("1111","live").                //创建视频播放对象                   vi=new Video();                   vi.width=viewDisplay.width;                   vi.height=viewDisplay.height;                vi.smoothing=true;                //封装输入流                   vi.attachNetStream(inStream);                //加入到界面上的播放器                   viewDisplay.addChild(vi);               }   ]]></mx:Script><mx:Button label="发送视频" click=" beginRec()"/> <mx:VideoDisplay id="viewDisplay" x="141" y="125" width="150" height="150"/>       <mx:Button x="141" y="95" label="开始接受视频流" click="getVideo()"/>     </mx:Application>

读书人网 >编程

热点推荐