views:

301

answers:

2

I'm working with a good quality usb camera at the moment. The video quality of camera is quite good when viewed in the viewer supplied with the drivers (I presume it's implemented using C++). And as to be expected Flash cannot deliver the same level of quality.

But what are my options to improve the quality of an incoming local video stream in Flash, considering I have complete setup control over the local machine the flash is running on?

+1  A: 

use the public function setQuality(bandwidth:int, quality:int):void

see: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/media/Camera.html#setQuality%28%29 for more information

Language Version : ActionScript 3.0 Runtime Versions : AIR 1.0, Flash Player 9

Sets the maximum amount of bandwidth per second or the required picture quality of the current outgoing video feed. This method is generally applicable only if you are transmitting video using Flash Media Server.

Use this method to specify which element of the outgoing video feed is more important to your application—bandwidth use or picture quality.

* To indicate that bandwidth use takes precedence, pass a value for bandwidth and 0 for quality. Flash Player transmits video at the highest quality possible within the specified bandwidth. If necessary, Flash Player reduces picture quality to avoid exceeding the specified bandwidth. In general, as motion increases, quality decreases.
* To indicate that quality takes precedence, pass 0 for bandwidth and a numeric value for quality. Flash Player uses as much bandwidth as required to maintain the specified quality. If necessary, Flash Player reduces the frame rate to maintain picture quality. In general, as motion increases, bandwidth use also increases.
* To specify that both bandwidth and quality are equally important, pass numeric values for both parameters. Flash Player transmits video that achieves the specified quality and that doesn't exceed the specified bandwidth. If necessary, Flash Player reduces the frame rate to maintain picture quality without exceeding the specified bandwidth.

Parameters bandwidth:int — Specifies the maximum amount of bandwidth that the current outgoing video feed can use, in bytes per second. To specify that Flash Player video can use as much bandwidth as needed to maintain the value of quality, pass 0 for bandwidth. The default value is 16384.

quality:int — An integer that specifies the required level of picture quality, as determined by the amount of compression being applied to each video frame. Acceptable values range from 1 (lowest quality, maximum compression) to 100 (highest quality, no compression). To specify that picture quality can vary as needed to avoid exceeding bandwidth, pass 0 for quality.
Todd Moses
A: 

setQuality() is good as Todd points out, but you may see a more immediate result with setMode() which lets you set the resolution and framerate. If you just set a standard camera feed and then resize your video object to something like 640x480 it'll just use pixel doubling unless you use setMode(640, 480, 30) on the Camera object itself.

For reference, unless you set that manually with setMode() then your actual video input is rendering at 160x120.

Hope that helps!

Myk