Nahmd,
Мне нужно решение поток WMA "на лету", чтобы сделать его OGG поток.
Сценарий в один путь для исполняемых программ место, чтобы захватить PHP скрипт в веб-сервер и подключить в icecast2 Добавить конфигурации. Различные пути должны быть адаптированы Может быть.
К сожалению, в настоящее время только слушать один Internerradio этот поток. На самом деле, она может создать, как многие, но, к сожалению закончился первый, который уже не получает поток, превращая 
Что необходимо, заключается в следующем:
- MPlayer
- icecast2
- OggEnc
- oggfwd
- PHP
Скрипт для конвертации
# / Bin / ш
$PATH :/usr/ local /bin экспорт PATH = $ PATH: / USR / местные / бен
STREAM = "MMS: / / your.radio.fm / stream.wma"
комплект-е
КЛИЕНТ = 0
"$2" != "" ] ; then если ["$ 2"! = ""], то
КЛИЕНТ = $ 2
ц
"$3" != "" ] если ["$ 3"! = ""]
затем
STREAM = $ 3
ц
echo $STREAM | md5sum | cut -d ' ' -f1 ) MD5 = $ (Эхо $ STREAM | md5sum | сокращение-д''-f1)
TEMP = / TMP / chumbybridge / $ MD5
] || mkdir -p $TEMP [D $ TEMP] | | Mkdir-р $ 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] и эхо и "Run $ 0 первая точка!" И и Выйти
|| exit 1 mkfifo $ FIFO_MPLAYER | | выхода 1
"$FIFO_MPLAYER" >> $LOG_MPLAYER 2 >& 1 < /dev/null & MPlayer-NOCACHE $ СТРИМ-АО-тихий PCM: файл = "$ FIFO_MPLAYER">> $ LOG_MPLAYER 2> и </ Dev / нуль и
Эхо $! > $ PID_MPLAYER
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 локальный 8000 hackme / radio1.ogg>> $ LOG_OGGFWD 2> 1 и и
Эхо $! > $ PID_OGGFWD
0,2 сна
"$1" = "stop" ] Элиф ["$ 1" = "стоп"]
затем
Эхо ">>> Остановка chumstream игрока <<<"
cat $PID_MPLAYER ) 2 > /dev/null && \ убить $ ($ PID_MPLAYER кошка) 2> / Dev / нуль и и \
cat $PID_OGGFWD ) 2 > /dev/null && \ убить $ ($ PID_OGGFWD кошка) 2> / Dev / нуль и и \
|| \ RM-ВЧ $ TEMP | | \
Эхо "не может остановить все процессы, пожалуйста, посмотрите на $ TEMP и исправить ее вручную"
еще
Эхо "Использование:"
Эхо "$ 0 начать [client_id] [URL]"
Эхо "$ 0 остановки"
ц
Icecast конфигурации
<mount>
<mount-name> / radio.ogg </ горе-имя>
<max-listeners> 10 </ макс-слушателей>
<burst-size> 65 536 </ ворвались размера>
<видимость> 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 =
Exec ("/ USR / местные / бен / запуска chumstream.sh. $ _POST [" клиент "], $ результат); ( $_POST [ "action" ] == 'listener_remove' ) { ) Else, если ($ _POST ["действие"] == 'listener_remove') (
( "/usr/local/bin/chumstream.sh stop " . $_POST [ "client" ] , $result ) ; $ TMP =
Exec ("/ USR / местные / BIN / chumstream.sh остановить". $ _POST ["клиент"], $ результат); )
'icecast-auth-user: 1′ ) ; заголовок ('Icecast-аутентификации пользователей: 1'); 'icecast-auth-message: OK' ) ; заголовок ('Icecast-аутентификации сообщения: OK'); ?>