【问题标题】:Flash AS3 and webcam: problems with AIRFlash AS3 和网络摄像头:AIR 的问题
【发布时间】:2013-03-22 22:56:03
【问题描述】:

我在让 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); 
    }

【问题讨论】:

    标签: actionscript-3 air webcam


    【解决方案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);
    

    【讨论】:

    • 您是否得到任何错误跟踪或代码报告一切正常?
    • 在 IDE 中运行 AIR 应用程序时,我没有收到任何错误,但没有收到来自 camStatusHandler 的任何类型的报告。 - 它似乎没有被调用。我得到了找到相机的跟踪语句。 —— 客户端在 YCD kiosk 播放器中运行它,我希望我没有将它开发为 AIR,但我不确定如何优雅地处理文件写入/读取——它不会连接互联网,并且设置要在路上维护的本地服务器连接似乎很不稳定。
    • AIR 确实让本地保存变得更容易 - 我建议发布另一个关于从 swf 本地保存的问题,因为可能有一种解决方法(我可以想到一些潜在的解决方案)。
    • 太棒了!工作正常。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多