5

I'm trying for a webcam based application. I started the code like this:

import flash.media.Camera;
import flash.media.Video;
var cam:Camera = Camera.getCamera();
a.vid1.attachCamera(cam);
a.vid1.smoothing = true;

My problem is that the quality of the video. Im using an iMac machine, in which camera quality is good. Is there any way to increase the quality of the camera output?

Thanks for the help.

Marty
  • 39,033
  • 19
  • 93
  • 162
Raj A.N.T. Gounder
  • 490
  • 1
  • 6
  • 17

2 Answers2

10

Here is a sample code

package
{
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.ActivityEvent;
    import flash.events.MouseEvent;
    import flash.media.Camera;
    import flash.media.Video;

    public class iosTest extends Sprite
    {

        private var cam:Camera;
        private var vid:Video;


        public function iosTest()
        {
            super();

            // support autoOrients
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            cam = Camera.getCamera();

            if (!cam) 
            {
                trace("No camera is installed.");
            }
            else 
            {
                connectCamera();
            }
        }

        private function connectCamera():void 
        {
            cam.setMode(640, 480, 25); 
            cam.setQuality(0,100);
            vid             = new Video();
            vid.width       = cam.width;
            vid.height      = cam.height; 
            vid.attachCamera(cam);
            addChild(vid);    

            stage.addEventListener(MouseEvent.CLICK, clickHandler);
        }

        private function clickHandler(e:MouseEvent):void 
        {

            return;

            switch (cam.width) {
                case 160:
                    cam.setMode(320, 240, 10); 
                    break;
                case 320:
                    cam.setMode(640, 480, 5); 
                    break;
                default:
                    cam.setMode(160, 120, 15); 
                    break;
            } 
            removeChild(vid);           
            connectCamera();
        }

    }
}
Adrian Pirvulescu
  • 4,308
  • 3
  • 30
  • 47
3

Use setQuality()

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.

Marty
  • 39,033
  • 19
  • 93
  • 162
  • @Marty... I tried that with setQuality command.Same output. Output was pixelated. Also i applied vid1.smoothing = true; which resulted in blur, of course loss of quality. – Raj A.N.T. Gounder Jun 14 '11 at 05:39
  • I don't think you can increase the quality beyond what this method can offer. – Marty Jun 14 '11 at 05:53