많이들 알고 계시겠지만, 팁강좌 게시판에 없는 것 같아서 하나 작성해 보았습니다^^
EBS 라디오 방송이 mms 에서 RTMP 로 프로토콜을 변경함에 따라서 새로운 녹음 방법이 필요하게 되었습니다. (수정 : mms 프로토콜도 주소가 다시 생겼다고 합니다. 기존에 mms방식을 이용하시던 분들은 그대로 사용하시면 될 것 같고, 두 가지 방식 다 이용가능 할 것 같습니다,)
새로운 방식은 데비안의 rtmpdump 라는 프로그램을 이용한 방식 입니다.
아치리눅스에서도 아치 유저 저장소, AUR (http://aur.archlinux.org ) --> (수정 : Extra저장소에 있는 것 같습니다.) 패키지 검색을 해보면 rtmpdump를 찾을 수 있기 때문에 마찬가지로 적용 가능하리라 생각합니다.
포고플러그 등 리눅스가 설치 된 개인 서버에서 활용 가능합니다.
스크립트는 우분투 강좌인 http://usemodj.com/blog/?p=2080 를 거의 그대로 적용하였습니다.
따라서 다른 곳에 글을 퍼가실 때는 위 블로그 주소도 반드시 함께 옮겨 주세요^^
우선 rtmpdump 및 libav-tools 패키지의 설치가 필요합니다.
rtmpdump는 라디오를 flv 형식으로 녹음해 주는 것이고,
libav-tools는 mp3파일 형식으로 변환해 주는 것 입니다.
'Apt-get install rtmpdump libav-tools' 라고 입력하여, 패키지를 설치하여 줍니다.
패키지 설치가 완료되면
'nano /EBSradio/ebs_record.sh' 라고 입력하여 파일을 생성하여 줍니다.
빈화면이 뜰텐데요. 거기에 다음 자주색 글씨의 내용을 붙여넣기 해 줍니다.
------------------------------------------------------------------------------
#!/bin/bash
RADIO_ADDR="rtmp://ebsandroid.nefficient.com/fmradiofamilypc/familypc1m"
RADIO_NAME="ebs_radio"
PROGRAM_NAME=$1
RECORD_MINS=$(($2 * 60))
DEST_DIR=$3
REC_DATE=`date +%Y%m%d-%H%M`
TEMP_FLV=`mktemp -u`
MP3_FILE_NAME=$PROGRAM_NAME"_"$REC_DATE.mp3
rtmpdump -r $RADIO_ADDR -B $RECORD_MINS -o $TEMP_FLV
avconv -i $TEMP_FLV -ac 2 -ab 128 -vn -y -f mp3 $MP3_FILE_NAME
rm $TEMP_FLV
mkdir -p $DEST_DIR
mv $MP3_FILE_NAME $DEST_DIR
------------------------------------------------------------------------------
Ctrl+O, 엔터, Ctrl+X 으로 저장하고 빠져나옵니다.
저장한 파일의 권한 설정을 위하여 'chmod 777 /EBSradio/ebs_record.sh' 라고 입력합니다.
이제 녹음이 잘 되는지 여부를 먼저 테스트 해 보겠습니다.
'/EBSradio/ebs_record.sh Test-file 1 /Pogodata/EBS/Test' 이라고 입력하여,
EBS폴더 안에 Test 폴더를 만들어(이 폴더는 본인 상황에 맞게 지정해 주세요) 현재 방송되고 있는 EBS radio를 Test-file 이라고 시작하는 파일 이름으로 1분간 테스트 녹음 하겠습니다.
1분에 걸쳐 실시간 녹음이 진행 됩니다.
녹음 후에는 flv 파일을 mp3로 변환하는 과정이 진행됩니다. 이게 조금 더 시간이 걸립니다.
원하는 폴더 안에 Test-file_녹음날짜시간.mp3 가 생성되었다면, 녹음이 잘 된 겁니다. mp3를 재생하여 확인해 봅니다.
프로그램 설치 및 실행에 문제가 없음을 확인되면, crontab 명령으로 녹음 스케줄을 설정하여 주겠습니다.
편성표를 확인해 보니 월요일에서 토요일까지 오전 7시부터 8시 사이에 괜찮은 영어 프로그램이 3개 방송됨을 알 수 있습니다. 이 세 가지를 세팅해 보겠습니다.
'crontab -e' 를 실행해 봅니다.
-----------------------------------------------------------------------------------
0 7 * * 1-6 /EBSradio/ebs_record.sh Fluent-English 20 /Pogodata/EBS/Fluent-English
20 7 * * 1-6 /EBSradio/ebs_record.sh Easy-English 20 /Pogodata/EBS/Easy-English
40 7 * * 1-6 /EBSradio/ebs_record.sh Power-English 20 /Pogodata/EBS/Power-English
-------------------------------------------------------------------------------------
가장 하단으로 내려가 자주색 글씨 부분을 복사하여 붙여넣기 하시면
월-토 까지 7시, 7시20분, 7시40분에 시작하는 3가지 프로그램을 20분 동안
자동으로 녹음해 주는 스케줄로 설정하실 수 있습니다.
(스크립트는 위 사이트의 자료 그대로 인용 되었으며, 설명을 위한 약간의 추가적 자료만 본 글에서 추가 하였습니다.)
mms://ebslive.nefficient.com/ebswmalive
rtmpdump는 aur이 아닌 extra 저장소에 있습니다. 이건 arm도 마찬가지고요. 또 원본이 aac 64k 인데 굳이 mp3 128k 로 변환하기 보다 ffmpeg로 그대로 추출하는 게 낫지 않을까요.
물론 방송교재라서 열화현상이 일어나도 별로 관계는 없긴 합니다만 괜한 시간을 들여서 재인코딩을 해봐야 얻는 잇점은 하나도 없다는거죠.
ffmpeg -i $TEMP_FLV -acodec pcm_s16le -ac 2 -ab 64 -vn -y $TEMP_WAV
/usr/bin/lame -h $TEMP_WAV $MP3_FILE_NAME > /dev/null 2>&1
음성만 바로 뽑아내서 사용합니다.
m4a 로 저장해서 사용하니 요즘 폰에서는 다 되는것 같네요..
/usr/bin/ffmpeg -loglevel panic -i $URL -vn -acodec copy $FILENAME_AAC &
저는 rtmpdump ffmpeg 2개만 설치하고 avconv 패키지는 설치하지 않았습니다.
의존성으로 딸려오는 패키지가 너무 많더라구요.
그리고 FLV 파일을 AAC 형식으로 내놓게끔 aoiob님 리플을 참고해서 스크립트를 이렇게 짰습니다.
#!/bin/bash
RADIO_ADDR="rtmp://ebsandroid.nefficient.com/fmradiofamilypc/familypc1m"
PROGRAM_NAME=$1
RECORD_MINS=$(($2 * 60))
DEST_DIR=$3
REC_DATE=`date +%Y%m%d-%H%M`
TEMP_FLV=`mktemp -u`
OUTPUT_FILENAME=$PROGRAM_NAME"_"$REC_DATE.m4a
rtmpdump -r $RADIO_ADDR -B $RECORD_MINS -o $TEMP_FLV
ffmpeg -i $TEMP_FLV -vn -acodec copy $OUTPUT_FILENAME > /dev/null 2>&1
rm $TEMP_FLV
mkdir -p $DEST_DIR
mv $OUTPUT_FILENAME $DEST_DIR
ffmpeg으로 추출하여 무손실 파일로 해봐야 겠습니다.
제가 쓰는 앱은 m4a 지원하네요.
클량에는 역시 능력자 분들이 많으신듯 합니다 감사합니다^^
저는 qnap에서 시도하다가 실패했습니다