Linha de comando para converter .SWF em GIF animado

5

Estou executando o Kubuntu. Não quero instalar nenhum aplicativo do Windows no wine. Eu gostaria de um comando (relativamente simples) para converter uma animação em flash (arquivo .SWF) para um GIF animado.

O arquivo .SWF de entrada tem apenas 14,5 KiB e eu quero converter a coisa toda na melhor qualidade. Eu estou esperando que o GIF seja de tamanho similar.

Aqui estão as informações sobre o ffmpeg que eu instalei:

ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers
built on Apr 26 2014 09:49:36 with gcc 4.6.3
configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
libavutil      51. 35.100 / 51. 35.100
libavcodec     53. 61.100 / 53. 61.100
libavformat    53. 32.100 / 53. 32.100
libavdevice    53.  4.100 / 53.  4.100
libavfilter     2. 61.100 /  2. 61.100
libswscale      2.  1.100 /  2.  1.100
libswresample   0.  6.100 /  0.  6.100
libpostproc    52.  0.100 / 52.  0.100
    
por MountainX 11.04.2015 / 20:59

1 resposta

4

Você não menciona em sua postagem se já tentou o comando mais básico que deve realizar isso:

ffmpeg -i input.swf output.gif

Supondo que funcione, haverá problemas de qualidade, porque o GIF é um formato de 256 cores. (A Imgur estendeu recentemente o formato de arquivo para o GIFV, que usa o vídeo WebM, mas esse é um tópico separado)

Se isso não funcionou, é porque você não tem um decodificador SWF ou um codificador GIF. Você pode executar este comando para ver quais codecs / formatos são suportados pela sua versão do FFMpeg:

ffmpeg -formats

A saída disso é bem detalhada (listará tudo) e você pode usar grep para reduzi-lo para você:

ffmpeg -formats | grep -i GIF
ffmpeg -formats | grep -i SWF

Para mim, recebo isto:

 DE gif             GIF Animation
  E avm2            SWF (ShockWave Flash) (AVM2)
 DE swf             SWF (ShockWave Flash)

Isso mostra que minha versão do FFMpeg suporta decodificação e codificação de GIF e SWF.

Você também pode querer testar a conversão para um AVI antes de convertê-lo para GIF, para ver a qualidade antes de qualquer problema de GIF:

ffmpeg -i input.swf -sameq output.avi

Pode ficar louco por tentar usar o sinalizador -sameq porque o SWF não tem uma "qualidade". Você também pode tentar -b:v 900k para definir a taxa de bits do vídeo muito alta.

Atualizar

A fonte que você vinculou pode ser facilmente compilada em qualquer sistema Linux que tenha o GCC e a biblioteca "zlib" (quase tudo tem isso). Aqui está como eu a compilei:

sudo apt-get install build-essential zlib-dev
wget -o main.c "http://svn.perian.org/ffmpeg/tools/cws2fws.c"
gcc main.c -lz

Agora você pode executar a ferramenta para converter assim:

./a.out input.swf decompressed.swf

Felicidades

    
por 11.04.2015 / 22:00