Nahmd,
Ho bisogno di una soluzione a un flusso WMA "on the fly per renderlo un flusso OGG.
Lo script in un percorso per i programmi eseguibili posto per afferrare lo script PHP nel web server e la montatura in IceCast2 Aggiungi Configurazione. I diversi percorsi devono essere adattati Forse.
Purtroppo, attualmente solo ascoltare una Internerradio tale flusso. In realtà, possono creare tanti, ma purtroppo concluso la prima, che non riceve più il flusso, la conversione 
Ciò che occorre è la seguente:
- mplayer
- IceCast2
- oggenc
- oggfwd
- php
Lo script per la conversione
# / 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" $! = ""]
poi
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"]
poi
>> $LOG_MPLAYER echo "$ collegato CLIENTE">> $ LOG_MPLAYER
] && echo "Run $0 stop first!" && exit [-E $ FIFO_MPLAYER] & & echo "Run $ 0 prima fermata!" & & Exit
|| exit 1 mkfifo $ FIFO_MPLAYER | | exit 1
"$FIFO_MPLAYER" >> $LOG_MPLAYER 2 >& 1 < /dev/null & mplayer-nocache STREAM-quiet-ao pcm $: file = "$ FIFO_MPLAYER">> $ LOG_MPLAYER 2> & 1 </ dev / null &
echo $! > $ PID_MPLAYER
sonno 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 8.000 hackme / radio1.ogg>> $ LOG_OGGFWD 2> & 1 &
echo $! > $ PID_OGGFWD
sonno 0,2
"$1" = "stop" ] elif ["$ 1" = "stop"]
poi
echo ">>> Arresto chumstream giocatore <<<"
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 "Non riesco a smettere di tutti i processi, si prega di guardare in $ TEMP e fissarlo manualmente"
altro
echo "Utilizzo:"
echo "0 start [$ client_id] [URL]"
echo "0 stop $"
fi
La configurazione di Icecast
<mount>
<mount-name> / <radio.ogg /-name> mount
<max-listeners> 10 </ max-ascoltatori>
<burst-size> 65 536 </ burst-size>
<hidden> 0 </> nascosto
> <authentication type = "url">
value = "http://localhost/radio.php" /> <option nome = valore = /> "mount_add" "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option nome = valore "mount_remove" = /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option nome = valore = /> "listener_add" "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option nome = valore = /> "listener_remove" "http://localhost/radio.php"
</ Autenticazione>
<Mount />
Il 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 inizio. $ _POST [" cliente "], $ risultato); ( $_POST [ "action" ] == 'listener_remove' ) { ) Else if ($ _POST ["action] == 'listener_remove') (
( "/usr/local/bin/chumstream.sh stop " . $_POST [ "client" ] , $result ) ; $ Tmp =
exec ("/ usr / local / bin / stop chumstream.sh". $ _POST ["cliente"], $ risultato); )
'icecast-auth-user: 1′ ) ; header ('icecast-auth-user: 1'); 'icecast-auth-message: OK' ) ; header ('icecast-auth-messaggio: OK'); ?>