我怎样才能在Linux上渲染一个SWF到图像文件? 我需要能够加载其他的SWF到SWF并运行动作代码。
它甚至可能在Linux上? 我需要从PHP做到这一点,如果我不得不使用命令行工具。
从swftools swfrender适用于基本的SWF文件。
swfdec-thumbnailer
gnome的 swfdec-thumbnailer
虽然只能得到swf的第一帧,
要使用swfdec从swf获取任何帧,请参阅以下邮件列表文章中的C代码片段。
从gnash gnash也可以使用gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf
,swf的最后一个图像。
ffmpeg
的ffmpeg也适用于一些swf格式ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png
另请参阅以下关于命令行管道的指南 。
为了从PHP调用外部程序,请使用此处记录的exec
命令。
请注意,出于安全原因,为安全起见,使用另一个命令(如escapeshellcmd
或escapeshellarg
传递给exec
参数非常重要。
一旦转换为单帧或全帧图像格式,就无法运行动作脚本。 其他非GNU / Linux工具支持从SWF中导出动作脚本。
如果您要导出到PNG的SWF对于其他工具来说太复杂了,您可以使用Flash插件或Gnash
和Xvfb
以及屏幕捕获软件来捕获SWF的图像帧或avi等视频格式。 然后你可以从视频格式中提取图像。
这个虚拟framebuffer方法将支持复杂的SWF文件,但是如果你想捕捉一组鼠标/键盘,需要使用Gnash,Xvfb和Screen Capture,或者浏览器,Xvfb和seleniumium,与SWF的交互。
带有和不带有Virtual FrameBuffer的Gnash应该在导出之前加载ActionScript,但是可能会遇到复杂的ActionScript问题。 带有虚拟帧缓存的Flash插件将在导出之前加载ActionScript。
另请参阅下面的StackOverFlow问题,您提出的问题是重复的
这是我最终使用的解决方案。
您可以使用Xvfb (X11服务器)这样的工具,并在其中运行独立的Flash播放器投影机(您可能需要安装一堆32位库),然后使用导入等屏幕捕获工具捕获屏幕并裁剪大小。
我发现这个页面在Linux渲染swf屏幕截图很有帮助。 它也说,你可以使用gnash来做到这一点,但gnash不适用于Flash Player 9+。
尝试这个空气应用http://swfrenderer.kurst.co.uk
它逐帧渲染swf