Nahmd,
내가 파리에 WMA를 스트림 "로에는 OGG 스트림 수 있도록 솔루션이 필요했습니다.
실행 프로그램에 대한 경로에있는 스크립트는 웹 서버에있는 PHP 스크립트를 잡아하고 Icecast2에 구성을 추가 탑재 장소. 다른 경로는 아마도 적응해야합니다.
불행히도, 현재는 단지 하나 Internerradio 그 스트림에 들어. 사실,하지만, 많은 사람을 만들 수 있습니다 불행히도 끝난, 이는 더 이상 스트림, 변환 받고 처음으로 
뭐가 필요 다음과 같습니다 :
- MPlayer
- icecast2
- oggenc
- oggfwd
- PHP는
스크립트 변환
# / bin / sh의
$PATH :/usr/ local /bin 수출의 PATH = $ PATH 환경하십시오 : / usr / 지방 / 빈
스트림 = "MMS는 : / / your.radio.fm / stream.wma"
설정 전자
클라이언트는 = 0
"$2" != "" ] ; then 만약 [ "$ 2"!는 = ""다음]
클라이언트는 = $ 2
괜
"$3" != "" ] 만약 [ "$ 3"! = ""]
그때
스트림 = $ 3
괜
echo $STREAM | md5sum | cut -d ' ' -f1 ) 의 MD5는 = $ (에코 $ 스트림 | md5sum | 잘라 - d는 '' - F1을)
TEMP를 = / tmp를 / chumbybridge / 달러의 MD5
] || mkdir -p $TEMP [- D는 $ TEMP를] | |에서 mkdir - p를 $ TEMP를
/mplayer.fifo FIFO_MPLAYER = $ TEMP를 / mplayer.fifo
# FIFO_OGGENC = $ TEMP를 / oggenc.fifo
/mplayer.log LOG_MPLAYER = $ TEMP를 / mplayer.log
/oggenc.log LOG_OGGENC = $ TEMP를 / oggenc.log
/oggfwd.log LOG_OGGFWD = $ TEMP를 / oggfwd.log
/mplayer.pid PID_MPLAYER = $ TEMP를 / mplayer.pid
/oggfwd.pid PID_OGGFWD = $ TEMP를 / oggfwd.pid
"$1" = "start" ] 1면 [ "$"= "] 시작"
그때
>> $LOG_MPLAYER 메아리 "$ 연결된 클라이언트가"LOG_MPLAYER> 달러>에게
] && echo "Run $0 stop first!" && exit [- E는 $ FIFO_MPLAYER]는 & & 최초의 메아리 "0 정지 실행 달러!"& & 출구
|| exit 1 mkfifo $ FIFO_MPLAYER | | 출구 1
"$FIFO_MPLAYER" >> $LOG_MPLAYER 2 >& 1 < /dev/null & MPlayer - nocache $ 스트림 개입 - AO PCM은 : 파일 = "$ FIFO_MPLAYER"&> null이> 달러 LOG_MPLAYER 2> & 1 <에는 / dev /
는 echo $! > $ PID_MPLAYER
수면 0.3
-o – 2 >> $LOG_OGGENC | oggfwd localhost 8000 hackme /radio1.ogg >> $LOG_OGGFWD 2 >& 1 & oggenc - Q를 - Q를 $ 1 FIFO_MPLAYER - 아 - 2>> $ LOG_OGGENC | 및> & 1 oggfwd 2 localhost를 8000 hackme을 / radio1.ogg>> 달러 LOG_OGGFWD
는 echo $! > $ PID_OGGFWD
수면 0.2
"$1" = "stop" ] elif [ "$ 1"= "] 그만"
그때
메아리 ">>> 중지 chumstream 선수 <<<"를
cat $PID_MPLAYER ) 2 > /dev/null && \ 살인 $ (고양이 $ PID_MPLAYER) & \ null이 & 2>는 / dev /
cat $PID_OGGFWD ) 2 > /dev/null && \ \ 죽일 $ (고양이 $ PID_OGGFWD & & / null로) 2> / dev에
|| \ RM은 - RF $ TEMP를 | | \
에코 ", 프로세스를 모두 막을 수 없습니다 제발 봐 $으로 TEMP 및 수동으로 고쳐"
다른 사람
메아리 "사용 :"
메아리 "$ 0 시작 ["은 client_id] [홈페이지]는
메아리 "$ 0 그만"
괜
icecast 구성
<mount>
마운트 - 이름> <mount-name> / radio.ogg </
<max-listeners> 10 </ 최대 - 청취자의>
<burst-size> 65 536 </ 버스트 크기>
<hidden> 0 </ 숨김>
> <authentication 유형 = "url">
value = "http://localhost/radio.php" /> <option 이름 = 값 = "mount_add"의 /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option 이름 = 값 = "mount_remove"의 /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option 이름 = 값 = "listener_add"의 /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option 이름 = 값 = "listener_remove"의 /> "http://localhost/radio.php"
</ 인증>
<Mount />
PHP는 시작 / 정지 부
PHP는
$_POST [ "action" ] == 'listener_add' ) { '면 ($ _POST 자동 [ "조치"] == listener_add') (
( "/usr/local/bin/chumstream.sh start " . $_POST [ "client" ] , $result ) ; $ Tmp =
간부인 ( "은 / usr / chumstream.sh 지방 / 빈 / 시작합니다. $ _POST 자동 ["클라이언트 "], $ 결과); ( $_POST [ "action" ] == 'listener_remove' ) { ) Else (해당되는 경우 ($ _POST 자동 [ "조치"] == 'listener_remove')
( "/usr/local/bin/chumstream.sh stop " . $_POST [ "client" ] , $result ) ; $ Tmp =
간부인 ( "은 / usr /"지방 / 빈 / chumstream.sh 중지합니다. $ _POST 자동 [ "클라이언트"], $ 결과); )
'icecast-auth-user: 1′ ) ; 헤더 ( 'icecast - 정식 사용자 : 1'); 'icecast-auth-message: OK' ) ; 헤더 ( 'icecast - 정식 메시지 : 확인'); ?>