We are taking arbitrarily sized videos that are all either at 392x294 or below and either leaving them as is, or scaling them up to be 392x294.
In videos being scaled up, we see scaling artifacts that we think are due to a lack of interpolation. When scaling the video by 100 percent there are no artifacts, same with 200 percent and so on. But when scaling up by an arbitrary percentage value (whatever value we need so the video reaches the desired dimensions) we get artifacts such as cut-off or repeated pixels (most noticeable with text). Why is this happening?
Inside the flash player we are using the standard embed video object and loading flv files into it. When using the Media Playback component, similar artifacts appear on arbitrary scalings (scaling by tenths is also fine).
We are using one-pass FLV 1 h.263 derivative encoding standard for Flash 7. Uploading the same video to youtube and viewing youtube with a flash 7 player does not show these same artifacts.
What are we doing wrong? The only constraint we have is that we're using flash 7.
People succeed in answering ParagramStudios's questions 26% of the time (9 successes in 34 attempts).
Answers by: Moritz
Hi,
first of all: you get those artifacts when scaling a non-integer factor because then a pixel of the original image doesn't fall onto a new pixel of the sized image. The same is also valid for videos obviously.
Text is specially hard to scale since it's black and white most of the time, and most interpolation algorithms just use a value inbetween - in this case grey, so the text will not look sharp.
The scaling inside the flash player seems to be very poorly implemented, the only way to get good results is to scale the videos on your server before delivering them. And of course you should not use any flash based technology there. I'd use mencoder here because I just love open source, but there should be many other possible choices.
I guess that YouTube uses server side scaling as well, they have to struggle with the same limitations on the client side as you (or nearly the same).
Best Regards,
Moritz
But you'll notice that youtube video player has a button in the player that toggle on and off video scaling. When turned off you see the video floating in black space at its original size and when you click it again it scales it smoothly. Just like bicubic interpolation when changing image size in Photoshop or other image editing programs.
I didn't notice that because it doesn't work for more ;-). It seems that some of their features doesn't work for me, they don't test their software with Firefox for Linux ;-)
So discard this part of my answer, I don't know enough about flash to help you there, sorry.
Good luck anyways,
Moritz