Fluendo mp3 decoder
The majority of podcasts are made available as mp3 files, which cannot be viewed by the OLPC by default. To enable mp3 playback, an extra codec has to be installed.
Fluendo has made available a free (as in beer) codec, with a free (as in speech) implementation with a paid up license for the GStreamer code framework. This requires execution of a license agreement for redistribution; unfortunately, the agreement does not permit sub-licensing, so while including it would be convenient and OLPC may choose to execute this agreement in the future, those redistributing our software would still have to execute this agreement to legally redistribute the codec.
Installation
You can get the Fluendo MP3 decoder for free from http://www.fluendo.com/shop/product/fluendo-mp3-decoder/ , but you have to register first. After "purchasing", download the "package for Linux generic i386".
Your goal is to copy the one file libgstflump3dec.so from the download into the directory /usr/lib/gstreamer-0.10 on your XO-1.
If you "purchased" on a regular PC, you then need to transfer the file fluendo-mp3-version.i386.tar.bz2 to your XO-1 (e.g. using a USB flash drive), then unpack it into a temp directory on your XO-1.
In Terminal activity, one set of commands to do so is:
mkdir tempmp3 cd tempmp3 tar -jxvf /media/USB_DRIVE_NAME/fluendo-mp3-versionNN.i386.tar.bz2 sudo mv -i codecs/libgstflump3dec.so /usr/lib/gstreamer-0.10/ cd - rm -r tempmp3
You should now be able to play MP3s using totem from the command line, gst commands on the command line, and by clicking .mp3 URLs in Browse.
To verify that GStreamer can find the codec, enter
gst-inspect flump3dec
Unless this command reports back 'No such element or plugin 'flump3dec' the plugin should be successfully installed.
Note that the Fluendo MP3 codec will be lost from /usr/lib/gstreamer-0.10 the next time you upgrade to a new OS build, so you will have to repeat this process.
Associating MP3 files with Browse in the Journal
The Totem plug-in tells Browse that it can play MP3 files even if you don't have the necessary codec installed, as you can verify by entering about:plugins in Browse's location field.
However, Browse does not tell the Journal that it can handle the MP3 mime type. Even after installing the codec, if you download an MP3 file to the Journal, or if you browse a USB flash drive containing MP3 files in the Journal, the Journal will not know how to Start the file. To associate .mp3 files with the Browse activity, you can edit its activity.info file to add audio/mpeg to its list of supported mimetypes. One way to do so:
- enter nano ~/Activities/Browse.activity/activity/activity.info in Terminal activity to edit the file
- navigate to the end of the mime_types line and add ;audio/mpeg (note the semicolon)
- press Ctrl+X to exit, saving the file.
- restart Sugar by pressing Ctrl+Alt+Erase, or by rebooting
Now .mp3 files in the Journal should display the Browse icon, and start Browse when you click them.
Avoid other directories
GStreamer also looks for codecs in ~/.gstreamer-0.10/plugins. However, if you put the codec in here, totem and gst commands that you run from the terminal will work, but you will not be able to play .mp3s in Browse, probably due to Rainbow's activity isolation.
Detailed installation on the XO
In order to download the codec you have to "buy" the Fluendo mp3 decoder from their store for $0.00 from http://shop.fluendo.com/ .
You are then allowed to download the file fluendo-mp3-versionNN.i386.tar.bz2
It is easier to use a web browser such as Opera that allows you to save files to the filesystem, instead of saving to the Journal. Nevertheless, you can retrieve it from the Journal if you download with the default web browser Browse:
In Terminal activity, become the root user.
Go to the datastore:
cd ~/.sugar/default/datastore/store/
and find out which filename is the plugin:
file * | grep bzip2
It's highly likely that you will only get one result. Copy the file to your home directory, while giving it a more sensible name:
cd ~olpc mkdir tempmp3 cd tempmp3 cp filename_found_in_datastore fluendo-mp3.tar.bz2
Having the file now, unzip it with tar:
tar -jxvf fluendo-mp3.tar.bz2
As in the main example above, move the file libgstflump3dec.so to /usr/lib/gstreamer-0.10:
mv -i codecs/libgstflump3dec.so /usr/lib/gstreamer-0.10
To playback a file
gst-launch-0.10 playbin uri=file:///path/to/file.mp3
- or to have a user interface
totem path/to/file.mp3
- or navigate to it in Browse to run totem as a browser plug-in