Nahmd,
Jeg havde brug for en løsning på en WMA stream "on the fly at gøre det en OGG stream.
Scriptet i en sti for eksekverbare programmer sted at fange den php script i web-serveren og montere i Icecast2 Tilføj Konfiguration. De forskellige stier skal tilpasses Måske.
Desværre, i øjeblikket kun lytte til én Internerradio at stream. Faktisk kan det skabe lige så mange, men desværre endte det første, som ikke længere modtager strøm, konvertering af 
Der er behov for følgende:
- mplayer
- icecast2
- oggenc
- oggfwd
- php
Scriptet til at konvertere
# / Bin / sh
$PATH :/usr/ local /bin export PATH = $ PATH: / usr / local / bin
STREAM = "mms: / / your.radio.fm / stream.wma"
set-e
KUNDEN = 0
"$2" != "" ] ; then hvis ["$ 2"! = ""] da
Client = $ 2
fi
"$3" != "" ] hvis ["$ 3"! = ""]
Derefter
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" ] hvis ["$ 1" = "start"]
Derefter
>> $LOG_MPLAYER echo "tilsluttet $ KUNDEN">> $ LOG_MPLAYER
] && echo "Run $0 stop first!" && exit [-E $ FIFO_MPLAYER] & & echo "Run $ 0 stop først!" & & 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
sove 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 $
sove 0,2
"$1" = "stop" ] Elif ["$ 1" = "stop"]
Derefter
echo ">>> Stop chumstream spiller <<<"
cat $PID_MPLAYER ) 2 > /dev/null && \ dræbe $ (cat $ PID_MPLAYER) 2> / dev / null & & \
cat $PID_OGGFWD ) 2 > /dev/null && \ dræbe $ (cat $ PID_OGGFWD) 2> / dev / null & & \
|| \ rm-rf $ TEMP | | \
echo "Kan ikke stoppe alle processer, kan du se i $ TEMP og lave det manuelt"
andet
echo "Usage:"
echo "$ 0 start [client_id] [URL]"
echo "$ 0 stop"
fi
Den Icecast konfiguration
<mount>
<mount-name> / radio.ogg </ mount-name>
<max-listeners> 10 </ max-lyttere>
<burst-size> 65 536 </ burst-size>
<hidden> 0 </ skjulte>
> <authentication type = "url">
value = "http://localhost/radio.php" /> <option name = value = "mount_add" /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option name = value = "mount_remove" /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option name = value = "listener_add" /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option name = value = "listener_remove" /> "http://localhost/radio.php"
</ Authentication>
<Mount />
Den Php Start / Stop del
Php
$_POST [ "action" ] == 'listener_add' ) { if ($ _POST ["action"] == 'listener_add «) (
( "/usr/local/bin/chumstream.sh start " . $_POST [ "client" ] , $result ) ; $ Tmp =
exec ("/ usr / local / bin / start chumstream.sh. $ _POST [" kunde "], $ result); ( $_POST [ "action" ] == 'listener_remove' ) { ) Else if ($ _POST ["action"] == 'listener_remove «) (
( "/usr/local/bin/chumstream.sh stop " . $_POST [ "client" ] , $result ) ; $ Tmp =
exec ("/ usr / local / bin / chumstream.sh stop". $ _POST ["kunde"], $ result); )
'icecast-auth-user: 1′ ) ; header ('Icecast-auth-bruger: 1'); 'icecast-auth-message: OK' ) ; header ('Icecast-auth-besked: OK'); ?>