cygwin에서 mplayer를 이용하여 EBS녹음하고 lame으로 mp3로 변환하며 cron으로 자동 녹음하기.
여기 있는 여러 글들을 보고 아래와 같이 파일을 만들었습니다.
# SUCCEED VERSION 1
##{{{====================================
TIME="10"
#TIME="60m"
TITLE="MS"
DATE=`/bin/date +%Y-%m-%d-$TITLE`
URL1="mmst://219.240.37.11/L-FM_300k"
pwd#test for the situation when Absolute path don't exist
ABSOLUTE="/cygdrive/d/My-Document/RADIO-RECORD/EBS"
# 절대 경로를 정해 주시 않으면 cron이 실행되는 위치를 중심으로
# 녹음된 파일이 생성되는 위치가 달라진다.
# without absolute path, the location where recorded file is made
# changes.
MP3="./$DATE.mp3"
WAV="./$DATE.wav"
cd $ABSOLUTE
mplayer.exe $URL1 -ao pcm:file=$WAV &
sleep $TIME
kill %1
lame $WAV $MP3
rm -f $WAV
#개선점 : 요일 프로그램명 자동켜기 FIFO
#}}}====================================
주석에 있는 것처럼 절대 경로 변수를 사용하지 않으면 스크립트가 실행되는 위치를 기준으로
녹음된 파일이 저장되는 곳이 달라져서 녹음될 위치를 위와 같이 정해 주었습니다.
MP3나 WAV변수에 직접 절대 경로로 적어 주면 될 것 같지만, 그렇게 하면 mplayer에서 계속
녹음 파일을 open하지 못하더군요. ./ 처럼 상대 경로를 사용했을 때는
잘 작동하는데 이유는 잘 모르겠습니다.
그래서 계속 고민하다가 cd를 이용하여 이 문제를 피해갔습니다.
그리고
mkfifo.exe EBS-FIFO
lame.exe -q2 -b 128 EBS-FIFO $MP3 &
mplayer.exe $URL1 -ao pcm:file=EBS-FIFO &
와 같이
mkfifo를 이용해서 실시간으로 자료전환을 하여 메모리 사용공간을 줄이려고 했지만
EBS-FIFO 에 입력은 되는데 거기서 MP3파일로 전환이 안되더라구요.
그래서 하드 용량도 충분해서 일단 이문제도 포기하고
cron을 사용하여 예약 녹음을 해보려고 했습니다.
우선 cygwin의 setup.exe에서
cron을 설치했습니다.
그리고 cron-config라는 명령어를 rxvt창에서 실행켜서
Cron을 설치했습니다.
그래서 install을 할 때
yourself 또는 privileged account 어느 서비스를 할 거냐고 묻기에
"yourself"를 선택했습니다.
그리고 daemon을 ntsec와 실행시킬 것이냐는 질문에도 "yes"른 선택했습니다.
그리고 user 계정의 비번도 입력했습니다.
그리고 crontab.exe -e 명령어를 사용하여 다음과 같이
10 * * * * echo "This command is run at 10 min past every hour"
00 08 * * 1,2,3,4,5,6 /cygdrive/d/My-Document/RADIO-RECORD/recording-v1.sh
* * * * * echo "This command is run at 1 min past every hour
예약을 했습니다.
그러나 매분 마다 echo가 동작하지 않았습니다.
그래서 cron_diagnose.sh를 실행하니
chmod 1777 /var/cron을 해서
/var/cron 디렉토리의 권한을 바꾸라고 해서
바꾸려고 해 보았으나
아무리 해도 777로 변경이 안됩니다.
무엇이 문제일까요?
고수님들의 많은 의견 부탁드립니다.
댓글 달기