Camera类

使用 Camera 类可从连接到运行 Flash Player 的计算机的摄像头中 捕获视频。 使用 Video 类可在本地监视视频。 使用 NetConnection  和 NetStream 类可将视频传输到 Flash Media Server。 Flash Media  Server 可以将视频流发送到其它服务器,并向运行 Flash Player 的其它客户端广播此视频流。   若要创建或引用 Camera 对象,请使用 getCamera() 方法。

公共属性:

activityLevel : Number--摄像头正在检测的运动量。 bandwidth : int--当前输出视频输入信号可以使用的最大带宽, 以字节为单位。 constructor : Object--对类对象或给定对象实例的构造函数的引用。 currentFPS : Number--摄像头捕获数据的速率,以每秒帧数为单位。 fps : Number--摄像头捕获数据的最大速率,以每秒帧数为单位。  height : int--当前捕获高度,以像素为单位。 index : int--从零开始的整数,指定由 names 属性返回的数组中所 反映的摄像头的索引。 keyFrameInterval : int--完整传输而没有使用视频压缩算法进行插 值处理的视频帧(称为关键帧)数。  loopback : Boolean--指示在本地查看摄像头所捕获的图像时是进行 压缩和解压缩 (true),就像使用 Flash Media Server 进行实时传输 一样,还是不进行压缩 (false)。 motionLevel : int--调用 activity 事件所需的运动量。 motionTimeout : int--摄像头停止检测运动的时间与调用 activity 事件的时间之间相差的毫秒数。  muted : Boolean--布尔值,指示用户在 Flash Player 的“隐私”对 话框中是拒绝访问摄像头 (true) 还是允许访问 (false)。 name : String--由摄像头硬件返回的当前摄像头的名称。 names : Array--[静态]字符串数组,指示所有可用的摄像头名称, 而不显示 Flash Player 的“隐私”对话框。 prototype : Object--[静态] 对类或函数对象的原型对象的引用。 quality : int--所需的图片品质级别,该级别是由应用于每个视 频帧的压缩量决定的。 width : int--当前捕获宽度,以像素为单位。

公共方法: getCamera(name:String = null):Camera--[静态] 返回对用于捕获视 频的 Camera 对象的引用。

setKeyFrameInterval(keyFrameInterval:int):void--指定进行完整传输 而不由视频压缩算法进行插值处理的视频帧(称为关键帧)。 setLoopback(compress:Boolean = false):void--指定在本地查看摄像 头时是否使用压缩视频流。

setMotionLevel(motionLevel:int, timeout:int = 2000):void--指定调度  activity 事件所需的运动量。

setQuality(bandwidth:int, quality:int):void--设置每秒的最大带宽或 当前输出视频输入信号所需的画面质量 setMode(width:int, height:int, fps:Number, favorArea:Boolean = true):void 将摄像头的捕获模式设置为最符合指定要求的本机模式。

实例如下:

package
{
 import flash.display.Bitmap;
 import flash.display.BitmapData;
 import flash.display.Sprite;
 import flash.events.ActivityEvent;
 import flash.events.Event;
 import flash.geom.Matrix;
 import flash.media.Camera;
 import flash.media.Video;
 
 public class Main extends Sprite
 {
  private var cam:Camera = Camera.getCamera();
  private var vid:Video;
  private var bt:Bitmap = new Bitmap();
  private var btd:BitmapData;
  public function Main()
  {
    if(stage == null)
    {
    init(null);
   }else
   {
    addEventListener(Event.ADDED_TO_STAGE,init);
   }
  }
  private function init(e:Event):void
  {
   removeEventListener(Event.ADDED_TO_STAGE,init);
   vid = new Video(400,400);
   btd = new BitmapData(400,400,false)
   bt.bitmapData = btd;
   this.addChild(bt);
   addEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
   cam.setMode(400,400,15);
   vid.attachCamera(cam);
   cam.setMotionLevel(60,2000);
   cam.addEventListener(ActivityEvent.ACTIVITY,onActivityhandler);
  }
  
  protected function onActivityhandler(event:ActivityEvent):void
  {
    switch (event.activating)
    {
      case true:
       trace("动了"+cam.activityLevel);
       break;
      case false:
       trace("停止"+ cam.activityLevel)
       break;
     
    }
  }
  
  protected function onEnterFrameHandler(event:Event):void
  {
    btd.draw(vid,new Matrix(-1,0,0,1,400,0));
  }
 }
}