MP3 support on Moblin (part 2)

Part 1 showed the easy way. Now the hard way to get MP3 support is to provide it yourself by building plugins for GStreamer. Having an RPM build environment is a prerequesite. The earlier blog entry shows how to set it up and also has an example to build and install libmad which will be useful in this example and I won't repeat it here.

Download the gstreamer-plugins-ugly source package. Put it inside the SRPMS directory and run the rpm -i command on it to unarchive its content.

Open a text editor and edit the spec file available under SPECS. The package names vary between Moblin, Fedora and RPM Fusion and this needs to be fixed in the header. And in this example only the plugin libmad will be build so that's why many lines will be commented. In fact the only build dependencies will be libmad, libid3tag and liboil. I have put the diff on Snipt. To apply it use the patch command like patch -p0 < gstreamer-plugins-ugly.spec.diff. Don't miss the patch(1) man page to know about the -p option.

Now build binary packages with the command rpmbuild -bb SPECS/gstreamer-plugins-ugly.spec. Wait a minute and you should have a ready to install gst-plugins-ugly package within the RPMS directory.

You can more or less repeat this task for DivX and other video codecs support. For that you'll have to build the GStreamer FFmpeg plugin (gstreamer-ffmpeg source package). Of course FFmpeg depends on many many libraries and you'll have to build them at first.

Update: Regarding FFmpeg, it can be build from the RPM source package without external requirements, in fact it doesn't have any hard dependencies. Or you can even compile the gstreamer-ffmpeg plugin only with the internal FFmpeg sources since it is optionaly linked to an external FFmpeg library. In both cases the provided SPEC files have to be modified.


  1. I'm fairly new to Linux and command line stuff. Could you walk through this process a little bit? I get errors from the start by "run the rpm -i command"... Thanks!

  2. Sorry no, I don't want to take someone by his hand and show step by step what should be run. I gave a first example how to build an RPM source package in the previous post. There are many topics on this already.

    Well, regarding your issue, you copy the gstreamer-plugins-ugly-<VERSION>.src.rpm file inside SRPMS and execute the command:
    rpm -i SRPMS/gstreamer-plugins-ugly-<VERSION>.src.rpm

    This will extract the tarball with the source code and patches inside the SOURCES directory and the spec file to build the binary packages inside the SPECS directory.

    And if all you are going to do is add MP3 support, you should get the free codec from Fluendo anyway.