리눅스 시스템에서 개인 방송국 만들기(2001 년 1월 29일 업데이트되었습니다. pls 을 통해 icecast와 자동연결하기 추가
기타오류 및 문의 점은 iwav@iwav.co.kr)
목차들어가며 icecast
(mp3을 스트림형태로 송출하는 서버)shout
(mp3노래 목록에 있는 노래을 icecast 서버에 전달하는 역할을 한다.) liveice
(마이크에서 들어오는 소리를 실시간으로 icecast 서버에 전달하는 역활을 한다.) realserver realproducer 들어가며 통신 회선의 고속화가 되면서 예전부터 예견되어 온 주문형 비디오
(VOD),AOD(Audio on demand) 등이 인터넷을 통해 구현이 되고 있으며 기존 방송사도 인터넷을 통한 방송을 시작하는 등 많은 인터넷 방송국들이 만들어지고 있다.
인터넷방송을 들어가는 프로그램은 사용자들이 방송을 볼 수 있는 클라이언트 프로그램(
리얼플레이어, 윈도우미디어플레이어, 윈에이엠피) 과 일정량의 데이터를 전송 할 수 있는 스트리밍 서버(
리얼서버,윈도우미디어서버,icecast) 가 필요하다.(요즘은 클라이언트 프로그램의 발달로 스트리빙 서버 없이 다운로드 형태로도 가능 하지만 사용자가 많을 경우 일정량의 전송량을 조절하지 못하는 단점이 있어 사용자가 수 십 명 정도는 가능 할 지는 몰라도 그 이상이라면 일정량의 데이터 전송이 불가능하다)
지금 까지 대부분의 스트리밍 서버는 리얼 서버가 주도하고 있었는데
마이크로소프트가 멀티미디어스트리밍의 기술에 관심을 같고 내 놓은 솔루션이 WMT (Microsoft Windows Media Technologies) 솔루션이다. NetShow 로 시작하여 지금은 Windows Media Service라는 스
트리밍 서버와 Windows Media Player,Windows Media Tools 등의 클라이언트 프로그램이며 윈도우에 2000, 익스플로어 5.0 에 기본으로 포함시켜 사용자들을 점점 넓혀 가고있는 상태이다.
자바쪽에는
JMF(java media framework )라는 라이브러리를 제공하면서 멀티미디어를 지원하고 있는데 주요기능으로는 오디와 비디오 캡처 기능, 오디오와 비디오를 스트림형태로 관리 , 실시간 전송의 핵심이
RTP(Real -time Transport Protocol )API, 하드웨어에 독립적으로 캡쳐기능을 제공하며 애플릿을 통해 클라이언트 프로그램을 제공하기 때문에 별도의 프로그램 설치 없이 방송을 볼 수 있다는 장점이 있다.
리눅스 시스템에서 리눅스 시스템에서는 인터넷 방송은
리얼서버와 자바JMF가 사용이 가능하면 오디오 방송만 가능한
icecast 만 가지고도 인터넷 방송이 가능하다.
icecast icecast는 무료 솔루션으로 오디와 방송만 가능하며 서버와 모든 유틸리티 소스가 모두 공개되어 있으며 거의 모든 운영체제에서 사용이 가능하며 icecast 공식 사이트 http://www.icecast.org에서 다운 받을 수 있으며 바이너리도 형태로도 제공돼도 소스화일 형태로 다운이 가능하다. 소스를 다운 받은 후(icecast-1.5.9.tar.gz) 압축을 풀고 컴파일을 해보자 gunzip icecast-1.5.0.tar.gz tar xvf icecast-1.5.0.tar 압축을 풀면 icecast-1.5 라는 디렉토리가 생긴다. (설치 위치가 기본적으로 /usr/local 위치에 설치되므로 root 권한이어야 한다.) cd icecast-1.5 ./configure make install 하면 icecast 의 설치는 끝났고 방송 중계 프로그램인 shout, 실시간 방송프로그램인 liveice도 컴파일 하여 설치해야 한다. gunzip shout-0.8.0.tar.gz tar xvf shout-0.8.0.tar cd shout-0.8.0 ./configure make icecast 설치 후 별로 문제되는 점은 없으며 /usr/local/icecast/conf 안에 보면 icecast.conf 파일이 있는데 에디터로 열어보면
icecast의 포트는 8000 번째 포트를 사용하고 있으며 관리 할 수 있는 암호는 hackme 라는 것을 알 수 있으며 기타 서버를 설정해 주면 된다. 설정 후 icecast 서버를 시작하면 된다. ./icecast 하면 > ================ icecast 서버 시작 ==============
모양의 프롬프트가 나타나면 서버가 시작한 것이며 시작 시 자세히 보면 Listening On Port 80000 이라는 메시지가 나온다(각 통신종류마다 포트를 사용하는데 ftp: 21 텔넷:23 www:80 등 1024 까지 예약이 되어 있으며 그 외 포트는 자유롭게 사용이 가능하다.) 서버 종료는 >
shoutdown 하면 된다. 이제 서버 프로그램이 제대로 설치되었다면 소리를 입력해주는 shout 와 liveice 을 사용해야 한다. shout shout는 미리 서버에 mp3을 업로드 한 다음 shout.playlist 파일에 이노래 목록을 송출하는 역활을 한다. 텔넷창을 하나 더 만든 다음 /usr/local/icecast/etc 밑에 shout.playlist 라는 파일을 생성 (vi shout.playlist)하여 안에 mp3 파일의 위치를 적어 주면 된다. /home/byun/1.mp3 /home/byun/2.mp3 /home/byun/3.mp3 다음에 /usr/local/icecast/ 위치에서 ./shout -P(대문자) hackme 하면 방송이 송출이 되며 점으로 스트림의 송출 상태를 보여 준다. 그러면 클라이언트 xmap을 작동 시켜 local : http:// 아이피 주소 :8000으로 방송의 내용을 들을 수 있다 이런 방식은 사용자들이 일일이 winamp 을 실행한 다음 주소를 입력해야 하는 불편이 있기 때문에 pls 파일을 만들어 홈페이지 연결하면 쉽게 사용자들을 icecast 서버로 연결을 할 수 있다. 우선 홈페이지 파일을 만들다. <html> <body> <a href='icecast.pls'> 노래 들기 </a> </body> </html> 다음 icecast.pls 파일을 아래 형식으로 만들면 된다. 그래면 사용자들은 노래 듣기 마우스 클릭으로소리을 들을 수 있다. (File1= 다음에 자신의 icecast서버의 주소를 입력하면 된다.) [playlist]
numberofentries=1
File1=http://192.168.0.2:8000 ======== XMMS =================
icecast 서버에서 >
list 하면 방송을 듣는 접속자들을 알 수 있다. liveice shout는 만들어 놓은 파일을 전송한다면 liveice는 실시간으로 전송하는 방식이다.
liveice을 이용해서 실시간으로 방송을 하려면 필요한 것이 이것이 있는데 mp3인코더인데
lame라는 mp3인코더를 이용해서 설치해야 한다.
http://star.arm.ac.uk/~spm/software/
liveice.tar.gz
gunzip cvf liveice.tar.gz
tar xvf liveice.tar
cd liveice
./configure
make
http://www.sulaco.org/mp3/download/beta/에서 다운 받을 수 있다.
lame3_70_tar.gz
gunzip lame3_70_.tar.gz
tar xvf lame3_70_tar.gz
make
설치 후 livece , liveice.cfg
파일을 /usr/local/icecast/bin
으로 복사를 하고
lame 파일도 /usr/local/icecast/bin
으로 복사를 한다.
다음 liveice.cfg를 에디터터로 열어 인코더 종류 등을
설정 한 다음 liveice을 실행하면 된다.
====liveice.cfg=========
# basic options
SERVER localhost
PORT 8000 // 서버 포트 설정
PASSWORD hackme //비밀번호
USE_LAME3 ./lame // 인코더 종류 설정
./liveice
이제 마이크에서 입력받은 소리를 입력해 보고 xmms 로 접속해서 보면 실시간으로 방송을 들을 수 있을 것이다. (본인 컴퓨터에서는 확인이 안되며 다른 컴퓨터에서 확인해야 한다.)
리얼 서버 리얼서버 리얼 서버는 Win95/NT, Linux2.0.3.0, FreeBSD 3.0, Sun Solaris 2.5.1, 2.6, Dec Alpha Unix 4.0, SGI Irix 6.2 플랫폼에 설치할 수 있으며 아래 주소에서 리얼서버 Basic 이 무료로 다운 가능하면 Basic은 25스트림으로 제한이 있으며 Puls 등은 비용을 주고 사야 한다. http://www.realnetworks.com/products/basicserver/info.html?src=home,prdctmn_051500 다운 받은 파일 리얼서버 7.0 Basic g2_7_0update1-linux-c6.bin 이 파일을 실행하면 자동으로 압축이 풀리면서 설치를 진행한다. ./g2_7_0update1-linux-c6.bin 설치 시 설치 디렉토리, 관리 할 수 있는 아이디와 비밀번호를 지정하는 것 이외에는 특별히 주의 할 점은 없다. Admin Username: byun Admin Password: byun Monitor Password: byun Encoder Username: byun Encoder Password: byun PNA Port: 7070 RTSP Port: 554 HTTP Port: 8080 Admin Port: 12597 Enter [F]inish to begin copying files, or [P]revious to go back to the previous prompts: 마지막에 아래와 같은 메시지와 함께 종료 되는데 Sending RealSystem Administrator URL to browser... If you do not have a browser installed on this machine, or your browser failed to display the RealSystem Administrator, simply type the following URL into the location field of a browser that can connect to this machine. http://iwav.co.kr:12597/admin/index.html installation files... 리얼서버는 웹브라우져에서 리얼 서버를 관리 할 수 있는 도구로 편리한 관리 도구를 제공하는 데 관리도구는 인터넷 익스플로어에 http://호스트:12597/admin/index.html 로 접속하며 애플릿으로 리얼서버의 사용량을 파악할 수 있는 모니터를 제공하며 샘플 파일과 매뉴얼을 제공한다. 리얼서버는 설치 후 바로 실행되므로 데이터화일을 리얼 서버가 설치된 디렉토리 안에 보면 Content 디렉토리가 있는데 이 디렉토리 안에 파일을 넣은 다음 리얼 플레이어의 Location 입력을 하면 rtsp://호스트명/파일명(예:rtsp:211.38.147.155/1.rm)이 된다 . 데이터 파일은 기본적으로 Content 디렉토리인데 관리 모드에서 Content access에서 다른 디렉토리를 추가 할 수 있으며 설치 후 바로 리얼 서버가 실행이 되는데 수동으로 실행 할 적에는 아래 명령어를 이용하면 된다. ./rmserver ../rmserver.cfg ===== reserver.cfg ========== Var LogPath="/home/real/Logs/rmaccess.log"/> <
Var ErrorLogPath="/home/real/Logs/rmerror.log"/> <
Var PidPath="/home/real/Logs/rmserver.pid"/> <
Var PluginDirectory="/home/real/Plugins"/> <
Var SupportPluginDirectory="/home/real/Lib"/> <
Var LicenseDirectory="/home/real/License"/> <
!-- P O R T S --> <
!--UNIX customers must have root privileges to execute the server --> <
!--with the RTSP port set to 554. --> <
!--The following are the default ports that RealPlayer and --> <
!--RealPlayer Plus clients will connect to for an URL that has --> <
!--no port specified: --> <
!-- RTSP: 554 --> <
!-- PNM: 7070 --> <
!-- HTTP: 80 (...then 8080 if 80 is unavailable) --> <
Var RTSPPort="554"/> <
Var PNAPort="7070"/> <
Var HTTPPort="8080"/> <
Var MonitorPort="9090"/> <
Var AdminPort="19204"/> 이제 리얼 서버가 준비되었으면 멀티미디어 데이터를 Real Media 형식으로 바꾸는 프로그램이 필요한데 이것이 RealProducer 입니다. Realproducers 는 avi/au/wav/mov 파일 포맷을 rm으로 변환이 가능하며 실시간으로 오디오나 비디오 신호를 캡처하여 서버로 보내 실시간 방송을 할 수 있으며 영상화면이 가능하다는 점이 icecst 와 다른 점이다. RealProducer Basic 버전은 무료이며 무료인만큼 캡쳐크기의 제한(160*120) 다양한 포맷을 지원하지 않는 단점이 있으며 유료인 Plus($149.95) 나 Pro($399)버전은 그런 제한이 없다. 아래 주소에서 다운 가능하다. http://www.realnetworks.com/products/producer/info.html?src=home,prdctmn_051500 위 그림을 보면 Record from file , Record From Media Device, Live Broadcast . 3부분으로 되어 있는 Record from file은 기존의 파일 mov,avi.wav,au 등의 파일을 rm 파일로 변환을 하는데 서버의 회선 속도, 사용자들의 접속속도에 따라 파일 크기를 28k 모뎀부터 512케이블모뎀 속도에 맞게 파일을 RM 파일로 변환이 가능하다. Record From Media Device 직접 입력 장치로부터 캡쳐하여 rm 파일로 저장을 한다. Live Broadcast 입력장치에 서 실시간으로 리얼 서버로 전송한다.