MediaTrans

This page is a draft to a running Google Summer of Code project. Feel free to discuss with me, my email is robertofaga - NO_SPAM_AT - g mail _NO_SPAM_DOT_ com , or when I'm in #gstreamer, with nick robertofaga.

Idea

In nowadays, media files and types are in distinct formats, like an audio file or a DVD-video. Users usually want to convert a MP3 to OGG, extract an audio from a dvd-video, multiplex (merge) an audio with an image into a video, and so on. I will define Media Operations as these three operations - convert, converge and extract (this could be know as transcoding media types).

Free Software community have powerful libs and command-line programs, like gstreamer, ffmpeg, mencoder, transcoder, sox and so on. But command-line programs are terribly to end-users, as these users don't have too experience to use advanced commands, sometimes needing more than one program or even shell scripting to make a Media Operation. Transcoder, for example, does most of the proposed operations, but needs some shell scripting for batch processing sometimes and needs more than one library. We also have some converters with a GUI like SoundKonverter, SoundConverter and Gnormalize for audio and MultimediaConverter for sounds and videos, but neither of them have extraction and operations in an easy mode with any type of media. MultimediaConverter is the nearest tool that does it, but it's only does the selected operation without detecting filetype. It is not integrated with Desktop too and does not work with the three Multimedia Operations.

Also, is interesting to offer this transcoding service to other applications, so a file converter could be done in nautilus with a right-click, a simple audio conversion could be done in Rhythmbox, an extraction could be in PiTiVi or even in Totem, and so on. So gst-media-services propose to be a service, offering simple dialog widgets and library calls to transcode media types, providing easy implementation of these operations to users favorite programs. gst-media-services will use gstreamer operations to do these Media Operations with an easy-to-use GUI, based in some XML template (or something else) that turns easy to adapt with gstreamer updates.

Use Cases

Here I wrote some use cases, but I want to write more with mentors and community opinions. This user cases are written as the ideal, I'm not sure if we could code them all with Gstreamer.

Implementation

gst-media-services is being prototyped in Python with Glade/PyGTK as interface language for dialogs. The intention is to after a nice work, code in C, as all gst code.

As Stefan said too, the original project is too big to be completed in three months. Here is proposed only to offer a service, some library calls and a simple set of dialogs to do the desired operations. The intention is to fully integrate with user's desktop, so any application which (s)he uses can have conversions operations (and only operations which application needs).

What I think is suitable and can bring good results is to divide into four parts for this Summer of Code:

Project could use Gstreamer structure for repository, site and these kind of structure, but can use sourceforge anyway. It is interesting to use some platform to guarantee internationalization to app. Multiple files operations will also be available.

Software to use: some code editor, Glade or Gazpacho, Python, CVS/Bazaar/SVN/GIT, Gnome and any other free software that I can need. Libraries to use: PyGTK, PyGlade, GTK and of course Gstreamer.

Gstreamer Encoding Profiles

EncodingProfiles need to be implemented in some way. Use xml? Or just a line-by-line list with values?

Reasons for do it in XML:

Reasons for do it in line-by-line plain text file:

Any more item to add on each lists? Feel free for it!

Extra

Talking

Christian Schaller: Looks good. One important feature you should aim for making work well is keeping original audio. For instance when I rip a DVD I want to preserve the AC3 audio without any changes, while transcoding the video to Dirac or H264 for instance. Wrote a blog entry on this issue not to long ago discussing UI challenges with Transcoders - http://blogs.gnome.org/uraeus/2008/01/17/the-world-of-transcoding/

Roberto Faga: Christian, nice entry, I agree with the options to maintain the same audio (or video-image) and be easy to use. We have some transcoders, but neither of them are very easy to use or don't cover all operations designed there. This is the main goal of this application, provide easy media operations/transcoding. About the different formats possible, formats for each platform (like PS3, iPod, etc), that's why I thought in some XML database with different instructions, so I expect to have community help to index all formats possible, as in the same time I can do it too as isn't supposed to be hard to change/add operations and formats associations with platforms.