Несколько нюансов при вещании.
1. Устанавливаем не просто Icecast, а Icecast-KH. Это позволит правильно вещать в AAC+v2, с тегами и т.д. Конфиг стандартый, ничего нового.
2. Создаем Studio.html:
- Код: выделить все
[init]
SongTitle=!SE!SongTitle
SongArtist=!SE!SongArtist
SongTimeL=!SE!SongTimeL
SongTimeA=!SE!SongTimeA
ABR_VC=!SE!ABR_VC
ABR_EB=!SE!ABR_EB
B директории SE и указываем студии создавать файл-статус se_status.txt каждые 15сек.
3. Сохраняем и компилим скрипт rdh.au3
- Код: выделить все
#include <file>
;#NoTrayIcon
$status_time_old = "10"
$err = 0
$sINI = StringTrimRight(@ScriptFullPath, 4) & ".ini"
$var = IniReadSection($sINI, "init")
$rds_old = ""
$sPause = 0
$CP = "UTF-8"
If @error Then
IniWrite($sini, "init", "statfile", "C:\SE_Status.txt")
IniWrite($sini, "init", "rdsfile", "C:\hitfm.txt")
IniWrite($sini, "init", "debug", "0")
IniWrite($sini, "init", "reclama", "FM 103.8")
IniWrite($sini, "init", "CP", "UTF-8")
MsgBox(4096, "", "Error occured, probably no INI file. Create with defaut value.", 10)
Exit 1
endif
$statfile = IniRead($sini, "init", "statfile", "")
$rdsfile = IniRead($sini, "init", "rdsfile", "")
$CP = IniRead($sini, "init", "CP", "UTF-8")
$dbg = IniRead($sini, "init", "debug", "")
$dbg_file = StringTrimRight(@ScriptFullPath, 4) & ".log"
$srec = IniRead($sini, "init", "reclama", "")
do
$status_time = FileGetTime($statfile,0,1)
If NOT @error Then
if $status_time_old <status_time> 0 Then $rds_i = 1
if StringLen($SongTitle) > 0 Then $rds_i = $rds_i + 2
Switch $rds_i
case 0
$rds = $srec
Case 1
$rds = $SongArtist
Case 2
$rds = $SongTitle
case 3
$rds = $SongArtist & " - " & $SongTitle
EndSwitch
$i_SE = StringInStr($rds, "Ролик") + StringInStr($rds, "Влет") + StringInStr($rds, "Вылет") + StringInStr($rds, "РЕГИОНАЛЬНАЯ")
if $i_SE <0> 4 Then
$sPause = 0
$rds = $srec
_Write_RDS()
Else
$sPause = $sPause + 1
EndIf
$err = 0
Else
$err = $Err + 1
EndIf
Sleep(10000)
Until $err > 10
MsgBox(4096, "", "Status file not found, Exit", 10)
exit $err
Func _Write_RDS ()
if $rds_old <> $rds Then
$rds_old = $rds
if $CP = "UTF-8" Then
$file = FileOpen($rdsfile, 258)
Else
$file = FileOpen($rdsfile, 2)
EndIf
$rds = StringUpper($rds)
FileWrite($file, $rds)
FileClose($file)
if $dbg = 1 Then _Write_log()
EndIf
EndFunc
Func _Write_log ()
local $text_log = ""
local $SongTimeL, $ABR_VC, $ABR_EB, $SongTimeA
$SongTimeL = IniRead($statfile, "init", "SongTimeL", "")
$SongTimeA = IniRead($statfile, "init", "SongTimeA", "")
$ABR_VC = IniRead($statfile, "init", "ABR_VC", "")
$ABR_EB = IniRead($statfile, "init", "ABR_EB", "")
$text_log = chr(9) & $rds & chr(9) & $SongTimeL & chr(9) & $SongTimeA & chr(9) & $ABR_VC & chr(9) & $ABR_EB
_FileWriteLog($dbg_file, $text_log)
EndFunc
Autoit3 берем здесь
4. Создаем и сохраняем в папке с получившимся rdh.exe файл rdh.ini
- Код: выделить все
[init]
statfile=C:\se_Status.txt
rdsfile=C:\hitfm.txt
debug=1
reclama=103.8 FM
CP=UTF-8
5. Заводим с микшера на вход звуковухи сигнал (это надо, если вы ретрансите и спутник напрямую с ABR идет в микшер), ставим прогу захвата и указываем ей, что метаданные надо брать из нашего rdsfile (C:\hitfm.txt). Если используете Orban Opticodec (самый лучший звук, но платная), метаданные должны быть в UTF-8 (параметр СР в ini файле), если edcast_standalone - CP1251
6. Запускаем все это добро и радуемся жизни, в любом плеере, под любой ОСью, вы увидите нормальные теги, без всяких служебных данных, типа Влет, Вылет, Ролик и т.д. Они будут заменены на текст из ini файла (reclama).
А теперь - БОНУС!!!, то, ради чего все это затевалось
Выложить на сайт ссылку (.m3u), для прослушивания в плеере, это, конечно, круто, но... Хотелось бы сделать по-взрослому, слушать действительно OnLine, прямо в браузере. Такую ссыль уже не стыдно и рекламодателям скинуть, шоп послушали свою рекламу, не отходя от компа (в другом городе, например).
Флеш плееров, в том числе и бесплатных, много, но формат AACPlus v2 никто не поддерживает, а транслировать в МР3 - большая загрузка канала и кач-во не очень.
Но выход - есть!
Сервер Icecast-KH позволяет, по запросу клиента, завернуть поток, вместе с тегами, в любой контейнер, например .flv , который уже поддерживают многие флеш плеера.
Идем на сайт, регистрируемся, внимательно читаем документацию и создаем свой плеер, код которого вставляем на свой сайт.
Хинт:
1. ссыль на поток надо ставить вида:
- Код: выделить все
http://ваш_ip:8000/ваш_моунт?type=.flv
2. обязательно, при конструировании плеера, предусмотреть "экранное" поле достаточных размеров, для вывода мета-тегов.
3. в настройках (настройки кода) поставьте галку на uid и снимите с JavaScript.
Ну вот, как-то так. Весь использованный софт абсолютно бесплатный. Будут вопросы - велкам!
(после 22.03.13, ибо уезжаю)