用于将 .SWF 转换为动画 GIF 的命令行

用于将 .SWF 转换为动画 GIF 的命令行

我正在运行 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

答案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 之前测试将其转换为 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

干杯

相关内容