Рендеринг SWF в PNG или другой формат изображения - PullRequest
9 голосов
/ 10 марта 2012

Как я могу в linux рендерить swf в файл изображения? Мне нужно иметь возможность загружать другие SWF-файлы в этот SWF-файл и запускать код ActionScript.

Возможно ли это даже в Linux? Мне нужно сделать это из PHP, хорошо, если мне нужно использовать инструменты командной строки.

Ответы [ 3 ]

16 голосов
/ 10 марта 2012

swfrender из swftools работает для базовых SWF-файлов.

swfdec-thumbnailer из swfdec-gnome работает, хотя получает только первый кадр swf.

Чтобы получить любой кадр из swf с использованием swfdec, см. Фрагмент кода C в следующем списке рассылки post .

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

См. также guide для конвейера командной строки.

Для вызова внешних программ из php вы используете документально exec документированную здесь .

Обратите внимание, что для безопасностиПо причинам, связанным с безопасностью, важно избегать аргументов, переданных в exec, с помощью другой команды, например escapeshellcmd или escapeshellarg.

После того, как вы конвертировали в формат изображения, будь то один кадр или весь кадр, вы не можете запустить скрипт действия.Другие не GNU / Linux инструменты поддерживают экспорт сценария действия из SWF.

Если SWF, который вы экспортируете в PNG, слишком сложен для других инструментов, чем вы можете использовать Flash Plugin или Gnashи Xvfb вместе с программным обеспечением для захвата экрана для захвата либо кадров изображения SWF, либо видео формата, такого как avi.Затем вы можете извлечь изображения из видео формата.

Этот метод виртуального кадрового буфера будет поддерживать сложные SWF-файлы, хотя он требует большой работы, так как вам нужно использовать Gnash и Xvfb и Screen Capture, или браузер, Xvfb и Selenium, если вы хотите захватитьопределенный набор взаимодействий мыши и клавиатуры с SWF.

Скрежет с и без Virtual FrameBuffer должен загружать ActionScript перед экспортом, но может иметь проблемы со сложным ActionScript.Плагин Flash с виртуальным кадровым буфером загрузит ActionScript перед экспортом.

Также см. Следующие вопросы StackOverFlow, которые вы задаете, является дубликатом

1 голос
/ 11 мая 2012

Попробуйте это воздушное приложение http://swfrenderer.kurst.co.uk

Рендеринг SWF кадр за кадром

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

Это решение, которое я использовал в итоге.

Вы можете использовать такой инструмент, как Xvfb (сервер X11) и запустить внутри него автономный проектор флеш-плеера (вам может потребоваться установить кучу 32-битных библиотек), а затем использовать утилиту захвата экрана например import , чтобы сделать снимок экрана и обрезать его до нужного размера.

Я нашел эту страницу о рендеринге скриншотов swf в linux полезной. В нем также говорится, что вы можете использовать для этого gnash, однако gnash не будет работать для flash player 9+.

...