初步说明:我使用haxe编写和编译代码。
案例如下:我在同一台机器上最多有四台摄像机,我需要单独捕获它们。 flash.media.Camera.getCamera()有一个名字,我想这是我想要定位的相机的名称。我从flash.media.Camera.names数组中获取名称。
是否真的可以捕获目标摄像头,还是只能始终获得系统默认值? flash.media.Camera.names列出了所有附加的摄像头,所以我真的希望我可以单独定位它们。
以下是相关代码。
class Capture {
static function main(){
var mc:flash.display.MovieClip = flash.Lib.current;
var i:Int = 0;
trace(flash.media.Camera.names);
for(camera in flash.media.Camera.names){
trace(camera);
trace(Type.typeof(camera));
var xpos = 490;
var ypos = 10;
var rawvideo:flash.media.Video = new flash.media.Video(480, 360);
var cam:flash.media.Camera = flash.media.Camera.getCamera(camera);
trace(cam);
cam.setMode(640, 480, 30);
cam.setQuality(0, 100);
rawvideo.attachCamera(cam);
rawvideo.scaleX = -1;
switch(i){
case 0:
case 1:
xpos += 490;
case 2:
ypos += 370;
case 3:
xpos += 490;
ypos += 370;
}
i++;
rawvideo.x = xpos;
rawvideo.y = ypos;
if (cam != null){
var videoContainer:flash.display.MovieClip = new flash.display.MovieClip();
videoContainer.addChild(rawvideo);
mc.addChild(videoContainer);
} else {
trace("No Camera");
}
}
}
}
答案 0 :(得分:1)
奇怪的是,getCamera并没有真正采用摄像机名称(来自names数组),而是一个表示names数组中索引位置的字符串。来自Camera getCamera文档:
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").