繁体   English   中英

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

[英]Flash AS3 and webcam: problems with AIR

我在使Flash AS3相机正常工作时遇到一些问题。 如果可以帮助,不胜感激。 我看着ol的细节:

发布到SWF时,我能够启动并运行网络摄像头,并且一切正常,然后弹出“我可以访问您的摄像头对话框”,该对话框返回是否静音。

•第一个问题:有没有办法做到这一点,以便我可以绕开用户权限,即始终授予它? 我们正在运行信息亭应用。 以下方法适用于AIR应用程序吗? https://stackoverflow.com/questions/3266939/flash-grant-access-to-webcam-programmatically-behind-the-scenes

•第二个问题:正如我所说,在IDE和浏览器中发布SWF时,我可以使网络摄像头/相机连接正常运行。 但是,如果我将项目切换为针对AIR发布并运行air应用程序,或者在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); 
    }

如果您以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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM