Es ist möglich eine Webcam in Flash einzubinden. Hierzu benötigt man eine Instanz der Camera Klasse siehe Referenzen und der Video Klasse. Mit attachVideo wird die Camera Instanz an die Video Instanz gehängt. Die Video Klasse kann man wie andere Display Objects behandeln. Die Camera Klasse bietet mehrere Eigenschaften und Methoden, um zu Überwachen, ob eine Webcam angeschlossen und zugeteilt wurde. So wird beispielsweise die Eigenschaft Camera.isSupported eingesetzt, um zu überprüfen ob überhaupt eine Kamera installiert ist beziehungsweise im System zur Verfügung steht. Diese Eigenschaft Camera.isSupported steht aber erst ab CS5 zur Verfügung. In den Referenzen befindet sich ein Beispiel (Camera_getCameraExample) aller möglichen Überprüfungen.
Hier eine einfache Art und Weise die Webcam in die swf-Datei einzubinden.
Beispiel webcam1.swf
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
var video:Video;
var cam:Camera=Camera.getCamera();
// Kamera-Modus festlegen: 400x300 mit 15 Bildern pro Sekunde
cam.setMode(400,300,15);
// Anzahl der Keyframes festlegen (für eine Uebertragung an den FMS): Keyframe alle 50 Bilder
cam.setKeyFrameInterval(50);
// Qualitaet einstellen (für eine Uebertragung an den FMS): Bandbreite ist 16384 Bytes pro Sekunde, Qualität wird angepasst (=0)
cam.setQuality(16384,0);
if (cam!=null) {
video=new Video(cam.width,cam.height);
video.attachCamera(cam);
addChild(video);
}
else {
trace("You need a camera.");
}
Hier wird die Webcam mittels bitmapData und einem Filter verändert.
Beispiel webcam4Convolution.swf
//filter Convolution
var matrix:Array = [-2, -1, 0,
-1, 1, 1,
0, 1, 2];
var matrixX:Number=3;
var matrixY:Number=3;
var divisor:Number=1;
var convFilter:BitmapFilter=new ConvolutionFilter(matrixX,matrixY,matrix,divisor);
var myfilter:Array = new Array();
myfilter.push(convFilter);
var fps:int=25;// frames per second you want to grab and display
var cam:Camera;
var video:Video;
cam=Camera.getCamera();
cam.setMode(400,300,fps);
if (cam!=null) {
video=new Video(cam.width,cam.height);
video.attachCamera(cam);
// make a BitmapData object on which you can draw to video
var bmd:BitmapData=new BitmapData(cam.width,cam.height,false,0);
// rectangle and pointer for applying filter
var rect:Rectangle=new Rectangle(0,0,bmd.width,bmd.height);
var point:Point=new Point(0,0);
// --- BitmapData ------------------------
var canvasBitmap:Bitmap=new Bitmap(bmd);// link BitmapData to Bitmap
addChild(canvasBitmap);// add Bitmap to stage
// --- Timer to refresh the image --------------------------------------------
var refreshTimer:Timer=new Timer(1000/25);// 1000ms / 25fps
refreshTimer.start();
refreshTimer.addEventListener(TimerEvent.TIMER, imageRefresh);
}
else {
trace("You need a camera.");
}
function imageRefresh(e:Event)
{
// draw video on BitmapData
bmd.draw(video);
bmd.applyFilter(bmd,rect,point,convFilter);
}