[cast] shoutcast 를 이용한 인터넷 라이브 방송 -아랑
SHOUTcast 를 이용한 인터넷 라이브 방송 시스템 구축
작성자 : 서진우 (alang at
sysmng.com)
—————————————————————-
서버측 설정 :
먼저 http://www.shoutcast.com
사이트로 가셔서 Unix&Linux 용 Shoutcast
프로그램을 다운 받는다.
shoutcast-1-7-1-linux-glibc.tar.gz
shoutcast-1-8-0-linux-glibc6.tar.gz
설치디렉토리에다 위 프로그램의 압축을 푼다.
그럼 아래와 같은 파일이 생성될것입니다.
README content/ sc_serv* sc_serv.conf sc_serv.rip
다른건 별로 신경 쓰실 필요는 없고 sc_serv sc_serv.conf 이 두파일만 신
경 쓰면 된다.
sc_serv : shoutcast server 실행파일
sc_serv.conf : 설정파일
먼저 sc_serv.conf 설정파일을 설정한다. 설정파일 안에 변수들 설명이다.
SHOUTcast Server 환경 설정변수 설명
PortBase :
이건 중요합니다! 사람들이 방송을 듣기 위해서 접속할 포트입니다. 기본값은
8000 이구요 자기 마음대로 바꿀 수 있지만, FTP나 다른 프로그램에서 사용하는
포트와 중복되면 안됩니다. UNIX시스템에서는1024이하의 포트로 설정하기 위해선
루트 권한이 있어야 합니다. PortBase의 포트에 +1 을 한 포트번호가 Dj 플러그
인 에서 서버로 접속할때 쓰이는 포트 입니다. 그러니까 제대로 방송을 하려면
PortBase의 포트넘버와 +1을 한 포트까지 다른데서 사용하지 않는 포트 여야겠죠
^^; 명심하세요.
MaxUser :
청취자 수의 최대치를 설정합니다. 디폴트는 32, 1.2버젼에서는 1024명까지 지원
합니다. 너무 많이 설정해두지 마세요…… 그냥 32로..
Password :
Dj 툴에서 shoutcast서버에 접속하기 위한 비밀번호입니다. changeme가 디폴트인데
자기가 편리한대로 바꿔주세요. 나중에 server control page에 접속할때도 필요합
니다.
Logfile :
로그하기위한 파일 이름을 지정합니다. 로그하시지 않으려면 공백으로 두면됩니다.
SrcIP :
Source IP라는 뜻인데, shoutcast는 중계방송 역할도 할수있습니다. 즉, 자기
자신이 방송을 하지 않더라도 다른 사람이 운영하는 서버에서 방송이 되고
있다면 그곳의 방송을 자기 서버에서 받아서 꼭 자기가 하는 것처럼 중계를
할 수 있다는 거죠. 예를 들어, A의 서버에서는 실제로 방송을 하지 않고 B라
는 곳에서는 실제로 방송 합니다. 그런데 A서버에서 B서버의 방송을 중계한다면
청취자들은 A서버로 접속해서 B서버에서 하는 방송을 들을 수 있다는 거죠.
머리가 다들 좋으실테니 이해하셨으리라 믿겠습니다. ^^; 이 SrcIP항목은 자기가
서버를 운영할 때, 다른 서버 자신의 서버를 중계할 수 있게 하겠느냐 아니면
못하게 하겠느냐를 정하는 겁니다. 127.0.0.1설정을 해준다면 다른곳에서는
자신의 서버를 중계할수가 없습니다. ANY로 해둔다면 어느곳의 서버에서든지
자신의 서버를 중계할 수 있겠죠. ^^; ANY로 해두세요
DestIP :
이건 청취자를 위한 IP설정인데 ANY로 해두시면 누구나 방송을 들을 수 있습니다.
RelayServer :
[Optional] 자신의 서버로 다른곳에서 방송중인 것을 중계하고자 할 때 서버의
주소를 입력합니다. 중계를 하지 않으면 그냥 디폴트로.
RelayPort :
[Optional] 자신의 서버로 다른곳에서 방송중인 것을 중계하고자 할 때 서버의
포트를 입력합니다. 중계를 하지 않으면 그냥 디폴트로.
RelayPublic :
[Optional] 자신의 서버로 다른곳에서 방송중인 것을 중계하고자 할 때 자신의
서버를 항상 “Public” or “Never”로 설정하세요.
그 밖의 다른 것은 쏘스서버와 돌일하게 설정합니다.
RealTime :
[Console systems only] 이는 청취자수 등의 상태를 서버에 실시간으로 나탈낼
지지의 여부를 결정합니다.
ScreenLog :
[Console systems only] 이 값이 1로 설정되어있으면 SHOUTcast Server의 화면
에 로그정보가 보여집니다. 물론 0 이면 반대 이겠지요.
HistoryLog :
[Optional] “None” 이외의 값을 설정하면 HistoryLogTime에서 설정한 대로 일정
한 간격을 두고 청취자수, 타임스탬프, 메타데이타와 같은 정보를 로그화일에
저장합니다.
HistoryLogTime :
[Optional] 초단위로 설정하는 값에따라서 HistoryLogFile을 기록합니다.
Yport :
[Optional] 이건 yp.shoutcast.com에 접속하기 위한 포튼데요. shoutcast서버와
yp.shoutcast.com간에 통신을 위한겁니다. 프락시를 사용하신다면 800으로 바꾸
시고 아니라면 그냥 80으로 두세요.
NameLookups :
[Optional] 이건 Domain을 reverse해주는 기능입니다. 1로 해놓으시면 도메인으
로도 접속이 가능합니다 대신에 찾을때 속도가 느리죠. 도메인을 좋아하시는 분
은 1로 해두세요
AutoDumpUsers :
[Optional] 1로 설정한다면 소스에서 방송을 하지 않을 때마다 청취자와의 연결을
끊습니다. 다른값을 설정한다면 청취자는 연결된 상태로남아 방송안됨(Dead Air)
메시지 또는 백업파일(아래 BackupFile에서 지정한 화일)을 받게 되겠죠.
IntroFile :
[Optional] 청취가 자신의 서버에 접속했을때, 방송을 바로 듣기 전에 인트로 음악
을 들려주고자 할때 사용하죠. 즉, 청취자가 자신의 서버에 접속을 하면 먼저 인트
로파일을 듣고 나서야 방송을 청취하게 되는 겁니다.. 중요한 것은 인트로 파일명
인데. 자신이 서비스 하는 음질을 파일명에 적어야 하는데 형식은 intro%d.mp3이고
, %d부분을 자신의 음질로 적어주면 OK!. 예를 들어 40k의 음질로 방송을 한다면
c:\\intro40.mp3가 되는 겁니다. 디렉토리는 마음대로~~.
BackupFile :
[Optional] 이것을 지정해두면, 방송소스가 끊어지거나 빙송소스가 30초이상 지연될
때마다 서버가 이 백업화일을 그대로 청취자에게 보내게 됩니다. 주의할점은 이화일
이 MP3 형식이어야하며 당연히 방송하는 스트립과 똑같은 bitrate, sample rate, and
mono/stereo 설정이어야 합니다. 만일 이 파일이 스트림과 틀릴 경우 청취자는 이상
한 소리를 듣게 됩니다..
TitleFormat :
[Optional] 청취자에게 보내지는 제목을 설정하는 부분인데, 예를 들어 ‘꼬마Dj의
12시의 음악여행’ 이라는 제목을 모든 곡의 제목에 넣고 싶다면. TitleForamt=
꼬마Dj’s 12시의 음악 여행:%s 라고 하면되져. 그렇게 되면 지금 서비스하는 곡의
이름이 ‘핑클-화이트’일 때, 청취자에게는 다음과 같이
[꼬마Dj’s 12시의 음악여행:핑클-화이트]와 같이 보이는 겁니다.
하지만 여기서 한글 문제가 생기는데 윈앰프의 근래 버젼에서는 스트리밍시 한글이
보이지 않고 깨진다는 점이져. 그러니 영어로 멋지게(?) 적어보시기 바랍니다.
URLFormat :
[Optional] 이것은 미니브라우저 URL에 적용된다는 점을 제외하곤 TitleFormat이랑
같습니다. 리다이렉션이나 그것을 기억하고자 할 때만 유용하죠!
CurrentLog :
[Optional] 이것은 SHOUTcast 서버처럼 서버에 있는 파일을 주기적으로 업데이트하
기 위한 메카니즘을 제공해주는 기능입니다. CurrentLog 자체는 하나의 파라미터가
아니고 파라미터의 집합으로서 다음과 같습니다.
CurrentLogIn은 HTML template 파일의 이름입니다.
CurrentLogOut은 서버가 출력할 파일의 이름이고,
CurrentLogTime은 서버가 출력 파일을 업데이트하는 시간입니다.
HTML template 파일을 예로 설명한다. 이 파일이 서버에 저장되어 있고 CurrentLogIn
항목이 지정되어 있다면,
<HTML>
<HEAD>
<TITLE>My Current Stats</TITLE>
<HEAD>
<BODY>
My SHOUTcast server is currently playing
<!– CURRENTSONG –>
. You get see more information about it at <!– URL –>
</BODY>
</HTML>
보시다시피, 서버는 적절히 설명되어 있는 필드에 파라미터값들을 넣게 됩니다.
서버가 알아먹는 파라미터들은 LISTENERS, MAXLISTENERS, LISTENERTABLE, GENRE,
DESCRIPTION, URL, HITS, 그리고 CURRENTSONG입니다.
이 파라미터들에 대한 좀더자세한 정보는 SC_SERV.CONF 또는 SC_SERV.INI 파일에
있는 코멘트에서 찾아볼 수 있을 겁니다.
여기까지가 방송에 필요한 서버의 환경설정입니다.
셋팅이 완료되었으면 저장을 하시고 sc_serv 실행파일을 실행하세요.
그런뒤 브라우져로 http://설치서버도메인:BasePort/admin.cgi?pass=password
로 접속하여 reserve ip list 항목에서 방송클라이언트 서버의 ip를 등록시킨다.
여기까지가 방송에 필요한 서버의 환경설정입니다.
참고 :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
방송을 할때 메모리는 얼마나 필요하며, 내가 사용하는 인터넷 속도로
몇명이 청취할수 있는지 계산하는 방법을 알려드립니다.
청취자 한명에 14KB의 메모리가 필요합니다.
(예를 들어 1000명이 청취 하려면 14MB의 메모리가 필요)
100명의 청취자가 24kbps로 음악을 듣기 위해서는
24kbps*100 = 2,400kbps = 2.4Mbps 의 대역폭이 필요합니다.
(예, 하나로 통신의 ADSL Light인경우는 1Mbps 짜리이므로 …
56Kbps로 방송을 할때 몇명이 청취가능할까요? ^^.. 계산한번 해보시죠?)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
방송시스템쪽 설정 (방송 클라이언트 서버) :
필요한 설치 프로그램
winamp 2.7x
SHOUTcast Source for Winamp DSP Plug-in v1.8.0
Line Recdrding Plug-in
I3codecp
차례로 설치 한다. 그런후 …
윈앰프 프로그램을 실행한 후에 “Ctrl+P”를 누릅니다.
(윈앰프에서 마우스 오른단추를 누른뒤에 “Opions” -> “Preference…”
를
선택해도 됩니다.)
Plug-ins -> DSP/Effect 선택후
“SHOUTcast Source for Winamp v1.8.0 (dsp_sc.dll)” 를 선택하고
“Close” 단추를 누릅니다
그럼 [SHOUTcast Source] 창이 뜹니다.
여기서 Server 과 Format 설정후 Connect 를 한다.
이로써 일단 방송을 할수 있는 환경 자체가 준비 되어진것이다.
운영방식 :
이제 Winamp 에서 곡을 등록하고 연주 시작하면 음악 방속이 시작된다.
음악 연주 컨트롤은 Winamp 방식과 동일하다.
라이브 방송을 할때 Dj들의 멘트를 삽입해야 하는데 연주와 멘트가 동시에
될수 있도록 할려면 Winamp 설정에서 configure 를 클릭하고 ….
“Enable advanced recording mode”에 체크를 하고 “OK”단추를 누릅니다.
그럼 “SHOUTcast source” 창에 “Advanced Mode” 항목이 추가되었습니다
“샤웃캐스트 소스” 창의 “mixers” 단추를 눌러 아래와 같이 “Record
Control”
창과 “Play Control” 창을 띄웁니다
여기서 녹음 설정및 음질 설정 마이크 설정등을 해줍니다.
멘트를 시작할때는 SHOUTcast source 에서 Advanced Mode 설정에서 Lock 버턴
을 누르면 멘트가 방송에 나오게 됩니다.
이로써 SHOUTcast 와 Winamp 를 이용한 인터넷 라이브 방송 시스템 구축편을
마칩니다.