icecast, ices를 이용한 mp3 스트리밍 서버 운영

준비물 icecast, ices, lame

iccast(open source audio streaming server)는 http://www.icecast.org에서 최신 버전을 구함
ices도 http://www.icecast.org에서 구할수 있음 ices는 icecast 서버에 mp3파일을 스트림 형태로 변환하여 출력하는 프로그램으로 shout와 동일한 역할을 함. 사용결과 shout보다 안정적으로 작동함

mp3파일의 bitrate를 변환하여 출력하고자 할 경우(128Kbps->64 or lower) lame라이브러리가 있어야 함.
lame 은 http://sourceforge.net에서 lame으로 검색하면 쉽게 찾을수 있음

다운로드
http://www.icecast.org/releases/icecast-1.3.11.tar.gz
http://www.icecast.org/releases/ices-0.1.0.tar.gz
http://prdownloads.sourceforge.net/lame/lame3.89beta.tar.gz

설치
1. icecast
tar xvfz icecast-1.3.11.tar.gz
./configure
make
make install

2. lame
tar xvfz lame3.89beta.tar.gz
./configure
make
make install

3 ices
tar xvfz ices-0.1.0.tar.gz
./configure --with-lame --with-lame-includes=/usr/local/include/lame --with-lame-libraries=/usr/local/lib
make
make install

* ices가 reencode기능을 사용하기 위해서는 컴파일 단계에서 lame 라이브러리를 포함해야 하기 때문에 ices설치 전에 lame을 설치해야 함
* 반드시 설치시 lame library의 위치를 알려줘야함
* 옵션을 사용하지 않으면 /usr/lib에서 lame 라이브러리를 찾기 때문에 실행시 에러가 발생
* 이때 아카이브 파일을 /usr/lib로 카피하면 정상적으로 작동하긴 함

설정
1. icecast
/usr/local/icecast/conf/icecast.conf 파일이 설정파일

기본적으로 설정해야할 항목

#########################
### 최대 접속자 수
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. lame : 별도의 설정이 필요없음

3. ices
/usr/local/icecast/conf/ices.conf 파일이 설정파일
그러나 xml형태로 되어있고 parser가 없을 경우 설정파일을 읽지 못함(내경우)
그래서 실행시 옵션으로 모든것을 해결

MP3파일 준비와 palylist작성
* 적당한 분류로 MP3파일을 준비
* playlist.txt 파일은 송출할 MP3파일의 목록이며 전체경로로 이루어진 파일명
예)
/tmp/mp3/aaa.mp3
/tmp/mp3/bbb.mp3
/tmp/mp3/001/ccc.mp3
.
.
.
* ls /tmp/mp3/*.mp3 | sed 's/^//tmp/mp3//' > /usr/local/icecast/etc/playlist.txt
이런식으로 만들어 줌

실행
1. icecast : /usr/local/icecast/bin/icecast -b
==> 백그라운드 실행
2. ices : /usr/local/icecast/bin/ices -P <icecast admin pass> -B -n <방송이름> -g <장르> -d <방송설명> -u <방송url> -F ../etc/playlist.txt -r -R -b 64

-P icscast서버 설정시 입력한 admin passwd를 넣어줌
-n -g -d -u 는 생략해도 별 상관없음
-B 백그라운드로 실행함
-F playlist파일을 지정함(이름이 고정된것은 아님)
-r 랜덤하게 음악을 송출함
-R reencode기능을 사용함
-b reencode시 출력될 bitrate를 지정함

기타
* 음악이 끊기는 현상이 빈번히 발생함
* 장시간 연결했을 경우 접속이 끊겨버림
* playlist수정시 ices를 재시작 해야함(Perl 또는 파이선으로 실시간으로 변경시켜줄수 있다지만 참고할 만한 자료가 없음)

'Server' 카테고리의 다른 글

proftpd에서 FXP사용  (0) 2001.12.08
khttpd (커널에 포함된 웹서버 - 수정)  (2) 2001.12.01
유동ip로 웹서버 운영하기  (0) 2001.10.28
특정디렉토리 binding  (0) 2001.10.12
아파치로그에서 408(time out)로그 지우기  (1) 2001.10.03

+ Recent posts