인터넷 라디오 방송국(icecast) – 두번째
icecast 를 이용한 라디오 방송
——————————————————————–
본문서는 최민성님의 문서에 몇가지 옵션 설명을 덧 붙여서 만들어 진 것으로
이전 icecast 하우투 문서와 같이 보시면 많은 도움이 되실거라 생각 됩니다.
——————————————————————–
—
1. 준비작업
리눅스에서 방송을 하기 위해 필요한 프로그램 들입니다.
icecast (방송서버)
공식 홈페이지인 http://www.icecast.org 에서 다운 가능합니다.
shout (MP3 스트리머)
liveice (DJ 툴)
notlame (MP3 encoder)
—
2. icecast
2-1 icecast 는…
icecast 는 GPL 을 따르며 TCP/IP 기반에서 MP3 방송을 가능케 하는 스트리밍
서버프로그램이며 linux 뿐만 아니라 윈도우 운영체제에서도 사용이 가능합니다.
2-2 icecast 설치
icecast 공식사이트인 http://www.icecast.org 에서 다운을 받습니다.
(2000년 10월 28일 현재 안정버전은 1.3.7 이며 개발버전으로는 1.3.8-beta2가
나와 있습니다)
간단하게 RPM 패키지를 다운 받아 설치 할수 있으며, 여기에서는 소스를 직접
받아 설치해 보겠습니다.
다운 받은 프로그램은 안정버전인 1.3.7 이며 다음과 같은 설치작업을 거칩니다.
[root@mins /usr]# tar xvzf icecast-1.3.7.tar.gz
[root@mins /usr]# cd icecast-1.3.7
[root@mins icecast-1.3.7]# ./configure
[root@mins icecast-1.3.7]# make
[root@mins icecast-1.3.7]# make install
정상적으로 설치가 되었다면 /usr/local/icecast 디렉토리를 보실수 있습니다.
* 참고 : tcp_wrapper 방화벽 기능과 암호화 패스워드 기능을 원하는 경우
configure 옵션에 각각 –with-libwrap , –with-crypt 을 추가 해야하며,
readline support 를 원치 않는 경우 –without-readline 을 포함합니다.
(자세한 사항은 INSTALL파일 참조)
2-3 icecast 설정
/usr/local/icecast/conf/icecast.conf.dist 을 파일을 icecast/bin/ 에 복사후
icecast.conf 파일을 vi 나 pico 와 같은 편집기로 알맞은 환경으로 수정 합니다.
[root@mins conf]# cp icecast.conf.dist ../bin/icecast.conf
#vi icecast.conf
그러면 다음과 같은 항목들이 나올 것입니다. 하나 하나 자세히 짚어 보도록 하겠
습니다.
1. Location , rp_email, server_url
이는 http://yp.icecast.org 등의
디렉토리 서버에 자신의 icecast server를
나타낼 때 자신이 방송하고 있는 서버의 위치와 URL, 그리고 관리자메일 등을
나타내 주는 것으로 공개하지 않으려면 적을 필요는 없습니다.
2. max_clients
동시에 접속 가능한 클라이언트의 수. 즉, 청취자의 수를 제한 할 수 있는
기능입니다.
3. max_clients_per_source
채널이 여러 개일 수 있는데 각 채널마다 들을 수 있는 청취자의 수를 제한해줄 수
있는 기능입니다.
4. max_sources
icecast server에 동시에 제공할 수 있는 최대한의 소스 개수
5. max_admin
서버에 동시에 접속할 수 있는 admin의 갯수
6. throttle
대역폭이 어느 정도까지 사용될 수 있는지를 결정합니다. 그 단위는 Megabytes
per second 를 사용하며, 만약 설정된 대역폭을 넘어서면 모든 접속이 거부됩니다.
7. use_meta_data
mp3로 방송할 때 파일이름(title streaming)을 보여줄 수 있게 해줍니다.
8.streamurl
만약 소스의 URL이 정해지지 않았다면 그 주소로 대체 됩니다.
10. streamurllock
만약 소스가 자신의 URL을 변경할 수 없도록 하려면 1로 셋팅하면 됩니다.
11. encoder_password, admin_password, oper_password
기본값은 hackme으로 각 항목의 뒤에 패스워드를 정해주어야 하는데 이는 자신이
원하는 password로 정해주면 됩니다. 컴파일 할 때 –with-cript 라는 옵션을
주고 했다면 mkpasswd로 만든 패스워드를 적어주면 됩니다.
12. icydir
주석을 풀면 icy 디렉토리 서버에 자신의 서버를 알리게 됩니다.
13. directory
xaudiocast 디렉토리 서버에 자신의 서버를 나타내는 내게 해줍니다.
14. touch_freq
디렉토리 서버에 자신이 사용하고 있는 서버의 상태를 업데이트 하는 시간간격으로
보통 기본값은 5분입니다.
15. hostname
모든 IP에서 오는 스트림을 listen할 수 있고, 이곳에 도메인이나 IP를 적게 되면
icecast 서버는 오직 그 IP에서 오는 스트림만 들어서 서비스 하게 됩니다. 따라서
만약 잘못된 아이피를 적으면 작동하지 않습니다.
16.server_name
자신의 도메인 이름 또는 IP를 꼭 적어주어야 합니다.
17. force_servername
디렉토리 서버는 기본적으로 IP를 사용하게 되는데 만약 1로 설정되어 있다면
server_name에 쓰여 있는 것을 사용하게 됩니다.
18. mount_fallback
보통 클라이언트에서 요청한 스트림이 없는 경우 디폴트 스트림을 전송하 게 되는데
만약 디폴트의 값이 0으로 되어있으면 결국 요청한 스트림이 없는 경우가 되어
HTTP 404 Stream Not Found를 받게 됩니다.
19.port
icecast server가 소스를 듣거나 연결을 받아 들일 때 사용하는 포트번호를
나타냅니다.
두 개의 포트를 사용하게 되는데 이는 스트림 소스로서의 윈앰프로 스 트림을
서버에 전송하는 경우… 윈앰프가 연결하는 연결포트 = 설정포트 + 1 하기 때문
입니다. 윈앰프를 사용하지 않는 경우 포트를 하나만 써도 관계없습니다.
20. logfile
보통 서버를 시작할 때마다 icecast.log를 비워주기를 권장합니다.
21. logfiledebuglevel
로그파일에 기록될 내용의 정도를 정해줍니다. 0는 debugging output이 없고,
1,2는 보통, 3,4는 많이 나오게 됩니다.
22.consoledebuglevel
logfiledebuglevel 와 같은 기능으로 단지 출력이 icecast의 콘솔로 나온다는
점이 다릅니다.
23. reverse_lookups
만약1로 설정하면 IP를 호스트네임으로 변환합니다. 대부분의 경우 IP만 가진
클라이언트이므로 이런 경우라면 0으로 off 해두면 됩니다.
24. console_mode
icecast server가 시작할 때의 모드입니다. 0은 로그정보와 함께 admin 콘 솔로
사용되고, 1은 로그정보없는 admin 콘솔로, 2는 로그파일윈도우로만 사용하고, 3은
icecast server를 daemon process로 시작하게 합니다.
25. client_timeout
소스 스트림 (liveice, shout)의 연결이 끊겼을 때 소스와 서버와의 연결이 다시
연결는데 몇초를 기다려야 할지를 결정합니다. 일단 0보다 큰 숫자이어야 합니다.
26.kick_client
소스의 연결을 기다리는 시간이 초과된 경우, 만약1이라면 클라이언트와의 연결을
끊어버리고, 0일 경우 다른 스트림으로 클라이언트를 옮겨서 다른 스트림을 들을
수 있게 해 줍니다.
27.staticdir
웹 브라우저에서 http://도메인 또는 IP:Port/file/ 을 했을 경우 나타나는 디렉토리
를 결정합니다.
28.stats_log
icecast server의 statistics를 덤프 해 놓는 파일입니다.
29. stats_time
초당 얼마나 자주 statistics file을 업데이트 할지를 설정합니다.
30.alias
서버간의 중계와 여러 개의 마운트 포인트를 사용할 수 있게 해줍니다.
31.transparent_proxy
1로 셋팅 하면 icecast server가 일종의 proxy처럼 작동합니다.
32.kick_relays
만약 다른 곳에 있는 icecast 서버의 스트림(방송)을 누군가가 alias된 자신의
서버에서 마운트시켜 듣다가 연결을 끊었을 경우에 여기 지정된 시 간 만큼 소스
의 연결을 유지한다. 그 후 원격지에 있는 다른 서버의 스트림소스와 연결을 끊게
되는 것이다.
33.acl_policy
클라이언트나 소스의 연결에 관한 인증 정책의 하나로 0은 거부, 1은 연결을 허가해
주는 것입니다.
34.allow
all, client, source, admin이 각각의 접속을 허가할 때 호스트마스크와 함께
쓰일수 있습니다.
35.deny
all, client, source, admin 각각의 접속을 거부 할 때 쓰입니다.
기본적으로 server_name 만 수정해주어도 사용에는 지장이 없으며 기타 몇가지
중요 설정 부분들은 다음과 같습니다. (## 부분은 주석 부분입니다)
#########################
### 최대 접속자 수
max_clients 900
### 각 소스별 (채널) 최대 접속자 수
max_clients_per_source 900
max_sources 10
### 동시 접속 가능한 최대 어드민 수
max_admins 5
### 대역폭 제한
throttle 10.0
#########################
### 패스워드 설정 부분입니다. 기본 패스워드는 hackme 입니다.
encoder_password hackme
admin_password hackme
oper_password hackme
#############
### 서버 설정 부분입니다.
#hostname 192.168.1.1
# 방송에 사용될 포트를 적어 줍니다.
port 8000
port 8001
# 방송 서버의 도메인 네임이나 IP 를 적어 줍니다.
server_name your.server.name
2-4 icecast 사용하기
이젠 icecast 를 사용해볼까요.
[root@mins bin]# ./icecast
기본적으로 위와 같이 실행을 하여도 무방하며, 옵션에 대해 좀더 알고 싶으면
icecast -h 로 실행을
합니다.
—
3. shout
3-1 shout 란?
shout 는 icecast 에 인코딩 되어진 mp3 를 보내주는 프로그램입니다.
장점으로는 실시간인 liveice 에 비하여 CPU, RAM 사용양이 적다는 점이 있지만
방송전에 미리 인코딩을 하는 시간을 가지며 외부입력이 불가능하여 실시간적인 방
송이 힘들다는 단점이 있다.
3-2 shout 설치
http://www.icecast.org 에서 shout 를
다운 받아, 다음과 같이 설치를 합니다.
[root@mins /usr]# tar xvzf shout-0.8.0.tar.gz
[root@mins shout-0.8.0]# make
[root@mins shout-0.8.0]# make install
설치가 완료 되면 icecast/bin 디렉토리에 shout 실행 화일이 있는걸 확인하실수
있습니다.
3-3 shout 설정
shout 의 경우 따로 설정 파일을 지정해 주지 않아도, 커맨드 라인상에서 옵션을
주어도 되기에, 여기에서는 간단하게 중요부분만 살펴 보기로 한다.
shout.conf 파일은 기본적으로 icecast/etc/ 에서 찾을수 있으며, ## 부분은 주석
이다.
[root@mins etc]# cp shout.conf.dist shout.conf
[root@mins etc]# vi shout.conf
###############
## 서버 이름을 적어준다. icecast 와 같은 서버인 경우 localhost 를 사용한다.
server_name localhost
## 포트 설정
port 8000
## icecast 에서 설정 해둔 암호를 적는다. (hackme 로 변경)
password hackme
mount default
###############
## 방송국 이름입니다.
name Radio_AP
desc The_best_monkey_music_monkeys_can_buy
genre Monkey_Music
url http://www.apan.com/
#공개, 비공개 방송 결정
public yes
###############
short_titles yes
## 노래 파일을 제목으로 보여 줍니다.
title_streaming yes
id3 no
autocorrect yes
###############
## MP3 연주 리스트 파일 설정 (본인의 경우에는 playlist로 설정)
playlist playlist
## 전부 연주가 되었을때의 반복 설정
loop yes
## 무작위 연주 설정
shuffle no
3-4 shout 사용하기
먼저 방송을 하기 위한 방송용 리스트를 작성한다.
여기에서는 예제로 playlist 란 파일로 작성을 해보았다.
[root@mins etc]# cat playlist
/home/radio/DJDOC5/01 INTRO(와신상담).mp3
/home/radio/DJDOC5/02 비애(Acoustic).mp3
/home/radio/DJDOC5/03 L.I.E.mp3
/home/radio/DJDOC5/04 Nuclear_Lunch_the_Detect.mp3
/home/radio/DJDOC5/05 Boogi_Night.mp3
/home/radio/DJDOC5/05_포조리.mp3
리스트 파일을 쉽게 만들기 위하여 본인은 다음과 같은 명령어를 사용하였으며,
[root@mins etc]# find /home/radio/ -name “*.mp3” > playlist
xmms 사용자의 경우에는 xmms 의 리스트 파일을 그대로 사용하여도 무방하다.
이제 shout 를 실행을 하게 되면, 방송이 시작된다.
[root@mins bin]# ./shout
앞에서 이미 shout.conf 파일을 알맞게 수정하였으므로 별다른 옵션으로 실행이
가능하다.
shout 의 자주 쓰이는 일반적인 옵션은 다음과 같다.
-C 설정 파일 지정
-D 모든 노래 전에 현재의 노래를 먼저 연주
-P 패스워드 지정
-l 노래 연주 종료후 루프
-p 플레이 리스트 지정
-r 랜덤하게 연주
-z 백그라운드에서 실행
-h 도움말
—
4. liveice
4-1 liveice 란?
livceice 는 shout 에 비해 시스템 자원을 많이 차지 한다는 단점을 가지고 있지만
liveice 는 실시간으로 MP3 를 인코딩 하여 icecast 에 전송을 하며, 외부 입력이
가능하다는 장점 때문에, 널리
쓰이고 있는 프로그램이다.
4-2 liveice 설치
liveice 는 cvs 라는 유틸리티를 이용하여 (대부분의 배포판에 포함되어 있습니다)
설치를 합니다.
다음과 같은 작업으로 설치를 할수 있습니다.
[root@mins /usr]# export
CVSROOT=:pserver:anonymous at
cvs.icecast.org:/cvsroot
[root@mins /usr]# cvs login
(Logging in to anonymous
at cvs.icecast.org)
CVS password:
패스워드는 공백이다. 이곳에서 그대로 엔터를 쳐주면 된다.
프롬프트가 그냥 떨어지지만, 연결이 된 상태이다. 계속 설치 작업을 하겠다.
[root@mins /usr]# cvs checkout liveice
만들어진 liveice 디렉토리로 이동을 하여..
[root@mins liveice]# autoconf
[root@mins liveice]# ./configure
[root@mins liveice]# make
아래의 필요한 화일들을 /icecast/bin 에 복사하는 것으로 liveice 의 설치는 마칩
니다.
liveiceconfigure.tk
liveice
liveice.cfg
frontend.tcl
simple_frontend.tk
* 참고 : http://cvs.icecast.org/cvsweb.cgi/ 에 가보면, liveice-xmms 라는 것
이있다. 본인은 X 를 쓰지 않아 써보질 못했지만, 아마도 winamp 처럼 편하게 방
송을 할수 있는 플러그인 인듯 싶다.
보다 방송을 편하게 하고자 하는 분들은 한번 설치해 보길 권한다.
4-3 notlame 설치
liveice 를 사용하기 위해 notlame 이란 인코딩 프로그램을 설치 한다.
다음의 사이트에서 다운을 받을수 있으며, 설치법은 압축을 푼후 바이너리
를 /icecast/bin 에
복사하면 되기에 생략 하겠다.
http://hive.me.gu.edu.au/not_lame/
4-4 liveice 설정
X 윈도우를 사용하는 경우 liveiceconfigure.tk 를 사용하며, liveice.cfg 를 직접
편집할수 있습니다.
여기에선 직접 편집을 해보며, 대략 수정해야 될 내용은 다음과 같습니다.
# basic options
# 서버, 패스워드를 지정합니다. 패스워드는 hackme
SERVER localhost
PORT 8000
PASSWORD hackme
# 이전에 다운 받은 not_lame 경로를 적어 줍니다.
USE_LAME3 ./notlame
#사운드 카드를 설정 해줍니다.
SOUNDCARD
# name# name -n
# 방송 타이틀
NAME Szyzyg – Scott’s Mp3 Collection and Other Wierd Stuff
# password -P
# hackme 로 수정
PASSWORD hackme
# 리스트 화일 지정
PLAYLIST playlist
4-5 liveice 사용하기
[root@mins bin]# ./icecast
실행을 하게 되면, 여러가지 창이 뜨며 다음의 키보드 조작으로 방송을 조정할수
있습니다.
Action Channel 1 Key Channel 2 Key
~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~~~~~~~
다음 트랙으로 이동 1a
이전 트랙으로 이동 qz
시작/정지 2s
리셋 채널 wx
볼륨 증가 3d
볼륨 감소 ec
속도 증가 4f
속도 감소 rv
연속/랜덤/연주후 정지 5g
이전 채널 tb
랜덤하게 연주um
스페이스바를 누르면 마이크가 활성화가 되며, # 는 리스트를 다시 읽습니다.
하나의 채널이 연주가 될때, 다른 하나의 채널로 곡을 찾는 식으로 방송을 하면
됩니다.
X 윈도우 상태라면 다음의 명령으로 GUI 상태에서 간단하게 조작할수 있습니다.
X 윈도우 상태라면 다음의 명령으로 GUI 상태에서 간단하게 조작할수 있습니다.
[root@mins bin]# ./frontend.tcl | liveice
—
5. 방송 듣기
여러 MP3 플레이어를 통하여 방송을 들을 수가 있다.
xmms 나 winamp 의 경우 Ctrl + L 키를 누르면 URL 주소창이 뜨는데,
이곳에 http://서버주소:8000 을 입력 하면 약간의 버퍼링 시간이 지난후 방송이
나온다.