Flash AS3和网络摄像头:AIR的问题

时间:2013-04-01 19:53:21

标签: actionscript-3 air webcam

我在使Flash AS3相机正常工作时遇到了一些问题。如果你能提供帮助,非常感谢。我看了ol的细节:

我能够在发布到SWF时,让网络摄像头启动并运行并且一切正常,弹出“我可以访问你的相机对话框”,它会返回静音状态。

•第一个问题:有没有办法让它可以绕过用户权限,总是授予它?我们正在运行一个自助服务终端应用。以下方法是否适用于AIR应用程序? https://stackoverflow.com/questions/3266939/flash-grant-access-to-webcam-programmatically-behind-the-scenes

•第二个问题:正如我所说,我可以让网络摄像头/摄像头连接在IDE和浏览器中发布SWF时正常工作。但是,如果我将项目切换为AIR的发布并运行air app,或者在IDE中进行测试,我根本不会得到安全权限对话框。没有。也许安全盒在屏幕外?有没有办法控制位置?在AIR中使用网络摄像头有什么不同吗?

我很高兴不发布到AIR,但是要使用SWF - 只需要能够读取/写入本地磁盘上的XML文件并认为AIR只能这样做吗?

感谢您的帮助!

代码:

private function initTracking() : void
    {

        var camW : int = 840;
        var camH : int = 640;

        // Create the camera
        _cam = Camera.getCamera();

        if (_cam == null) 
        { 
            trace("Unable to locate available cameras."); 
            return;
        } 
        else 
        { 
            trace("Found camera: " + _cam.name); 
            _cam.addEventListener(StatusEvent.STATUS, camStatusHandler); 

            _cam.setMode(camW, camH, stage.frameRate);

            // Create a video
            _vid = new Video(camW, camH);
            _vid.attachCamera(_cam);
            trace("camera ", _cam, " attached to video ", _vid);

            // Create the Motion Tracker
            _motionTracker = new MotionTracker(_vid);

            // We flip the input as we want a mirror image
            _motionTracker.flipInput = true;

        }
    }


    private function camStatusHandler(event:StatusEvent):void 
    { 
                trace("camStatusHandler::");

        if (_cam.muted) 
        { 
            trace("Unable to connect to active camera."); 
        } 
        else 
        { 

        trace("able to connect to active camera.");
                addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false,0,true);

        } 
        // Remove the status event listener. 
        _cam.removeEventListener(StatusEvent.STATUS, camStatusHandler); 
    }

1 个答案:

答案 0 :(得分:1)

如果您发布为AIR,则没有安全对话框(swfs的安全框可以阻止'黑客'在用户不知情的情况下控制用户网络摄像头。)

如果您的代码在swf中运行,它也可以在AIR应用程序中运行而无需任何更改 - 假设AIR在桌面而不是移动设备上运行?

如果您在发布为AIR应用时未看到网络摄像头输出,请发布相关代码。

编辑:

AIR应用程序不会发生StatusEvent.STATUS事件 - 当用户关闭安全对话框时会触发它 - 因此永远不会调用camStatusHandler。

所以完全删除camStatusHandler函数,也就是这行:

_cam.addEventListener(StatusEvent.STATUS, camStatusHandler);

并将来自camStatusHandler的重要代码添加到initTracking的末尾:

addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false,0,true);