icecast와 ices를 이용한 실시간 인터넷 방송 서비스 방법입니다. 넘버원 리눅스는 인터넷 라디오 방송을 위한 icecast와 ices 패키지를 제공하고 있으며, 이들 설정 파일에는 사용자가 수정해야 할 부분들이 주석되어 있어서, 해당 부분만 수정하면 mp3이나 ogg와 같은 음원을 가지고 바로 인터넷 스트리밍 서비스를 할 수 있습니다. 그러면 마이크를 이용하여 실시간 방송 방법에 대해서는 해당 파일에서는 제공되지 않고 있으므로, 여기서 마이크를 이용하여 서비스하는 방법을 제공합니다.
마이크 설정이나 icecast에 대한 자세한 게시물은 다음 게시물을 먼저 참고하기 바랍니다.
1. /etc/icecast.xml 설정
<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>hackme</source-password>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackme1</admin-password>
</authentication>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
</directory>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://yp.icecast.net/cgi-bin/yp.cgi</yp-url>
</directory>
-->
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</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>1</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>
<security>
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
-->
</security>
</icecast>
2. /etc/ices.xml
<?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>Your Broadcasting System Name</name> # 서버의 방송국명을 수정합니다.
<genre>Genre</genre> # 서비스 장르를 설정합니다.
<description>Stream Service</description> # 서비스에 대한 설명을 설정합니다.
</metadata>
<input>
<module>alsa</module>
<param name="device">hw:1,0</param>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="metadata">1</param>
</input>
<instance>
<hostname>localhost</hostname> # 서버 주소명을 수정합니다.
<port>8000</port>
<password>hackme</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>
3. 마이크(입력 장치) 장치명 확인
[dumca@dumca ices]$ arecord -l
**** CAPTURE 하드웨어 장치 목록 ****↵
1 카드: PCH [HDA Intel PCH], 0 장치: ALC3239 Analog [ALC3239 Analog]
하위장치: 0/1
하위장치 #0: subdevice #0
[dumca@dumca ices]$
상기 예제의 경우 입력장치(마이크)는 hw:1,0입니다.
4. 스트리밍 주소
mplayer http://localhost:8000/test.ogg
5. Audio Output 소스를 Line Input로 입력해서 송출하려면
로컬 시스템내에 있는 오디오 소스(현재 유튜브나 오디오 프로그램의 사운드)를 라인 입력 장치로 보내 icecast로 송출하려면 오디오 아웃풋과 라인 인풋을 오디오 양쪽 숫놈 케이블로 연결만 해 주면 됩니다. 이를 위해서는 케이블이 양쪽 다 숫놈으로 되어 있는 걸 사용해야 합니다. 나머지는 마이크 사용하는 것과 동일합니다. 이렇게 하면 유튜브에 있는 사운드를 icecast로 중계해서 클라이언트들도 청취할 수 있게 됩니다.