Flash live streaming how to
1 Jun
This how to covers how to stream live video or either red 5, FCS, or FMS. I am only covering the basic’s not server side as, or java.
Streaming video is pretty simple once you have a server. I recommend using both red5 and FMS developer version on your local dev machine. This way you can test on red5 without the 10 connection limit, and then test on FMS to insure that your app is working correctly on that platform if your production environment uses it.
First things first
First things first : Make a movie.
Go to the library and add a new video symbol. Drag this symbol onto the stage and name it bCastPreview
.
Now we’ll get down to the basics:
The first thing we should do is define our server url in a variable
broadCastURL=”rtmp://localhost/test”;
whats with that funky url?
if you’ve never used a flash server before your probably like wtf? Flash used a different protocol for streaming, I don’t know the full spec of it (sorry uber’s), so instead of attempting to breakdown something don’t know, let me just say use google. Just know it is the protocol used by flash and flash servers to transfer data.
At the end our url you’ll notice /test change test to whatever you’ve named you application on the server to.
Little bit of back tracking
To add an application in FMS add a directory to the applications folder in the FMS root on your machine. To add an application in red 5 add a new directory in the webapps folder in the red5 root. For more details : use google.
Ok are we ready?
Alrightly we’ve now briefly covered adding your application in FMS and Red5, urls, and protocols, and we have a movie with one variable and a video object. I think we’re ready.
// create a basic netConnection object
var nc:NetConnection = new NetConnection();
// connect to the your FMS or Red5 server
nc.connect(broadCastURL);
// create a netStream object and pass it the netConnection object
//netStream needs this as it is the connection to your server
var ns:NetStream = new NetStream(nc);
what we’ve just done is connect to our flash server and created a new stream object. Why? Well netConnection is just that a connection. So we pass our connection to netStream which is used to play or publish streams. So we now have a stream connection to our flash server. (now that’s breaking it down barney style)
Umm still no video
We have yet to actually connect any video so lets quickly run through setting up or web cam and mic, and get the broadcast going
// setup cam
cam = Camera.get();
// setting dimensions and framerate
//I like to broadcast at resolutions higher than the view will be
//I find this delivers better quality video
cam.setMode(600, 400);
// set up quality
cam.setQuality(25600, 0);
// setup mic
mic = Microphone.get();
mic.setRate(11);
what we’ve just done is setup both our camera and mic.
cam = Camera.get() and mic = Microphone.get() explain themselves.
We are broadcasting or camera at 600 x 400 resolution, although our actually video window will only be 320×240. This is so we can have better resolution in the viewer. This was done with cam.setMode(600, 400);
We’ve also told flash to use up to 25600 bytes of bandwidth to broadcast while maintaining the highest quality we could with cam.setQuality(25600, 0);
And finally we set the rate of our audio from the mic : mic.setRate(11);
Now we’ll attach both sound and audio to our stream object. Then we attach our camera to our video object so that we can see what we’re broadcasting
ns.attachVideo(cam);
ns.attachAudio(mic);
bCastPreview .attachVideo(cam);
and finally what we’ve all been waiting for
ns.publish(“myBroadCast”, “live”);
when publishing you need to give your broadcast a name ie “myBroadCast”, and tell the flash server that this is a live broadcast and we only want to stream it : “live”. Why do we need to tell the server we only want to do a live broadcast? Because based on the string passed the server can do other things, but google will tell you all about that. Like I said – this is the basics.
So we now have a live broadcaster. What next?
Our next step is to make our viewer, because theres no point in having a broadcast if no one sees it ( not that theres anything wrong with that if your into that ).
First step make a movie, make the video symbol, drag it onto the stage and name it : bCastView
//server url
broadCastURL=”rtmp://localhost/test”;
// create a basic netConnection object
var nc:NetConnection = new NetConnection();
// connect to the your FMS or Red5 server
nc.connect(broadCastURL);
// create a netStream object and pass it the netConnection object
//netStream needs this as it is the connection to your server
var ns:NetStream = new NetStream(nc);
//set stream buffer
ns.setBufferTime(2);
bCastView.attachVideo(ns);
ns.play(“myBroadCast”, -1);
the majority of the code we’ve already covered. The key item here is : ns.play(myBroadCast, -1);
this code tells our netStream to play our broadcast.
So now if you test your viewer you should see your broadcast.
Enjoy sid

