我怎样才能在linux上将swf呈现给图像文件? 我需要能够将其他swfs加载到该swf并运行actionscript代码。
甚至可以在linux上使用吗?我需要从PHP做到这一点,如果我必须使用命令行工具,这很好。
答案 0 :(得分:16)
swfrender
适用于基本SWF文件。
swfdec-thumbnailer
虽然只能获得swf的第一帧。
要使用swfdec从swf获取任何帧,请参阅以下邮件列表post中的C代码段。
来自gnash的 gnash
也适用于gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf
,是swf的最后一张图片。
ffmpeg
也适用于某些swf格式ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png
另请参阅以下guide以获取命令行管道。
为了从php调用外部程序,您可以使用exec
记录的exec
命令。
请注意,出于安全原因,出于安全原因,使用escapeshellcmd
或escapeshellarg
等其他命令转义传递给Gnash
的参数非常重要。
无论是单帧还是全帧,转换为图像格式后,都无法运行动作脚本。其他非GNU / Linux工具支持从SWF导出动作脚本。
如果要导出到PNG的SWF对于其他工具而言过于复杂,那么您可以使用Flash插件或Xvfb
和{{1}}以及屏幕捕获软件捕获图像帧SWF或像avi这样的视频格式。然后,您可以从视频格式中提取图像。
这个虚拟帧缓冲区方法将支持复杂的SWF文件,但是如果你想捕获某个特定的一组,你需要使用Gnash和Xvfb和Screen Capture,或浏览器,Xvfb和Selenium需要很多工作。鼠标/键盘与SWF的交互。
带有和不带Virtual FrameBuffer的Gnash应该在导出之前加载ActionScript,但是可能会遇到复杂的ActionScript问题。带有Virtual Framebuffer的Flash插件将在导出之前加载ActionScript。另请参阅以下StackOverFlow问题,您提出的问题与
重复答案 1 :(得分:1)
这是我最终使用的解决方案。
您可以使用Xvfb(X11服务器)之类的工具并在其中运行独立的Flash播放器投影仪(您可能需要安装一堆32位库),然后使用屏幕捕获实用程序,如{ {3}}捕获屏幕并将其裁剪为大小。
我发现import在linux中渲染swf屏幕截图很有帮助。它还说你可以使用gnash来做到这一点,但gnash不适用于flash player 9 +。
答案 2 :(得分:1)
试试这个空中申请http://swfrenderer.kurst.co.uk
逐帧渲染swf