September 30, 2006

Flash Media Server 2.0.3 Update has been released

Just in case you didn't know, FMS2.0.3 has been released and fixes a few items that may have been frustrating you. Unfortunately it doesn't seem to address a small problem that some people have been having with version 2.0.2 in that the server would incorrectly limit the amount of users that could connect up and say the license limit was reached before it was. Oh well.. I guess they couldn't reproduce it, so it doesn't exist.

At least they got rid of a couple of issues of crashing and memory sucking.

Get the update here

Details are here

Posted by Graeme at 03:28 PM | Comments (0)

September 29, 2006

Movie Review: Flyboys

I don't usually report here on movies (sometimes on books though..) but I enjoyed this movie and thought I'd toss it out there to recommend to others.

Flyboys, is a movie about World War I pilots in the Lafayette Escadrille and have just received one of the most influential planes of that war.

If you are an airplane buff or just plain like watching dogfights and aerobatics of the older planes then you'll like this movie. There's lots of CG going on, but you can tell when the real planes are flying and it's pretty cool.

Posted by Graeme at 12:47 PM | Comments (0)

September 21, 2006

Ask an FMS Guru #14: Is it possible to add metadata to a live video stream?

A rather interesting question today on metadata for FLV files recorded live with FMS.

The question: Is it possible to add metadata to a live video stream?

The answer:

Unfortunately, no. Neither FCS or FMS allow you to add metadata to a stream as you are recording it.

But, I think I get where this person is coming from and what they may want to do. Most of the time you would use the metadata to add in certain information like the length of the stream, size, subject etc. When you play an FLV you can get that metaData when the player first starts playing the video. FMS already adds in some info like the length and size but you can't add in your own personal info, which is what I am assuming the writer of this question would like to do.

In this case, I recommend using the NetStream's send() method. This will allow you to "embed" a call to a function that you set later in the player for the FLV file.

So, for example, when you start publishing:

myNS.publish("someRecording", "record);

Then make a send() call on it:

myNS.send("onMyMetaData", "This is a really cool video");

What this will do is call a function on the NetStream in the player when you set it. So you are setting it here in the first second or so. Before the player plays this video, create the function to handle that:

myNS.onMyMetaData = function(msg){
trace("myMetaData: " + msg);
}

and play it:

myNS.play("someRecording");

and you should see the data you "embedded" into the FLV file. This will work whether you play the video progressively or streaming with FMS.

Hope that helps a bit.

Posted by Graeme at 08:20 AM | Comments (2)

September 16, 2006

Comments work now

Thanks to everybody who let me know. Comments are working now.

I think I've nailed it down to when we enter a new site in the blacklist we have, sometimes it has characters in it that mess with the regex that is used to block them. Deleting the offending regex entry fixes it. ho hum.. I wonder how long it's been like that..

Posted by Graeme at 03:28 AM | Comments (0)

September 15, 2006

Looking for a plugin for IE and Firefox to stop Flash content

I don't ask for help much but I've had it with Flash content on news sites and need advice. I am dead sick of flash content all over sites that I use to gather information. It doesn't matter where you go now, every site has it. The annoying and invasive Flash animations, video, self clicking and good experience killing content.

For example, I use Yahoo! for most of my news viewing and they are constantly using flash to put something new up like new movies, cars, commercials for TV shows, products, iPod stuff etc.

Each and every one of these plays on it's own. You have to click it to stop it and that sucks in itself because sometimes if you roll over them they show up on a layer above the text and take up half the screen.

To top it all off, some of them send information back to the mothership if they have made it so far into whatever video it is, and every time they do this they "click", as if you pressed a link. This is invasive and annoying because if you go to an article and then press the back button to go back to the list you don't go back to where you were, you go back to the top of the list.. I don't think I am explaining it well.. but that's how it is.

All I can say is that I want to block Flash content when I choose to. How do I do that? There must be a plugin somewhere that does this with a click of a button.

Any direction would be appreciated. Looking to kill flash content in IE and Firefox for the time being on a windows machine.

Posted by Graeme at 05:56 PM | Comments (3)

September 07, 2006

Quick tip for keeping track of users in your application

Just recently had an FMS connection hijacker so I thought I'd share a quick tip here.

There are a lot of times when I'll release something out to a bunch of users or even just plain publicly and I want to know where people are coming from. Now, you may be thinking at this point "Why would I want to know where they are coming from when it's my own app?", here goes an explanation :)

Well, with FMS applications it's very easy to actually just connect up to them by taking apart an original application with Actionscript Viewer or something, keeping the basic framework in place and putting your own graphics in or whatever. So essentially what somebody may do is steal connections on your server by hijacking your SWF. Or they may just copy the SWF from their cache and place it on their own site.

Now, if you were really good, you would already have lots of security in place (check out my security preso if you are interested in that area maybe) and don't need to do what I'm about to suggest. But also perhaps you want to see how far your apps make it in the wide world web. For example, I have a "Moving Words" application that was originally placed on this site (doesn't seem to be there anymore though... but I have a copy of it here) but has made it to other sites by people copying out the SWF and putting it on their own site! I don't really mind though, so it's fun watching it go places.

So for example, you have an app, people are using it where you put it, but some decide to either put it on their own site and pretend they made it or something, or more malicious users will decompile the SWF and really change it to make it their own. The first group isn't so bad I think, it's the second group that really makes me shake my head.. anyways, this is how you catch them.

At the top of your main.asc file on the server side, put this in:

application.allowDebug = true;

This will allow you to "debug" your applications. The reason we need this is so we can view shared objects that are on the server in that particular application in the administration panel.

Next up is the creation of the shared object on the server side:

application.onAppStart = function(){
this.usersID = 1;
this.usersSO = SharedObject.get("users", false);
}

We are creating a usersID value to give to every user that connects up a unique ID for every user (useful later) and also creating the Shared Object that is non permanent. You can make it permanent if you want I suppose..

Now, when a user connects up:

application.onConnect = function(clientObj){
clientObj.uniqueUserID = this.usersID;
clientObj.connectStartTime = new Date();
//set the shared object
this.usersSO.setProperty("user"+ this.usersID, clientObj);
this.usersID++;
}

We set some values here to let us know what the client's unique ID is and when they connected to the application. Then we place the client object itself in a slot in the shared object. Once we have done this, we can then go to the administration panel and just click on the shared objects tab, click on the shared object and all of our users with all their info will show up. The key one we want in this instance is the "referrer" value. This will give you the URL where the user is coming from! That's it. Quite useful I have found, just thought I'd share.

Make sure to delete the entry from the Shared Object when they disconnect though:

application.onDisconnect = function(clientObj){
this.usersSO.setProperty("user"+ clientObj.uniqueUserID, null);
}

Posted by Graeme at 12:46 PM | Comments (0)