Icecast 사용하기 최 정우 1. 본 문서는 본 문서는 일반적인 리눅스 상에서 가장 간단한 방법으로 라디오 서비스(스트리밍 서비스)를 시도하고자 하는 사람에게 간단한 지침을 주기 위한 문서이다. 본 문서는 필자의 경험을 토대로 실제화 된 것이며 이외의 궁금증은 마지막 단락에 제공되는 제작자의 메일 박스를 이용하기 바란다. 본 문서는 이미 잘 알고 있는 GPL을 무척 좋아 한다. 그러기에 그걸 따르는 것이 좋을 것이라 생각된다. 2. 시작.. 이제 인터넷은 고정적인 상황에서 벗어나 상당히 동적인 양상을 보이고 있다. 이것은 필연적일 것이고 리눅스나 기타 운영체제의 발빠른 대응들이 눈에 띈다. 이제 리눅스도 기타 여러가지 멀티 미디어에 대한 대응이 필요하며 그의 움직임을 몇줄되지 않는 글로 나마 소개하는 것이 부족할 것이라 생각되지만 리눅스도 다양한 형태로 이러한 것에 발맞춤을 해가고 있다. 이 문서를 통해서 시작을 해 볼까 한다. 미래에 바뀌어질 모습의 작은 시작을 말이다. 2.2 인터넷 라디오를 잠깐 알아 보자. 여러가지 이론은 필자도 익숙하지 못하다. 난해 하게 생각하지 말고 기본적인 블럭을 생각해 보자. 인터넷을 통해서 일련의 계속적인 데이터를 제공하고 그 제공된 데이 터를 실시간으로 재생(디코딩)할 수 있다면 그것으로 멀티 데이터의 수렴이 충분하다고 생각된다. 물론 이를 구현하기 위해서는 네트웍의 여러가지 상황과 기타 사항을 모두 숙지 해야 하지만 우리는 이미 만들어지 프로그램을 사용한다면 이러한 고민을 어느정도 줄일 수 있다. (그렇다고 아예 고민하지 않으면 정말 고민하게 된다.) 자, 만약 윈엠프가 있다면 음악을 들어볼 기회가 있을 것이다. " http://yak011.dyndns.org:8000 " 여기를 "open location" 이라는 메뉴를 클릭해서 열어 보자. 잠시동안 초기화 작업을 통해서 음악이 흘러 나온다면 정상이다. 혹시 아니라면 라인및 필자의 서버가 쉬는 중일 수 있으니 양해 바란다. 이렇게 간단한 클라이언트 툴로 일련의 음성 및 동영상을 전달 받을 수 있으면 되겠다. 여기엔 상당히 많은 표준들이 존재한다. 이러한 표준은 이러한 짧은 글로 정리하기엔 너무 복잡하다. 이론적인 상황을 벗어나 사용법 위주로 생각하자. 일단, 음악을 들었다면 축하한다. 여러분의 학교 및 모임에서도 충분히 전용 라디오 방송국을 개국할 수 있다. 2.3 사전 준비 시험방송을 할 수 있는 mp3 파일을 한개 이상 준비하자. 그리고 프로그램이 준비되면 되겠다. 프로그램을 다운로드 하자. http://www.icecast.org 위의 주소로 접속하면 기타 메뉴중 최신 프로그램을 다운로드 할 수 있도록 준비 되어 있다. 프로그램은 컴파일이 귀찮은 사람을 위해서 미리 컴파일 한 버전과 소스를 제공하는 것으로 제공된다.. 필자는 소스를 다운 받았다. 적당한 디렉토리에 소스를 풀어 헤친다. http://www.icecast.org/snapshots/icecast-19990730.zip -- Win32 users http://www.icecast.org/releases/icecast-1.3.1-b1.tar.gz -- Unix users 위의 경로에서 다운을 받으면 되겠다. 다운 받은 파일을 적당한 디렉토리에 풀자. /work/iceast-1.3.1 위의 경로가 소스를 풀어 놓은 경로 되겠다. 물론, 경로는 나름대로 변할 수 있다. cd /work/icecast-1.3.1 ./configure ./make 이렇게 하면 실제 디렉토리에 icecast 라는 데몬이 생성된다. 그 후 실제 mp3 스트리밍 플레이어인 shout를 컴파일 하면 되는데 같은 디렉토리에 shout라는 서브 디렉토리로 존재 한다. cd shout ./make 컴파일러가 신나게 컴파일한 후 결과를 내어 놓았다. shout 라는 실행 가능한 파일이 눈에 띄면 성공한 것이다. 시험해 보자. icecast는 다양한 설정을 제공한다. 클라이언트 접속 포트 및 접속시 디렉토리등의 다양한 설정을 제공하지만 일단, 준비가 제대로되었는지 확인 해 보자. 2.4 서버쪽의 기본 설정 먼저 icecast 데몬을 실행한다. ./icecast Icecast Version 1.3.1 Starting... Icecast comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of Icecast under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING. [21/Feb/2000:22:13:57] Icecast Version 1.3.1 Starting.. [21/Feb/2000:22:13:57] Using stdin as icecast operator console [21/Feb/2000:22:13:57] Tailing file to icecast operator console [21/Feb/2000:22:13:57] Server started... -> [21/Feb/2000:22:14:02] Listening on port 8000... [21/Feb/2000:22:14:02] Using [yak011.dyndns.org] as servername... [21/Feb/2000:22:14:02] Max values: 1000 clients, 1000 clients per source, 10 sources, 5 admins [21/Feb/2000:22:14:02] [Bandwidth: 0.000000MB/s] [Sources: 0] [Clients: 0] [Admins: 1] [Uptime: 5 seconds] -> 이러한 메시지를 화면에서 볼 수 있다면 성공한것이다. 그리고 현재 상태에대한 여러 설정값을 변경할 수 있게 명령행 모드를 제공하고 있다. 이것은 추후에 알아 볼 것이다. ->는 명령행 입력임을 나타낸다. 단순하게 "list" 를 입력하자. -> list [21/Feb/2000:22:16:29] Admin [icecast console] said: list -> Listing connections: 0 [icecast console] connected for 2 minutes and 32 seconds. Type: [admin] -> 현재 서버가 실행한 런타임과 클라이언트 접속을 모두 표시하고 있다. 나중에 설정을 통해서 우리는 백그라운드 작업을 실행할 것이다. 잊고 지내기 위해서 말이다. "Alt + F2" 로 다른 창을 띄우거나 X 환경이라면 한텀을 하나 더 띄우자. 이전에 컴파일 했던 shout 라는 디렉토리로 이전해 보면 실행가는한 화일인 shout가 눈에 띌 것이다. 같이 제공되는 shout는 이전에 도 설명했듯이 mp3 스트리밍 플레이어다. 단지, 아날로그 변환이 아닌 icecast 데몬에 접속하여 데이터를 제공한다. 우리는 이 녀석에게 mp3 파일을 연주하게 할 수 있다. 먼저 shout가 play할 리스트 파일을 작성한다. 리스트 파일은 mp3파일의 경로를 적어 놓은 파일이다. 다만 주의 할 것이 있다. 리스트에 적어 놓은 파일이 같은 bitrate 를 가져야 한다는 것이다. 음악파일을 encording 해 본 사람은 다 알고 있을 것이라 생각된다. 필자는 모두 128K 로 encording 된 파일로 테스트 하고 있다. 필자의 list파일의 내용을 보면 다음과 같다. /work/mp3/credos3/015B/1.mp3 /work/mp3/credos3/015B/2.mp3 /work/mp3/credos3/015B/3.mp3 /work/mp3/credos3/JinYoung_Park/1.mp3 /work/mp3/credos3/JinYoung_Park/2.mp3 /work/mp3/credos3/JinYoung_Park/3.mp3 /work/mp3/credos3/JinYoung_Park/4.mp3 /work/mp3/credos3/GunMo_Kim/5/1.mp3 /work/mp3/credos3/GunMo_Kim/5/2.mp3 /work/mp3/credos3/GunMo_Kim/5/3.mp3 /work/mp3/credos3/GunMo_Kim/5/4.mp3 /work/mp3/credos3/GunMo_Kim/5/5.mp3 /work/mp3/credos3/GunMo_Kim/5/6.mp3 /work/mp3/credos3/GunMo_Kim/5/7.mp3 /work/mp3/credos3/GunMo_Kim/5/8.mp3 위의 내용은 일부의 내용을 발췌한 것이다. 모두 인터넷 사이트 여기저기서 다운로드한 것으로 체웠다. ./shout localhost -P letmein -a -x -p /work/playlist -l -g punk -n "A sample name" -u "http://icecast.org" /work/playlist 라는 항목이 윗글에서 작성한 list 파일을 지칭한다. 실행이 되었는가? 되었다면 아래와 같은 메시지를 볼 수 있어야 한다. [/work/mp3/credos3/015B/1.mp3] [4:07] Size: 3958580 Bitrate: 128000 (50751 bytes/dot) [... ] 플레이되는 진척도에 따라 도트(.)는 증가한다. 플레이를 마침과 동시에 리스트에 제공된 다음 파일을 플레이 하게된다. 이제 클라이언트로 음악을 들으면 되겠다. 다시 icecast 데몬을 실행 시켰던 곳으로 다시 와 보면 새로운 소스가 연결된 것을 확인 할 수 있다. icecast 는 2분 마다 관련 메시지를 화면에 보여주는 것이 기본으로 되어 있다. 기억하는가? "list" 라는 명령을 치면 연결된 클라이언트의 종류와 런타임을 보여준다고 했던 글을 말이다. 2.5 클라이언트로 음악듣기 클라이언트는 인터넷 스트리밍을 지원하는 클라이언트면 모두 들을 수 있다. 필자는 리눅스를 서버로 win98를 클라이언트로 작업하고 있다. 이런 이유로 winamp 나 realaudio 와 같은 스트리밍을 지원하는 플레이어를 사용해서 쉽게 음악을 들을 수 있었다. icecast 에서는 다음과 같은 클라이언트를 지원한다고 밝히고 있다. [ Unix clients ] XMMS mpg123 FreeAMP Xaudio [ Windows clients ] Sonique K-J?ol WinAMP [ Mac clients ] MacAMP SoundJam 위의 클라이언트에서 file -> open location 과 같은 역할을 하는 메뉴를 발견해였다면 그것으로 8000번 포트에 접속하자. http://192.168.0.2:8000 으로 하면 로컬에서 음악을 들을 수 있다. 음악을 들을 수 있다면 축하한다. 아까의 icecast 로 돌아가자. 서버화면을 잘 살펴 보면 클라이언트 접속시 클라이언트 정보가 추가 되어 표기되는 것을 확인할 수 있다.