Christian Schaller's Transmageddon and
Daniel Taylor's Arista are
both easy-to-use video file conversion tools for GNOME, but they share more
than just a vision for simple file transcoding. Rather than competing
head-on (or attempting a merge), the two developers are collaborating in
the middle; sharing information and utilizing the similar aims of their
projects to strengthen the underlying GStreamer multimedia framework on
which both code bases depend.
Schaller is a longtime GStreamer contributor; he started Transmageddon
in March of 2009 for several reasons. First, as a personal
exercise in developing in Python, but also as an attempt to find
real-world areas of improvement for application developers using GStreamer,
and to scratch a personal itch — the lack of an easy-to-use,
GStreamer-based video transcoder. Said itch also prompted Taylor to start
work on Arista, as a personal project in 2008, with its first public
release in April of 2009. He discovered Transmageddon through Schaller's
blog, and the two began discussing how best to proceed.
A variety of motives
That two developers independently decided to write simple GUI
transcoding applications should come as no surprise. Video transcoding is
increasingly in demand as more and more portable devices have the graphics
hardware to support it and digital content distribution skyrockets.
Command line encoders like FFmpeg and
MEncoder can perform almost any
conversion, but require the user to know exactly which options to enable,
and, in most cases, demand that every codec switch be specified or else
they fail to produce a usable result. That leads to obtuse (and extremely
long) commands that
are difficult to get right and even more difficult to troubleshoot.
Several graphical transcoding applications have appeared for Linux desktops
in recent years — Thoggen, OGMRip, K9Copy, AcidRip, dvd::rip, HandBrake, and WinFF, to name a few — but as both
Taylor and Schaller commented, all have their shortcomings.
Some, like Thoggen, OGMRip, and Oggconvert, are limited to
specific output codecs. Others, like dvd::rip, attempt to offer every
option under the sun, making them difficult for casual users to use.
"There are dozens of GUIs that are essentially the same confusing
options with a nice graphical label. To me that doesn't really
help," Taylor observed. "The point of Arista is not to be
everything to everyone, just to be a simple way to transcode your media for
various devices. That's it."
In addition, many of the existing transcoders are built as stand-alone
front-ends, and offer little in the way of desktop integration.
"Most of the other GUIs I've seen directly use
FFmpeg (libavformat, libavcodec,
etc)," said Taylor. "I wanted to make use of GNOME
technologies to make a real GNOME app, which means using GTK+, GStreamer,
Gconf, GIO, etc. Arista should fit into the desktop." Taylor said he
has a few features in mind for future releases (such as subtitle and DVD
menu support), but also hopes to add a D-Bus interface that will enable
other applications to control Arista.
For Schaller, building a GUI transcoder is also a way to field test
GStreamer. He mentioned
the possibility in a 2008 blog post, speculating that such a small-scale
application could be used to "test and make sure our muxers and
encoders keep working" better than a more complex tool like a video
player or editor. So far, he said, a few bugs may have been discovered,
but the more important benefits are from testing GStreamer features that
have not been used before — such as property presets,
which allow the application to set bundles of individual encoder settings
by name (either for encoder profiles like H.264 Baseline, or
to target specific hardware devices).
The benefits extend beyond the existing code to other applications,
The other thing we are doing as part of this is to
try to figure out what kind of higher level encoding and transcoding API
could be useful to application developers. ... One of GStreamer's goals is
to make things as easy as possible for developers, so packaging some of the
steps we take in our applications into some C helper APIs is probably a
Collaboration and divergence
After Schaller and Taylor touched base, they decided
to stay in close touch and share code whenever possible, but to take their
respective applications on slightly different paths. Taylor would take the
conservative, end-user-oriented approach, making sure that Arista would
always run on the current release of Ubuntu. Schaller would try to more
closely track the development version of GStreamer, including reliance on
GStreamer features not yet available downstream. That way, there will
always be a transcoder available for and usable by "non-techies" in Arista,
and Transmageddon can serve as a test bed for new features.
The cross-project collaboration is already reaping rewards. Schaller
says that he has incorporated Arista's existing preset support into
Transmageddon, and is extending it using some bleeding-edge changes from
the development version of GStreamer. Once the Linux distributions are
shipping the next update of GStreamer, the plan is to roll Transmageddon's
improved preset support back into Arista.
The projects are also helping GStreamer. They are accumulating a
collection of presets that will be valuable to other applications, have
uncovered bugs in the capabilities
system, and exposed that GStreamer needs a better encoder and decoder for
Multi-Rate (AMR) audio format.
Schaller said he is also planning on turning his notes on the
development process into a guide for others:
I have decided to try
to use my experience with doing Transmageddon to write a series of
tutorials for developing python applications with GStreamer. I think
applications like PiTiVi
, Arista and Transmageddon
prove that you can do quite complex applications quite easily using Python,
we just need some more basic tutorials to give more Python developers the
entry point into GStreamer that they need to get started.
You can download both applications and try them out to compare.
Transmageddon is available from
Schaller's web site as a source code package and as an RPM package. The
latest release is 0.9, from May 3, 2009. It does require Python and a
development branch of GStreamer, though, which may place it out of reach
for most users.
Arista is available for download from the
project's Launchpad site.
The most recent version is 0.9.1, also from May 3. A source code package
is provided, as is an ArchLinux build through the ArchLinux User-community
Repository (AUR), and those running Ubuntu 9.04 can add Taylor's Personal
Package Archive (PPA) to their Apt repositories list and install the
application through the package manager. 0.9.1 also requires Python and
GStreamer, but only GStreamer 0.10, which is widely available.
Arista allows the user to select source videos in any encoding and file
type readable by GStreamer (including DVD content), and select an output
format — including presets configured for a range of portable
hardware devices. Beyond that, there is little to the interface but a
progress bar estimating the time remaining in the transcoding job and a
two-frame-per-second preview window useful for monitoring the output.
Other transcoders offer far more options, but at the cost of far more
complexity. Users must often know the audio and video codecs, output width
and height, frame rate or bit rate, and many other options. Arista and
Transmageddon make the job drastically simpler merely by abstracting away
all of those details in device presets — the correct settings are
still chosen, but the confusion and chance for human error are not. It
will be interesting to watch the projects evolve in the months ahead; the
notion of a simple to use video transcoder is appealing, but even more
appealing is what can happen when that functionality is available to other
desktop applications through D-Bus.
to post comments)