Вещание в IceCast

Часто задаваемые вопросы

Модератор: Wlad

Вещание в IceCast

Сообщение Andrejvb » Вт мар 12, 2013 1:27 pm

В связи с выпуском бесплатной утилиты SECaster данная тема потеряла свою актуальность.


Несколько нюансов при вещании.
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 - большая загрузка канала и кач-во не очень.
Но выход - есть! :wink:
Сервер Icecast-KH позволяет, по запросу клиента, завернуть поток, вместе с тегами, в любой контейнер, например .flv , который уже поддерживают многие флеш плеера.
Идем на сайт, регистрируемся, внимательно читаем документацию и создаем свой плеер, код которого вставляем на свой сайт.
Хинт:
1. ссыль на поток надо ставить вида:
Код: выделить все
http://ваш_ip:8000/ваш_моунт?type=.flv

2. обязательно, при конструировании плеера, предусмотреть "экранное" поле достаточных размеров, для вывода мета-тегов.
3. в настройках (настройки кода) поставьте галку на uid и снимите с JavaScript.

Ну вот, как-то так. Весь использованный софт абсолютно бесплатный. Будут вопросы - велкам!
(после 22.03.13, ибо уезжаю)
Shanson, Hit FM
Andrejvb
Вменяемый сисадмин
 
Сообщений: 73
Зарегистрирован: Ср ноя 22, 2006 7:17 pm
Откуда: Павлоград

Вернуться в FAQ

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2