Icecast를 이용한 Ogg 스트리밍 서비스(인터넷 라디오 방송국 구축) |
1. 개 요
앞 서 MPD를 이용하여 오디오 음원 파일을 가지고 네트워크상으로 스트리밍하여 청취하는 방법에 대해서 살펴보았고, MPD에서 Icecast 서버로 송출하는 방법에 대해서도 언급한 적이 있습니다. 이번 시간에는 Icecast로 오디오 음원 스트리밍 서버를 구축하는 방법에 대해서 설명합니다. 여기서 설명하는 것은 2003년 4월에 쓴 "OGG 스트리밍 서버 Icecast2구축하기" 강좌와 필자의 저서 "리눅스의 모든 것"에 있는 내용을 수정 보완한 강좌입니다.
필자는 현재 IDC(Internet Data Center)에 있는 넘버원 리눅스 서버(펜티움4 2.4G/넘버원리눅스 32비트 버전)에 IceCast 서버를 운영중에 있으며, 집에 있는 Xtreamer 베어본 PC에 멀티미디어 서버의 일환으로 MPD 서버가 구축되어 있습니다. 넘버원 리눅스 서버의 Icecast로 클래식 음악을 청취하고 있고, 교회의 예배 찬양을 스트리밍을 지원하고 있으며, 집의 멀티미디어 서버에서 MPD 서버로 찬양을 주로 청취하고 있습니다.
음악을 듣는데 스트리밍 서버가 왜 필요할까 하는 의문이 들 수 있습니다. 컴퓨터에 음원 파일이 있고, 미디어 재생기로 재생하면 손쉽게 감상할 수 있는데, 불편하게 서버를 구축해야 하는지 이해가 안 되는 분들이 있을 것입니다. 컴퓨터에 있는 음원 파일을 혼자서 들을 땐 굳이 스트리밍이 필요하지 않을 수도 있습니다. 하지만, 이런 경우에는 스트리밍이 필요할 수도 있겠지요.
1. 동일한 음원을 내 컴퓨터가 아닌 다른 컴퓨터에서도 듣고자 할 때
2. 스마트폰이나 다른 재생기를 통해 내 컴퓨터에 있는 음원을 듣고자 할 때
3. NAS와 같은 네트워크 스토리지에 있는 음원을 듣고자 할 때
4. 집만 아니라 집밖에서도 네트워크를 이용하여 듣고자 할 때
5. 나 혼자만이 아니라 여러 지인과 같이 공유하여 듣고자 할 때(인터넷상으로)
6. 인터넷 방송국을 구축하여 서비스해 보고 싶을 때
스트리밍 서버에 대한 니즈가 있다면 리눅스 서버에 스트리밍 서버를 구축해야겠죠? 지금부터 Icecast를 이용하여 스트리밍 서버를 구축하는 방법과 스트리밍 서비스를 하는 방법에 대해서 강좌를 시작합니다.
2. Icecast
Icecast는 MP3와 Vorbis Ogg 포맷으로 오디오 스트리밍 서비스를 할 수 있도록 해 주는 서버 프로그램입니다.
Icecastices 레거시 버전에서는 MP3를 지원하였으나,Icecast2ices2에서는 MP3 라이선스 문제로 Ogg vorbis만 지원합니다. (변경 주: icecast가 아니라 ices입니다. Icecast는 음원이 mp3이든 ogg이든 브로드캐스트해 줍니다.) Icecast는 음원 파일을 재생하는 재생기는 아니고, 음원을 재생하는 클라이언트의 소스를 받아서 인터넷상으로 브로드캐스트해 주는 기능을 합니다.
2.1 Icecast 설치
넘버원 리눅스에서는 기본적으로 icecast 스트리밍 서버를 운영할 수 있도록 이 패키지가 설치되어 있습니다. 이전 문서에서는 레드햇 리눅스 환경하에서 컴파일하는 방법을 소개하였지만, rpm 패키지가 있는 상황에서 리눅스 입문자가 소스를 받아 컴파일하는 그 자체는 무의미하다고 판단되므로, 소스 컴파일하는 방법에 대해서는 생략하기로 하겠습니다. 만일 소스 컴파일 방법에 대해서 궁금한 사용자들은 필자와 제목을 키워드로 검색하면 2003년도 문서를 찾아 볼 수 있으므로 이를 참고하거나 icecast 홈페이지에 있는 문서를 참고하면 됩니다.
2.2 Icecast 설정(/etc/icecast.xml)
icecast2 설정 파일은 텍스트 설정 파일인 .conf 파일을 이용하지 않고, xml 파일로 구성되어 있어서, 기존 1 버전에 비해서 다소 어렵게 느껴질 수 있습니다. 그러나 몇가지 기본 설정만 이해하게 되면 스트리밍 서버를 구축하는데 어려움없을 것입니다. 이 강좌에서는 서버 운영에 있어서 필요한 기본적인 설정에 대해서 살펴 보도록 하고 이 강좌에서 다루지 않는 옵션 설명에 대해서는 icecast2 하우투 문서를 참고하기로 합니다.
icecast2 설정 파일은 <icecast> 태그로 시작해서 </icecast>로 끝나고, 이 태그안에는 접속제한 설정인 <limit>태그와 인증에 관련된 태그인 <authentication> 그리고, 서버 호스트와 포트를 지정하는 <hostname>, <port>, 서버 마운트 태그 <mount>, icecast 루트 경로와 로그 경로 태그, 로그 파일 그리고, chroot 설정 태그등 주요 설정 태그들이 위치합니다.
각 태그의 설명은 icecast 예제 파일에 설명해 놓았고, 다음 박스에서는 필자가 운영중인 icecast2 서버의 실제 예제를 첨부하였으므로, 참고하면 됩니다.
<icecast>
<location>Not Currently Used</location>
<admin>Not Currently Userd</admin>
<limits>
<clients>100</client>
<sources>2</sources>
<threadpool>5</threadpool>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
* Limit 접속 제한 설정 *
icecast 서버에 접속할 수 있는 클라이언트 수(clients)와 icecast 서버에 스트림을 제공할 소스 클라이언트<sources>의 갯수를 지정해 줍니다. 여기서 <sources>는 나중에 살펴볼 stream source 프로그램인 ices2과 같은 소스를 몇 개나 받아 들일 것인가를 설
정해 주는 옵션입니다. 단지 한 개의 오디오 스트리밍을 하고자 한다면 <sources>값은 1로 설정해 주나, 2개의 ices를 서비스하고
자 한다면 2로 설정해 주면 됩니다.
<threadpool>옵션은 몇 개의 자식 프로세스가 분기되도록 설정할 것인가를 설정합니다.
<client-timeout>은 xmms와 같은 클라이언트가 끊어진 후 타임아웃시킬 시간으로 단위는 초입니다. <source-timout>은 ices2등과 같은 클라이언트가 종료된 후 타임이웃될 시간입니다.
<authentication>
<source-password>hackme</source-password>
<relay-password>hackme</source-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
* authentication 인증 설정 *
<source-password>는 ices와 같은 스트리밍 소스 클라이언트에서 사용할 패스워드로 ices의 인증에서도 동일한 암호를 사용해야 합니다.
<relay-password>는 icecast 서버(중앙 방송국)를 중계하고자 하는 하위 서버(지방 방송)에서 접근할 때 필요로 하는 인증 암호입니다.
<admin-user>와 <admin-password>는 관리 웹페이지를 접근할 때의 아이디와 비번을 설정합니다.
<directory>
<yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
</drectory>
* directory 디렉토리 설정 *
공개 icecast 디렉토리 서버의 URL를 지정해 주는 것이라고 하는데, 정확한 의미는 모르겠군요. 저는 아예 이 옵션을 제외하고있습니다.
<hostname>localhost</hostname>
<port>8000</port>
<relay>
<server>127.0.0.1</server>
<port>8001</port>
<mount>/foo.ogg</mount>
<local-mount>/bar.ogg</local-mount>
* icecast 서버 정보 설정 *
<hostname>은 icecast 서버의 호스트 이름이나 아이피 주소를 설정합니다. 일반적으로 localhost로 설정하지만, 실제 서버의주소나 호스트 이름을 넣어 줍니다. icecast는 기본적으로 8000번 포트를 사용합니다. 다른 포트값을 사용하여도 되지만,
특별한 경우가 아니라면 기본 포트를 사용합니다.
<relay>는 중계 서버를 운영할 때 필요하므로, 이 경우에는 해당한다면 메뉴얼을 참고하기로 하며, 여기서는 생략합니다.
<mount>
<mount-name>/example1.ogg</mount-name>
<username>othersource</username>
<password>hackmore</password>
<max-listener>1</max-listener>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<fallback-mount>/example2.ogg</fallback-mount>
</mount>
* mount 마운트 정보 *
<mount>는 클라이언트가 인식할 수 있는 스트리밍 서비스의 확장자를 명시하는 옵션입니다. /example1.ogg로 마운트명을지정해 주었다면 이것은 스트리밍 서버의 주소가 "http://서버주소:포트/마운트명"로 되어 http://서버:포트/example1.ogg의
주소로 됨을 의미합니다. 마운트 설정은 이 파일보다는 음원 소스를 송출하는 클라이언트 프로그램에서 이 옵션을 주로 적용
합니다.이에 대해서는 ices에서 다시 살펴보게 됩니다.
<fileserve>1</fileserve>
* fileserve 연주 파일 출력 여부 *
웹상에서 연주되는 파일이 보여지도록 하려면 이 값을 1로 설정합니다. 이것은 아래에서 살펴 보게 될 <webroot>태그에서지정된 웹 루트 경로에 있는 xml 파일이 웹상에서 보여질 때 연주 곡목이 보여지게 됩니다.
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/usr/share/icecast/logs</logdir>
<webroot>/usr/share/icecast/web</webroot>
* paths 경로 설정 *
<basedir>은 icecast가 설치되어 있는 경로를 기본 경로로 삼습니다.
<logdir>은 icecast의 access와 error 로그가 저장될 디렉토리를 지정합니다.
<webroot>은 icecast 상태를 볼 수 있는 xml 파일이 있는 디렉토리를 지정합니다.
상기 설정 태그중에 fileserve 태그의 값을 1로 설정해야 스트리밍되는 파일들이 웹 문서상에서 보여지게 됩니다.
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel>
* loggin 로그 파일 지정 *
icecast 서버의 접속 메시지와 오류 메시지를 저장할 파일을 지정합니다.
<security>
<chroot>0</chroot>
<user>icecast</user>
<group>icecast</group>
</security>
* security 보안 설정 *
chroot를 설정하면 기본 경로에 대해서 루트 경로로 사용할 수 있습니다. 그리고 icecast는 일반 계정으로 작동하므로, icecast계정으로 데몬이 작동해야 합니다.
<icecast>2.3 실제 설정 예제 파일
icecast 설정 파일이 복잡하고 이해하기 어려우므로 다음 설정 내용을 복사하여 /etc/icecast.xml 파일에 덮어 씌우기해서 사용합니다.
실제로 icecast 설정 파일에선 인증 암호외에는 특별히 설정해 줄 것이 없긴 합니다.
<icecast>
<limits>
<clients>100</clients>
<sources>5</sources>
<threadpool>5</threadpool>
<queue-size>102400</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
</limits>
<authentication>
<source-password>kkolddugi</source-password> # 인증 암호 변경
<relay-password>kkolddugi</relay-password> # 인증 암호 변경
<admin-user>admin</admin-user>
<admin-password>kkolddugi2</admin-password> # 웹 인증 암호 변경
</authentication>
<hostname>서버도메인주소</hostname> # 서버 호스트명 입력
<listen-socket>
<port>8000</port> # TCP 8000 포트 사용
</listen-socket>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast</basedir>
<logdir>/usr/share/icecast/logs</logdir>
<webroot>/usr/share/icecast/web</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
<security>
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
-->
</security>
</icecast>
상기 설정 파일에서 기억해야 할 것은 포트는 8000번이며, 인증 암호는 꼴뚜기(kkolddugi)입니다. Icecast의 기본경로는 /usr/share/icecast입니다.
2.4 icecast 데몬 띄우기
![]()
2.5 방화벽 변경
shorewall 방화벽에서 클라이언트가 icecast에 접근할 수 있도록 icecast가 사용하는 TCP 8000를 풀어 줍니다.
(# mcedit /etc/shorewall/rules.drakx)
방화벽을 수정한 후에는 반드시 shorewall 데몬을 다시 띄어 주어야 방화벽에서 8000포트가 제외됩니다.
![]()
이로써 icecast로 스트리밍 서비스 준비가 완료되었습니다.
지금까지 살펴본 icecast 설정은 별 것 없습니다. 설정 파일의 옵션들을 정확히 모르더라도 음원 소스 클라이언트의 인증하는 비밀번호 설정하는 것외에는 기본적인 것을 사용해도 무방합니다.
3. Ices
Icecast는 음원 파일을 재생할 수 없고 외부로부터 들어오는 음원을 브로드캐스트하는 역할을 하기 때문에 음원 파일을 재생하여 icecast 서버에 음원을 송출할 수 있는 클라이언트 프로그램이 필요한데, 이러한 프로그램으로는 ices, darkice, 그리고 앞 서 살펴본 mpd가 있습니다. 대표적인 icecast의 클라이언트 프로그램은 ices입니다. ices는 Ogg vorbis 음원 파일을 재생하고 이를 icecast에게 전달해 주는 훌륭한 프로그램입니다만, MP3 파일을 지원하지 않기 때문에 음원이 MP3인 경우에 다른 클라이언트를 사용해야 합니다.
ices2 설정은 icecast 설정 파일 형식과 유사하기 때문에 몇 가지 설정만 수정해 주면 어렵지 않게 설정할 수 있습니다.
3.1 /etc/ices.xml 설정 파일 보기
<?xml version="1.0"?>
<ices>
<background>0</background>
<logpath>/usr/share/icecast/logs</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>0</consolelog>
* Global configuration 전체 설정 *
<background>는 ices 데몬을 백그라운드로 실행할 것인가를 설정하는 것이지만, ices 데몬은 백그라운드 모드로 작동시켜야 하므로, 별 의미가 없는 설정으로 생각됩니다.
<consolelog>는 로그 메시지를 파일로 저장할 것인가 아니면 화면으로 출력할 것인가를 설정합니다. 0은 파일로 저장, 1은 화면으로 출력되도록 하는 것입니다.
<stream>
<metadata>
<name>Radio Free Linux</name>
<genre>Playlist</genre>
<description>Jazz Music</description>
</metadata>
* metadata 서버 메타 정보 설정 *
서버의 이름과 음악 방송 장르 그리고 간단한 서버 설명을 설정해 줍니다. 여기서 설정된 값들은 클라이언트(winamp.xmms)에서 보여집니다.
<input>
<module>playlist</module>
<param name="type">basic</param>
<param name="file">playlist.txt</param>
<param name="random">0</param>
<param name="once">0</param>
</input>
* input 스트림 소스 형태 설정 *
ices는 3가지 정도의 모듈을 지원하는데, 하나는 oss 모듈이고 다른 하나는 playlist 그리고 마지막으로는 STDIN 모듈이 있습니다. 실제로는 oss와 playlist 두 모듈이 많이 사용됩니다. 모듈에 따라서 param 태그의 설정값들은 다르므
로, 이들에 대해서는 하우투 문서를 참고해야 합니다.
oss 모듈은 커널에서 OSS 형태로 지원하는 사운드 카드로 생방송을 하고자 할 때 사용하는 모듈입니다. 방송자가직접 마이크를 이용하여 생방송을 하고자 할 때는 사운드 카드가 OSS 모듈을 이용해야만, 이 모듈로 생방송을 진행
할 수 있습니다.
via칩 사운드 카드는 OSS 모듈이 아니기 때문에 대부분의 마더보드에 내장된 사운드 카드로는 이 모듈을 사용할 수없습니다. playlist는 ogg 파일을 이용하여 스트리밍하고자 하는 형태에서 사용하는 모듈입니다. 여러분이 ogg 파일로
오디오 스트리밍을 하고자 한다면 이 모듈로 설정해야 합니다. type에는 basic과 scripts가 있지만, 스크립트를 사용하
는 경우가 아니라면 basic으로 설정합니다. file은 연주될 ogg 파일 목록을 말합니다. 이 파일을 만드는 방법은 다음
과 같은 식으로 만들면 됩니다.
find /경로명 *.ogg -print > playlist.txt
playlist.txt 파일은 반드시 ices 데몬을 실행하고자 하는 현재의 작업 위치에 이 파일이 존재합니다. 즉 /usr/share/ice
cast 디렉토리에서 ices 데몬을 띄우면 이 디렉토리내에 playlist.txt 파일이 있어야 합니다.
random은 playlist.txt 파일안에 있는 곡들을 무작위로 실행되도록 할 것인가를 설정합니다. 0은 순서대로, 1은 무작위 순서입니다.
once는 playlist.txt에 있는 파일 연주가 단 한번으로 끝날 것인가 아니면 로테이션될것인가를 선택합니다. 0은 반복,1은 1회 연주입니다.
<instance>
<hostname>HOSTNAME</hostname>
<port>8000</port>
<password>xxxxxx</password>
<mount>/test.org</mount>
<reconnectdelay>2</recoonectdelay>
<reconnectattempts>5</reconnectattempts>
<maxqueuelength>80<maxqueulength>
* instance 서버 접속 설정 *
hostname은 ices의 서버 주소를 지정합니다.
port는 ices 서버가 접속할 주소입니다. icecast 포트와 동일하게 설정합니다.
mount는 xmms,winamp에서 작동으로 실행되도록 할 마운트명칭입니다. 서버 주소가 icecast.no1linux..org이고, 마운트명이 /test.ogg이면 클라이언트 프로그램에서 자동 실행될 서버 주소는 http://icecast.no1linux.org:8000/test.ogg
입니다.
웹 브라우저에서는 http://icecast.no1linux.org:8000/test.ogg.m3u입니다. 만일 이 옵션이 생략되면 /stream.ogg의 마
운트명을 사용하게 됩니다. 참고로 마운트명앞에 슬래쉬를 사용해야 합니다.
<encode>
<nominal-bitrate>32000</nominal-bitrate>
<samplerate>22050</samplerate>
<channels>2</channels>
</encode>
* encode 인코딩 설정 *
sampletate는 인코딩하고자 하는 bitrate를 설정합니다. 일반적으로 44100으로 설정합니다.
channels는 인코딩하는데 있어서 채널 수를 설정하는데, 반복 샘플링과 다운믹싱이 동시에 이뤄지므로, 이 채널 수는2로 설정해 주어야 합니다. 만일 1로 설정해 줄 경우 downmixing만 이뤄지게 되고, 이것은 사운드가 스테레오에서
모노로 방송되게 됩니다. 스트레오 방송을 위해서는 2로 설정합니다.
</instance>
</stream>
</ices>3.2 실전 예제 파일
<?xml version="1.0"?>
<ices>
<background>1</background>
<logpath>/usr/share/icecast/logs</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>0</consolelog>
<stream>
<metadata>
<name>No1.Linux Broadcasting System</name> # 서버의 방송국명을 수정합니다.
<genre>Praise</genre> # 서비스 장르를 설정합니다.
<description>Test Stream</description> # 서비스에 대한 설명을 설정합니다.
</metadata>
<input>
<module>playlist</module>
<param name="type">basic</param>
<param name="file">/usr/share/icecast/playlist/playlist.test</param> # 파일명 수정
<param name="random">0</param>
<param name="once">0</param>
</input>
<instance>
<hostname>Server Host Name</hostname> # 서버 주소명을 수정합니다.
<port>8000</port>
<password>kkolddugi</password> # icecast 서버의 암호를 입력합니다.
<mount>/test.ogg</mount> # 마운트명을 지정합니다.
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>5</reconnectattempts>
<maxqueuelength>100</maxqueuelength>
<downmix>0</downmix>
<encode>
<quality>8</quality>
<minimum-bitrate>32000</minimum-bitrate>
<maximum-bitrate>48000</maximum-bitrate>
<samplerate>44100</samplerate>
<channels>2</channels>
</encode>
</instance>
</stream>
</ices>
상기 예제에서 꼭 변경해야 할 부분은 빨간 글씨로 주석 설명한 부분입니다. 그곳만 정확히 수정해 주면 됩니다. 그리고 중요한 것은 플레이리스트 위치와 파일명입니다. 플레이리스트가 있어야 ices가 음원 파일을 실행해 줄 수 있기 때문입니다. 플래이리스트를 만드는 방법은 잠시 후에 설명합니다.
3.2 ices 데몬 띄우기
![]()
상기 과정대로 ices 데몬을 띄웁니다.
3.3 음원 파일 준비
mp3 음원 파일을 준비합니다. ices는 ogg 파일을 지원하므로, mp3 파일을 ogg로 변환해야 합니다. mp3를 ogg로 변환하는 도구는 많습니다. SoundKonverter(시작메뉴 > 사운드 > 사운드컨버터)를 이용해도 되고, Myconverter를 이용해도 됩니다. 그러나 파일이 많을 때는 콘솔에서 스크립트를 이용하는 것이 더 편리할 것으로 생각되므로, 다음과 같이 스크립트를 만들어 사용합니다. 다음 스크립트는 스크립트를 실행하는 위치에 ogg 파일이 생성되므로, ices에서 서비스할 음원 파일의 위치에서 스크립트를 실행합니다.
#!/bin/sh
mp3file=/home/dumca/Music # MP3파일이 있는 경로를 명시합니다.
find $mp3file -name '*.mp3' -exec mp32ogg $1 {} \;
MP3 파일로 Ogg 파일을 준비하였으면 플레이리스트 파일을 생성해 주어야 하는데 다음과 같이 스크립트를 만들어 실행합니다.
#!/bin/bash
oggpath=$1
if [ ! -d /usr/share/icecast/playlist ]; then
mkdir /usr/share/icecast/playlist
fi
find $oggpath | grep -i '\.ogg' > /usr/share/icecast/playlist/playlist.$2
상기 스크립트를 생성한 후 실행하는 방법은 파일명이 icepls.sh라고 한다면 'icepls.sh 경로명 플레이리스트명'입니다. 경로명은 ogg가 있는 경로이어야 하며, 플레이리스트는 playlist의 확장자입니다.
3.4 ices 데몬 실행
ogg 파일과 플레이리스트 파일이 준비되었으면 ices 데몬을 실행하여 플레이리스트에 있는 파일을 실행하여 음원을 icecast로 송출되도록 합니다.
![]()
4. Icecast 청취 방법
icecast 서버의 주소는 http://서버주소:포트/test.ogg입니다. mplayer를 이용하여 로컬상에서 icecast 서버에 접속하여 스트리밍이 되는지를 확인합니다.
http://localhost:8000/test.ogg
![]()
스트리밍서버에 정상적으로 접속이 이뤄지면 플레이되고 있음을 확인할 수 있습니다.
5. 어드민 관리
icecast를 웹상에서 관리하는 법입니다. icecast의 어드민은 http://localhost:8000 주소로 접속하면 됩니다.
![]()
server status를 클릭하면 인증을 묻게 되는데, 웹상에서 어드민의 계정 정보는 icecast.xml 파일에서 인증 설정한 계정과 암호입니다. 계정은 admin이며, 암호는 kkolddugi입니다.
![]()
icecast 서버 상태 예제 화면입니다. 아래는 현재 연주되고 있는 음악에 대한 정보입니다.
![]()
Move Listeners를 클릭하면 현재 청취하고 있는 청취자에 대한 정보를 확인할 수 있습니다.
![]()
6. 마무리
IceCast와 Ices를 이용하여 음원을 스트리밍하는 방법에 대해서 살펴보았습니다. Icecast는 다양한 음원을 브로드캐스트해 주는 훌륭한 서버 프로그램입니다. Ices도 역시 음원 파일을 생성하여 Icecast 서버에 음원을 송출해 주는 멋진 프로그램이지 않나요? Icecast 서버는 사운드 카드가 없어도 가능하고요, 하지만 Ices는 사운드카드가 있어야 합니다. 필자의 IDC 서버는 순수한 서버이다보니 사운드 카드가 내장되어 있질 않아도 스트리밍 서비스를 하고 있습니다. 또한 ices를 통해서 찬양 스트리밍을 하고 있고요, mpd는 로컬 네트워크 상에서도 동작하길 때문에 외부에 서비스하고자 할 때 icecast 서버로 송출해서 http url를 사용하여 어느 네트워크에서도 접속할 수 있습니다. 예전에는 웹캠과 더불어 인터넷 강의에 이 시스템을 많이 활용한 적이 있습니다. Icecast는 여러분의 아이디어에 따라서 그 활용도가 달라질 수 있습니다. 음원 스트리밍외에도 어떻게 활용할 수 있는지는 한 번 고민해보고 적용해 보시길 바랍니다.








1. 시냅틱으로 icecast와 ices 패키지를 설치합니다.
2. /etc/sysconfig/icesconf 파일에서 MP3, OGG, 플레이리스트의 확장자를 설정합니다.
3. mp3toogg.sh 스크립트를 실행합니다. (이 스크립트는 mp3 파일을 ogg 파일로 변환해 줍니다.)
4. icespls.sh 스크립트를 실행합니다.(이 스크립트는 ogg 플레이리스트 파일을 생성하고, /etc/ices.xml 설정에서 플레이리스트 파일을 수정하고나서 ices 데몬을 자동으로 재실행해 줍니다.)
5. mplayer http://localhost:8000/test.ogg로 테스트합니다.
* 참고사항: icecast 인증 암호는 강좌와는 달리 hackme로 되어 있습니다.