'교육방송'에 해당되는 글 1건

  1. 2020.09.20 Synology NAS에 EBS 라디오 어학방송 녹음하기 2022년판 18
2020. 9. 20. 21:02

Synology NAS에 EBS 라디오 어학방송 녹음하기 2022년판

저는 DSM 6.0에서 Debian chroot를 사용해서 ☞이런 방법☜으로 EBS 라디오 어학방속 녹음을 잘 하고 있었는데요. 최신 DSM 7.0에서는 Debian chroot도 사용할 수 없고 그 외 여러가지로 세세하게 달라진 부분들이 많더라고요.

 

요즘은 무제한 통신요금도 보편화돼서 굳이 녹음하지 않고 EBS 반디 앱으로 실시간으로 들어도 되고, 애초에 EBS 방송보다 더 좋은 YouTube 채널이나 스마트폰 앱 등의 영어 공부 컨텐츠도 많이 생겨서 굳이 녹음 안 해도 될 것 같기는 한데요. 사실 저도 EBS 녹음한 걸 마지막으로 들은 게 언제였나 싶기도 합니다. 하지만 이렇게 포기하는 건 왠지 패배자의 변명처럼 들려서 결국 머리를 굴리고 굴려 DSM 7.0에서도 EBS FM 라디오 어학방송을 녹음하는 방법을 찾아냈습니다. 게다가 기존 방법 대비 몇 단계 더 간단해졌습니다.

 

애초에 Debian chroot를 사용했던 이유는 스트림을 파일로 저장해줄 수 있는 Libav 라이브러리를 DSM 상에 설치할 수 없어서 가상의 Debian 상에 깔고 돌렸던 거였거든요. 그런데 보니까 지금은 Libav과 동일한 기능을 가지는 FFmpeg을 DSM에 바로 설치할 수 있더라고요. 그래서 굳이 Debian chroot를 설치하고, 거기 들어가서 녹음하고, 그걸 또 꺼내오고 할 필요 없이 바로 DSM 상에서 녹음할 수 있게 됐습니다. 아무튼 이제부터 2022년 현재 Synology NAS에서 EBS 라디오 어학방송을 녹음할 수 있는 방법을 차근차근 단계별로 설명 드리겠습니다. 
 

1단계. SSH 환경 셋업

사실 Debian chroot를 사용할 게 아니면 SSH도 필요 없을지 모릅니다. 그렇지만 파일 권한 설정이라든지, 녹음이 잘 되는지 테스트해보는 건 SSH 상에서 하는 것이 훨씬 편하니까 SSH 환경을 셋업해두시는 편이 좋습니다. NAS의 파워유저시라면 SSH 환경 정도는 다 정비돼 있으실 테니 다음 단계로 바로 넘어가셔도 되고요.

 

 

일단 NAS DSM의 제어판 맨 아래의 '터미널 및 SNMP' 메뉴, '터미널' 탭에서 SSH 서비스를 활성화하셔야 합니다. 포트는 일반적으로 22번을 쓰게 되어 있는데요. SSH는 해킹과 공격의 주된 타겟이라서, 저는 집에서만 접속하고 외부에서는 접속이 안 되도록 공유기에서 포트 포워딩을 하지 않았습니다. 피치 못하게 외부에서 접속해야만 한다면 외부에서는 22번이 아닌 10022라든가 22222번 같은 다른 포트로 보이도록 포워딩하는 것이 좋습니다.
SSH는 최초 녹음 세팅 단계에서만 사용합니다. 굳이 SSH를 계속 사용해야 할 다른 용도가 없다면(지금까지 안 쓰셨다면 앞으로도 안 쓰실 듯) 녹음 설정 후 다시 꺼놓으시는 게 보안 상 좋습니다.

이제 SSH 접속을 위해 PC에 SSH 클라이언트 프로그램을 설치해야 되는데, PuTTY가 가장 널리 쓰입니다. 크롬이나 파이어폭스 웹 브라우저 이용자이시면 FireSSH 플러그인을 깔아서 쓰셔도 됩니다.

자 이제 SSH로 NAS에 한 번 접속해 보시죠.
PC에서 SSH 클라이언트를 띄워서 NAS 주소 넣으시고, SSH 포트 넘버 넣으시고, 사용자 ID와 패스워드를 넣으면 되는데요. SSH 설정화면의 설명에도 나오지만 SSH 접속 ID는 Administrators 그룹에 속한 사용자의 ID만 가능합니다. 맨 처음 접속하시면 무슨 키를 신뢰하겠냐느니, 저장하겠냐느니 물어볼 텐데, 그냥 그렇다고 대답하심 됩니다.

 

DSM 7.0으로 바뀌면서 SSH 접속을 하면 이렇게 root 권한으로 뭘 하지 말라는 경고가 뜨게 되었습니다. 이 아래 단계에서 어차피 root 권한은 필요 없으니 굳이 ☞예전 방법☜처럼 sudo -i를 입력하시지 않아도 됩니다.

 

 

2단계. FFmpeg package 설치

FFmpeg은 Libav와 같은 뿌리에서 나온 미디어 인코딩/디코딩 라이브러리인데요. 2016년에는 Libav가 좀더 잘 될 것처럼 보였는데(저만의 착각일지도요), 지금은 FFmpeg이 완연히 잘 나가는 것 같습니다. DSM에도 이미 FFmpeg이 깔려져 있기는 한데 정말 옛날 버전이라서 RTSP 스트림 저장을 지원하지 않으니, 최신 버전의 package를 설치하시는 게 좋습니다.
그런데 패키지 센터를 아무리 뒤져봐도 FFmpeg이나 Libav 같은 게 없죠? 패키지 소스를 추가해야 됩니다. 패키지 센터의 설정 메뉴 > 패키지 소스 탭의 추가 버튼을 누르시고, 이름은 대충 넣으시고 위치에 http://packages.synocommunity.com을 입력하고 확인 버튼을 누르시면 패키지 소스에 추가됩니다.

 

 

패키지 센터의 설정 옵션 '일반' 탭 맨 아래의 '신뢰 수준'이 'Synology Inc. 및 신뢰할 수 있는 게시자'로 돼있는지도 확인하시고요.

이제 패키지 센터에 '커뮤니티'라는 tab이 추가되고, 그 안에 ffmpeg이 보입니다. 저는 이미 설치했기 때문에 '설치됨'이라고 나오는데, 아직 설치 안 하신 분은 '설치'라고 쓰여있을 테니 그 버튼을 클릭해주세요. 향후 단계를 고려할 때, 설치 볼륨은 볼륨 1으로 하시는 것이 좋습니다.

 

 

 

 

3단계. 녹음 shell script 파일 업로드

 

이전에는 rtsp://ebsonairandaod.ebs.co.kr:554/fmradiobandiaod/bandiappaac 라는 URL에서 RTSP protocol로 streaming을 받으면 128 kbps로 음질도 좋고 군더더기도 없이 깔끔하게 EBS FM 라디오를 녹음할 수 있었는데, 2020년 11월 12일 부로 EBS 측에서 스트림을 폐쇄했고요. 그래서 상황이 조금 지저분해졌습니다.

 

이제 EBS FM 라디오 방송을 스트리밍할 수 있는 URL은 rtmp://ebsandroid.ebs.co.kr:1935/fmradiofamilypc/familypc1m 정도 뿐인데요. 대중성이 좀 떨어지는 Adobe Flash Player를 위한 RTMP protocol을 쓰는 것까지는 그렇다 쳐도, audio bit rate는 64 kbps밖에 안 되고, 의미 없는(그냥 EBS FM 로고만 떠있는 정지영상입니다) 동영상이 512 kbps나 붙어있습니다. 그래서 일단은 전체 576 kbps 스트림을 받아서 그 중 필요 없는 영상 데이터를 솎아버리는 작업이 필요하죠(직접 하실 필요는 없고 FFmpeg이 해줍니다).

 

저는 저런 것들이 맘에 안 들어서 EBS FM 라디오 대신 rtsp://new_iradio.ebs.co.kr:554/iradio/iradiolive_m4a URL의 '반디 외국어 전문' 채널의 스트림을 녹음하기로 했습니다. 이쪽은 128 kbps의 RTSP 스트리밍이라는 점은 이전과 같아서 좋지만, 문제는 방송 시간이 FM 라디오와 다르다는 점입니다. 예를 들면 '입이 트이는 영어'라는 프로그램은 매일 아침 6:40에 라디오에서 방송하는데, 반디 외국어 전문 채널에서는 9:40, 13:40, 19:40, 그리고 다음날 0:40, 8:40까지 총 5번 재방송을 합니다. 정확한 반디 외국어 채널 편성표는 ☞이곳☜을 참고하시기 바랍니다.

ebs_record.sh
0.00MB

음질에 별로 연연하지 않으시고, 그보다는 EBS FM 방송 시간에 맞춰 실시간으로 녹음하시고 싶으신 분은 EBS FM 라디오를 저음질로 녹음하는 위 첨부 파일을 받으시고요. 음질을 위해서라면 복잡한 방송 시간표를 들여다보고 NAS 타이밍을 세팅하는 것 정도는 얼마든지 가능하신 분은 좀더 고음질로 반디 외국어 채널을 녹음하는 아래 첨부파일을 받으세요.

bandi_record.sh
0.00MB

둘 중 한 파일을 골라서 다운로드 받으셨다면 NAS의 아무 폴더에나 업로드하세요. 저는 /volume1/music 밑에 갖다두었습니다. Audio Station 등 음악관련 패키지를 깔면 music 공유 폴더가 자동으로 생기는 건 아시죠? 제 경우 music 공유 폴더를 디스크 볼륨 1에 만들었기 때문에 shell 상에서 경로가 /volume1/music입니다. 볼륨 2에 만드신 분은 /volume2/music이겠지요.

이 파일이 녹음을 하고, 녹음된 file을 NAS의 media indexing library에 등록하는 역할을 하는 shell script입니다. ☞기존 방법☜에도 똑같은 이름의 파일이 있었는데, 예전 것은 Debian chroot를 이용하는 방법이니 혼동하지 마시기 바랍니다. 굳이 헷갈리게 동일한 이름을 쓴 이유는 제가 이 아래 5단계에 나올 작업 스케줄러를 수정하기가 귀찮아서였습니다. 한 번 ebs_record.sh 파일 내용을 좀더 설명 드리겠습니다.

#!/bin/sh

PROGRAM_NAME=$1
RECORD_SECS=$2 
DEST_DIR=$3/$1`date +_%y%m`

FFMPEG=/volume1/@appstore/ffmpeg/bin/ffmpeg
RADIO_ADDR="rtmp://ebsandroid.ebs.co.kr:1935/fmradiofamilypc/familypc1m"
TITLE=$PROGRAM_NAME`date "+ %Y.%_m.%_d."`
DEST_FILE=$PROGRAM_NAME`date +_%y%m%d`.m4a

if [ ! -d "$DEST_DIR" ] ; then
  mkdir -p "$DEST_DIR"
  synoindex -A "$3"
fi

$FFMPEG -i $RADIO_ADDR -t $RECORD_SECS -codec:a copy -vn -metadata title="$TITLE" -metadata date=`date +%F` "$DEST_DIR/$DEST_FILE"

synoindex -a "$DEST_DIR/$DEST_FILE"


스크립트 파일의 위쪽 대부분은 단지 아래쪽에서 사용할 변수들과 파일이름 등을 지정하는 부분입니다. 주의를 하셔야 하는 부분이 FFmpeg의 path인데요. 제가 upload한 파일들은 기본적으로 DSM 7.0에서 FFmpeg을 volume 1에 설치한 상황을 가정해서 설정돼 있습니다. 만약 DSM의 버전을 7.0보다 예전 것을 사용 중이시라면 다운로드 받은 파일을 문서 편집기에서 여셔서 7번째 줄을 아래와 같이 수정하셔야 합니다.

  FFMPEG=/usr/local/ffmpeg/bin/ffmpeg

DSM 7.0을 사용하기는 하지만 만약 FFmpeg을 volume 1이 아닌 다른 볼륨에 설치하셨다면 아래와 같이 수정하셔야 할 것이고요.

  FFMPEG=/volume2/@appstore/ffmpeg/bin/ffmpeg

아무튼 실질적으로 가장 중요한 것은 맨 아래에서 두 번째 줄, FFmpeg으로 스트림을 지정된 시간동안 녹음하라는 단 한 줄입니다. EBS 스트림의 오디오 트랙은 AAC (Advanced Audio Coding)라는 방식으로 압축되어 있기 때문에 그에 걸맞는 .m4a라는 확장자로 저장합니다.

bandi_record.sh 파일 내용도 위와 거의 같습니다. RADIO_ADDR 값이 다르고, FFmpeg에 RTSP transport를 지정하는 옵션이 추가됐을 뿐입니다.

그 줄 위아래에 있는 몇 줄의 스크립트는 녹음하는 날짜의 월별로 폴더를 만들고, 녹음된 M4A 파일을 DS Audio 등에서 보이도록 미디어 라이브러리에 등록해줍니다(synoindex).
 
 

4단계. 녹음 테스트

지금까지의 모든 설정이 잘 됐는지 한 번 테스트해봅시다.
우선 SSH 터미널 상에서 ebs_record.sh 파일이 있는 경로로 이동합니다.

  cd /volume1/music

이 폴더는 사람마다 다르겠죠? 위 3단계에서 ebs_record.sh 또는 bandi_record.sh 파일을 넣어준 경로를 잘 써주시고요.
Linux 계열 OS에서 파일을 실행하기 위해서는 파일에 먼저 실행권한을 줘야 합니다. 이렇게요(반디 외국어 전문 채널을 녹음하시는 분들은 이 아래부터 나오는 모든 ebs_record.sh 대신에 bandi_record.sh를 써주시면 됩니다).

  chmod 777 ebs_record.sh

여기서 777이라는 숫자는 '모든 사람이 읽고 변경하고 실행할 수 있다'는 의미입니다.

ebs_record.sh를 실행할 때는 3개의 매개변수를 써줘야만 하는데요. 첫번째는 방송 프로그램 제목(파일 이름), 두번째는 녹음할 시간(초 단위), 마지막은 저장할 폴더 이름입니다.

  ./ebs_record.sh xxx 30 yyy

라고 한 번 실행해 보시죠.
그러면 녹음을 하고 있다는 뭔가 복잡한 메시지가 30초간 화면에 표시됩니다. 끝난 후 현재 폴더 밑에 yyy/xxx_(4자리 년월)이라는 폴더가 생겼고, 그 속에 xxx_(6자리 날짜).m4a라는 이름의 오디오 파일이 생성됐고, Audio Station이나 DS Audio의 재생목록 중 '최근 추가됨'에서 이들이 확인되고, 플레이했을 때 녹음된 방송이 잘 들리면 성공한 겁니다.

이러면 모든 준비가 완료됐고, 이제 DSM의 작업 스케줄러에서 시간 예약만 걸어주면 끝입니다. 테스트를 하고 나면 NAS의 미디어 라이브러리에 yyy/xxx_(년월)이라는 폴더와 'xxx (날짜)'라는 필요 없는 트랙이 추가돼 있을 텐데요. 모든 테스트가 끝난 후

  synoindex -D yyy
  rm -rf yyy

해주시면 말끔히 정리됩니다.

만약 뭔가가 잘 안 됐다면 ebs_record.sh 실행 시의 오류 메시지를 찬찬히 살펴보시고, 위의 1 ~ 4단계 중 혹시 뭔가 잘못되지는 않았는지 다시 한 번 꼼꼼히 돌아보시기 바랍니다.
 
 
5단계. 녹음 시간 예약

이제 마지막으로 방송 시간에 알아서 NAS가 깨서 녹음을 하도록 하는 자동화 작업입니다.

NAS에 웹으로 접속하셔서 제어판을 보시면 아래쪽에 작업 스케줄러라는 것이 있습니다. 작업 스케줄러에서 생성 > 예약된 작업 > 사용자 지정 스크립트 메뉴를 선택하면 새 녹음 작업을 생성할 수 있습니다. 작업 이름은 아무렇게나 쓰시면 됩니다. 그런데 한글은 안 되니 영문으로 해주시고요. 사용자 설정 시 주의하실 것은 절대로 사용자를 'root'로 설정하지 마시라는 겁니다. DSM 7.0에서는 사용자가 root 권한을 휘두르는 것을 극도로 싫어하기 때문에 녹음이 안 될 수도 있습니다.

 

 

두번째 탭에서 시간을 예약하게 돼있습니다.
제가 녹음하는 4개의 방송은 모두 월요일부터 토요일까지 방송하니까 요일은 그렇게 설정하면 되고, 시간은 하루에 한 번, 방송 시작하는 시간을 써줍니다.

 

 

이제 마지막 탭에서 ebs_record.sh 또는 bandi_record.sh 명령을 써주면 됩니다.
위의 녹음 테스트 때와는 달리 절대경로를 다 써줘야 한다는 것, 주의하세요. 예를 들어 제가 입이 트이는 영어를 녹음할 때는

  /volume1/music/ebs_record.sh "입이 트이는 영어" 1110 "/volume1/music/Language/EBS 입이 트이는 영어"

이렇게 써줬습니다.

 

 

제 경우의 폴더 경로는 저렇지만, 여러분은 여러분만의 경로를 써주셔야 되겠죠. 따옴표를 쳐준 이유는 폴더나 파일 이름 중간에 빈 칸이 있기 때문이고, 빈 칸이 없다면 따옴표를 안 쓰셔도 됩니다.
주의하실 점 중 하나는 ebs_record.sh 또는 bandi_record.sh가 'EBS 입이 트이는 영어'라는 폴더는 만들어주지만, 그 위 경로는 만들어주지 않는다는 점입니다. 즉, /volume1/music/Language라는 폴더는 원래부터 제 NAS에 있던 폴더입니다.

예전에는 EBS 라디오 프로그램이 거의 20분을 꽉 채워서 방송했다면, 요즘은 한 1분 30초는 광고를 하더라고요. 그래서 18분 30초 녹음하라고 1110이라고 써줬습니다.
이와 같은 방식으로 녹음할 방송 프로그램 하나마다 작업 하나씩 작업 스케줄러에 등록하시면 됩니다. 저는 예전에는 6개의 방송을 녹음했었는데, 비인기 프로들이 폐지되어 지금은 4개만 녹음하고 있습니다.

 

그리고 마지막으로 하드 디스크 절전 모드 대책이 필요합니다.
HDD 를 20분 이상(시간은 제어판 > 하드웨어 및 전원 > HDD 대기 기능에서 변경 가능) 안 쓰면 절전모드에 들어가는데, 제 NAS는 개인용이라 방송 시간에는 사용하는 사람이 없어 절전 모드일 가능성이 높습니다. 그대로 놔두면 NAS와 HDD가 깨어나는 데 10초가 넘게 걸리기 때문에 앞부분 녹음이 날아가게 됩니다.

 

저는 이 문제를 각각 9시 19분, 15시 19분에 '깨어나는 작업'을 스케줄러에 등록해서 해결했습니다(이건 반디 외국어 채널을 녹음하기 때문에 그렇고, EBS FM 라디오를 녹음할 때는 6시 19분, 7시 19분에 깨웠었습니다).
깨어나는 작업이라고 해서 별건 아니고 위와 같은 사용자 정의 스크립트 작업에 실행 명령으로 ls /volume1 이라고 써줬습니다. 디스크 볼륨 1의 폴더 리스트를 보여달라는 명령인데, 봐줄 사람은 없겠지만 적어도 HDD는 깨어나겠지요.



자 이제 다 됐습니다.
기다리시기만 하면 NAS가 방송을 자동으로 녹음해주고, Audio Station과 DS Audio의 최근 추가됨 리스트에 새로 녹음된 파일이 뜰 겁니다. 혹시 Audio Station에서 파일은 보이지만 폴더가 안 보인다면 File Station 등에서 폴더 이름을 다른 걸로 바꾸셨다가 다시 되돌리시면 될 거고요.

글 서두에도 말씀 드렸듯이 요즘은 다른 좋은 영어 공부 자료들이 많아서 EBS 라디오를 굳이 녹음까지 해서 들으실 분은 별로 안 계실 것 같지만, 그래도 혹시 필요하신 분 계실까 해서 정리해봤습니다.