No doubt that MP3 is the most popular audio format out there, so it’s only natural that most users expect that any software which deals with audio files has MP3 support built in. However not all MP3 patents have expired in some countries, therefore some Linux distributions don’t provide MP3 codecs out of the box because they violate their policies.
Recently I had to edit a personal MP3 file, so after a quick research I decided to install Audacity which is available at Fedora‘s repository. However, as soon as I tried to open that MP3 file in Audacity, I discovered that it wasn’t compiled with MP3 support (due to the reasons that I explained above):
RPM Fusion‘s free repository contains a package called audacity-freeworld
that comes with FFmpeg enabled, so you can use it to work with MP3 and other proprietary audio formats, but just for fun I decided to recompile Fedora’s Audacity with MP3 support myself, after all, that’s the beauty of open-source software. Besides, what else to do on a Friday night when all my family was already in bed? 🙂
This article describes how to do that, therefore if you need/want to add MP3 support to Audacity just keep reading. All this was tested on a Fedora 23 Workstation.
I could do this in a few different ways, but I picked what I believe was the easiest one, which basically meant that I would have to:
- Prepare my computer to build a RPM
- Download Audacity’s source RPM (SRPM) from Fedora’s repository
- Build a new RPM for Audacity with MP3 support somehow
- Install the new RPM and test it
Keep in mind that for commercial (i.e. revenue-generating) use you may need to pay royalties for using MP3 software, but there are patent-free alternatives to MP3, like Ogg Vorbis, that you might want to consider.
Preparing the computer to build SRPMs
This needs to be done only once, so if you have already done this on your computer then you don’t need to do it again.
Fedora’s wiki has a lot of information about how to create a RPM package, but since you are not going to create a RPM package from scratch (you’re just going to recompile one official SRPM for your personal use) the process is a lot simpler: no need to run rpmlint, mock, manage GPG keys and signatures, etc.
First of all you must be root
before you can execute the following steps. To become root
you just need to open up a terminal and type the following command:
$ su -
Then you will be asked for the root
’s password. After that, let’s make sure you have all the software that is needed. Just type the following command line:
# dnf -y install rpmdevtools mock @c-development
It’s generally a bad idea to build RPMs as root
because you might accidentally pollute or even damage your system, therefore we need to create a new non-privileged user just to do that. Simply run the following commands:
# useradd -G mock mockbuild # passwd mockbuild
The two command lines above will create the user mockbuild
on your system, add it to the mock
group and ask you to define a password for it. Type any password you want, preferably one that is long and complex enough but still you can remember it (TIP: use six words from Dicewareâ„¢).
Since this new user will only be used to build RPMs, it’s likely that you don’t want to see it listed in GDM‘s login screen. In order to hide it from that screen you need to create the file /var/lib/AccountsService/users/mockbuild
with the following two lines in it:
[User] SystemAccount=true
Ok, so now that the user was created you have to make sure that the directory structure required to build a RPM package is in place. Just execute the following command:
# sudo -u mockbuild -i rpmdev-setuptree
Your computer is finally prepared to build RPMs.
MP3 is free to use so no need to pay royalties anymore.
Almost. It seems there is still one patent (US5703999) that will expire only on December 30, 2017.
After that yes, it should be ok to consider MP3 public domain. 🙂
Thank you so much. Your instructions are clear and concise. Nice job!
This was so useful! Thank you so much.
Thank you very much, this was really helpful for me.
Thank you! Worked perfectly with new version on Fedora 25…
Thanks so much!
It all works!
Though it was different version and different folder for me and required some more libs, but with common logic it all worked)
Command
dnf -y install ~mockbuild/rpmbuild/RPMS/x86_64/audacity-2.1.2-4
didn’t work as the filename was not complete CDing to that directory & ls gave the full name, then
dnf -y install ./audacity-2.1.2-4.fc24.x86_64.rpm
succeeded and audacity with mp3 access now works fine.
Thanks
The command in this article is:
dnf -y install ~mockbuild/rpmbuild/RPMS/x86_64/audacity-2.1.2-3.fc23.x86_64.rpm
Not sure why it was truncated for you.
Excellent! It worked first time.