ある期間にわたってswfムービーの状態を記録/取り込み、jpgとしてサーバーに保存することができますか?FlashからアニメーションシーケンスをJPEGとしてエクスポートする
AS3には、仕事をするような新しいcom.adobe.images.JPGEncoderクラスがありますが、シーケンスを取得できますか?ビデオやアニメーションとして戻すことができれば幸いです。
swfをビデオにプログラムでエンコードする他の方法はありますか?
ある期間にわたってswfムービーの状態を記録/取り込み、jpgとしてサーバーに保存することができますか?FlashからアニメーションシーケンスをJPEGとしてエクスポートする
AS3には、仕事をするような新しいcom.adobe.images.JPGEncoderクラスがありますが、シーケンスを取得できますか?ビデオやアニメーションとして戻すことができれば幸いです。
swfをビデオにプログラムでエンコードする他の方法はありますか?
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のファイルサイズに役立ちます(ただし、圧縮でオーバーヘッドが増える場合もあります)。