mpg123: Command Line Audio Tutorial

Did you ever want a little background music with your daily grind but either you didn’t want to (or couldn’t) fire up something graphical to use? That’s where mpg123 comes to your rescue. Mpg123 is a fast console MPEG audio player and decoder library. If you’re about to click on to another story because you think that a command line music playing application is devoid of features or functions, you’re going to miss out on one of the coolest and most versatile MP3 applications you’ve ever seen.

Those of you who work most of your 50-hour plus weeks at the command line deserve the same multimedia enjoyment that your GUI-tethered coworkers enjoy. Applications such as mpg123 give you the opportunity to get real work done and have a little fun while you do.

The Basics

It’s simple to install mpg123. You only need simple typing skills to install this command line gem.

$ sudo apt-get install mpg123


$ sudo yum install mpg123

For purists or those less fortunates who have no packaged mpg123 version, you can download the source code is at http://sourceforge.net/projects/mpg123/.

Taking mpg123 for a Test Drive

Though mpg123 is small in stature, it could take 30 minutes or more to install it. It takes so long because, during the installation and setup process, the program automatically downloads sample podcasts into your home directory under a new directory named POD. Under that directory you’ll see the following directories: Linux, LINUX and Privacy. In each of those directories, you have directories that are home to three specific podcasts: The Privacy Podcast, The Linux Link and LUG Radio. For the purposes of this article, I chose the Privacy Podcast, by Aaron Titus, titled “When Breaches Go Unreported” due to its excellent and serious content. You should definitely listen to this one for your own edification.

To play one of the downloaded podcasts or a music file that you’ve purchased legally, summon mpg123 at the command line and use the -C switch to invoke mpg123’s full control complement.

$ mpg123 -vC POD/Privacy/Privacy Podcast/privacy-2007-10-22-56442.mp3

High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.12.1; written and copyright by Michael Hipp and others
        free software (LGPL/GPL) without any warranty but with best wishes
Decoder: SSE

Terminal control enabled, press 'h' for listing of keys and functions.

Playing MPEG stream 1 of 1: privacy-2007-10-22-56442.mp3 ...
Title:   When Breaches Go Unreported     Artist: Aaron Titus
Comment: Join Aaron Titus and explore common threats to your identity, and practical advice on how to make your identity more secure. www.aarontitus.net/privacy/
Album:   The Privacy Podcast
Year:    2007                            Genre:  Privacy
MPEG 1.0, Layer: III, Freq: 44100, mode: Stereo, modext: 0, BPF : 418
Channels: 2, copyright: No, original: No, CRC: No, emphasis: 0.
Bitrate: 128 kbit/s Extension value: 0
Frame#   768 [15040], Time: 00:20.06 [06:32.88], RVA:   off, Vol: 100(100)

The podcast begins to play for you. This one is just under seven minutes in length. The ‘-v’ switch provides a verbose output that shows you the Channel information, bitrate, counter and volume settings. To see mpg123’s controls, type ‘h’ during playback. Doing so will show the menu of available controls displayed below.

 -= terminal control keys =-
[s]     or [ ] interrupt/restart playback (i.e. '(un)pause')
[f]     next track
[d]     previous track
[b]     back to beginning of track
[p]     loop around current position (like a damaged audio CD;-)
[.]     forward
[,]     rewind
[:]     fast forward
[;]     fast rewind
[>]     fine forward
[<]     fine rewind
[+]     volume up
[-]     volume down
[r]     RVA switch
[v]     verbose switch
[l]     list current playlist, indicating current track there
[t]     display tag info (again)
[m]     print MPEG header info (again)
[h]     this help
[q]     quit
[c]     or [C] pitch up (small step, big step)
[x]     or [X] pitch down (small step, big step)
[w]     reset pitch to zero

If you have a directory that contains your favorite songs, you can play them all by issuing the mpg123 command with a wildcard setting.

$ mpg123 -vC *.mp3

Remote Access

If you must connect to your MP3 library remotely, don’t despair; you can listen as if you had direct access to the system console. From your local system, ssh to the remote system and issue the mpg123 command to enjoy your audio gold just as you would from the console. This feature comes in handy for those of you who can connect remotely to a home-based Linux system that has all your MP3s, leaving your work computer untouched by any “foreign” files that could score you a reprimand (or worse) from those who dispense your paycheck.

The mpg123 project maintainers provide regular updates though the documentation could use some help. Your best source for information on it is through its man page. You can get a lot of mileage out of mpg123 but beyond the basics, you’re on your own. For those of you so inclined, contact the developers to enhance and expand the documentation for this incredibly simple, fast and flexible utility.