Nahmd,
Eu precisava de uma solução para um fluxo de WMA "on the fly para torná-lo um fluxo de OGG.
O script de um caminho para programas executáveis lugar para pegar o script PHP no servidor web e de montagem na Icecast2 Add Configuration. Os diferentes caminhos devem ser adaptados Talvez.
Infelizmente, actualmente, apenas escutar um Internerradio esse fluxo. Na verdade, ele pode criar quantos, mas infelizmente acabou o primeiro, que já não recebe o fluxo, convertendo 
O que é necessário é o seguinte:
- mplayer
- icecast2
- oggenc
- oggfwd
- php
O script para converter
# / Bin / sh
$PATH :/usr/ local /bin Export PATH = $ PATH: / usr / local / bin
STREAM = "mms: / your.radio.fm / stream.wma"
set-e
CLIENT = 0
"$2" != "" ] ; then if [$ 2 "!" = ""] then
CLIENT = $ 2
fi
"$3" != "" ] if [$ 3 "!" = ""]
então
STREAM = $ 3
fi
echo $STREAM | md5sum | cut -d ' ' -f1 ) MD5 = $ (echo $ STREAM | md5sum | cut-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" ] if ["$ 1" = "start"]
então
>> $LOG_MPLAYER echo "$ Connected Client">> $ LOG_MPLAYER
] && echo "Run $0 stop first!" && exit [E $ FIFO_MPLAYER] & & echo "Run $ 0 stop em primeiro lugar!" & & Exit
|| exit 1 mkfifo $ FIFO_MPLAYER | saída | 1
"$FIFO_MPLAYER" >> $LOG_MPLAYER 2 >& 1 < /dev/null & Nocache STREAM-mplayer-quiet-ao pcm $: file = "$ FIFO_MPLAYER">> $ LOG_MPLAYER 2> & 1 </ dev / null &
echo $! > $ PID_MPLAYER
sono 0,3
-o – 2 >> $LOG_OGGENC | oggfwd localhost 8000 hackme /radio1.ogg >> $LOG_OGGFWD 2 >& 1 & oggenc-Q-q $ 1 FIFO_MPLAYER o - 2>> $ LOG_OGGENC | oggfwd localhost 8000 hackme / radio1.ogg>> $ LOG_OGGFWD 2> & 1 &
echo $! > $ PID_OGGFWD
sono 0,2
"$1" = "stop" ] elif ["$ 1" = "stop"]
então
echo ">>> Parando jogador chumstream <<<"
cat $PID_MPLAYER ) 2 > /dev/null && \ kill $ (cat $ PID_MPLAYER) 2> / dev / null & & \
cat $PID_OGGFWD ) 2 > /dev/null && \ kill $ (cat $ PID_OGGFWD) 2> / dev / null & & \
|| \ rm-rf $ TEMP | | \
echo "Não pode parar todos os processos, por favor, olhe em US $ TEMP e corrigi-lo manualmente"
outro
echo "Uso:"
echo "0 [start $ client_id] [URL]"
echo $ 0 stop "
fi
A configuração do icecast
<mount>
<mount-name> </ radio.ogg mount-name> /
<max-listeners> 10 </ ouvintes-> max
<burst-size> 65 536 </ tamanho>-burst
<hidden> 0 </> escondido
> <authentication tipo = "url">
value = "http://localhost/radio.php" /> <option nome = valor = /> "mount_add" http://localhost/radio.php "
value = "http://localhost/radio.php" /> <option nome = valor = /> "mount_remove" http://localhost/radio.php "
value = "http://localhost/radio.php" /> <option nome = valor = /> "listener_add" http://localhost/radio.php "
value = "http://localhost/radio.php" /> <option nome = valor = /> "listener_remove" http://localhost/radio.php "
</> Autenticação
<Mount />
O Php Start / Stop Parte
Php
$_POST [ "action" ] == 'listener_add' ) { if ($ _POST ["action"] == 'listener_add') (
( "/usr/local/bin/chumstream.sh start " . $_POST [ "client" ] , $result ) ; $ Tmp =
exec ("/ usr / local / bin / chumstream.sh começar. $ _POST [" cliente "], $ resultado); ( $_POST [ "action" ] == 'listener_remove' ) { ) Else if ($ _POST ["action"] == 'listener_remove') (
( "/usr/local/bin/chumstream.sh stop " . $_POST [ "client" ] , $result ) ; $ Tmp =
exec ("/ usr / local / chumstream.sh / stop bin". $ _POST ["cliente"], $ resultado); )
'icecast-auth-user: 1′ ) ; header ("icecast-auth-user: 1 '); 'icecast-auth-message: OK' ) ; header ("icecast-auth mensagem: OK '); ?>