Экспорт анимационной последовательности из Flash в формате JPEG - PullRequest
0 голосов
/ 08 мая 2009

Мне интересно, возможно ли вообще что-то вроде записывать / захватывать состояние SWF-фильма в течение определенного периода времени и сохранять все это в виде jpgs на сервере?

AS3 имеет новый класс com.adobe.images.JPGEncoder, который, кажется, выполняет свою работу, но могу ли я захватить последовательность? Будет надежда, что я смогу собрать его обратно в виде видео или анимации.

Существуют ли другие способы программного кодирования SWF-видео?

1 Ответ

1 голос
/ 08 мая 2009

Я сделал «захват экрана» перед использованием JPGEncoder, поэтому я думаю, что вы должны быть в состоянии сделать снимок экрана при событии ENTER_FRAME. Это может не работать, так как кодирование JPG не очень быстрое.

Вот так я и поступил бы. Для справки вот код, который делает это (для одного скриншота):

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, а затем сохранить файл под разными именами файлов. Также вместо сцены вы можете использовать другой экранный объект.

Я не знаю, как быстро это будет работать, возможно, вам придется снизить частоту кадров, чтобы ENTER_FRAME не вызывался так часто, но вы потеряете некоторое качество в ваших рендерингах JPG.

Также понижаем качество в строке: new JPGEncoder(100) от 100 до более низкого значения может помочь с размерами файлов jpegs (но может или не может повлечь за собой больше накладных расходов при сжатии).

...