Creating a multimedia center with Mpeg Menu System V2

Menus and Choices


You'll forget you're even working with a computer when you browse for your favorite videos, pictures, and audio files with Mpeg Menu System.

By Hagen Höpfner

www.sxc.hu

If you have an old, unused computer lying around your cellar or attic, you can convert it into a multimedia center with the Mpeg Menu System V2 [1] (MMSV2). MMSV2 lets you tune in to your favorite Internet radio station, listen to MP3s and audio CDs, run movies from your hard disk, and view images of your latest vacation, all without a special player on the desktop.

MMSV2 has its own menu system that gives you direct access to multimedia functions. The underlying Linux system can use the network to communicate and thus access servers, or it can act as a server itself. A simple infrared remote control is all you need to control the system. And if your multimedia machine is quiet enough, you can even replace the DVD player, radio, and MP3 player in your living room.

Building the Player

Before you can enjoy the multimedia spectacle, you will need to build MMSV2 from source code [1]. You need the imlib2 developer packages, libalsaplayer, lirc, and X11 for the build, along with the gcc, autoconf, and libtool tools. If one of these components is missing, running ./configure in the source code directory will let you know.

The next step is to pass appropriate parameters to the configuration script. The program has a --help switch that gives you a comprehensive list of options. We used the command ./configure --disable-dxr3 --enable-eject-tray --enable-mpeg --enable-fancy-audio --enable-fancy-movie --enable-sdl in our lab. --disable-dxr3 disables DXR3 hardware support. If you have an Mpeg decoder card, you need to set up the card first. The HOWTO at [2] gives you details on setting up the decoder card.

Although the configuration script ran without producing any errors, we were unable to compile the package. The --enable-fancy-audio configure option enables additional audio functions that require another bunch of packages: pcre-devel, sqlite-devel, and taglib-devel. If you set --enable-sdl, you additionally need the SDL developer package sdl-devel.

You can use MMSV2 without X11. In this case, the program uses SVGAlib, and you will need to install the SVGAlib developer packages. The configuration script parameter for this is --enable-vgagl.

Today's distributions typically have restricted media players. As MMSV2 uses Xine or MPlayer to play videos, the player should support as many file and media formats as possible. Some experts maintain that copyright laws forbid the use of tools to workaround the DVD copy protection scheme, CSS. This is why all major distributions leave out the Libdvdcss library, which is required to play DVDs.

Raising the Curtains

When you launch mms, you will see a note to the effect that the program does not have DXR3 support, and that you should set an alternative output device. The -o sdl switch lets you select SDL output, and -o mpeg outputs an MPEG file. Another start parameter is -d, to launch MMSV2 in the background. The -i parameter specifies possible input devices, such as lirc for the remote control and keyboard for the keyboard.

As write access to the /etc/mms directory is restricted to the root user, you will need to select your own configuration directory or modify the permissions. It makes sense to start off by copying the default configuration by entering cp -R /etc/mms ~/.mms. The program finds the ~/.mms directory without any additional parameters. While you are copying, you might as well copy the themes and the Vera font to the right location. Type cp -R /usr/local/share/mms/* ~/.mms to do this. Now type mms -o sdl to launch the program, and you should see the main menu shown in Figure 1.

Figure 1: The MMSV2 main menu gives an overview of all the program's functions.

You can use the keyboard to navigate the menu. The up and down arrows move through the menu, and Enter selects a menu item. If a menu has subordinate items, you can press the left and right arrows to access them. For example, the Play audio from harddrive option has two more items: Play audio from CD/DVD and Play audio from radio/network).

Key Mapping

The ~/.mms/input-keyboard file maps the keyboard, but if you use the remote control to navigate, ~/.mms/input-lirc is the file you need. This important configuration file has a simple structure. Most entries in the input-keyboard file have the generic format mode,command,key. MMSV2 has a number of modes. (General) keyboard shortcuts are valid in all other modes; for example, you use the same keys to navigate in playlist mode and in the main menu. And help is always available by pressing the [H] key. Tables 1 through 3 give you an overview of the most important keyboard assignments.

Audio file handling takes some getting used to. MMSV2 only plays files on the playlist. If you opt to play audio from the hard disk in the main menu, the file system tree is displayed, and you can use the arrow keys to navigate - however, to allow this, the directory with the audio files has to be listed below audio_dir in the ~/.mms/config configuration file. If you want to allow MMSV2 to browse your whole hard disk, just add the root directory, /, to this list.

The mov_dir = /stuff/ variable for movies, and picture_dir = /stuff/pictures/ variable for images, work the same way. If you have various hard disk directories with media, you can use multiple lines based on the same principle.

Pressing the right arrow in the media list opens a subdirectory. The left arrow navigates to the next higher directory (back up to the top directory). Pressing the enter key adds the directory contents, or a single audio file, to the playlist (Figure 2).

Figure 2: Pressing [I] gives you information about the tracks.

You can use the same approach to move the tracks from an audio CD to the playlist. Pressing 3 plays the tracks. The keyboard shortcuts in Table 2 then allow you to control the player.

You can launch DVDs by selecting Play movie (DVD/(S)VCD). Unfortunately, the program does not support DVD menus, and this means that locating the movie track is a question of trial and error. To do so, go to Options|Movie Options|DVD track. If you want to play movie files from your hard disk, MMSV2 attempts to discover more information about the film from the Internet Movie Database based on the file name. Pressing [Enter] starts the movie. Pressing [I] tells MMSV2 to display additional information (Figure 3).

Figure 3: What's the movie about? Press [I] for a short description.

Sound and Vision Backdrop

Themes let you change the appearance of MMSV2. You'll find three alternative designs at the MMSV2 website [1]. After downloading, unpack the archive in ~./mms/themes. Then go to Options and click Themes/Skins to select a scheme.

Now that MMSV2 knows where to look for files on your hard disk, it still needs to know the path to the CD or DVD drive. We had to modify the entries for cdrom and cdrom_name for the combi-drive in our lab machine. The /etc/fstab file gives you the values, which were cdrom = /dev/cdrecorder, /media/cdrecorder and cdrom_name = /dev/cdrecorder, dvd device for our lab machine. To let non-privileged users access the drive, add user to the mountpoint entry in your /etc/fstab. To let MMSV2 open and close the drive on Suse, change the path to the eject tool in ~/.mms/config to eject_path=/bin/eject.

If you want MMSV2 to use Mplayer, set movie_player = mplayer in the configuration file. The mplayeropts line is for fine tuning the player. To avoid having to specify the output device each time you launch MMSV2, specify the device by adding outdev = sdl to the configuration file. The documentation area of the homepage at [1] gives you a full list of parameters.

No Window Manager

Just a few more steps are required to launch MMSV2 without a window manager. To launch MMSV2 rather than KDE on booting your machine, create a /opt/kde3/share/apps/kdm/sessions/MMSV2.desktop script (see the "Desktop Entry" box). Users with Suse can do this in Yast by selecting System|Editor for /etc/sysconfig-Dateien|Desktop|DISPLAYMANAGER_AUTOLOGIN.

On our lab machine, MMSV2's SDL full screen mode was blank. To work around this problem, set the image size manually, and do not launch MMVS2 in full screen mode (fullscreen = false in ~/.mms/config.)

You can change resolution from 800x600 pixels to 1024x768 pixels in the configuration file by changing the lines to v_res=1024 and h_res=768. This has the same effect as selecting full screen mode. The combination with mplayeropts = -cache 8192 -framedrop -fs tells Mplayer to run on top of the MMSV2 window and thus display the movie. Mplayer's -fs parameter launches the software in full screen mode.

Desktop Entry
01 [Desktop Entry]
02 Encoding=UTF-8
03 Type=XSession
04 Exec=/usr/local/bin/mms
05 TryExec=/usr/local/bin/mms
06 Name=MMSV2
07 Comment[de]=Mpeg Menu System V2

Credits

MMSV2 makes a multi-functional multimedia player of more or less any Linux computer. Besides audio and video output and slideshows, this handy menu tool can control analog or digital TV cards, giving users the comfort of an electronic program guide (EPG).

On the downside, not all of MMSV2's features work the first time you use it, Some manual tweaking is often necessary to get your MMSV2 menu system up and running.

INFO
[1] MPEG Menu System V2: http://mms.sunsite.dk/
[2] DXR3 & Hollywood Plus Logo Linux DXR3 and Hollywood+ Driver Project Howto: http://dxr3.sourceforge.net/howto.html
THE AUTHOR

Hagen Höpfner has now completed his doctorate in computer science, and is now a lecturer for database and information systems at the International University in Germany (http://www.i-u.de), Bruchsal, Germany. Besides being a loving father, Hagen is the co-author of a reference manual on mobile databases and information systems. In his leisure time, he plays guitar with a rock band called "Gute Frage" (http://www.gutefrage.info).