import flash.net.*; import flash.events.*; import flash.media.*; private var nc:NetConnection; private var ns:NetStream; private function status_handler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": setStatus("Connected."); break; default: setStatus(event.info.code); } } private function setStatus(text:String):void { status.text = text; } private function connectConn():void { var host_name:String = host.text; if (!host_name) return; nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, status_handler); nc.objectEncoding = ObjectEncoding.AMF0; nc.client = this; nc.connect(host_name); } private function closeConn():void { nc.close(); } private function publishNs():void { var channel_name:String = input.text; if (!channel_name) return; ns = new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS, status_handler); var camera:Camera = Camera.getCamera(); if (!camera) { setStatus("No camera found"); return; } var mic:Microphone = Microphone.getMicrophone(); if (!mic) { setStatus("No mic found"); return; } // set quality camera.setMode(320, 240, 30); camera.setQuality(0, 80); mic.setSilenceLevel(0); mic.rate = 44; video.attachCamera(camera); ns.attachCamera(camera); ns.attachAudio(mic); ns.publish(channel_name, "live"); } private function unpublishNs():void { ns.close(); } public function onMessage(message:String):void { message_label.text = message; }