wav 파일 재생은 "Wave 파일 재생" 글에서 말씀을 드렸습니다만, 환경이 열악한 임베디드 보드에서는 파일 크기가 큰 wav 보다는 mp3와 같은 압축된 파일을 사용하는 것이 좋을 것입니다. 또한 파일 크기를 따지기에 앞서 mp3 파일을 다룰 수 있다면 좋겠죠. 환경이 열악한 임베디드 시스템에서도 부담없이 mp3를 재생해 주는 mp3 플레이어가 있습니다. 바로 madplay 입니다.

 

madplay는 멋진 GUI가 없습니다. 대신, 쉘에서 mp3 파일을 간단하고 쉽게 실행할 수 있는 아주 작고 부담이 적은 플레이어입니다. 이렇게 말이죠.

]$ ./madplay poker-face.mp3

이번 시간에는 madplay를 설치하는 방법에 대해 알아 보겠습니다. 우선은 I386 데스크탑에서 실행되는 madplay를 생성하고, 다음 시간에 arm이나 mips 같은 임베디드용 madplay를 만들어 보겠습니다.

zlib 설치

madplay를 사용하기 위해서는 zlib가 필요하다고 하네요. zib 설치는 "gxLib 란..(설치 방법 포함)" 글에 아주 자세하게 설명하고 있습니다. 여기서는 설치하는 방법만 정리하여 올립니다. 아래의 링크에서 zlib 를 내려 받습니다.

http://www.zlib.net

이 글을 작성하고 있는 시점에서는 zlib 1.2.3이 릴리즈되었습니다. zlib를 아래와 같이 설치합니다. 기본 값으로 설치를 실행하면 /usr 밑에 zlib의 lib 파일과 include 파일이 설치됩니다.

]# tar zxvf zlib-1.2.3.tar.tar 
]# cd zlib-1.2.3
]# ./configure
]# make && make install

에러 없이 컴파일되고 설치되었다면 성공입니다.

다운로드

작업 디렉토리를 /tmp/madplayer로 하겠습니다.

]# make /tmp/madplayer
]# cd /tmp/madplayer

/tmp/madplayer 디렉토리에 madplay 소스 파일을 내려 받습니다.

/tmp/madplayer에 아래의 파일을 다운로드합니다.

  • madplayer-0.15.2b.tat.gz
  • libid3tag-0.15.1b.tar.gz
  • libmad-0.15.1b.tar.gz

압축파일을 풀기

]# tar zxvf libid3tag-0.15.1b.tar.gz 
]# mv libid3tag-0.15.1b libid3tag
]# tar zxvf libmad-0.15.1b.tar.gz
]# mv libmad-0.15.1b libmad
]# tar zxvf madplay-0.15.2b.tar.gz
]# mv madplay-0.15.2b madplay

컴파일

환경 변수에 라이브러리 패스를 잡아 줍니다.

]# export CPPFLAGS='-I../libmad -I../libid3tag'
]# export LDFLAGS='-L../libmad -L../libid3tag'

libid3tag 를 먼저 컴파일 합니다.

]# cd /tmp/madplayer/libid3tag
]# ./configure
]# make
]# cp .libs/libid3tag.a .

// libid2tag 쉐어라이브러리를 시스템의 라이브러리 디렉토리로 복사

]# cd .libs/
]# tar zcvf libid3tag-lib.tar.gz libid3tag.so*
]# cp libid3tag-lib.tar.gz /usr/lib
]# cd /usr/lib
]# tar zxvf libid3tag-lib.tar.gz

libmad 를 컴파일합니다.

]# cd /tmp/madplayer/libmad
]# make clean
]#  ./configure
]#  make
]#  cp .libs/libmad.a .

// libimad 쉐어라이브러리를 시스템의 라이브러리 디렉토리로 복사

]# cd .libs/
]# tar zcvf libmad-lib.tar.gz libid3tag.so*
]# cp libmad-lib.tar.gz /usr/lib
]# cd /usr/lib
]# tar zxvf libmad-lib.tar.gz

이제 madplay를 컴파일합니다.

]# cd /tmp/madplayer/madplay
]# ./configure
]#  make

에러 없이 컴파일이 끝나다면 성공한 것입니다. 제대로 madplay 가 만들어 졌는지 확인해 보겠습니다.

]# ls -al madplay
-rwxr-xr-x 1 root root 223344  6월  4 03:15 madplay
]# file madplay
madplay: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
for GNU/Linux 2.6.9, dynamically linked (uses shared libs), 
for GNU/Linux 2.6.9, not stripped
]#

madplay를 편하게 사용할 수 있도록 /usr/bin에 복사합니다.

]# cp madplay /usr/bin
]#

MP3 플레이

mp3 파일을 옵션으로 주어 재생합니다.

]# madplayer poker-face.mp3

mp3가 재생되면 성공!! madplay에 대한 더 자세한 설명은 --help로 확인하십시오.

]# madplay  --help
Usage: ./madplay [OPTIONS] FILE [...]
Decode and play MPEG audio FILE(s).

Verbosity:
  -v, --verbose                show status while decoding
  -q, --quiet                  be quiet but show warnings
  -Q, --very-quiet             be quiet and do not show warnings
      --display-time=MODE      use default verbose time display MODE
                                 (remaining, current, overall)

Decoding:
      --downsample             reduce sample rate 2:1
  -i, --ignore-crc             ignore CRC errors
      --ancillary-output=PATH  write ancillary data to PATH

Audio output:
  -o, --output=[TYPE:]PATH     write output to PATH with format TYPE (below)
  -b, --bit-depth=DEPTH        request DEPTH bits per sample
  -R, --sample-rate=HERTZ      request HERTZ samples per second
  -d, --no-dither              do not dither output PCM samples
      --fade-in[=DURATION]     fade-in songs over DURATION (default 0:05)
  -a, --attenuate=DECIBELS     attenuate signal by DECIBELS (-)
  -a, --amplify=DECIBELS       amplify signal by DECIBELS (+)
  -A, --adjust-volume=DECIBELS override per-file volume adjustments
  -G, --replay-gain[=PROFILE]  enable Replay Gain volume adjustments using
                                 PROFILE (radio, audiophile)

Channel selection:
  -1, --left                   output first (left) channel only
  -2, --right                  output second (right) channel only
  -m, --mono                   mix left and right channels for monaural output
  -S, --stereo                 force stereo output

Playback:
  -s, --start=TIME             skip to begin at TIME (HH:MM:SS.DDD)
  -t, --time=DURATION          play only for DURATION (HH:MM:SS.DDD)
  -z, --shuffle                randomize file list
  -r, --repeat[=MAX]           play files MAX times, or indefinitely
      --tty-control            enable keyboard controls
      --no-tty-control         disable keyboard controls

Miscellaneous:
  -T, --show-tags-only         show ID3/encoder tags only (do not decode)
  -V, --version                display version number and exit
      --license                show copyright/license message and exit
  -h, --help                   display this help and exit

Supported output formats:
  cdda    CD audio, 16-bit big-endian 44100 Hz stereo PCM (*.cdr, *.cda)
  aiff    Audio IFF, [16-bit] PCM (*.aif, *.aiff)
  wave    Microsoft RIFF/WAVE, [16-bit] PCM (*.wav)
  snd     Sun/NeXT audio, 8-bit ISDN mu-law (*.au, *.snd)
  raw     binary [16-bit] host-endian linear PCM
  hex     ASCII hexadecimal [24-bit] linear PCM
  null    no output (decode only)
]#