.SWF를 애니메이션 GIF로 변환하는 명령줄

.SWF를 애니메이션 GIF로 변환하는 명령줄

저는 쿠분투를 실행하고 있습니다. 와인에 Windows 응용 프로그램을 설치하고 싶지 않습니다. Flash 애니메이션(.SWF 파일)을 애니메이션 GIF로 변환하는 (비교적 간단한) 명령을 원합니다.

입력 .SWF 파일은 14.5KiB에 불과하며 전체 파일을 최상의 품질로 변환하고 싶습니다. GIF의 크기가 비슷해지기를 원합니다.

설치된 ffmpeg에 대한 정보는 다음과 같습니다.

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

답변1

이 작업을 수행하는 가장 기본적인 명령을 시도했는지 여부는 게시물에서 언급하지 않았습니다.

ffmpeg -i input.swf output.gif

작동한다고 가정하면 GIF는 256색 형식이므로 품질 문제가 발생합니다. (Imgur는 최근 WebM 비디오에 GIFV 파일 형식을 사용하도록 확장했지만 이는 별도의 주제입니다)

이것이 작동하지 않는다면 SWF 디코더나 GIF 인코더가 없기 때문입니다. 이 명령을 실행하면 FFMpeg 버전이 지원하는 코덱/형식을 확인할 수 있습니다.

ffmpeg -formats

출력은 매우 장황하므로(모든 내용이 나열됨) grep다음을 사용하여 출력을 줄일 수 있습니다.

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

나는 이것을 얻습니다:

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

이는 내 FFMpeg 버전이 GIF 및 SWF의 디코딩 및 인코딩을 지원함을 보여줍니다.

GIF 문제가 발생하기 전에 품질을 확인하기 위해 GIF로 변환하기 전에 AVI로 변환을 테스트할 수도 있습니다.

ffmpeg -i input.swf -sameq output.avi

-sameqSWF에는 "품질"이 없기 때문에 해당 플래그를 사용하려고 하면 화를 낼 수 있습니다 . -b:v 900k비디오 비트 전송률을 상당히 높게 설정할 수도 있습니다 .

고쳐 쓰다

링크한 소스 코드는 GCC 및 "zlib" 라이브러리(거의 모든 라이브러리에 있음)가 있는 모든 Linux 시스템에서 쉽게 컴파일할 수 있습니다. 컴파일 방법은 다음과 같습니다.

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

이제 도구를 실행하여 다음과 같이 변환할 수 있습니다.

./a.out input.swf decompressed.swf

건배

관련 정보