Packagecom.gestureworks.cml.element
Classpublic final class Camera
InheritanceCamera Inheritance ObjectFactory Inheritance flash.events.EventDispatcher

The Camera element captures video from the client system's camera. Use the Video class to monitor the video locally. Use the NetConnection and NetStream classes to transmit the video to Flash Media Server. Flash Media Server can send the video stream to other servers and broadcast it to other clients running Flash Player.

A Camera instance captures video in landscape aspect ratio. On devices that can change the screen orientation, such as mobile phones, a Video object attached to the camera will only show upright video in a landscape-aspect orientation. Thus, mobile apps should use a landscape orientation when displaying video and should not auto-rotate.

As of AIR 2.6, autofocus is enabled automatically on mobile devices with an autofocus camera. If the camera does not support continuous autofocus, and many mobile device cameras do not, then the camera is focused when the Camera object is attached to a video stream and whenever the setMode() method is called. On desktop computers, autofocus behavior is dependent on the camera driver and settings.

In an AIR application on Android and iOS, the camera does not capture video while an AIR app is not the active, foreground application. In addition, streaming connections can be lost when the application is in the background. On iOS, the camera video cannot be displayed when an application uses the GPU rendering mode. The camera video can still be streamed to a server.

Mobile Browser Support: This class is not supported in mobile browsers.

AIR profile support: This feature is supported on desktop operating systems, but it is not supported on all mobile devices. It is not supported on AIR for TV devices. See AIR Profile Support for more information regarding API support across multiple profiles.

You can test for support at run time using the Camera.isSupported property. Note that for AIR for TV devices, Camera.isSupported is true but Camera.getCamera() always returns null.

For information about capturing audio, see the Microphone class.

Important: Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the camera. Make sure your application window size is at least 215 x 138 pixels; this is the minimum size required to display the dialog box.

To create or reference a Camera object, use the getCamera() method.

EXAMPLE: The following example shows the image from a camera after acknowledging the security warning. The Stage is set such that it cannot be scaled and is aligned to the top-left of the player window. The activity event is dispatched at the start and end (if any) of the session and is captured by the activityHandler() method, which prints out information about the event.

Note: A camera must be attached to your computer for this example to work correctly.

     
       package {
     import flash.display.Sprite;
     import flash.display.StageAlign;
     import flash.display.StageScaleMode;
     import flash.events.
     import flash.media.Camera;
     import flash.media.Video;
     
       public class CameraExample extends Sprite {
     private var video:Video;
     
       public function CameraExample() {
     stage.scaleMode = StageScaleMode.NO_SCALE;
     stage.align = StageAlign.TOP_LEFT;
     
       var camera:Camera = Camera.getCamera();
     
       if (camera != null) {
     camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
     video = new Video(camera.width 2, camera.height 2);
     video.attachCamera(camera);
     addChild(video);
     } else {
     //trace("You need a camera.");
     }
     }
     
       private function activityHandler(event:ActivityEvent):void {
     //trace("activityHandler: " + event);
     }
     }
     }
     



Public Properties
 PropertyDefined By
  activityLevel : Number
[read-only] The amount of motion the camera is detecting.
Camera
  bandwidth : int
[read-only] The maximum amount of bandwidth the current outgoing video feed can use, in bytes.
Camera
 InheritedcmlIndex : int
sets the index of cml
ObjectFactory
  currentFPS : Number
[read-only] The rate at which the camera is capturing data, in frames per second.
Camera
  fps : Number
[read-only] The maximum rate at which the camera can capture data, in frames per second.
Camera
  height : int
[read-only] The current capture height, in pixels.
Camera
 Inheritedid : String
sets the id
ObjectFactory
  index : int
[read-only] A zero-based integer that specifies the index of the camera, as reflected in the array returned by the names property.
Camera
  isSupported : Boolean
[static] [read-only] The isSupported property is set to true if the Camera class is supported on the current platform, otherwise it is set to false.
Camera
  keyFrameInterval : int
[read-only] The number of video frames transmitted in full (called keyframes) instead of being interpolated by the video compression algorithm.
Camera
  loopback : Boolean
[read-only] Indicates whether a local view of what the camera is capturing is compressed and decompressed (true), as it would be for live transmission using Flash Media Server, or uncompressed (false).
Camera
  motionLevel : int
[read-only] The amount of motion required to invoke the activity event.
Camera
  motionTimeout : int
[read-only] The number of milliseconds between the time the camera stops detecting motion and the time the activity event is invoked.
Camera
  muted : Boolean
[read-only] A Boolean value indicating whether the user has denied access to the camera (true) or allowed access (false) in the Flash Player Privacy dialog box.
Camera
  name : String
[read-only] The name of the current camera, as returned by the camera hardware.
Camera
  names : Array
[static] [read-only] An array of strings indicating the names of all available cameras without displaying the Flash Player Privacy dialog box.
Camera
 InheritedpropertyStates : Array
Deprecated: Please Use state
ObjectFactory
  quality : int
[read-only] The required level of picture quality, as determined by the amount of compression being applied to each video frame.
Camera
 Inheritedstate : Array
property states array
ObjectFactory
  width : int
[read-only] The current capture width, in pixels.
Camera
Public Methods
 MethodDefined By
  
Constructor
Camera
 Inherited
clone():*
Returns clone of self
ObjectFactory
  
dispose():void
[override] Dispose method to nullify the attribute
Camera
  
getCamera(name:String = null):Camera
Returns a reference to a Camera object for capturing video.
Camera
 Inherited
parseCML(cml:XMLList):XMLList
parses cml file
ObjectFactory
 Inherited
postparseCML(cml:XMLList):void
postparse method
ObjectFactory
  
setCursor(value:Boolean):void
Camera
  
setKeyFrameInterval(keyFrameInterval:int):void
Specifies which video frames are transmitted in full (called keyframes) instead of being interpolated by the video compression algorithm.
Camera
  
setLoopback(compress:Boolean = false):void
Specifies whether to use a compressed video stream for a local view of the camera.
Camera
  
setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void
Sets the camera capture mode to the native mode that best meets the specified requirements.
Camera
  
setMotionLevel(motionLevel:int, timeout:int = 2000):void
Specifies how much motion is required to dispatch the activity event.
Camera
  
setQuality(bandwidth:int, quality:int):void
Sets the maximum amount of bandwidth per second or the required picture quality of the current outgoing video feed.
Camera
 Inherited
updateProperties(state:Number = 0):void
update the properties
ObjectFactory
Events
 Event Summary Defined By
  Dispatched when a camera begins or ends a session.Camera
  Dispatched when a camera reports its status.Camera
Property Detail
activityLevelproperty
activityLevel:Number  [read-only]

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

The amount of motion the camera is detecting. Values range from 0 (no motion is being detected) to 100 (a large amount of motion is being detected). The value of this property can help you determine if you need to pass a setting to the setMotionLevel() method. If the camera is available but is not yet being used because the Video.attachCamera() method has not been called, this property is set to -1.If you are streaming only uncompressed local video, this property is set only if you have assigned a function to the event handler. Otherwise, it is undefined.


Implementation
    public function get activityLevel():Number
bandwidthproperty 
bandwidth:int  [read-only]

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

The maximum amount of bandwidth the current outgoing video feed can use, in bytes. A value of 0 means the feed can use as much bandwidth as needed to maintain the desired frame quality. To set this property, use the setQuality() method.


Implementation
    public function get bandwidth():int
currentFPSproperty 
currentFPS:Number  [read-only]

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

The rate at which the camera is capturing data, in frames per second. This property cannot be set; however, you can use the setMode() method to set a related property—fps—which specifies the maximum frame rate at which you would like the camera to capture data.


Implementation
    public function get currentFPS():Number
fpsproperty 
fps:Number  [read-only]

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

The maximum rate at which the camera can capture data, in frames per second. The maximum rate possible depends on the capabilities of the camera; this frame rate may not be achieved. To set a desired value for this property, use the setMode() method.To determine the rate at which the camera is currently capturing data, use the currentFPS property.


Implementation
    public function get fps():Number
heightproperty 
height:int  [read-only]

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

The current capture height, in pixels. To set a value for this property, use the setMode() method.


Implementation
    public function get height():int
indexproperty 
index:int  [read-only]

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

A zero-based integer that specifies the index of the camera, as reflected in the array returned by the names property.


Implementation
    public function get index():int
isSupportedproperty 
isSupported:Boolean  [read-only]

Language Version : ActionScript 3.0
Runtime Versions : Flash Player 10.1, AIR 2

The isSupported property is set to true if the Camera class is supported on the current platform, otherwise it is set to false.


Implementation
    public static function get isSupported():Boolean
keyFrameIntervalproperty 
keyFrameInterval:int  [read-only]

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

The number of video frames transmitted in full (called keyframes) instead of being interpolated by the video compression algorithm. The default value is 15, which means that every 15th frame is a keyframe. A value of 1 means that every frame is a keyframe. The allowed values are 1 through 48.


Implementation
    public function get keyFrameInterval():int
loopbackproperty 
loopback:Boolean  [read-only]

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

Indicates whether a local view of what the camera is capturing is compressed and decompressed (true), as it would be for live transmission using Flash Media Server, or uncompressed (false). The default value is false. Although a compressed stream is useful for testing, such as when previewing video quality settings, it has a significant processing cost. The local view is compressed, edited for transmission as it would be over a live connection, and then decompressed for local viewing. To set this value, use Camera.setLoopback(). To set the amount of compression used when this property is true, use Camera.setQuality().


Implementation
    public function get loopback():Boolean
motionLevelproperty 
motionLevel:int  [read-only]

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

The amount of motion required to invoke the activity event. Acceptable values range from 0 to 100. The default value is 50. Video can be displayed regardless of the value of the motionLevel property. For more information, see setMotionLevel().


Implementation
    public function get motionLevel():int
motionTimeoutproperty 
motionTimeout:int  [read-only]

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

The number of milliseconds between the time the camera stops detecting motion and the time the activity event is invoked. The default value is 2000 (2 seconds). To set this value, use setMotionLevel().


Implementation
    public function get motionTimeout():int
mutedproperty 
muted:Boolean  [read-only]

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

A Boolean value indicating whether the user has denied access to the camera (true) or allowed access (false) in the Flash Player Privacy dialog box. When this value changes, the statusevent is dispatched.


Implementation
    public function get muted():Boolean
nameproperty 
name:String  [read-only]

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

The name of the current camera, as returned by the camera hardware.


Implementation
    public function get name():String
namesproperty 
names:Array  [read-only]

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

An array of strings indicating the names of all available cameras without displaying the Flash Player Privacy dialog box. This array behaves in the same way as any other ActionScript array, implicitly providing the zero-based index of each camera and the number of cameras on the system (by means of names.length). For more information, see the names Array class entry. Calling the names property requires an extensive examination of the hardware. In most cases, you can just use the default camera.On Android, only one camera is supported, even if the device has more than one camera devices. The name of the camera is always, "Default."


Implementation
    public static function get names():Array
qualityproperty 
quality:int  [read-only]

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

The required level of picture quality, as determined by the amount of compression being applied to each video frame. Acceptable quality values range from 1 (lowest quality, maximum compression) to 100 (highest quality, no compression). The default value is 0, which means that picture quality can vary as needed to avoid exceeding available bandwidth. To set this property, use the setQuality() method.


Implementation
    public function get quality():int
widthproperty 
width:int  [read-only]

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

The current capture width, in pixels. To set a desired value for this property, use the setMode() method.


Implementation
    public function get width():int
Constructor Detail
Camera()Constructor
public function Camera()

Constructor

Method Detail
dispose()method
override public function dispose():void

Dispose method to nullify the attribute

getCamera()method 
public function getCamera(name:String = null):Camera

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

Returns a reference to a Camera object for capturing video. To begin capturing the video, you must attach the Camera object to a Video object (see Video.attachCamera() ). To transmit video to Flash Media Server, call NetStream.attachCamera() to attach the Camera object to a NetStream object. Multiple calls to the getCamera() method reference the same camera driver. Thus, if your code contains code like firstCam:Camera = getCamera() and secondCam:Camera = getCamera(), both firstCam and secondCam reference the same camera, which is the user's default camera.On iOS devices with a both a front- and a rear-facing camera, you can only capture video from one camera at a time. On Android devices, you can only access the rear-facing camera.In general, you shouldn't pass a value for the name parameter; simply use getCamera() to return a reference to the default camera. By means of the Camera settings panel (discussed later in this section), the user can specify the default camera to use. You can't use ActionScript to set a user's Allow or Deny permission setting for access to the camera, but you can display the Adobe Flash Player Settings camera setting dialog box where the user can set the camera permission. When a SWF file using the attachCamera() method tries to attach the camera returned by the getCamera() method to a Video or NetStream object, Flash Player displays a dialog box that lets the user choose to allow or deny access to the camera. (Make sure your application window size is at least 215 x 138 pixels; this is the minimum size Flash Player requires to display the dialog box.) When the user responds to the camera setting dialog box, Flash Player returns an information object in the status event that indicates the user's response: Camera.muted indicates the user denied access to a camera; Camera.Unmuted indicates the user allowed access to a camera. To determine whether the user has denied or allowed access to the camera without handling the status event, use the muted property.In Flash Player, the user can specify permanent privacy settings for a particular domain by right-clicking (Windows and Linux) or Control-clicking (Macintosh) while a SWF file is playing, selecting Settings, opening the Privacy dialog, and selecting Remember. If the user selects Remember, Flash Player no longer asks the user whether to allow or deny SWF files from this domain access to your camera.Note: The attachCamera() method will not invoke the dialog box to Allow or Deny access to the camera if the user has denied access by selecting Remember in the Flash Player Settings dialog box. In this case, you can prompt the user to change the Allow or Deny setting by displaying the Flash Player Privacy panel for the user using Security.showSettings(SecurityPanel.PRIVACY).If getCamera() returns null, either the camera is in use by another application, or there are no cameras installed on the system. To determine whether any cameras are installed, use the names.length property. To display the Flash Player Camera Settings panel, which lets the user choose the camera to be referenced by getCamera(), use Security.showSettings(SecurityPanel.CAMERA). Scanning the hardware for cameras takes time. When the runtime finds at least one camera, the hardware is not scanned again for the lifetime of the player instance. However, if the runtime doesn't find any cameras, it will scan each time getCamera is called. This is helpful if the camera is present but is disabled; if your SWF file provides a Try Again button that calls getCamera, Flash Player can find the camera without the user having to restart the SWF file.

Parameters

name:String (default = null) — Specifies which camera to get, as determined from the array returned by the names property. For most applications, get the default camera by omitting this parameter. To specify a value for this parameter, use the string representation of the zero-based index position within the Camera.names array. For example, to specify the third camera in the array, use Camera.getCamera("2").

Returns
Camera — If the name parameter is not specified, this method returns a reference to the default camera or, if it is in use by another application, to the first available camera. (If there is more than one camera installed, the user may specify the default camera in the Flash Player Camera Settings panel.) If no cameras are available or installed, the method returns null.
setCursor()method 
public function setCursor(value:Boolean):void

Parameters

value:Boolean

setKeyFrameInterval()method 
public function setKeyFrameInterval(keyFrameInterval:int):void

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

Specifies which video frames are transmitted in full (called keyframes) instead of being interpolated by the video compression algorithm. This method is applicable only if you are transmitting video using Flash Media Server. The Flash Video compression algorithm compresses video by transmitting only what has changed since the last frame of the video; these portions are considered to be interpolated frames. Frames of a video can be interpolated according to the contents of the previous frame. A keyframe, however, is a video frame that is complete; it is not interpolated from prior frames.To determine how to set a value for the keyFrameInterval parameter, consider both bandwidth use and video playback accessibility. For example, specifying a higher value for keyFrameInterval (sending keyframes less frequently) reduces bandwidth use. However, this may increase the amount of time required to position the playhead at a particular point in the video; more prior video frames may have to be interpolated before the video can resume.Conversely, specifying a lower value for keyFrameInterval (sending keyframes more frequently) increases bandwidth use because entire video frames are transmitted more often, but may decrease the amount of time required to seek a particular video frame within a recorded video.

Parameters

keyFrameInterval:int — A value that specifies which video frames are transmitted in full (as keyframes) instead of being interpolated by the video compression algorithm. A value of 1 means that every frame is a keyframe, a value of 3 means that every third frame is a keyframe, and so on. Acceptable values are 1 through 48.

setLoopback()method 
public function setLoopback(compress:Boolean = false):void

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

Specifies whether to use a compressed video stream for a local view of the camera. This method is applicable only if you are transmitting video using Flash Media Server; setting compress to true lets you see more precisely how the video will appear to users when they view it in real time. Although a compressed stream is useful for testing purposes, such as previewing video quality settings, it has a significant processing cost, because the local view is not simply compressed; it is compressed, edited for transmission as it would be over a live connection, and then decompressed for local viewing.To set the amount of compression used when you set compress to true, use Camera.setQuality().

Parameters

compress:Boolean (default = false) — Specifies whether to use a compressed video stream (true) or an uncompressed stream (false) for a local view of what the camera is receiving.

setMode()method 
public function setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void

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

Sets the camera capture mode to the native mode that best meets the specified requirements. If the camera does not have a native mode that matches all the parameters you pass, Flash Player selects a capture mode that most closely synthesizes the requested mode. This manipulation may involve cropping the image and dropping frames. By default, Flash Player drops frames as needed to maintain image size. To minimize the number of dropped frames, even if this means reducing the size of the image, pass false for the favorArea parameter.When choosing a native mode, Flash Player tries to maintain the requested aspect ratio whenever possible. For example, if you issue the command myCam.setMode(400, 400, 30), and the maximum width and height values available on the camera are 320 and 288, Flash Player sets both the width and height at 288; by setting these properties to the same value, Flash Player maintains the 1:1 aspect ratio you requested.To determine the values assigned to these properties after Flash Player selects the mode that most closely matches your requested values, use the width, height, and fps properties. If you are using Flash Media Server, you can also capture single frames or create time-lapse photography. For more information, see NetStream.attachCamera().

Parameters

width:int — The requested capture width, in pixels. The default value is 160.
 
height:int — The requested capture height, in pixels. The default value is 120.
 
fps:Number — The requested rate at which the camera should capture data, in frames per second. The default value is 15.
 
favorArea:Boolean (default = true) — Specifies whether to manipulate the width, height, and frame rate if the camera does not have a native mode that meets the specified requirements. The default value is true, which means that maintaining capture size is favored; using this parameter selects the mode that most closely matches width and height values, even if doing so adversely affects performance by reducing the frame rate. To maximize frame rate at the expense of camera height and width, pass false for the favorArea parameter.

setMotionLevel()method 
public function setMotionLevel(motionLevel:int, timeout:int = 2000):void

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

Specifies how much motion is required to dispatch the activity event. Optionally sets the number of milliseconds that must elapse without activity before Flash Player considers motion to have stopped and dispatches the event. Note: Video can be displayed regardless of the value of the motionLevel parameter. This parameter determines only when and under what circumstances the event is dispatched—not whether video is actually being captured or displayed. To prevent the camera from detecting motion at all, pass a value of 100 for the motionLevel parameter; the activity event is never dispatched. (You would probably use this value only for testing purposes—for example, to temporarily disable any handlers that would normally be triggered when the event is dispatched.) To determine the amount of motion the camera is currently detecting, use the activityLevel property. Motion sensitivity values correspond directly to activity values. Complete lack of motion is an activity value of 0. Constant motion is an activity value of 100. Your activity value is less than your motion sensitivity value when you're not moving; when you are moving, activity values frequently exceed your motion sensitivity value. This method is similar in purpose to the Microphone.setSilenceLevel() method; both methods are used to specify when the activity event should be dispatched. However, these methods have a significantly different impact on publishing streams: Microphone.setSilenceLevel() is designed to optimize bandwidth. When an audio stream is considered silent, no audio data is sent. Instead, a single message is sent, indicating that silence has started. Camera.setMotionLevel() is designed to detect motion and does not affect bandwidth usage. Even if a video stream does not detect motion, video is still sent.

Parameters

motionLevel:int — Specifies the amount of motion required to dispatch the activity event. Acceptable values range from 0 to 100. The default value is 50.
 
timeout:int (default = 2000) — Specifies how many milliseconds must elapse without activity before Flash Player considers activity to have stopped and dispatches the activity event. The default value is 2000 milliseconds (2 seconds).

setQuality()method 
public function setQuality(bandwidth:int, quality:int):void

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.

Event Detail
activity Event
Event Object Type: flash.events.ActivityEvent
ActivityEvent.type property = flash.events.ActivityEvent.ACTIVITY

Dispatched when a camera begins or ends a session.

status Event  
Event Object Type: flash.events.StatusEvent
StatusEvent.type property = flash.events.StatusEvent.STATUS

Dispatched when a camera reports its status.