2009-05-08 6 views
0

ある期間にわたってswfムービーの状態を記録/取り込み、jpgとしてサーバーに保存することができますか?FlashからアニメーションシーケンスをJPEGとしてエクスポートする

AS3には、仕事をするような新しいcom.adobe.images.JPGEncoderクラスがありますが、シーケンスを取得できますか?ビデオやアニメーションとして戻すことができれば幸いです。

swfをビデオにプログラムでエンコードする他の方法はありますか?

答えて

1

JPGEncoderを使用する前に「画面キャプチャ」を行っていますので、ENTER_FRAMEイベントで画面をキャプチャできるはずです。 JPGエンコーディングが超高速ではないため、これは機能しない可能性があります。

これが私のやり方です。あなたはおそらくあなたのENTER_FRAMEイベントハンドラで呼ばれるように、これを拡張し、別のファイル名にファイルを保存することができます

var fileReference:FileReference = new FileReference(); 

// Capture the BitmapData of the stage for example 
var captureMovieClip:DisplayObjectContainer = stage; 

var stage_snapshot:BitmapData = new BitmapData(captureMovieClip.width, captureMovieClip.height); 
stage_snapshot.draw(captureMovieClip); 

// Setup the JPGEncoder, run the algorithm on the BitmapData, and retrieve the ByteArray 
var encoded_jpg:JPGEncoder = new JPGEncoder(100); 
var jpg_binary:ByteArray = encoded_jpg.encode(stage_snapshot); 

// save 
fileReference.save(jpg_binary, "screenshot.jpg"); 

:あなたの参考のために、ここでは(単一のスクリーンショットのために)これを実行するいくつかのコードです。ステージの代わりに、別の表示オブジェクトを使用することもできます。

これがどれくらい速く実行されるかはわかりませんが、フレームレートを下げてENTER_FRAMEをあまり呼び出さないようにする必要がありますが、JPGのレンダリングでは品質が低下します。

new JPGEncoder(100) を100より低い値に設定すると、jpegのファイルサイズに役立ちます(ただし、圧縮でオーバーヘッドが増える場合もあります)。

関連する問題