[자축]라디오 녹음 완전 성공.

pamisu1의 이미지

그전까지는 한꺼번에 ogg나 mp3로 실시간 녹음하는 법을 몰랐는데,
어떻게 우연히 검색과 삽질을 거듭하다가 완전히 성공했습니다.

mplayer를 이용한 방법이므로 당연히 mplayer가 설치되어 있어야 합니다.
ogg로 녹음할 사람은 oggenc(vorbis tool에 포함됨), mp3로 녹음할 사람은 lame 등을 추가 설치합니다.

일단 빈 파일에 아래의 코드를 그냥 붙여넣고 저장하세요.
그리고 그 저장한 파일을 [ok녹음기]이라고 이름 붙였다면 터미널에서
chmod +x [ok녹음기]
라고 쳐서 실행권한을 줘야 녹음용 스크립트가 만들어진 겁니다.

#!/bin/sh
Sigan="60m"
Nalzza=`date +%Y%m%d%H%M`
juso="mmst://219.240.37.11/L-FM_300k"
 
# 태그 
a="홍길동" 
t="영어회화 `date +"%b %d"`"
l="ebs 영어"
d="2007"
G="radio"
 
# [mkfifo **]로 파일을 만들면 읽기/쓰기를 동시에 할 수 있다.
mkfifo /tmp/임시파일
 
/usr/bin/oggenc -b 64 -a $a -t "$t" -l "$l" -d $d -G $G -n "./rec_$Nalzza.ogg" /tmp/임시파일 &
#/usr/bin/lame -64 --ignore-tag-errors --ta $a --tt "$t" --tl "$l" --ty $d --tg $G /tmp/임시파일 "./rec_$Nalzza.mp3" &
 
/usr/bin/mplayer $juso -ao pcm:file=/tmp/임시파일 &
pid_player=$!
sleep $Sigan
kill $pid_player ;
rm /tmp/임시파일 ;
 
# 위 코드대로 lame으로 인코딩된 mp3파일을 audacious로 열어보니 아직은 한글태그가 깨져나오네요.

녹음하는 방법은 간단합니다. 터미널에서
[경로]/ok녹음기
또는 ok녹음기가 있는 경로로 이동해서 터미널에서 ./ok녹음기 라고 입력하세요.
이것도 귀찮다면 그냥 [ok녹음기]를 더블 클릭하세요.

위의 코드에서 시간과 주소 태그정보들은 원하는 걸로 바꿔주세요.
위에 보면 시간이 60m 이라고 되어있는 걸 1m 이라고 고치면 1분간 녹음됩니다.

녹음이 끝난 ogg 파일이나 mp3 파일은 mp3splt 라는 프로그램으로 원하는 시간만큼 자를 수도 있습니다.
mp3splt 가나나라.ogg 0.19 22.37
위의 코드는 가나다라.ogg 파일의 19초에서 시작해서 22분 37초에 끝나는 파일을 새로 생성한다는 뜻입니다.

혹시 예약녹음을 하고 싶다면 crontab -e 를 쳐서 아래 내용처럼 기억시킵니다.

00 07 * * 1-6 /home/abcd/ok녹음기 > /tmp/ok.log 2>&1 
02 08 * * * shutdown -h

위의 코드는 [ok녹음기]가 /home/abcd/에 있다고 가정하고
월~토 아침 07시에 예약녹음이 되고 매일 아침 08시 02분에 컴퓨터가 꺼지도록 예약한 것입니다.

컴퓨터의 바이오스 셋업에서 컴퓨터 켜지는 시간을 아침 06시 55분 정도로 설정하신다면
매일 아침에 컴퓨터가 저절로 켜져서 07시 부터는 예약녹음이 되며 08시 02분에는 컴퓨터가 꺼지는 것이죠.

다만 시스템에 따라 셧다운 명령에 관리자 권한이 필요해서 암호를 물어볼 경우가 있는데, 그럴 때는 예약종료가 안되겠죠.

그럼 /etc/sudoers 파일을 열어서 사용자 이름이 abcd 일 경우
abcd ALL = NOPASSWD : /sbin/shutdown 이라고 적어주면 됩니다.
crontab 에도 셧다운 대신에 sudo shutdown 같은 관리자모드 명령을 적으시고요. 이건 시스템마다 다릅니다.

Hyun의 이미지

/usr/bin/mplayer $juso -ao pcm:file=/tmp/임시파일 &
sleep $Sigan
killall -9 /usr/bin/mplayer ;

욜케 하면 모든 mplayer 가 죽어버리니깐...
/usr/bin/mplayer $juso -ao pcm:file=/tmp/임시파일 &
pid_player=$!
sleep $Sigan
kill $pid_player

요렇게 수정하는게 더 적당할 듯 하네요.
pamisu1의 이미지

그냥 뜻도 모르고 붙여넣기로 사용하던 옵션이었는데, 이제 새로운 걸 또 알았네요. 이게 실행되던 프로그램만 죽이는 방법이군요.

그런데, lame에서 태그 넣으려면 어떻게 넣어야 합니까?
oggenc 에선 -a가 아티스트, -t가 타이틀인 것과는 다르게
man lame을 해보면 --ta가 아티스트, --tt가 타이틀..과 같이 나타납니다.

하지만 lame에 --ta나 --tt, --tl, --ty, --tg 같은 옵션을 집어넣어보면 태그는 고사하고 
아예 인코딩된 파일이 생기질 않더군요.

기껏해서 녹음한다고 해놓고 나중에 봤더니 녹음된 파일이 없다면 얼마나 황당하겠습니까?
lame을 통해서 태그정보를 넣는 방법이 있을텐데 남들은 어떻게 했는지 궁금합니다.
병맛의 이미지

lame -b 192 -h --add-id3v2 --ignore-tag-errors --tt %{title} --ta %{artist} --tl %{albumtitle} --ty %{year} --tn %{number} --tg %{genre} %f %o

제 kaudiocreator의 lame 인코더 옵션입니다.

tt, ta, tl, ty, tn, tg을 쓰네요

pamisu1의 이미지

--ignore-tag-errors
라는 걸 써주니 lame으로 태그정보를 쓸 수 있었습니다.

그런데 우분투에서 audacious로 mp3파일을 열어보니 한글태그가 다 깨져 나옵니다.
태그옵션 중에 utf8로만 인코딩하는 옵션이 없을까요?

Prentice의 이미지

UTF-8은 ID3v2 2.3에서는 불가능하고 2.4에서만 가능합니다.

lame은 ID3v2 2.3만 지원하는 것으로 알고 있습니다. 2.3이면 ISO-8859-1, UTF-16은 지원하는데 EUC-KR 등도 지원하는 것인지는 잘 모르겠습니다.

아무튼.. audacious 쪽에서 해결하시거나 ID3v2 2.4 변환을 생각하셔야할 것 같습니다.

pamisu1의 이미지

이제 알았습니다..

그럼 인코딩과 태깅을 동시에 할 수 있으면서 utf8을 지원하는 게 뭐가 있을까요?

사실 전 mp3 보다는 ogg를 선호하는 편이라서, mp3 파일 몇 개 정도는 수작업으로
하나씩 태그를 먹이거나 아예 ogg로 변환하지만
그래도 자동으로 태그를 먹이면서 mp3로 녹음하고 싶은 분들도 있을 겁니다.
제가 ogg에 자동으로 태그를 먹이며넛 녹음하듯이 말이죠.

인코딩과 utf8태깅을 동시에 할 수 있는 유틸이 있다면 스크립트의 lame 자리에 그 유틸이름을 적고 태그옵션도 바꿔주면 될 것 같거든요.

답변 고맙습니다. 원인을 몰랐으면 계속 lame으로 헤맬 뻔 했군요.

병맛의 이미지

%{}, %f, %o는 kaudiocreator에서만 유효하니 셸스크립트 시 argument로 잘 삽입하거나 직접 처넣어야 할 겁니다.

vigor96의 이미지

centos 3.8 를 쓰는데...

mplayer 를 못깔아서 고생고생하다가

rpmforge-release-0.3.6-1.el3.rf.x86_64.rpm

를 깔고

yum 으로 mplayer 까는데 성공...

그리고...

라디오 녹음에 성공하였습니다.

영어공부 열심히 해야죠..

매일매일하는게 좋은것 같아요...

익명 사용자의 이미지

라디오 녹음을 위한 별도의 하드웨어에는 어떤 것이 있습니까 ?

"PCI TV카드" 처럼 "PCI 라디오카드"같은 하드웨어도 있습니까 ?

아니면, 마이크를 리눅스박스의 사운드카드에 연결하고,

켜지는 시간지정이 가능한 라디오를 구입해서 거기에 마이크를 테이프로 붙이든지, 아니면 양쪽연결선을 리눅스박스와 라디오에 각각 연결해 두었다가,,, 저절로 녹음되게 만드는 것입니까 ?

설명 좀 부탁드립니다.

pamisu1의 이미지

mp3플레이어들도 그런 기능이 꽤 많고, 오디오 기기 중에도 마치 비디오처럼 예약녹음이 가능한 것들이 있을 겁니다.

그리고 라디오카드란 것을 본 적은 없지만, 티비카드 중에 FM라디오 단자가 달린 것도 있으니까
라디오카드란 게 있을 수도 있겠습니다.

어차피 이런 피씨아이 카드들은 대부분 컴퓨터에서 예약녹화나 녹음이 가능합니다.
아무래도 돈을 주고 구입해야 하는 이런 하드웨어적인 장치들은 그만한 값을 하겠죠.
남의 돈 벌기가 그렇게 만만한 게 아니니까요.

하지만 제가 설명한 위의 글은 이런 피씨아이 카드를 이용한 녹화가 아니라 컴퓨터에서 소프트웨어적으로 인터넷방송을 녹음하는 것입니다.
그렇다고 해도 인터넷 방송을 이용한 예약작업이나 수신카드를 통한 예약작업이나 별다를 건 없습니다.

어쨌건 예약작업을 하게 만들고, 원하는 시간에 컴퓨터가 켜지고 꺼지게 하는 게 중요한 거니까요.
사실, 이런 소프트웨어적인 것보다야 전문적인 기기를 이용하는 게 더 낫지 않겠어요?

혹시 티비카드를 구입해서 녹화나 녹음하길 원하는 분들을 위해 제가 멘코더를 이용한 녹화 스크립트를
올리겠습니다.
전제 조건은 티비카드의 튜너번호(종류)를 잘 맞춰서 우선 시청부터 잘 해야 녹화도 할 수 있다는 겁니다.

#!/bin/sh 
DATE=`date +"%Y %b %d %H%M"`
LENGTH="00:55:30.000"
INPUT="tv:// -tv channel=24:width=480:height=360:chanlist=us-cable:input=0:norm=ntsc:driver=v4l2:alsa"
CODEC="-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800 -oac lavc -lavcopts abitrate=32"
OUTPUT="./tv $DATE.avi"
 
/usr/bin/mencoder -endpos $LENGTH $INPUT $CODEC -o "$OUTPUT" ; 
pid_player=$!
kill $pid_player ;

위의 코드는 제가 수없는 시행착오 끝에 잡음없이 녹화하는 데 성공한 결과물입니다.
맨 마지막에 붙어 있는 alsa란 놈이 사운드카드 드라이버이므로 자신의 상황에 맞는 걸로 고르면 됩니다. 저걸 몰라서 그동안 계속 잡음이 끼더군요.

그리고 녹음할 단자는 믹서에서 골라야 합니다.보통은 [라인인]을 티비카드의 녹음소스로 이용합니다.
화면크기와 비트레이트, 길이는 상황에 따라 바꿔가며 테스트 해보세요.

역시 이 코드를 빈파일에 그대로 붙여넣어서 [tv_ok] 같은 이름으로 저정한 뒤에 chmod +x tv_ok 로 실행 권한을 줘야 합니다.

예약녹화를 위해서는 crontab -e 란 명령으로 크론탭을 열고 등록해 주면 됩니다.