Command Line Audio: Simple as mpg123

Your mileage may vary with mpg123 but your MP3 listening enjoyment never will.

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

or,

$ 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.

Kenneth Hess is a Linux evangelist and freelance technical writer on a variety of open source topics including Linux, SQL, databases, and web services. Ken can be reached via his website at http://www.kenhess.com. Practical Virtualization Solutions by Kenneth Hess and Amy Newman is available now.

Comments on "Command Line Audio: Simple as mpg123"

leamanc

I first fell in love with mpg123 when I got Ubuntu 5.x or 6.x (I forget which) up and running on a 400 MHz G4 Cube. Remember, this was a lifetime ago in Linux terms; PowerPC has never been a great platform for desktop Linux; and Ubuntu (although the best Linux option for my Cube) was nowhere near as smooth as it is now.

On this setup, even bare-bones music players like Rhythmbox had a hard time keeping up with playing audio files of any kind if I wanted to do anything else with the computer. Skipping, stuttering, and other annoyances were the norm.

On a whim, I searched Synaptic for a command-line MP3 player, and found mpg123. It was great! It played my music in the background, the interface was super-easy to learn, and being a CLI app, it was scriptable! I wrote all kinds of quick-and-dirty bash scripts to start music playing when I sat down at the computer, did cool things like build playlists from text files, set up a shuffle mode, etc. It was good geeky fun, but the best part was I had music while browsing in Firefox on that creaky old box. :-)

Sadly, I haven’t used mpg123 since I retired the Cube, but I will always have fond memories of it.

Reply
shreedhan

How is this different from mplayer in command line ?

Reply
gillbates

At my previous work, we installed a PHP web-based mp3 jukebox on our development server. The backend used mpg123, I think.

Reply
curmudgeonbob

cmus is not limited to mp3 files and just as easy to use.

Reply
killerb

Beside cmus I can definitely recommend MOC (Music On Console)
It is designed to be powerful and easy to use, with a command structure and window layout similar to the Midnight Commander console file manager.
Supported file formats are: mp3, Ogg Vorbis, FLAC, Musepack, Speex, WAVE, AIFF, AU (and other less popular formats supported by libsndfile.

Cheers

Reply

I want to convert text to speech with mpg123. Can I use this program and how to use that?
THank you for your answer :)

Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>