Nahmd,
Ik had behoefte aan een oplossing voor een WMA-stream "on the fly te maken een Ogg stream.
Het script in een pad voor uitvoerbare programma's plaats om de PHP-script in de web server te grijpen en de berg in de configuratie Icecast2 toe te voegen. De verschillende paden Misschien moeten worden aangepast.
Helaas, op dit moment alleen luisteren naar een Internerradio die stroom. Eigenlijk kan maken als veel, maar helaas eindigde de eerste, die niet meer ontvangt de beek, het omzetten van 
Vereist is de volgende:
- mplayer
- icecast2
- oggenc
- oggfwd
- php
De script om te zetten
# / Bin / sh
$PATH :/usr/ local /bin export PATH = $ PATH: / usr / local / uur
STREAM = "mms: / / your.radio.fm / stream.wma"
set-e
CLIENT = 0
"$2" != "" ] ; then if ["$ 2"! = ""] then
CLIENT = $ 2
fi
"$3" != "" ] if ["$ 3"! = ""]
dan
STREAM = 3 dollar
fi
echo $STREAM | md5sum | cut -d ' ' -f1 ) MD5 = $ (echo $ STREAM | md5sum | cut-d''-f1)
TEMP = de / 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"]
dan
>> $LOG_MPLAYER echo "$ verbonden KLANT"> $ LOG_MPLAYER
] && echo "Run $0 stop first!" && exit [E-FIFO_MPLAYER $] & & echo "Run 0 dollar te stoppen eerst!" & & Exit
|| exit 1 mkfifo $ FIFO_MPLAYER | | exit 1
"$FIFO_MPLAYER" >> $LOG_MPLAYER 2 >& 1 < /dev/null & mplayer-nocache $ STREAM-rustige-ao pcm: file = "$ FIFO_MPLAYER">> LOG_MPLAYER 2 dollar> & 1 </ dev / null &
echo $! > $ PID_MPLAYER
slaap 0,3
-o – 2 >> $LOG_OGGENC | oggfwd localhost 8000 hackme /radio1.ogg >> $LOG_OGGFWD 2 >& 1 & oggenc-Q-q 1 dollar FIFO_MPLAYER-o - 2>> $ LOG_OGGENC | hackme oggfwd localhost 8000 / radio1.ogg>> $ LOG_OGGFWD 2> & 1 &
ECHO $! > PID_OGGFWD $
slaap 0,2
"$1" = "stop" ] Elif ["$ 1" = "stop"]
dan
echo ">>> Stoppen chumstream speler <<<"
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 'Can't Stop alle processen, en kijk dan in $ TEMP het handmatig fix "
anders
echo "Gebruik:"
echo $ 0 Start [client_id] [URL] "
echo "$ 0 Stop"
fi
De configuratie Icecast
<mount>
<mount-name> / radio.ogg </ mount-naam>
<max-listeners> 10 </ max-luisteraars>
<burst-size> 65.536 </ burst-size>
<hidden> 0 </ verborgen>
> <authentication type = "url">
value = "http://localhost/radio.php" /> <option naam = waarde = "mount_add" /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option naam = waarde = "mount_remove" /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option naam = waarde = "listener_add" /> "http://localhost/radio.php"
value = "http://localhost/radio.php" /> <option naam = waarde = "listener_remove" /> "http://localhost/radio.php"
</ Authenticatie>
<Mount />
De Php Start / Stop deel
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 ['client'], $ 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 ['client'], $ resultaat); )
'icecast-auth-user: 1′ ) ; header ('icecast-auth-gebruiker: 1'); 'icecast-auth-message: OK' ) ; header ('icecast-auth-bericht: OK'); ?>