일반적으로 오디오 CD로부터 mp3 파일을 인코딩(생성)하기 위해서는 잠깐의 구글링을 통해 각종 인코딩 프로그램을 다운로드 받아 사용하면 된다.

윈도우 계열 뿐 아니라 OS X에도 이러한 인코딩 프로그램이 많이 있는데 오늘은 LAME을 이용하여 Terminal의 Command-line 상에서 인코딩하는 방법을 알아보려고 한다.

http://lame.sourceforge.net

LAME 프로젝트는 1998년부터 시작되었다.

그리고 현재 버전은 3.99.5, 아래 링크에서 다운로드 할 수 있다.

http://sourceforge.net/projects/lame/files/lame/3.99/

LAME 은 소스 형태로 배포되고 있으므로 다운로드 받아 컴파일하면 된다. 잘 컴파일되었다면 아래와 같이 생성된다.

drwxr-xr-x  6 viktor  staff  204  2 28 13:59 lib
drwxr-xr-x  4 viktor  staff  136  2 28 13:59 share
drwxr-xr-x  3 viktor  staff  102  2 28 13:59 include
drwxr-xr-x  3 viktor  staff  102  2 28 13:59 bin

그리고 bin 디렉토리에 들어가면 lame이라는 이름의 실행 바이너리가 존재한다. 그리고 이 lame의 다양한 옵션을 이용하여 원하는 인코딩을 할 수 있다.

사실 여기까지는 워낙에 많은 참고자료들이 있어 큰 어려움은 없다. 하지만 LAME이 Command-line 기반이다보니 손쉽게 mp3를 인코딩하는데는 쉽지 않다. 예를 들어 오디오 CD에 20개 정도의 트랙이 있다고 하면, lame을 스무 번 돌려야 하고 파일 이름을 지정해줘야 하고.. 하는 것이다.

그래서 아래와 같이 간단하지만 많은 고뇌가 투여된 스크립트를 만들었다. 320kbps 인코딩 기준이다.

#!/bin/bash

lame_home="/usr/lame3995"
file_prefix="singer-favorite-songs"
title="title"
artist="singer"
album="FavoriteSongs"

audio_home="/Volumes/Singer's Favourite Songs"
output_dir="/mp3/lame/${artist}/${album}"

mkdir -p ${output_dir}

cd "${audio_home}"

find . -name "*.aiff" -print0 | while read -d $'\0' file
do
  filename=`echo ${file} | sed -e 's/^.\///g' | sed -e 's/.aiff$//g'`
  echo ${filename}

  ${lame_home}/bin/lame -q0 -b320 \
    --tt ${title} \
    --ta ${artist} \
    --tl ${album} \
    "${audio_home}/${filename}.aiff" \
    "${output_dir}/${file_prefix}-${filename}.mp3"
done