2012-03-09 28 views
8

Come posso, su Linux, eseguire il rendering di un file SWF in un file immagine? Devo essere in grado di caricare altri swfs in tale swf ed eseguire il codice actionscript.Rendering swf in png o altro formato immagine

E 'possibile anche su linux? Ho bisogno di farlo da PHP, va bene se devo usare strumenti da riga di comando.

+0

possibile duplicato del [Convertire SWF in PNG] (http://stackoverflow.com/questions/2001946/convert-swf-to- png) – ruakh

risposta

16

swfrender da swftools funziona per file SWF di base.

swfdec-thumbnailer da swfdec-gnome funziona anche se ottiene solo il primo frame dello swf.

Per ottenere qualsiasi frame da swf utilizzando swfdec, consultare lo snippet di codice C nella seguente mailing list post.

gnash da gnash funziona anche gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf, l'ultima immagine del file SWF.

ffmpeg da ffmpeg funziona anche per alcuni formati SWF ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

Vedere anche il seguente guide per una pipeline di comando.

Per chiamare i programmi esterni da php si utilizza il comando exec documentato here.

Si noti che per motivi di sicurezza è importante evitare gli argomenti passati a exec con un altro comando come escapeshellcmd o escapeshellarg per motivi di sicurezza.

Dopo aver convertito in un formato immagine sia per fotogramma singolo che per fotogramma, non è possibile eseguire script di azioni. Altri strumenti non GNU/Linux supportano l'esportazione dello script di azione da SWF.

Se il file SWF che si sta esportando in PNG è troppo complicato per gli altri strumenti che è possibile utilizzare il plugin Flash o Gnash e Xvfb insieme al software di cattura dello schermo per catturare entrambi i fotogrammi dell'immagine del file SWF o un formato video come AVI . Quindi puoi estrarre le immagini dal formato video.

Questo metodo framebuffer virtuale supporterà i complicati file SWF, sebbene richieda molto lavoro in quanto è necessario utilizzare Gnash e Xvfb e Screen Capture o un browser, Xvfb e Selenium, se si desidera acquisire un determinato set delle interazioni tra mouse e tastiera con il file SWF.

Gnash con e senza Virtual FrameBuffer deve caricare ActionScript prima dell'esportazione, ma potrebbe avere problemi con ActionScript complicato. Flash Plugin con Virtual Framebuffer caricherà ActionScript prima dell'esportazione.

puoi anche consultare i seguenti domande StackOverflow, che si domanda è un duplicato di

+0

A parte il fatto che richiedo che l'actionscript in swf possa essere eseguito, so per certo che swfrender non funziona per quello che voglio. Gli altri permettono a actionscript di funzionare? –

+0

Una volta esportati in png, le immagini png risultanti o le animazioni mng non possono eseguire actionscript indipendentemente dallo strumento utilizzato. – Appleman1234

+2

No, voglio dire che prima dell'esportazione del filmato in flash è necessario eseguire il codice per visualizzare ciò che voglio. –

1

Questa è la soluzione che ho finito per usare.

È possibile utilizzare uno strumento come Xvfb (server X11) ed eseguire il proiettore flash player standalone all'interno di esso (potrebbe essere necessario installare un gruppo di librerie a 32 bit), quindi utilizzare un programma di utilità di cattura dello schermo come import per catturare il schermo e tagliarlo a misura.

Ho trovato this page sul rendering di schermate swf in linux utili. Dice anche che puoi usare gnash per farlo, ma gnash non funzionerà con Flash Player 9+.

Problemi correlati