Order Now AdSolution Sign Up | Login » Bits on the Run Sign Up | Login »

Forums

/

How to add text overlays on a video

67 replies [Last post]

I've customized the player a ...I've customized the player a bit to support text overlays on the video clip. I've got the code in working order to support multiple text overlays. You can give it a location in pixels, percents or direction (left, middle, right, top, bottom). The text get repositioned and resized proportionately when the video is resized (or a new video gets loaded with different dimensions). The code is pretty rough right now, but I even have it hooked into javascript, so you can add/update the overlays through js as you need to. I figured I'd share it with you, since I've seen some people request such features. Here are the directions and code to use this:

1. Open the mediaplayer.fla file.

2. (Adding the font to use allowing transparency) Right-click in the Library area and select "New Font...". Name the font "OverlayFont" and select whatever font you want to use for the overlays. Check the "Bold" box. Click "OK". Right-click the new "OverlayFont" item in the library and select "Linkage...". Check the boxes for "Export for ActionScript" and "Export in first frame". Make sure the Identifier is set to "OverlayFont". Click "OK".

3. (Setup overlay code in first from of .fla file) Click the first frame of the script layer and press F9. Add the following code after the line that reads "com.jeroenwijering.players.MediaPlayer.main();":

var overlayBaseSize = (infoBase == undefined) ? 300 : parseInt(infoBase); // Base text size
var overlayPadding = (infoBuffer == undefined) ? 0 : parseInt(infoBuffer); // Padding around overlays
var overlayAlpha = (infoAlpha == undefined) ? 60 : parseInt(infoAlpha); // Transparency

// Text overlays
var textOverlays = new Array();

// Font style
var overlayFontFormat:TextFormat = new TextFormat();
overlayFontFormat.bold = true;
overlayFontFormat.font = "OverlayFont";
overlayFontFormat.color = 0xFFFFFF;
overlayFontFormat.size = 8;

// Position an overlay on the video
function setOverlay(idx, txt, alignment)
{
var overlayFound = false;

// See if overlay exists
for(var i in textOverlays)
{
if(textOverlays[i].idx == idx)
{
// Update existing overlay
overlayFound = true;
if(txt != "")
{
textOverlays[i].txtField.text = txt;
textOverlays[i].txtField.setTextFormat(overlayFontFormat);
}
if(alignment != "") textOverlays[i].alignment = alignment;
}
}

// Overlay not found, create it
if(!overlayFound)
{
var tmpObj = {};
var tmpTF = _root.createTextField("tmp", 100+textOverlays.length, 0, 0, 0, 0);
tmpTF.embedFonts = true;
tmpTF._visible = false;
tmpTF.autoSize = true;
tmpTF._alpha = overlayAlpha;
tmpTF.text = txt;
tmpTF.setTextFormat(overlayFontFormat);

tmpObj.idx = idx;
tmpObj.txtField = tmpTF;
tmpObj.alignment = alignment;
textOverlays[textOverlays.length] = tmpObj;
}
}

// Optimal width for movie
var alphaWidth = overlayBaseSize;

// Initialize overlays
var lastVidWidth = -1;
function initTextOverlays()
{
if(Stage.width == lastVidWidth) return;
lastVidWidth = Stage.width;

for(var i in textOverlays)
{
// Scale text depending on size
var scale = 100 * Math.round(_root.player.display.video._width / alphaWidth);
textOverlays[i].txtField._xscale = textOverlays[i].txtField._yscale = scale;

// Make sure we have a proper alignment
var coords = textOverlays[i].alignment.split(",");
if(coords.length != 2)
{
coords[0] = "l";
coords[1] = "t";
}

// Set horizontal position
switch(coords[0].toLowerCase())
{
case "l":
textOverlays[i].txtField._x = _root.player.display.video._x + overlayPadding;
break;
case "m":
textOverlays[i].txtField._x = _root.player.display.video._x + ((_root.player.display.video._width - textOverlays[i].txtField._width) / 2);
break;
case "r":
textOverlays[i].txtField._x = _root.player.display.video._x + _root.player.display.video._width - textOverlays[i].txtField._width - overlayPadding;
break;
default:
var hBasePos = _root.player.display.video._x;
var hMultiple = 1;
if(coords[0].indexOf("*") > -1)
{
// Start from the right of the video
hBasePos = _root.player.display.video._x + _root.player.display.video._width;
coords[0] = coords[0].strreplace("*", "");
hMultiple = -1;
}

// Something else, like number/percent coordinates
var hAdjust = 0;
var numVal = coords[0].strreplace("%", "");
if(coords[0] != numVal)
{
// Percentage value
numVal = numVal / 100;
hAdjust = _root.player.display.video._width * numVal;
//textOverlays[i].txtField._x = _root.player.display.video._x + (_root.player.display.video._width * numVal);
}
else
{
// Number val
hAdjust = numVal;
//textOverlays[i].txtField._x = _root.player.display.video._x + numVal;
}

// Position overlay
textOverlays[i].txtField._x = hBasePos + (hAdjust * hMultiple);
break;
}

// Set vertical position
switch(coords[1].toLowerCase())
{
case "t":
textOverlays[i].txtField._y = _root.player.display.video._y;
break;
case "b":
textOverlays[i].txtField._y = (_root.player.display.video._y + _root.player.display.video._height) - textOverlays[i].txtField._height;
break;
default:
var vBasePos = _root.player.display.video._y;
var vMultiple = 1;
var vAdjust = -1 * textOverlays[i].txtField._height;
if(coords[1].indexOf("*") > -1)
{
// Start from the bottom of the video
vBasePos = _root.player.display.video._y + _root.player.display.video._height;
coords[1] = coords[1].strreplace("*", "");
vMultiple = -1;
vAdjust = 0;
}

// Something else, like number/percent coordinates
var numVal = coords[1].strreplace("%", "");
if(coords[1] != numVal)
{
// Percentage value
numVal = numVal / 100;
vAdjust += _root.player.display.video._height * numVal;
}
else
{
// Number val
vAdjust += numVal;
}

// Position overlay
textOverlays[i].txtField._y = vBasePos + (vAdjust * vMultiple);
break;
}

// Make sure text isn't out of bounds
if(textOverlays[i].txtField._x < _root.player.display.video._x + overlayPadding) textOverlays[i].txtField._x = _root.player.display.video._x + overlayPadding;
if(textOverlays[i].txtField._x + textOverlays[i].txtField._width > _root.player.display.video._x + _root.player.display.video._width - overlayPadding) textOverlays[i].txtField._x = _root.player.display.video._x + _root.player.display.video._width - textOverlays[i].txtField._width - overlayPadding;
if(textOverlays[i].txtField._y < _root.player.display.video._y + overlayPadding) textOverlays[i].txtField._y = _root.player.display.video._y + overlayPadding;
if(textOverlays[i].txtField._y + textOverlays[i].txtField._height > _root.player.display.video._y + _root.player.display.video._height - overlayPadding) textOverlays[i].txtField._y = _root.player.display.video._y + _root.player.display.video._height - textOverlays[i].txtField._height - overlayPadding;
textOverlays[i].txtField._visible = true;
}
}

String.prototype.strreplace = function(pattern, replacement)
{
return this.split(pattern).join(replacement);
}

4a. (Reposition overlays when a new video starts) Open the FLVModel.as file. At the end of the the setStart() function after the line that reads "loadedInterval = setInterval(this,"updateLoaded",100);" add the following code:

// Reset overlays when a new video starts
_root.lastVidWidth = 0;

4b. At the end of the updatePosition() function right before the line that reads "};" add the following code:

if(currentPosition > 0) _root.initTextOverlays();

5. (Allowing the overlays to change size) Open the DisplayView.as file. At the end of the scaleClip() function after the line that reads "tgt.mc.gotoAndPlay(tcf);" add the following code:

// Reset size of overlays
_root.lastVidWidth = 0;

6. (Sending javascript event for overly) Open the AbstractView.as file. Add the following function at the end of the file just before the last line that reads "}":

/** Add/update overlay **/
private function overlaySetInfo(idx:String,txt:String,alignment:String) {
_root.setOverlay(idx, txt, alignment);
};

7. (Adding the javascript callback) Open the JavascriptView.js file. Add the following code after the line that reads "ExternalInterface.addCallback("sendEvent",this,sendEvent);":

ExternalInterface.addCallback("setOverlay",this,overlaySetInfo);

That's it for the setup. Sorry for the length of steps. I know the code is still a little junked up. If anyone has suggestions on better places to put this code, please let me know. I just did the bulk of it from the script layer on the first frame for speed of develpment time. The main function we'll be working with is the newly created setOverlay() function:

setOverlay(idx, txt, alignment) - Takes 3 parameters:

idx - The id assigned to the overlay so you can reference it later
txt - The value of the text to overlay
alignment - The position of the overlay

The alignment is any comma separated combination of the following in the form "x,y":

directions (l/m/r,t/b) - These translate to left/middle/right, top/bottom

examples of directions:
"l,t" - Top left corner
"m,b" - Bottom middle
"r,t" - Top right corner

pixel values (x) - Any integer value for location coordinates

examples of pixel values:
"0,0" - Top left corner of the video
"100,0" - 100px from the left side at the top of the video
"50,50" - 50px down and 50px to the right

percentage values (x%) - Any percentage value for location

examples of percentage values:
"50%,50%" - Positions halfway vertically and horizontally
"10%,80%" - 10% from the left, 80% from the top

ANY combination of these values will work. Here are some more examples of possible alignments:

"l,50%" - Halfway vertically on the left side of video
"50,b" - 50px to from the left and on the bottom

An additional * may be used to indication that the supplied value should start from the right or bottom of the video. Here are some examples:
"l,*50" - Left of the video 50px from the bottom
"*30%,*10" - 30% from the right of the video and 10px from the bottom
"*25,*25" - 25px from the right and 25px from the bottom

So the alignment setting is VERY versitile in terms of the coordinates it can accepts. Here are some methods to using the overlays on your videos:

Method 1: (Adding/updating overlay by hard-coding the .fla file) Add this code to the first frame in the script layer:

setOverlay("overlay1", "Hello World", "l,t");
setOverlay("overlay2", "More text", "m,*20");

This will position "Hello World" in the top left corner of the video and "More text" in the center 20px from the bottom. You can change the "Hello World" text using this:

setOverlay("overlay1", "Some new text", "");

This keeps the same placement location of the overlay and just changes the text that is displayed. You can also change the placement of the overlay like this:

setOverlay("overlay1", "", "r,b");

This moves the overlay to the bottom right and keeps the text it was previously displaying.

Method 2: (Adding/updating overly using javascript) You can using this same code inside javascript on a page to add/update overlays. Here's how:

thisMovie('yourSWF').setOverlay('overlay1', 'Hello World', 'l,t');

The javascript calls can be used the same way as the ActionScript shown above.

Hopefully you aren't too scared of the length of this setup/tutorial. Let me know if you have problems getting this to work. I'll try to setup an example page sometime soon. I'll post back when I get one up.

VERY nice! Thanks for sharing.

I just got a sample/testing page up. You can see and try it out here:

http://sweetphp.com/jw_player/

Let me know what you think...

An AWESOME addition would be the ability to place an image ( read "logo" ) so users could easily place their logo and other "stuff" anywhere that they wanted.

@Matt,

I really have to thank you as well. Yours is a very useful tweak to Jeroen's 3.16 Player and I look forward to using it. I've also made a few changes, most of which are unique to how I use the player but, here is one I've heard others ask how to impliment. It's for those that have a need to make the player's background transparent so that they can display an flv encoded with a transparent alpha channel over the top of a web page. It lets them easily create a web spokesman on the page. I didn't do anything to the FLA as I just use CSS to place the player DIV where I want it. Those that wish to use it should be aware that doing this disables the players FullScreen option when they set the "transparent parameter" to "true".

I needed to be able to toggle transparency and the visibility of the controlbar on and off so I inserted these two new parameters immediately after line 78 of the MediaPlayer.as file.

transparent:"false",
showcontrols:"true",

I inserted these lines of code immediately after line 201 of the ControlbarView.as file.

if(config["showcontrols"] == "false") {
tgt._visible = false;
}

I replaced the public function onMouseMove() located between the private function hideBar() and public function onFeedUpdate() in the ControlbarView.as file. These functions are the last 3 functions in the ControlbarView.as file.

public function onMouseMove() {
Mouse.show();
if((config["displayheight"] == config["height"]-config['searchbar'] ||
Stage["displayState"] == "fullScreen") &&
config["showcontrols"] != "false") {
Animations.fadeIn(config['clip'].controlbar);
clearInterval(hideInt);
if(!config["clip"].controlbar.hitTest(_root._xmouse,_root._ymouse)) {
hideInt = setInterval(this,"hideBar",2000);
}
}
};

I inserted these lines of code immediately after line 53 of the DisplayView.as file.

if(config["transparent"] == "true"){
tgt._alpha = 0;
config["clip"].display.back._alpha = 0;
}

Some here may find it useful and I hope the thread you started attracts a few more nifty contributions.

Regards - Jimb

I took a few minutes to put a short demo together too.

http://www.pmbsg.com/vmo.htm?id=demo.flv&tv=comments.flv

The the volume for the video in the main panel was set very low so you could hear the comments being played in the transparent player.

@Jimb,

Very nice demo. Now I just have to figure out how to make the transparent video...

I can see having some nice overlays, like all that junk the sports channels put on your TV screen showing stats, a real-time news ticker, etc. Video generated on-the-fly, superimposed over the main video.

May also be a great alternative for advertising (you've opened Pandora's box here).

@basic,

Looks like the post I made yesterday is missing so I'll try again to give you a bit of information on how to create transparent files. It's a common technique used in the movie and television industries commonly called Chroma Keying so you'll need a piece of software that includes the keying effect. I use several products for video that have it (Adobe - Ultra, Adobe - After Effects, Adobe - Premier Pro, Newtek - Speededit).

Basically the way it works is you import your source video or still images into the keying software and select the color(s) you want replaced with transparency, after you've applied the effect you output video as a 32 bit uncompressed avi with an alpha channel or still images as png's with transparency. If you're working with video the next step is to create your final output file. I prefer to create both an Flash FLV and a Quicktime MOV. I use Flash CS3 to create the FLV's and Apple Quicktime Pro for the MOV's. When you output your final file from Flash or Quicktime you need to make sure you select the encode alpha channel option. In my experience the Quicktime H264/AAC files are usually smaller and sharper than the Flash files but I use the Flash files as a Fallback for folks that have an older Flash Plugin installed in their browser.

If you don't have any keying software you can download a 30 day trial copy of Adobe's Ultra 3.

I suspect this will get you headed in the right direction but if you have questions I'll be happy to tell you more.

Regards - Jimb

I've found , temporarely maybe, that solution but it stay heavy ('lourd', in french) with the CPU :
html...
head...
<script type="text/javascript" src="swfobject.js"></script>
/head...

(it's the 1.5 vers for the SWFObject )
body...

<div style="z-index:4;position:absolute;left:0px;top:15px" >
<div id="bloc13" style="width:320px;height:154px;<strong>filter:alpha(opacity=50)";> (50 or everything else...)
</div>
<script type="text/javascript">
var so = new SWFObject('mediaplayer.swf','mpl','100%','100%','8');
so.addParam('allowscriptaccess','always');
.......................................
so.addParam('wmode','transparent');
......................................
.......................................
....................................
.........................................
........................................
so.write('bloc13');
</script>
</div>

good day.

And by the way, you can play, by example, with blendtrans.js (... blendtrans on the web) and let the user change on the fly the opacity of the 'bloc 13' with some function as that one :

<div >
<img src=".....jpg" onclick="opacity('bloc13',85,50,3000)">
</div>

<div >
<img src=".....jpg" onclick="opacity('bloc13',50,85,3000)">
</div>

or create a simple function as that one :

<script type="text/javascript">
function opa(id)
{
document.getElementById('bloc13').style.filter = "";
}
</script>

and call it from a button

<div >
<img src=".....jpg" onclick="opa()">
</div>

to disable the opacity ( i'm talking about the style:filter ).

good day;

Hey all, that looks like great work on the overlay!
Is anyone able to provide a download location for the .as and .fla files? I don't have a flash editor so can't follow through the instructions given at the top of this page.

Hello,

I don't know anything about flash (and about many others things...:-) ) but i've downloaded two weeks ago the demo version ( but all the features are there...for one month) of the new Adobe program CSS3. I've learn by trys and errors some basics things with it and made a SWPlayer at my hand, for javascript interaction and transparency (without the back clip and, for my use, some others). You will have to register, indeed. For the fla and the as, you will find them there :

http://code.longtailvideo.com/trac/browser/tags

Good day

patrice

@Jimb,

Any chance to port the "transparent" to the latest player?? appreciate your guidance.

I haven't tried this yet but the sample test page (http://sweetphp.com/jw_player/) looks exactly like what I need!

Will this work on v4.2 or 4.3?

Also, I need to make two (minor?) changes. The actual text will be user/pass and the overlay location will randomly change every 'x' seconds. I have zero experience with this kinda thing. I'm mostly good at c&p and following directions. I'm happy to pay someone to make the necessary changes.

Thanks in advance!
Jake

Where can I find mediaplayer.fla file??

@Michael,

See: http://developer.longtailvideo.com/trac/browser/tags

Click on the mediaplayer version that you want the mediaplayer.fla file for.

Hi Michael,

This is Ethan from LongTail here to help you.

You can get the fla here - http://www.longtailvideo.com/players/jw-flv-player/commercial-license/

Please email me directly at ethan [at] longtailvideo [dot] com to follow up if you have any other questions, thank you.

Best Regards,
-Ethan

Any idea how to implement this as a plugin?

I've made the overlay feature discussed at the start of this thread into a plugin for player version 4/5. I'm working on getting it submitted to the add-on system here.

You can use http://www.longtailvideo.com/addons/plugins/111/Adtonomy-Text-Ads-(Run-Your-Own-Ads) to do this.

Mine is a different purpose for the plugin. It just provides floating text. More like watermarks than ads. It allows for multiple text overlays/watermarks to be forced on the video as specified.

It's a quick effective way to put copyrights or "property of" tags on top of a video.

We do not have a plugin for this.

I submitted the plugin, but haven't heard anything back about it. I tried to supply as much info as I could in the submit form, but maybe it wasn't descriptive enough. Do you know how long it usually takes to have the plugin approved/denied?

We will take a look at the submission, thanks.

Any update on this? Do you need more information from me?

Matt, you didn't provide the FLA, please re-submit, also email me at ethan [at] longtailvideo [dot] com when you have, thanks.

 
But they aren't really watermarks, 'cuz watermarks are embedded in the video file.

Ethan,

I just emailed you the FLA file. Please let me know if you didn't get it.

Chugger, you are correct, they aren't TECHNICALLY watermarks. That would require re-encoding the video files. This provides a quick way to add text on top of the video without the need to re-encode it.

Matt,

I got an email from you but there was no FLA. Can you re-send it, or better yet, just submit it to our Addons library?

Thanks,
-Ethan

Oh, it is so difficult...I use VidLogo program for it, since it is very easy to use.

Im interested in overlaying text in jw player 5.1. I hope the plugin gets submitted/approved. Thanks!

Any update on this plugin? Would love to use it for my project.

@Vivek - The plugin was submitted without an FLA and the email I got from the developer also did not contain a FLA. We cannot review / approve a plugin without looking at the source code first.

Hopefully Matt will submit the FLA soon! Thanks for creating this, cant wait to try it out!

@Matt, would be great if you can submit the FLA soon. I am very eager to try out this plugin. On a related note, I tried out the functionality on your webpage (http://sweetphp.com/jw_player/) and noticed that if I put in an empty string as overlay text, I see "null" being displayed on the video.

Hopeful Bump? :)

Why when I save the example page on my computer it is working when I open directly the html file, but when I try to run it in local through WAMP the plugin stop working?

@Pom45i - Can you provide a link to where you are running this?

http://heavenandearthtutorial.freeiz.com/Textmark%20Setup%20Test.htm
I just saved the example page and uploaded it on my server. I can't display any text there, while if I open it directly on y computer, without using a server, it is working as fine as the example before.
I'd really like to know why, and how it is possible for me to get it to work.

 
It's probably a cross-domain scripting issue.

You are loading the Flash movie files (player.swf & Textmark.swf) from sweetphp.com and them trying to execute JavaScript on a page loaded from heavenandearthtutorial.freeiz.com.

Try loading everything from the same domain.

(Media files can come from anywhere.)

You are right. Thanks a lot, it's working.
Now I feel stupid, I spent a long time yesterday to reproduce something similar to display dynamic text in fullscreen.

I've noticed some issue of this plugin with JW player version 5. The position inside the video cannot be changed dinamically, be it the direct positioning or the padding.
The position changes of the text overlays only happen when the video is loaded (or reloaded dynamically).
Here an example of it with JW player 5.2 (I think it is 5.2, anyway, I've tried it with other version 5 with the same result):
http://zimi.uphero.com/TextmarkSetupTest.php

This is also a big problem with the fullscreen since the text stays at the same place it was before fullscreen.

With any of the JW player version 4, it is working perfectly fine.
(The only problem is that some video links I am using cannot be opened with the version 4 (it gives me error #2046 but are read smoothly with the version 5 so i cannot really change the version I am using).

So if anyone has any idea of what I do wrong, or has a method to fix that, it would be really awesome.

Thanks a lot

Also when the video is paused then played, or when someone seek inside the video, the overlay text go to its right position.
So if you're looking for an implementation of this plugin inside your player, you can add a listener to the play function then add something like that: player.sendEvent('PLAY','false');player.sendEvent('PLAY','true'); if the video was playing before the function to redraw the overlays, or the contrary if the video was paused.
Of course this method is uggly but this is the only method I am able to provide. The best would be to modify the textmark file, but I'll let this work to more experienced users.

Hey Pom,

I've contacted Matt about this. Hopefully he'll respond shortly.

I've been working on ironing out some kinks with this plugin and should hopefully have it ready soon. At this point I have it working with JavaScript implementation, but I've been asked by the plugin review team to make it work without the need for JavaScript. This is more of a task than I anticipated, but I'm making progress and it should hopefully be ready soon. Sorry for the long wait guys.

Matt, Thank you for sharing this information. I would like to add text overlay on a video from a cctv system. Could you give me any idea, please???

Hi Matt,

Any updates on this? It'd be great to have a text overlay plugin. Thanks in advance!

Please be so kinde and let me know how the JW player can disply text overlay on the videoclip us a title but just the name of the fail will be displayd on the lower portion of the screen
for example the name of the sinder and the name of the song
i have some videoclips withoput a title and i would like to have at least the text with the name of the fail
FOR EXAMPLE
JOHN PAGAN - Runing in the rain
please send me e-mial if is posible to
satnj@optimum.net

@Eugene

'lo and behold'

those are the first words seen on the internet in 1969 on the ARPANET(Advanced Research Project Agency NETwork).

Longtailvideo has just released your solution namely, a newsticker

http://www.longtailvideo.com/addons/plugins/160/NewsTicker

and believe it or not it also works on an iPAD.

Actually the newsticker seems quite different that what did Matt, which was exactly what I need.
I need to be able to change the text overlay after the video is loaded and as many time as neccessary, with the viewer being able to change it itself (this is for a subtitle editor).
And nor the caption plugin (each time need to load the whole subtitle file) nor the newsticker seem to be adapted for my project.

The problem with the newsticker is that it doesn't seem to handdle javascript. If there is a way to do it, please explain to me how. Thanks.

@Pom

The person to ask is Ethan as he wrote the newsticker.

I have not as yet used it

@pom45i - This plugin does not send out JS events unfortunately, but you could always pass in an array of messages to the newsticker.text flashvar, to change it. There are options to change it, or you could write some js to updated newsticker.text (at least for the html5 version of the plugin).

It also supports HTML5 now, check it out.

Ethan, I am don't know how to write the JS to update the message displayed. Could you please help me?
For my project, the user creates himself subtitles while he is watching a video. The messages don't need to be loaded whith the webpage and can be modified by the users.
With the textmark plugin it is easy to do it, just have to send a JSevent, but with the newsticker I have no idea where to begin.
Thanks a lot.

Well, the HTML5 version of the NewsTicker plugin is done entirely in JavaScript. You could make an HTML form that updates newsticker.text and stores it in a variable. I will try to work on something and email it to you, what's your email?

Thanks a lot Ethan, my mail is pom45i@live.fr

Check your email :)

I modified the breaknews plugin to obtain what I wanted. Here a demo page if someone else needs it: http://zimi.uphero.com/videopagefiles/index.html

@pom45i

tres bien

feel free to contact me from off my web site

www.mirana.net/contact.html

a bien tot

Very cool!

I added other functions such has a background for the captions, change of the color of the glow around the text, position of the text on the bottom, if you see any bugs tell me.
Everything can be changed by javaEvents.
http://zimi.uphero.com/videopagefiles/index.html

Nice!

Now you can add two overlays, one on the bottom, one on the top of the screen.
The options of both the overlays can be changed separatly.
I am still not satisfied with the option add a background to the overlays, the result isn't as pretty s it could be.
You can again check it out on the same page.
http://zimi.uphero.com/videopagefiles/index.html

Cool :)

Ethan, I submited the plugin, meagan answered that she need more information. But when I try to reply I obtain a mail delivery faillure. I tried to sent you a mail too, but it didn't work. Is there a problem with the mailing system in longtail? Then could you provide me another e-mail where I can join her?
Thanks a lot.

@pomi

2 funny

hello, hello

I like the comments in Chinese ;-)

@pom45i - Not that I know of, please try to email her again. Her email is meagan [at] longtailvideo [dot] com.

The files were the problems. It was because I sent the files to build the swf file. A bat extension isn't welcomed by the receiving host.
It seems to work now :)

Great :)