그래픽 & 멀티미디어
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 를 내려 받습니다.
이 글을 작성하고 있는 시점에서는 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)
]#