이번에는 임베디드 보드에 실행되는 mayplay를 만들어 보겠습니다.

zlib 설치

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

http://www.zlib.net

이 글을 작성하고 있는 시점에서는 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)
]#