0

私は iPad 用のビデオ キャプチャおよび再生ソリューションを作成する任務を負っていますが、これには常時インターネット接続の利点はありません。私たちはこれをクロスプラットフォームにしたいと考えており、私は Flex をよく知っているので、ActionScript でこれを実行しようとしました。これを解決するために、主に 2 つの方法を試しました。

Flex で Camera を Video オブジェクトにアタッチしてから、フレームのキャプチャを開始できます。各フレームをローカル メモリに保存し (インターネットがないため)、後でアップロードする必要があります。アップロードとメモリ管理の問題のために、ビデオが巨大でないことを確認する必要があります。私の最初の試みは、約 30 の FPS 間隔で現在のフレームのスクリーン ショットを撮ることでした。次に、フレームを縮小してローカル ストアに保存しました。それは機能し、私のビデオは小さいです。しかし、その後、プレーヤーを作成してビデオを再生すると (フレームを全画面表示に戻す)、ビデオが非常にピクセル化され、歪んだ 8 ビット ビデオのように見えます。それはうまくいきません。私は次のようにスケーリングしてキャプチャしました:

        video.clear();          
        offScreenBMP.lock();            
        offScreenBMP.fillRect(fillRect, 0x000000);
        offScreenBMP.draw(video, matrix, null, null, null, true);           
        offScreenBMP.unlock();

次に、ビデオのフレームのフルスクリーン画像を取得してから、ピクセルの変更について n - 1 フレームと n フレームを比較し、変更されたピクセルのベクトルを保存してみました。それらの数が非常に多いため、フルサイズの画像の完全な ByteArray を保存するだけでは機能しません。これは、メモリが不足し、アップロードがひどくなり、UI パフォーマンスが許容できないためです。

else {          
            var  pixelVect:Vector.<Pixel> = new Vector.<Pixel>();
            //the number of x pixels
            var cols:int = lastScreenBMP.width;
            //the number of y pixels
            var rows:int = lastScreenBMP.height;
            for(var i:int = 0; i < cols; i++) {
                for(var j:int = 0; j < rows; j++) {
                    if(lastScreenBMP.getPixel(i, j) != offScreenBMP.getPixel(i, j)) {
                        var p:Pixel = new Pixel();
                        p.pixelX = i;
                        p.pixelY = j;
                        p.pixel = offScreenBMP.getPixel(i, j);
                        pixelVect.push(p);
                    }
                }
            }
            recordLocation.setProperty("gtvideo" + imageSaving, pixelVect);
            lastScreenBMP.copyPixels(offScreenBMP, new Rectangle(0, 0, offScreenBMP.width, offScreenBMP.height), 
                new Point(0, 0));
        }

残念ながら、Flex にはビデオをキャプチャする優れた方法がなく、私の試みはどちらも受け入れられません。しかし、私はそれに固執し、可能であれば独自のものを構築したいと考えています。iOS 固有のソリューションを作成する場合、Android でも同様に作成する必要があります。Flex でこれを実現できれば、すべてのプラットフォーム (デスクトップも含む) で 1 つのソリューションの利点を得ることができます。誰かが同様の問題に直面したことがありますか、および/またはこれを克服する方法について何か考えがありますか?

4

0 に答える 0