Jun
4
Minimum Code to Record FLV File
June 4th, 2008 posted by
Marcio Rosa
package { import fl.controls.Button; import fl.controls.TextInput; import flash.display.Sprite; 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 MinRecord extends Sprite { 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 recordBtn:Button; private var stopBtn:Button; private var textInput:TextInput; //Constructor function MinRecord () { //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"; nc.connect (rtmpNow); addMedia (); addUI (); recordBtn.addEventListener (MouseEvent.CLICK,startRecord); stopBtn.addEventListener (MouseEvent.CLICK,stopRecord); } private function addMedia ():void { cam=Camera.getCamera(); cam.setMode (240,180,24); cam.setQuality (0,90); mic=Microphone.getMicrophone(); vid1=new Video(cam.width,cam.height); vid1.attachCamera (cam); addChild (vid1); vid1.x=100; vid1.y=50; } private function addUI ():void { recordBtn=new Button(); recordBtn.label="Record"; recordBtn.x=100; recordBtn.y=50+(cam.height) +5; recordBtn.width=70; addChild (recordBtn); stopBtn=new Button(); stopBtn.label="Stop Record"; stopBtn.x=recordBtn.x+85; stopBtn.y=recordBtn.y; stopBtn.width=75; addChild (stopBtn); textInput=new TextInput(); textInput.x=recordBtn.x; textInput.y=recordBtn.y + 30; addChild (textInput); } private function checkConnect (e:NetStatusEvent):void { msg=(e.info.code=="NetConnection.Connect.Success"); if (msg) { ns = new NetStream(nc); } } private function startRecord (e:Event):void { if (ns) { recordBtn.label="Recording"; ns.attachAudio (mic); ns.attachCamera (cam); ns.publish (textInput.text,"record"); } } private function stopRecord (e:Event):void { recordBtn.label="Record"; ns.close (); } } }

Loren Norman says:
June 27th, 2008 at 12:30 pm
Brilliant! Straight to the point, and perfectly illustrates everything i need, even as an ActionScript newbie.
Can you talk a little bit about the server side? What infrastructure do you have to have set up on the server to receive this? I’m trying to get set up with Red5, but it looks like this code just writes to a file without even needing a server side process to tell it what to do. How do i exercise more control?
Thanks!