簡體   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