Hi Folks…
I posted this in another forum too. I have this sample code from the e-book: “Learning Flash Media Server 3”. The purpose of the code is to create a FLV. The code is not running as it should. When I click on the ‘record’ button, the label is to change to ‘recording’, that dosen’t seem to happen and also when I click on the ‘Stop Record’ button, I get the following error:
“TypeError: Error #1009: Cannot access a property or method of a null object reference.
at MinRecord/stopRecord()”
I have my suspicion on a certain section of the code as the possible culprit, but I am not sure how to rectify it, I will post the entire code here so you guys can have a look.
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 ();
}
}
}
My deduction is that the ‘if’ statement in the ‘startRecord’ function is not resolving to ‘true’ and hence the label is not changing to ‘Recording’. Also I feel that the assingment to the variable ‘ns’ of type NetStream is not being done and hence in the function ‘stopRecord’ I get the above mentioned error message when I click on the stop button. How do I rectify these problems?