mpg123 (MPEG layer 3 audio player)

[ 戻る | トップページに戻る ]

概要

mpg123 とは、コンソール版の MPEG Audio Player である。

URL

http://www-ti.informatik.uni-tuebingen.de/~hippm/mpg123.html

インストール環境

Slackware 7.0 (Kernel 2.2.14 + glibc 2.1.2)
SHARP Mebius MN-550-X20 (Crystal PnP オーディオシステム CODEC)

必要なもの

特になし

バージョン

0.59r

インストール手順

$ tar xvfz mpg123-0.59r.tar.gz
$ cd mpg123-0.59r
$ make

You must specify the system which you want to compile for:

make linux-help     Linux, more help
make freebsd-help   FreeBSD more help
make solaris        Solaris 2.x (tested: 2.5 and 2.5.1) using SparcWorks cc
make solaris-gcc    Solaris 2.x using GNU cc (somewhat slower)
make solaris-gcc-esd  Solaris 2.x using gnu cc and Esound as audio output
make solaris-x86-gcc-oss Solaris with (commercial) OSS
make solaris-gcc-nas Solaris with gcc and NAS
(snip) 
Please read the file INSTALL for additional information.

Linux は help を見ろってか。
$ make linux-help

There are several Linux flavours. Choose one:

make linux          Linux (i386, Pentium or unlisted platform)
make linux-i486     Linux (optimized for i486 ONLY)
make linux-3dnow    Linux, output 3DNow!(TM) optimized code
                    (ie with 'as' from binutils-2.9.1.0.19a or later)
make linux-alpha    make with minor changes for ALPHA-Linux
make linux-ppc      LinuxPPC or MkLinux for the PowerPC
make linux-m68k     Linux/m68k (Amiga, Atari) using OSS
make linux-nas      Linux, output to Network Audio System
make linux-sparc    Linux/Sparc
make linux-sajber   Linux, build binary for Sajber Jukebox frontend
make linux-alsa     Linux with ALSA sound driver
make linux-mips-alsa Linux/MIPS with ALSA sound driver

make linux-esd      Linux, output to EsounD
make linux-alpha-esd Linux/Alpha, output to EsounD
make linux-ppc-esd  Linux/PPC, output to EsounD
    NOTE: esd flavours require libaudiofile, available from: 
          http://www.68k.org/~michael/audiofile/

Please read the file INSTALL for additional information.

EsounD て GNOME の esound のことだろうか? とりあえず、ここでは make linux にする。
$ make linux
$ su
# make install
# exit

コンパイル & インストールは OK 。では、いざ再生。
$ ./mpg123 ~/mp3/hoge.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Can't open /dev/dsp!

むー。/dev/dsp のパーミッションを調べてみると...
crw-rw-r--   1 root     sys       14,   3 Jul 19  1994 /dev/dsp
crw-rw-rw-   1 root     sys       14,  19 Jul 19  1994 /dev/dsp1

/dev/dsp に書き込めないのが問題なのかな?
$ su
# chmod o+w /dev/dsp
# exit

この状態で mpg123 してみると今度は動く。が、非常なスロー再生。 また、ブツブツという雑音も入る。むむむ。 ま、これは mpg123 の問題というより H/W or Sound driver の問題なのでここでは これ以上詳述しない。詳しくは、MN-550-X20 の Sound driver 設定ページにて。

EsounD 対応化

やはり、先のインストールでは GNOME 使用時に mpg123 で再生している時には、 GNOME の Sound Event 等で音がならないので、EsounD 対応化に挑戦する。
$ make linux-esd
(snip)
gcc -DI386_ASSEM -DREAL_IS_FLOAT -DPENTIUM_OPT -DLINUX -DREAD_MMAP -DOSS -DUSE_ESD
    -Wall -O2 -m486 -fomit-frame-pointer -funroll-all-loops -finline-functions -ffast-math
    mpg123.o tabinit.o common.o layer1.o \
    layer2.o layer3.o audio.o buffer.o decode_2to1.o equalizer.o \
    decode_4to1.o getlopt.o httpget.o xfermem.o decode_ntom.o \
    wav.o readers.o getbits.o control_generic.o \
    decode_i386.o dct64_i386.o decode_i586.o audio_esd.o -o mpg123 -lm -lesd -laudiofile
audio_esd.o: In function `audio_open':
audio_esd.o(.text+0x1bb): undefined reference to `esdserver'
collect2: ld returned 1 exit status
make[2]: *** [mpg123] Error 1
make[2]: Leaving directory `/usr/local/src/mpg123-0.59r'
make[1]: *** [mpg123-make] Error 2
make[1]: Leaving directory `/usr/local/src/mpg123-0.59r'
make: *** [linux-esd] Error 2

おろ? エラーだ。調べると確かに esdserver の宣言は mpg123.h にあるのだが、 extern のみであり実体宣言がない。また、それを呼び出している esd_play_stream_fallback の定義もない。むむむ。-lesd に含まれるのかな? よく見たら (^^; make linux-help した時のメッセージに、こんな事書いてあるじゃん。
NOTE: esd flavours require libaudiofile, available from:
 http://www.68k.org/~michael/audiofile/

とりあえず audiofile をインストールしてみる。 ...が、これは関係なかった。デフォルトで Slackware 7.0 にはインストールされて いる。うーん、やっぱり EsounD 側の問題なのかな? でも、どこを探しても esdserver の実体宣言がない。よくわからん。

[ 戻る | トップページに戻る ]