[출처] http://xucxo.blogspot.kr/2010/08/ebs-lame-mp3gain-mplayer.html

우분투에서 EBS 라디오 예약 녹음 하기

영어 공부에 관심 있으신 분들 많으시죠? 학원도 많고, 교재도 여러가지가 있지만 뭐니뭐니해도 가장 확실한 공인인증서를 달고 있는건 역시 EBS 방송일겁니다. 물론 라디오 방송에 레이나 선생님은 없지만 수준높은 강사와 양질의 프로그램이 많으면서도 교재만 구입하면 강의는 무료라는 장점이 있으니까요.

저도 출퇴근하면서 EBS 방송을 듣고 있는데요. 이왕 공부하는거 제대로 들어보고 싶긴 한데, 차안에서 졸거나 집중하지 않고 그냥 흘려듣는 경우가 많고 시간대도 딱 맞지 않기때문에 중간부터 듣는 경우가 대부분입니다. 그래서, 방송을 녹음했다가 나중에 제대로 듣고싶다는 생각이 들었죠. 그때 마침 구석에서 먼지만 쌓여가던 리눅스(Ubuntu) 넷북이 눈에 들어왔습니다. 녀석을 잘 이용하면 가능하겠더군요.


1. 필요한 프로그램 설치

인터넷에서 스트리밍 되는 오디오를 녹음하는 방법은 여러가지가 있지만, 이제부터 사용할 것은 mimms, mplayer, lame을 조합한 방법입니다. 뭔지 알 수 없는 것들이 나왔는데 게다가 조합한다고 하니 벌써부터 머리가 아프실텐데요. 고민하지 말고 필요한거니 일단 설치부터 해보겠습니다.

$ sudo apt-get install mimms
$ sudo apt-get install mplayer
$ sudo apt-get install lame

간단히 커멘드 세 줄 입력해서 설치가 되긴했는데, 과연 이게 뭐하는 것들일까요?
우선, mimms는 mms stream을 파일로 저장(dump)하기 위한 용도입니다. 이때, asx 포맷으로 저장되는데 mplayer를 이용해서 이것을 law type인 pcm으로 변환(decode)시켜주고요. 마지막으로 lame을 사용하여 pcm을 mp3로 바꿔(encode)주는 것입니다. 이 세가지 과정을 실제 방송시간에 순서대로 실행해주면 되는 것이지요.

그런데 매번 시간 맞춰 일일이 실행시켜 줄것 같으면 뭐하러 저런거 설치하고 그랬나요? 그냥 가지고 있는 기기(mp3p 또는 스마트폰 등)의 '녹음'버튼만 누르면 되는것을... 굳이 컴퓨터 앞에서 이러고 있는 이유는 직접 신경쓰지 않아도 시간되면 컴퓨터가 알아서 녹음하게 하기 위해서죠. 물론, 기기에 '예약녹음' 기능이 있으신 분들도 계시겠지만, 인터넷에 연결된 컴퓨터를 통해서 녹음하는 것은 아날로그 구간이 없어서 음질이 매우 깨끗하다는 장점도 있습니다.


2. 녹음 스크립트 작성

어쨌든, 컴퓨터에게 시간맞춰 녹음작업을 시키기 위해서는 녹음하는 스크립트를 만들어서 crontab에 등록시키면 됩니다. crontab에 등록할 스크립는 매우 간단한데, 주의할 점은 mimms든 mplayer든 lame이든 quiet 옵션(실행중에 터미널 출력을 하지 않도록 하는 옵션)을 주지 않고 실행하면 터미널에 계속 뭔가 메시지를 뿌려대는 녀석들이기 때문에 스크립트를 그냥 실행하면 잘 돌아가던 것이 crontab에 등록해서 실행하면 제대로 되지 않습니다.

관련 자료를 검색 해보니 cron으로 동작하는 프로그램이 터미널에 메시지를 뿌리면 root에 email이 발송된다고 하는데 아무래도 그 과정에서 오류가 발생하는것 같네요. 그래서, 각각의 quiet 옵션을 찾아서 추가해주면 cron에서 돌려도 정상적으로 동작합니다.

스크립트는 방송 프로그램 이름과 방송 시간(기간)을 순서대로 인자로 받아서 동작하게 되어 있으며 내용은 다음과 같습니다.

#!/bin/bash

DATE=`date +%Y%m%d`
EBSURL="mms://211.218.209.124/L-FM_300k"
FPATH="$HOME/Radio/EBS"
FNAME="$1_$DATE"
RECTIME=$2
ASXFNAME="$FPATH/$FNAME.asx"
WAVFNAME="$FPATH/$FNAME.wav"
MP3FNAME="$FPATH/$FNAME.mp3"
MIMMS="/usr/bin/mimms"
MPLAYER="/usr/bin/mplayer"
LAME="/usr/bin/lame"

if [ ! -d $FPATH ] then
mkdir -p $FPATH
fi
$MIMMS -q -t $RECTIME $EBSURL $ASXFNAME
$MPLAYER -quiet -ao pcm:file=$WAVFNAME $ASXFNAME
rm -f $ASXFNAME
$LAME --quiet -h $WAVFNAME $MP3FNAME
rm -f $WAVFNAME

3. 스크립트를 crontab에 등록

마지막으로, 스크립트를 방송 시간에 맞춰 crontab에 등록해주면 됩니다. 저는 home 디렉토리 아래에 Radio 디렉토리를 만들어서 그 안에 mmsrec 이라는 이름으로 스크립트파일을 저장했습니다. 따라서, crontab에는 아래와 같이 스크립트 파일을 절대경로로 등록하였습니다. crontab 등록방법은 다음 커멘드를 입력하시고 작업을 등록하시면 됩니다.

$ crontab -e

다음의 crontab 작업리스트를 전부 등록하면 현재 방송중인 EBS 라디오 일반인 대상 영어 관련 프로그램은 전부 녹음이 가능합니다. 하지만, 이걸 다 듣고 공부한다는건 무리겠지요. 필요한 방송만 골라서 등록하시면 되겠습니다.

# m h dom mon dow command
0 5 * * 1-6 $HOME/Radio/mmsrec DynamicWriting 20
40 5 * * 1-6 $HOME/Radio/mmsrec ToeicKing 20
0 6 * * 1-6 $HOME/Radio/mmsrec EarEnglish 30
30 6 * * 1-6 $HOME/Radio/mmsrec BusinessEnglish 20
50 6 * * 1-6 $HOME/Radio/mmsrec PocketEnglish 10
0 7 * * 1-6 $HOME/Radio/mmsrec MouseEnglish 20
20 7 * * 1-6 $HOME/Radio/mmsrec EasyEnglish 20
40 7 * * 1-6 $HOME/Radio/mmsrec PowerEnglish 20
0 8 * * 1-6 $HOME/Radio/mmsrec MorningSpecial_1 60
0 9 * * 1-6 $HOME/Radio/mmsrec MorningSpecial_2 56
0 14 * * 1-6 $HOME/Radio/mmsrec ShowSaengSaengEnglish 58
0 16 * * 1-6 $HOME/Radio/mmsrec PopsEnglish_1 60
0 17 * * 1-6 $HOME/Radio/mmsrec PopsEnglish_2 56
0 18 * * 1-6 $HOME/Radio/mmsrec EnglishGoGo 56
0 19 * * 1-6 $HOME/Radio/mmsrec EnglishHQ 110
0 21 * * 1-6 $HOME/Radio/mmsrec BasicJapanese 20

글을 작성하기 위해 EBS 라디오 프로그램 편성을 살펴보다보니 과연 영어의 비중이 이렇게 높았던가 싶더군요. 영어관련 프로그램이 전체 방송시간에 2/3는 되는것 같습니다. 이정도면 가히 영어교육 방송이라해도 손색이 없을 정도네요. 아래 그림은 위 작업 결과로 매일같이 쌓여가고 있는 녹음파일들 인증샷입니다. 요즘 날씨도 좋은데 이럴땐 역시 어두컴컴한 방구석에서 영어공부나 하는게 최고죠!

+ Recent posts