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