2012-03-09 14 views
8

Jak mogę, na Linuksie, renderować plik SWF do pliku obrazu? Potrzebuję móc załadować inne pliki SWF do tego pliku SWF i uruchomić kod ActionScript.Renderuj swf na png lub inny format obrazu

Czy to możliwe w systemie Linux? Muszę to zrobić z PHP, to jest w porządku, jeśli muszę używać narzędzi wiersza poleceń.

+0

możliwe duplikat [Konwersja SWF PNG] (http://stackoverflow.com/questions/2001946/convert-swf-to- png) – ruakh

Odpowiedz

16

swfrender z swftools działa dla podstawowych plików SWF.

od swfdec-gnome działa, mimo że otrzymuje tylko pierwszą ramkę pliku SWF.

Aby uzyskać dowolną klatkę z pliku swf za pomocą swfdec, zobacz fragment kodu C na poniższej liście adresowej: post.

gnash z gnash działa również gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf, ostatni obraz swf.

ffmpeg z ffmpeg działa także w przypadku niektórych formatów swf ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

Patrz także następujące guide dla rurociągu poleceń.

Aby wywoływać programy zewnętrzne z php, należy użyć polecenia exec udokumentowanego jako here.

Należy pamiętać, że ze względów bezpieczeństwa ważne jest, aby uciec argumenty przekazane do exec z innego polecenia jak escapeshellcmd lub escapeshellarg ze względów bezpieczeństwa.

Po przekonwertowaniu na format obrazu dla pojedynczej klatki lub całej klatki nie można uruchomić skryptu akcji. Inne narzędzia niż GNU/Linux obsługują eksport skryptu akcji z pliku SWF.

Jeśli SWF, które są eksportowane do PNG jest zbyt skomplikowane dla innych narzędzi niż można użyć Flash Plugin lub Gnash i Xvfb wraz z oprogramowaniem do przechwytywania ekranu, aby uchwycić zarówno klatek obrazu z SWF lub wideo w formacie AVI . Następnie możesz wyodrębnić obrazy z formatu wideo.

Ta wirtualna metoda buforowania ramki będzie obsługiwać skomplikowane pliki SWF, ale wymaga wiele pracy, ponieważ trzeba użyć zarówno Gnasha i Xvfb i Screen Capture, jak i przeglądarki, Xvfb i Selenium, jeśli chcesz przechwycić określony zestaw interakcji myszy/klawiatury z plikiem SWF.

Zgniecenie zi bez wirtualnego framebuffera powinno załadować kod ActionScript przed eksportowaniem, ale może mieć problemy ze skomplikowanym kodem ActionScript. Flash Plugin z Virtual Framebuffer załaduje ActionScript przed eksportem.

Patrz także następujące pytania StackOverflow, której pytanie jest duplikatem

+0

Z wyjątkiem tego, że skrypt czynnościowy w swf może działać, wiem na pewno, że swfrender nie działa na to, co chcę. Czy inni pozwalają na uruchomienie actionscript? –

+0

Po wyeksportowaniu do png, wynikowe obrazy png lub animacje mng nie mogą uruchamiać ActionScript, niezależnie od użytego narzędzia. – Appleman1234

+2

Nie, to znaczy, że zanim wyeksportowany zostanie film flash, musi uruchomić kod, aby wyświetlić to, co chcę. –

1

Jest to rozwiązanie skończyło się używa.

Można użyć narzędzia takie jak Xvfb (serwer X11) i uruchomić samodzielny odtwarzacz Flash projektora wewnątrz niego (być może trzeba zainstalować kilka bibliotek 32-bitowych), a następnie użyć narzędzia do przechwytywania ekranu, jak import uchwycić ekran i przyciąć go do rozmiaru.

Znalazłem this page podczas renderowania zrzutów ekranu swf w Linuksie. Mówi też, że możesz użyć gnasha, aby to zrobić, jednak zgrzytanie nie zadziała dla Flash Playera 9+.

Powiązane problemy