|
|
Subscribe / Log in / New account

Transmageddon and Arista pursue simple transcoding

May 20, 2009

This article was contributed by Nathan Willis

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

[Arista]

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, Schaller added:

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 good idea.

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.

[Transmageddon]

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 the Adaptive 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, Jokosher, 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.

Test drive

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.


Index entries for this article
GuestArticlesWillis, Nathan


to post comments

Transmageddon and Arista pursue simple transcoding

Posted May 20, 2009 19:41 UTC (Wed) by pr1268 (guest, #24648) [Link] (5 responses)

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.

Don't I know it! (I'm a longtime MEncoder/MPlayer user who regularly recycles a script that contains a plethora of command-line switches whenever I'm transcoding video.)

Thanks for the article. I'm tempted to try out either of Transmageddon or Arista, assuming I can wade through the dependency hell I'm facing (I'm a KDE user and, if I understand correctly, these are GNOME/GTK apps).

Transmageddon and Arista pursue simple transcoding

Posted May 21, 2009 0:05 UTC (Thu) by boerner (guest, #4247) [Link]

Very well done article. Does an excellent job of presenting the 'big picture', not just some posting about a new release of some app. More like this one please...

subtitle support

Posted May 21, 2009 11:32 UTC (Thu) by alex (subscriber, #1355) [Link]

I've been using mencoder for a long time and I finally just fixed a script to encode for the one target I have (PS3). However I still haven't got a decent way of reliably generated synced subtitles. I have yet to find the one (or few!) clicks GUI to this nirvana.

Transmageddon and Arista pursue simple transcoding

Posted May 21, 2009 19:07 UTC (Thu) by jimparis (guest, #38647) [Link] (1 responses)

I'm tempted to try out either of Transmageddon or Arista, assuming I can wade through the dependency hell I'm facing

It always seems like video transcoding devolves into dependency hell -- not necessarily of the gnome/kde variety that you mention, but the fact that external tools and libraries are required to actually perform the transcoding. And these tools then get compiled with a variety of different options and enabled formats, so you can't just tell whether they will work from the version number. On one of my systems:

$ apt-cache policy ffmpeg
ffmpeg:
  Installed: 3:20080706-0.3lenny1
  Candidate: 3:20080706-0.3lenny1
  Version table:
     5:0.5+svn20090508-0.1 0
         80 http://www.debian-multimedia.org testing/main Packages
         50 http://www.debian-multimedia.org unstable/main Packages
     4:0.5+svn20090420-2 0
         50 http://debian.lcs.mit.edu unstable/main Packages
 *** 3:20080706-0.3lenny1 0
        990 http://www.debian-multimedia.org stable/main Packages
        100 /var/lib/dpkg/status
     3:0.svn20090303-1 0
         80 http://debian.lcs.mit.edu testing/main Packages
     0.svn20080206-17+lenny1 0
        990 http://security.debian.org stable/updates/main Packages
     0.svn20080206-17 0
        990 http://debian.lcs.mit.edu stable/main Packages

Now I understand that half the confusion here is from having the same package in debian-multimedia and Debian proper, but they're fundamentally different because the debian-multimedia one is often compiled against more non-free codecs.

I'd really, really love to see something like Arista as a standard package in Debian with properly vetted dependencies that make sure we're getting a known-good version of all the tools and libraries they use.

Transmageddon and Arista pursue simple transcoding

Posted May 22, 2009 5:19 UTC (Fri) by pr1268 (guest, #24648) [Link]

Well, I was thinking more of the ./configure && make && make install variety of dependency issues (usually tripped when running the configure script). I use Slackware, and my preferred way of getting non-distro software is via source tarballs. But, thanks for your info!

Switches

Posted May 22, 2009 4:43 UTC (Fri) by eru (subscriber, #2753) [Link]

>...demand that every codec switch...

That is close to true about mencoder, but I have found ffmpeg usually does the right thing for common target formats with very few switches (mainly to set the bit rate).

...who regularly recycles a script...

me too, and that is the nice thing about a command-line tool: once you have tweaked the settings to your satisfaction, you can reuse it easily.

Transmageddon and Arista pursue simple transcoding

Posted May 21, 2009 0:42 UTC (Thu) by njs (subscriber, #40338) [Link] (4 responses)

Err, what is this D-Bus integration supposed to actually do, though? If I'm an app that just needs a video transcoded, surely I should just call gstreamer, rather than calling through D-Bus to a GUI wrapper around gstreamer...?

Transmageddon and Arista pursue simple transcoding

Posted May 21, 2009 1:03 UTC (Thu) by pr1268 (guest, #24648) [Link]

I have an intuition that the D-Bus integration will be used for interfacing with tuner cards, video capture devices (IEEE-1394, etc.), Webcams, and similar.

Again, I'm going from intuition here, so I don't mind being corrected here if I'm wrong.

Transmageddon and Arista pursue simple transcoding

Posted May 21, 2009 15:44 UTC (Thu) by ssam (guest, #46587) [Link]

some possibilities:
* a youtube downloader could use it add an encode for your portable device button. then call Arista/Transmageddon with the path to the flv file.
* conduit, say you want to sync some videos between a folder on your hard disk, and a portable device. maybe conduit does not want to hold all the transcoding logic.

just wondering. for the device presets, will these programs query HAL/devicekit to ask what you currently have plugged in? i don't want to be hunting for my N800 in a huge list of PMPs, PDAs and whatever else.

Transmageddon and Arista pursue simple transcoding

Posted May 22, 2009 19:04 UTC (Fri) by n8willis (subscriber, #43041) [Link]

As ssam already mentioned, Conduit has been discussed by the actual projects (don't have the link on hand right now, though) -- I can also think of other useful apps like Miro or Elisa that would benefit from having access to a transcoder. But, to answer the question, "just call Gstreamer" won't actually do anything; for you to perform the transcoding _using_ GStreamer you'll have to duplicate all of the steps that Arista abstracts; eliminating the need to do that is exactly the point.

Nate

Transmageddon and Arista pursue simple transcoding

Posted Jun 8, 2009 15:34 UTC (Mon) by hozelda (guest, #19341) [Link]

I haven't used dbus very much, but I get the impression it's just another means to expose interfaces except that you will have a daemon running ready to answer the call. The main benefit I see here is that you might keep certain initialized context in memory (if the calls are not spaced out too far apart in time) instead of saved to disk as any cli interface tool could do to maintain state across calls. For some uses, having a way to keep info in memory across multiple process calls (avoiding read/write to disk and temp file management/cleanup) could provide a great reduction in latency.

I could be way off about what dbus provides. As usual, I'm always excited to be clued in and learn more about anything related to Linux.

Transmageddon and Arista pursue simple transcoding

Posted May 22, 2009 1:02 UTC (Fri) by shredwheat (guest, #4188) [Link] (2 responses)

What I'm really looking for is a simple tool to clean up the videos I get from my digital camera. They are encoded with mjpeg which makes them mighty large compared to simple formats. Along with that I frequently need to reorient videos from my camera.

Just want something with an orientation switch and a "Go" button. Going to check out these two apps.

Transmageddon and Arista pursue simple transcoding

Posted May 22, 2009 8:38 UTC (Fri) by Uraeus (guest, #33755) [Link]

@shredwheat
I am the author of Transmageddon, if you file a bug attaching a small video or explain what you need I could probably add it quickly. I assume what you need is a way to rotate the video around and we got a plugin called videoflip in GStreamer I can use for that.

Transmageddon and Arista pursue simple transcoding

Posted May 25, 2009 16:29 UTC (Mon) by debacle (subscriber, #7114) [Link]

I would like to see two features:

  1. rotate/recode for videos from the photo camera
  2. grab from DVD with selection of language(s) and subtitle(s)

(Btw. I built an Arista .deb for Debian sid, but I needed the "really-bad" gstreamer plugins from debian-multimedia.org. The "good, bad and ugly" from main are not enough.)

Scale while transcoding?

Posted Jun 11, 2009 9:44 UTC (Thu) by bmur (guest, #52954) [Link]

The "commands" link the article hits close to home for me.

I need to take screen capture videos from projector screen size (AVI 1024x768) down to something that will work on a standard def DVD (h.264 640x480??).

If it were a photo, I would scale it with gimp and get some nice interpolation so that the picture doesn't go blurry.

Will either of these programs help me get my lecture video captures into a television sized format so that I can drop it into a video editor for voice-over?

In the past I tried pointing a video camera at the projection screen and the end result didn't look too good. I'm hoping capturing it at the source (in the computer) will yield better results.


Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds