Jun
4
Combined Record and Playback Application
June 4th, 2008 posted by
Marcio Rosa
Add comments
package { import fl.controls.Button; import fl.controls.TextInput; import flash.display.MovieClip; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.events.MouseEvent; import flash.events.Event; //import flash.net.ObjectEncoding; import flash.media.Camera; import flash.media.Microphone; import flash.media.Video; public class RecordPlay extends MovieClip { private var nc:NetConnection; private var ns:NetStream; private var rtmpNow:String; private var msg:Boolean; private var cam:Camera; private var mic:Microphone; private var vid1:Video; private var vid2:Video; private var recordBtn:Button; private var stopBtn:Button; private var playBtn:Button; private var textInput:TextInput; private var metaSniffer:Object; private var dur:Number; function RecordPlay () { //NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0; nc=new NetConnection(); nc.addEventListener (NetStatusEvent.NET_STATUS,checkConnect); rtmpNow="rtmp://192.168.0.11/vid2/recordings"; //rtmpNow="rtmp:/vid2/recordings"; nc.connect (rtmpNow); addMedia (); addUI (); recordBtn.addEventListener (MouseEvent.CLICK,startRecord); stopBtn.addEventListener (MouseEvent.CLICK,stopAll); playBtn.addEventListener (MouseEvent.CLICK,startPlay); } private function checkConnect (e:NetStatusEvent):void { msg=(e.info.code=="NetConnection.Connect.Success"); if (msg) { ns = new NetStream(nc); metaSniffer=new Object(); ns.client=metaSniffer; metaSniffer.onMetaData=getMeta; } } private function getMeta (mdata:Object):void { //Dummy to avoid error } private function addMedia ():void { cam=Camera.getCamera(); cam.setKeyFrameInterval (12); cam.setMode (240,180,15); cam.setQuality (0,80); mic=Microphone.getMicrophone(); mic.rate=11; videoSetup (); } private function videoSetup ():void { vid1=new Video(cam.width,cam.height); vid1.attachCamera (cam); vid1.x=100; vid1.y=70; addChild (vid1); vid2=new Video(cam.width,cam.height); vid2.x=vid1.x+vid1.width+10; vid2.y=vid1.y; addChild (vid2); } private function addUI ():void { recordBtn=new Button(); recordBtn.label="Record"; recordBtn.x=100; recordBtn.y=70+(cam.height) +5; recordBtn.width=70; addChild (recordBtn); stopBtn=new Button(); stopBtn.label="Stop"; stopBtn.x=recordBtn.x+100; stopBtn.y=recordBtn.y; stopBtn.width=60; addChild (stopBtn); playBtn=new Button(); playBtn.label="Play"; playBtn.x=stopBtn.x+85; playBtn.y=recordBtn.y; playBtn.width=60; addChild (playBtn); textInput=new TextInput(); textInput.x=recordBtn.x; textInput.y=recordBtn.y + 30; addChild (textInput); } private function startRecord (e:Event):void { if (ns) { recordBtn.label="Recording"; ns.attachAudio (mic); ns.attachCamera (cam); ns.publish (textInput.text,"record"); } } private function stopAll (e:Event):void { playBtn.label="Play"; recordBtn.label="Record"; ns.close (); } private function startPlay (e:Event):void { if (ns) { playBtn.label="Playing"; vid2.attachNetStream (ns); ns.play (textInput.text); } } } }
