// forked from clouder's Microphone Test package { import fl.controls.*; import flash.display.*; import flash.media.*; import flash.events.*; import flash.utils.*; import flash.text.* import flash.net.*; import flash.accessibility.Accessibility; import flash.text.engine.GraphicElement; public class MicTest extends Sprite { private var startBtn:Button; private var stopBtn:Button; private var mic:Microphone; private var canvas:Sprite; private var g:Graphics; private var timer:Timer; private var fld:TextField; private var tf:TextFormat; private var nc:NetConnection; private var ns:NetStream; public function MicTest() { tf = new TextFormat(); tf.font = "_typewriter"; tf.size = 12; tf.color = 0x0000ff; fld = new TextField(); fld.defaultTextFormat = tf; fld.text = ""; fld.x = 0; fld.y = 0; fld.width = 240; addChild(fld); startBtn = new Button(); startBtn.label = "Start"; startBtn.emphasized = true; startBtn.width = 120; startBtn.move(0, 16); startBtn.addEventListener(MouseEvent.CLICK, start_rec); addChild(startBtn); stopBtn = new Button(); stopBtn.label = "Stop"; stopBtn.emphasized = true; stopBtn.width = 120; stopBtn.move(0, 32); stopBtn.addEventListener(MouseEvent.CLICK, stop_rec); addChild(stopBtn); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, status_handler); nc.objectEncoding = ObjectEncoding.AMF0; nc.client = this; nc.connect("rtmp:/stream/rec"); } private function status_handler(evt:NetStatusEvent):void { switch (evt.info.code) { case "NetConnection.Connect.Success": setStatus("Connected."); mic = Microphone.getMicrophone(); mic.setLoopBack(false); mic.setUseEchoSuppression(false); mic.rate = 22; mic.setSilenceLevel(0); ns = new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS, status_handler); ns.attachAudio(mic); ns.publish("test", "live"); break; default: setStatus(evt.info.code); } } private function setStatus(text:String):void { fld.text = text; } private function start_rec(evt:MouseEvent):void { fld.text = "Start record"; nc.call("record", new Responder(function():void {}), "start"); } private function stop_rec(evt:MouseEvent):void { fld.text = "Stop record"; nc.call("record", new Responder(function():void {}), "stop"); } } } forked from: Microphone Test with FMS