그래픽 & 멀티미디어
이번에는 임베디드 보드에 실행되는 mayplay를 만들어 보겠습니다.
zlib 설치
zib 설치는 "gxLib 란..(설치 방법 포함)" 글에 아주 자세하게 설명하고 있습니다. 여기서는 설치하는 방법만 정리하여 올립니다. 아래의 링크에서 zlib 를 내려 받습니다.
이 글을 작성하고 있는 시점에서는 zlib 1.2.3이 릴리즈되었습니다.설치 예는 mips 칩을 사용한 EZ-AU1200에 맞추어 설명하겠습니다. 아울러 설치를 /usr/mipsel-linux 에 설치하겠습니다.
]# tar zxvf zlib-1.2.3.tar.tar ]# cd zlib-1.2.3 ]# CC=mipsel-linux-gcc AR="mipsel-linux-ar rc" RANLIB=mipsel-linux-ranlib ./configure
--prefix=/usr/mipsel-linux ** 주의 *** 위의 행은 한 번에 실행하세요. .confingure 를 따로 실행하시면 안 됩니다. ]# make && make install
에러 없이 설치되었다면 성공입니다. 만들어진 zlib를 타겟 보드에 복사해야 겠지요. 그런데 커널 2.6 이상의 EZ-보드에는 이미 zlib가 설치되어 있으므로 굳이 복사할 필요는 없습니다만, 그래도 적겠습니다.
]# cd /usr/mipsel-linux/lib
]# tar zcvf mipsel-lib-z.tar.gz libz*
만들어진 mipse-lib-z.tar.gz를 ez-board의 /lib 에 풀기를 하시면 됩니다.
madplay 다운로드
작업 디렉토리를 /tmp/madplayer-mipsel에서 하겠습니다. 제가 애용하는 보드가 au1250 보드이거든요. ^^ arm 보드를 사용하신다면 /tmp/madplayer-arm 와 같이 적당한 이름의 디렉토리를 이용하세요.
]# make /tmp/madplayer-mipsel ]# cd /tmp/madplayer-mipsel
/tmp/madplayer-mipsel 디렉토리에 madplay 소스 파일을 내려 받습니다.
이 글을 작성할 때의 버전에 따른 파일 이름입니다.
- 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 --host=mipsel-linux // arm 보드용이라면 arm-linux 라고 입력
]# make
]# cp .libs/libid3tag.a .
libmad 를 컴파일합니다.
]# cd /tmp/madplayer/libmad
]# make clean
]# ./configure --host=mipsel-linux // arm 보드용이라면 arm-linux 라고 입력
]# make
]# cp .libs/libmad.a .
이제 madplay를 컴파일합니다.
]# cd /tmp/madplayer/madplay
]# ./configure --host=mipsel-linux // arm 보드용이라면 arm-linux 라고 입력
]# make
에러 없이 컴파일이 끝나다면 성공한 것입니다. 제대로 madplay 가 만들어 졌는지 확인해 보겠습니다.
]# ls -al madplay -rwxr-xr-x 1 root root 247286 6월 4 03:58 madplay ]# file madplay madplay: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), for GNU/Linux 2.6.11,
dynamically linked (uses shared libs), for GNU/Linux 2.6.11, not stripped]#
타겟보드로 파일 복사
libid3와 libmad 라이브러리 파일을 타겟보드로 복사해 주어야 하는데, 압축해서 복사하는 것이 좋습니다.
]# cd /tmp/madplayer-mipsel/libid3tag/.libs ]# tar zcvf libid3tag-mipsel-lib.tar.gz libid3tag.s* ]# cd /tmp/madplayer-mipsel/libmad/.libs ]# tar zcvf libmad-mipsel-lib.tar.gz libmad.s*
이 라이브러리 파일을 압축하여 타겟보드의 /lib에 풀어 놓습니다.
// 여기서부터는 타겟보드에서 실행하는 것입니다. ]$ mount -t nfs -o nolock 192.168.10.94 ........nfs 연결 ]$ cd /lib ]$ tar zxvf /mnt/nfs/libid3tag-mipsel-lib.tar.gz ]$ tar zxvf /mnt/nfs/libmad-mipsel-lib.tar.gz
이번에는 madplay를 적당한 곳에 복사하거나 nfs 디렉토리에서 mp3를 재생해 봅니다.
]$ cd /mnt/nfs ]$ ./madplay pocker-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)
]#