Thwomp

SWF renderer for Ruby

Note: work in progress!

Installiing Thwomp

Requirements:

  • sdl

  • boost

  • antigrain (libagg)

  • gnash

OSX lazy installer

Just run install_gnash_osx

OSX

Make sure homebrew is installed:

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

Update your homebrew:

brew update

Install SDL dev. package:

Be warned, if you are running OSX Lion you’ll need to set the default compiler to GCC instead of the GCC LVM compiler.

export CC=gcc-4.2

After that:

cd /tmp/
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz
tar -xzf SDL-1.2.14.tar.gz
cd SDL-1.2.14
./configure
make
make install

Install boost:

brew install boost

Install anti grain:

brew install libagg

Install gnash:

Now this is a tricky one. There is a bug in the configure script of gnash, that won’t detect the correct version of ffmpeg. It could be possible that the configure script will crash. The default installation of gnash will fallback to gstreamer.

Anway… this will install gnash-dump which will allow us to dump RAW files from an input SWF file:

Option 1: Install from source

cd /tmp/
git clone git://git.sv.gnu.org/gnash.git
cd gnash
./autogen
./configure --prefix=/usr/local/gnash-dump --enable-renderer=agg --enable-gui=dump --enable-media=no --disable-kparts --disable-nsapi --disable-menus  make
make
sudo make install

Option 2: Install from tarball from the intertubes:

cd /tmp/
wget ftp://ftp.mirror.nl/pub/mirror/gnu/gnash/0.8.9/gnash-0.8.9.tar.gz
tar -xzf gnash-0.8.9.tar.gz
cd gnash-0.8.9
./configure --prefix=/usr/local/gnash-dump --enable-renderer=agg --enable-gui=dump --enable-media=no --disable-kparts --disable-nsapi --disable-menus
make
sudo make install

Don’t forget to add sudo before gnash.

Ubuntu

git clone git://git.sv.gnu.org/gnash.git
cd gnash
sudo apt-get install -y libagg-dev automake autoconf libtool libltdl-dev libjpeg-dev libgif-dev libboost-dev libboost-thread-dev libboost-program-options-dev libfontconfig1-dev libfreetype6-dev ffmpeg libpng-dev libspeex-dev libsdl-dev libspeexdsp-dev imagemagick
./autogen.sh
./configure --prefix=/usr/local/gnash-dump --enable-renderer=agg --enable-gui=dump --enable-media=no --disable-menus
make
sudo make install

Installing the thwomp gem

gem install thwomp

Usage

Finding the most suitable thumbnail for a swf movie:

thumbnail_path = Thwomp.pick("http://www.example.com/flash.swf")

This picks the right renderer based on file extension. If that doesn’t work for you, you can instantiate the right renderer yourself. Like this;

renderer = Thwomp::Renderers::SWF.new("http://www.example.com/flash.swf")
thumbnail_path = ThumbnailPicker.pick(renderer.frames)

Creating a GIF animation from a swf movie:

renderer = Thwomp::Renderer.new("http://www.example.com/flash.swf")
data = Thwomp::AnimationPreview.new(renderer).gif_data