#3 Video transcoding



Fuppes is really great, so far it's the best free UPnP media server available for GNU/Linux and works great with Canola (http://garage.maemo.org/projects/canola/), the application we at INdT work on.

You have done Audio transcoding, which is really great, since we all love OGG, but not every player out there decodes it (Canola, depending on Maemo Media Player, is an example).

I've read FUPPES code and the transcoding subsystem is extensible, but have some limitations that would make ellaborated audio transcoding more difficult and video transcoding almost useless: you can't set parameters and filters to modify quality, bitrate, size and other components that make a huge difference for small devices.

Example, if I have 5.1 audio and some devices doesn't deal with it, I would like to make a 2-channel version of it.

A more complex example is a h.264 with high definition and 5.1 audio, that takes 50-60% CPU just for decoding on my desktop, it would be impossible to play on a small device as Nokia 770 or even some phones or sound systems that supports UPnP out there. In this case I have to convert it to mpeg, which almost every device plays nice.

The way to expose these is to use various UPnP CDS object resource (<res>) elements, each with pre-configured bitrate, dimension and fps. Users would be able to configure these parameters, so optimal codec and parameters for their devices will be used.

Another "problem" I see with current architecture is that too much work have to be done in fuppes to support these conversion. The approach you use is really straightforward, but it doesn't scale well. I would rather use some multimedia framework like ffmpeg or gstreamer and let these handle it. Configuration parameter would then just be the pipeline you would assemble with framework.

Thanks for the great job!


  • Ulrich Völkel

    Ulrich Völkel - 2006-12-26

    Logged In: YES
    Originator: NO

    Hi! Sorry, it took so long.

    good to know that fuppes is usable.
    And yes, you are absolutely right. The transcoding is not simply extensible and lacking of configurable parameters. I'm thinking of an alternative for some time and I also though of using gstreamer as transcoding backend but it is not portable and therefore optional if ever.
    I soon will make lame globally configurable but will stuck to the current architecture till other things are done. As you've read the code you know how much cleanup is to do :)

    > The way to expose these is to use various UPnP CDS object resource (<res>) elements, each with pre-configured bitrate, dimension and fps. Users would be able to configure these parameters, so optimal codec and parameters for their devices will be used.
    I'm not sure if multiple res-elements are supported by most devices but the idea sounds great.

    So, video transcoding will come but i can't say when. If there's somebody out there that would like to take over that part please contact me.

    thanks for using fuppes. best wishes,

  • Ulrich Völkel

    Ulrich Völkel - 2006-12-26
    • priority: 5 --> 3
  • Gustavo Sverzut Barbieri

    Logged In: YES
    Originator: YES

    Hi! No problems with the delay!

    About GStreamer, I also think it's not the best option here. It's good for doing playback, but I think that amount of threads are useless for pure transcoding. However I would go with ffmpeg: it supports almost all codecs and containers/formats, has colorspace conversion, ... I think Tversity (windows, mac -- non-free) uses it.

    About multiple <res> elements, even if devices don't use them all, they won't break, since they'll use the first one. And having those configurable, you let user to have the first one being the format/codec understood by these devices. Canola supports multiple in a simple way: we filter by supported files, sort by resolution, then walk the list for the closest match. It will not matter if the closest match is the last <res> sent by server.

    So far nobody will be able to help with video transcoding, we're running out of manpower. But I'll try to help as soon as possible :-)

    Thanks, BR!

  • Nobody/Anonymous

    Logged In: NO

    I second this request

  • Ulrich Völkel

    Ulrich Völkel - 2007-07-22
    • assigned_to: nobody --> u-voelkel
    • status: open --> closed
  • Ulrich Völkel

    Ulrich Völkel - 2007-07-22

    Logged In: YES
    Originator: NO

    Well, I just started video transcoding using ffmpeg as backend.
    It's not yet fully implemented (rather a quick and dirty hack) but at least fuppes now transcodes wmv and flv files to mpeg (mpeg1/mp2) and I am able to view the stuff on my TG 100 (which does not natively support wmv or flv).

    It is not yet configurable, leaks memory (temp files arent deleted), does not check for available en-/decoders and uses hardcoded ffmpeg settings and paths. So it is not really usable but we are on a good way :)

    I'm not sure about the idea of using multiple res elements. As fuppes already has a basic support for device specific settings it maybe would make more sense to create different transcoding settings for each device.
    Maybe the default device can have multiple res elements but one should be able to set more specific values for a certain device.
    We will see ...

    - Uli


Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks