인
터넷이 발전하면서 개인이 방송국을 차릴수 있는 시대가 왔습니다. 인터넷 방송은 irc를 통해 유행하기 시작했으며, 지금도
급속도로 발전하고 있습니다. 리눅스에서도 쉽게 인터넷방송국을 만들 수 있습니다. icecast는 mpeg audio 기술을
기반으로 음성방송(audio broadcasting)을 가능게 하는 스트리밍 서버입니다. 이를 이용해서
shout/iceplay, liveice 등과 같은 스트리머 프로그램을 통해 들어오는 스트림(sources)을 다른
클라이언트에게 서비스를 해 줄 수 있습니다. 이 글에서는 리눅스에서 icecast와 shout를 이용한 간단한 MP3 방송국을
만들어 보겠습니다.
icecast 소개
icecast
는 인터넷기반의 Mpeg Layer III (MP3) 스트리밍 기술의 방송시스템 서버입니다. 이 프로그램은 Nullsoft의
Shoutcast와 Scott Manley의 mp3serv 을 모델로 하여 만들어졌습니다. icecast 패키지는
icecast, shout, liveice 프로그램등으로 이루어져 있습니다. icecast 의 공식홈페이지는 http://www.icecast.org 입니다.
tcp_wrapper 방화벽 기능과 암호화 패스워드 기능을 원하는 경우 configure 옵션에 각각 --with-libwrap , --with-crypt 을 추가하면 됩니다. 자세한 사항은 INSTALL파일 참조하세요.
# tar xvfz icecast-1.3.7.tar.gz
# cd icecast-1.3.7
# ./configure
# make
# make install
설치를 마치고 나면 /usr/local/icecast 밑에 아래와 같은 디렉토리가 생깁니다.
bin conf doc logs static templates
다음으로 배포판에 포함된 icecast의 conf 디렉토리에 있는 icecast.conf.dist를 icecast.conf 로 복사한후 자신의 환경에 맞게 수정하여 저장하면 됩니다.
# cp icecast.conf.dist icecast.conf
icecast 설정
icecast
를 실행하기 전에 기본설정을 해주어야 정상적으로 서버가 실행이 됩니다. 실행하기 전에 icecast.conf를 자기 환경에 맞게
수정합니다. 서버에서 사용할 포트와 shout를 사용할 때 쓰는 암호를 지정해야 합니다. 포트의 기본값은 8000번이며, 암호는
hackme입니다. icecast.conf 에 대한 설정은 주석과 manual.html을 참고하세요. 기본적으로 해주어야 할
설정은 다음과 같습니다.
######################### Server passwords #####################################
encoder_password hackme
admin_password hackme
oper_password hackme
############# Server IP/port configuration (IMPORTANT) #########################
#hostname 192.168.1.1 (이곳에 도메인이나 IP를 적게 되면 icecast 서버는 오직 그 IP에서 오는 스트림만 받아서 서비스 한다.)
port 8000 (icecast server가 소스를 듣거나 연결을 받아 들일 때 사용하는 포트번호)
port 8001
server_name your.server.name (자신의 도메인 네임이나 IP)
icecast 실행
설정을 마쳤으면 icecast를 다음과 같이 실행합니다. 아래와 같은 화면이 나온다면 icecast가 정상으로 실행된 것입니다.
./icecast -c ../etc/icecast.conf
[icecast 서버 실행 화면]
설정파일 별로도 옵션을 사용하여 icecast의 실행환경을 설정할 수 있습니다. icecast를 실행할 때 사용할 수 있는 커맨드 라인 옵션은 다음과 같습니다.
-c [파일이름] : 설정 파일을 지정합니다.
-P [포트] : 모든 클라이언트, 소스, 관리연결에서 사용할 포트를 지정합니다. 기본값은 8000 이다.
-m [최대 클라이언트] : 연결할 수 있는 클라이언트 수를 지정한다. 모든 클라이언트가 접속했을 경우, 서버에서 'HTTP/1.0 504 Server Full' 를 내보낸다.
-p [encoder암호] : 서버에 스트림을 보내는 encoder의 사용 암호를 지정한다.
-b : icecast를 백그라운드로 실행시킨다. (데몬 프로세스)
-d [디렉토리] : icecast에서 생성되는 로그 파일과 임시파일을 저장할 디렉토리를 지정한다.
이제 이 상태에서 icecast의 관리를 할 수 있습니다. 프롬프트에서 help를 치면 서버를 관리 할 수 있는 명령어들을 알 수 있습니다. 서버의 종료명령은 shutdown 입니다.
[icecast 서버 종료 화면]
이제 서버가 시작되었지만 방송을 하기 위해서는 MP3를 서버에 보내주는 스트리머 프로그램이 필요합니다. 이 역할을 하는 것이 shout입니다.
shout 소개
shout
는 C로 작성된 프로그램으로 icecast에 mp3 파일들을 보내주는 역할을 하며 icecast가 추천하는 스트리머입니다.
shout는 실행할 때 지정할 수 있는 많은 명령어와 라인 옵션을 가지고 있습니다. 옵션을 볼려면 README.shout를
보시기 바랍니다.
shout 설치
shout 는 http://www.icecast.org/releases/shout-0.8.0.tar.gz에서 받을 수 있습니다.
다운로드
icecast 홈페이지 :
와우에서 받기 :
다음과 같이 설치합니다.
# tar xvfz shout-0.8.0.tar.gz
# cd shout-0.8.0
# ./configure
# make
# make install
shout 는 icecast와 같은 경로에 설치되며 실행파일은 bin 디렉토리에 설정파일은 /etc 디렉토리에 설치됩니다. shout를 실행하기 전에 다음과 같이 복사한 후 설정파일을 서버 환경에 맞게 수정하면 됩니다.
cp shout.conf.dist shout.conf
shout 의 설정
icecast와 마찬가지로 shout도 환경설정을 해야 합니다. 많은 옵션들이 있지만 몇가지 기본 옵션만 설정해도 실행할 수 있습니다. 나머지 설정들은 주석을 참고하여 설정하시기 바랍니다.
############### Server Location and Connection Options #########################
server_name localhost (자신의 컴퓨터의 IP나 도메인을 적어 줍니다)
port 8000 (icecast.conf에 설정이 된 port번호를 이용합니다)
password hackme (icecast에 접속할 때 쓰이는 암호, icecast.conf 와 같아야 합니다)
mount default
##################### Server Information #################################
name WOW Radio (xmms등으로 들을 때 플레이창에 보여지는 방송의 이름)
desc WOW_Linux_Radio_Box (스트림에 대한 세부 설명)
genre All_Play (장르를 써놓습니다. 일반적인 경우 꼭 지정할 필요는 없습니다)
url http://www.apan.com/ (Icecast 서버와 연관된 실제 운영하고 있는 서버등의 주소를 적습니다)
daemon yes (Shout를 daemon(백그라운드) 으로 돌릴 걸인지를 지정합니다)
verbose no
playlist 만들기
shout
로 방송을 하기 위해서는 서버에 보낼 mp3 파일들의 리스트가 필요합니다. 리스트 파일을 다음과 같이 만듭니다. playlist
파일을 /etc 디렉토리에 shout.playlist 이름으로 만듭니다. 내용은 다음과 같은 형식입니다.
/mp3/taiji_solo_2th/taiji_solo_2th_01.mp3
/mp3/taiji_solo_2th/taiji_solo_2th_02.mp3
/mp3/taiji_solo_2th/taiji_solo_2th_03.mp3
/mp3/taiji_solo_2th/taiji_solo_2th_04.mp3
즉, /절대경로/파일이름.mp3 입니다. xmms의 playlist기능을 이용하면 더 편하게 작성할 수 있습니다.
shout 실행
이제 shout를 실행시켜 봅니다.
./shout
shout 도 icecast와 마찬가지로 설정파일과는 별도로 커맨드 옵션을 지정하여 실행할 수 있습니다. 옵션을 보려면
shout -h
를 하면 되며 중요한 옵션을 살펴보면 다음과 같습니다.
-a : 자동으로 bibrate(transfer) 수정 기능을 켠다.
-x : cue 파일을 업데이트 시키지 않는다. (cpu 부하를 줄여준다.)
-p : playlist 파일을 지정한다.
-l : playlist 파일의 노래가 다 끝났을 때 다시 실행한다. (loop)
-g : 장르를 지정한다.
-n : xmms나 Winamp의 사이트 타이틀을 지정한다.
-u : URL을 지정한다.
[shout의 실행 화면]
방송 청취하기
MP3 재생기 (XMMS, FreeAmp) 등에서 ctrl 키와 L 키를 누른 후 아래 화면과 같이
http://localhost:8000
을 입력하면 잠시 버퍼링 시간을 거치고, icecast에서 나오는 mp3 를 들을 수 있습니다.
콘솔상에서 들으려면,
mpg123 http://localhost:8000
하면됩니다.
[xmms로 방송 듣는 화면]
doc
디렉토리의 manual.html 을 읽어 보면 icecast 서버 관리자 명령어와 접속콘트롤에 대한 자세한 설명이 있습니다. 또
icecast.conf의 설정에 대한 자세한 설명도 같이 있으므로 읽어보시기 바랍니다.또한, 스트리머로써 shout 외의 다른
프로그램들을 사용할 수 있습니다. liveice 라는 스트리머를 이용하면, 사운드카드에 마이크를 연결하여 DJ처럼 방송을 할 수
있습니다. 마지막으로 icecast에서 사용할 수 있는 명령어들을 소개하고 마치겠습니다.
관련링크
The Linux MP3-HOWTO : http://linuxdoc.org/HOWTO/MP3-HOWTO.html
icecast 홈페이지 : http://www.icecast.org/
Live Source Client For IceCast : http://star.arm.ac.uk/~spm/software/liveice.html XMMS 홈페이지 : http://www.xmms.org
KLDP 스트리밍 서버 디렉토리 : http://kldp.org/네트워킹/서버_운영/스트리밍_서비스/
글쓴이 : 이종준님 ( junilove@kebi.com ) "Open mind and don't mind!"