Ffmpeg

用於將 .SWF 轉換為動畫 GIF 的命令行

  • April 12, 2015

我正在執行 Kubuntu。我不想在 wine 中安裝任何 Windows 應用程序。我想要一個(相對簡單的)命令將 Flash 動畫(.SWF 文件)轉換為動畫 GIF。

輸入的 .SWF 文件只有 14.5 KiB,我想以最佳質量轉換整個文件。我希望 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

如果您嘗試過應該完成此操作的最基本命令,您不會在文章中提及:

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 之前測試將其轉換為 AVI,以便在出現任何 GIF 問題之前查看質量:

ffmpeg -i input.swf -sameq output.avi

嘗試使用該-sameq標誌可能會生氣,因為 SWF 沒有“質量”。您也可以嘗試-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

乾杯

引用自:https://unix.stackexchange.com/questions/195669