0

我想知道是否有可能在一段时间内记录/捕获 swf 电影的状态并将其全部保存为 jpgs 到服务器?

AS3 有新的 com.adobe.images.JPGEncoder 类,似乎可以完成这项工作,但我可以捕获序列吗?希望我能把它重新组合成视频或动画。

还有其他方法可以以编程方式将 swf 编码为视频吗?

4

1 回答 1

1

在使用 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 到较低的值可能有助于 jpeg 的文件大小(但可能会或可能不会因压缩而产生更多开销)。

于 2009-05-08T16:13:10.597 回答