0

fullHD で 180 フレームを含む .flv があるとします。

これを Flash (または flex) にインポートし、ビューをクリックしてドラッグすることでタイムラインをスムーズにナビゲートできるようにしたいと考えています。

どうすればいいですか?

私の現在の解決策は、各フレームを BitmapData 配列にロードすることですが、これは機能しますが、1.5 GB のメモリを使用するため、問題が発生する可能性があります。

クリックして左右にドラッグして、フレームを前後にスムーズにスクロールできる方法だけが必要です。

私の簡単なテストでは、本当に遅いです。

これは私の簡単なテストコードです。

import flash.events.Event;
import flash.events.MouseEvent;

stop();

var mouseDownValue:Boolean = false;
var currentFrameValue:int = 0;
var maxFramesValue:int = 180;
var oldMouseX:int;


myMovie.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
myMovie.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
myMovie.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);


function mouseDownHandler(evt:MouseEvent):void{
    mouseDownValue = true;
}

function mouseUpHandler(evt:MouseEvent):void{
    mouseDownValue = false;
}

function mouseMoveHandler(evt:MouseEvent):void{
    if(mouseDownValue){
        if(oldMouseX<0) oldMouseX = mouseX;
        currentFrameValue += (oldMouseX - mouseX)/2;
        if(currentFrameValue>=(maxFramesValue-2)) currentFrameValue -= (maxFramesValue-1);
        if(currentFrameValue<0) currentFrameValue += (maxFramesValue-1);

        myMovie.gotoAndStop(currentFrameValue+1);

        oldMouseX = mouseX;
    }
}
4

3 に答える 3

1

フレームごとにキーフレームを追加してビデオファイルを再圧縮する必要があると思います(キーフレーム距離= 1)-Adobe Media Encoderには、上記の距離を設定するオプションがあります。

結果のファイルは現在よりも大きくなりますが、180 ビットマップよりも小さいはずです。

タイムラインに埋め込むときは、キーフレームの距離を変更しないでください。

Flash は「キーフレーム」と呼ばれるフレームにのみ「ジャンプ」できます。ビデオがタイムライン上にある場合、任意のフレームにジャンプできますが、最初にキーフレームを読み取ってから重い計算を行う必要があるため、遅延が発生します。

于 2013-05-08T11:52:27.110 に答える
0

写真を SWF とは別に保存し、必要なときに 1 つずつ読み込む必要があるのではないでしょうか? つまり、URLLoader クラスを使用してビットマップをロードし、loader.data を Bitmap タイプのオブジェクトに保存してから表示することができます。もちろん、新しい画像をロードするたびに、以前の画像を削除する必要があります。

于 2013-05-08T11:51:58.830 に答える
0

ええ...データをストリーミングします。サイズが与えられていると仮定してローカルで実行される場合は問題にならないはずです。どちらの側でも現在のフレームに最も近いフレームをロードし、他のフレームを取り除きます...また、本当にフル HD ビデオが必要ですか? 場合によっては、それを引き伸ばしても品質の低下をほとんど感じないことがあります...また、ビットマップデータ配列を使用しないでください。これは巨大です。圧縮されていることを確認してください...

于 2013-05-23T17:58:27.140 に答える