ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
7   •   Посмотреть все темы

icecast fallback перекидывание с одного маунта на другой

 

6245
Тарас @tarasian666
делаем банальный алгоритм
если (на live нет названия трека){
берем название трека с нонстоп
}
иначе{
берем название с live
}

0
49
aleksanders @aleksanders
Ну спасибо, что подсказали, но я ничего не понял всё равно.
Измените пожалуйста что нужно здесь.
Вот мой код с информера радио:

  1. <?php
  2. $data = file_get_contents('http://localhost:88/status.xsl?mount=/live');
  3. function antara($string, $start, $end){
  4. $string = " ".$string;
  5. $ini = strpos($string,$start);
  6. if ($ini == 0) return "";
  7. $ini += strlen($start);
  8. $len = strpos($string,$end,$ini) - $ini;
  9. return substr($string,$ini,$len);
  10. }
  11. $data = iconv("utf-8", "cp1251", $data);
  12. $title = antara($data, "Stream Title:</td>\n<td class=\"streamdata\">","</td>");
  13. $description = antara($data, "Stream Description:</td>\n<td class=\"streamdata\">","</td>");
  14. $content_type = antara($data, "Content Type:</td>\n<td class=\"streamdata\">","</td>");
  15. $Mount_started = antara($data, "Mount started:</td>\n<td class=\"streamdata\">","</td>");
  16. $Bitrate = antara($data, "Bitrate:</td>\n<td class=\"streamdata\">","</td>");
  17. $Current_listeners = antara($data, "Current Listeners:</td>\n<td class=\"streamdata\">","</td>");
  18. $Peak_listeners = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  19. $Stream_genre = antara($data, "Peak Listeners:</td>\n<td class=\"streamdata\">","</td>");
  20. $Stream_url = antara($data, "Stream URL:</td>\n<td class=\"streamdata\">","</td>");
  21. $Current_song = antara($data, "Current Song:</td>\n<td class=\"streamdata\">","</td>");
  22. $hellp_curr_listeners = antara($hellp, "Сейчас слушают:</td>\n<td class=\"streamdata\">","</td>");
  23. $hellp_peak_listeners = antara($hellp, "Максимум было</td>\n<td class=\"streamdata\">","</td>");
  24. $Curr_listens=$Current_listeners2+$Current_listeners+$hellp_curr_listeners;
  25. $Peak_listens=$Peak_listeners2+$Peak_listeners+$hellp_peak_listeners;
  26. $staylst=$Curr_listens+1;
  27. echo '<span style="font-size: 0.72em; font-family:Trebuchet MS, Tahoma, Arial, sans-serif; color:#3090c3"><b>Название радио:</b> '.$title.' <br>
  28. <b>За пультом:</b> '.$description.' <br>
  29. <b>Битрейт:</b> '.$Bitrate.' <br>
  30. <b>Сейчас слушают:</b> '.$Curr_listens.' <br>
  31. <b>Максимум слушало:</b> '.$Peak_listens.' <br>
  32. <b>Сейчас в эфире:</b> '.$Current_song.' <br>
  33. <br>
  34. <center><input type="button" value="Слушать радио" onclick="location.href=\'http://xoiniki.com:88/live.m3u\'" /></center>';
  35. ?>

0
6245
Тарас @tarasian666
**********
тут уже выкладывали нужный скрипт

0
49
aleksanders @aleksanders
Так в этом разделе я все перебрал. Вот нашёл хоть этот один рабочий. Остальные у меня чего-то не работали. Исправьте пожалуйста в этом. Просто я уже и стили здесь изменил под свой сайт. НУ пожалуйста...
Заранее спасибо!

0
112
Юрий @FortNoxBY
Добавил стандартные лимиты и пошло:
  1. <limits>
  2. <clients>100</clients>
  3. <sources>2</sources>
  4. <queue-size>102400</queue-size>
  5. <client-timeout>30</client-timeout>
  6. <header-timeout>15</header-timeout>
  7. <source-timeout>10</source-timeout>
  8. <burst-on-connect>1</burst-on-connect>
  9. <burst-size>65536</burst-size>
  10. </limits>

Спасибо :)

0
49
aleksanders @aleksanders
Я так понимаю, что выдирать отсюда нужно:
  1. <?php
  2. error_reporting(0);
  3. header("Content-Type: text/html; charset=cp1251");
  4. $file_name="http://91.228.152.154:8000/status.xsl?mount=/live";
  5. $r=fopen($file_name,'r');
  6. $text=fread($r,10000);
  7. fclose($r);
  8. $mas=explode('<tr>', $text);
  9. $name = explode(':', $mas[3]);
  10. $q = explode ('</td>',$name[1]);
  11. $q2 = explode ('<td class="streamdata">',$q[1]);
  12. $rj = $q2[1];
  13. if($rj == "0" or $rj == ""){
  14. echo " Nonstop";
  15. }else
  16. {
  17. $fl = file_get_contents('http://91.228.152.154:8000/status.xsl?mount=/live');
  18. function antara($string, $start, $end){
  19. $string = " ".$string;
  20. $ini = strpos($string,$start);
  21. if ($ini == 0) return "";
  22. $ini += strlen($start);
  23. $len = strpos($string,$end,$ini) - $ini;
  24. return substr($string,$ini,$len);
  25. }
  26. $stream = antara($fl,"<td>Stream Title:</td>\n<td class=\"streamdata\">","</td>");
  27. $description = antara($fl, "<td>Stream Description:</td>\n<td class=\"streamdata\">", "</td>");
  28. $listeners = antara($fl, "<td>Current Listeners:</td>\n<td class=\"streamdata\">", "</td>");
  29. $max = antara($fl, "<td>Peak Listeners:</td>\n<td class=\"streamdata\">", "</td>");
  30. $song = antara($fl, "<td>Current Song:</td>\n<td class=\"streamdata\">", "</td>");
  31. switch ($stream) {
  32. case "gccvhvhgv":
  33. echo "<img src='http://dfm.ru/upload/contents/406/logo_bomb.gif' wight=100%>";
  34. break;
  35. }
  36. echo "";
  37. }
  38. ?>

Только знать бы что туда вставить...

0
7
HeroLine @HeroLine
Есть маленькая проблема когда DJ подключаться к потоку то его не слышна пока не пере подключится, а когда Dj отключается то поток у пользователя сбрасывается и приходиться заново подключаться к радио.

Отредактировано HeroLine - 21.02.2012
0
6245
Тарас @tarasian666
битрейт и частота дискретизации и главное формат должны быть одинаковыми на обоих маунтах
а флеш плеер написан на as3 такой скачек не воспринимает

0
7
HeroLine @HeroLine
Я попробовал битрей такой же как и маунте всё равно обрывы.

0
6245
Тарас @tarasian666
а частота дискретизации ? плеер какой?

0
7
HeroLine @HeroLine
mp3 abr 48 RadioBoss 4.3

0
6245
Тарас @tarasian666
cbr

0
7
HeroLine @HeroLine
Хотите сказать что RadioBoss работает тока с CBR, а с переменной чистотой нет?
А ещё посмотрите конфиг как подключать DJ в эфир от своего имени и пароля

  1. <icecast>
  2. <limits>
  3. <clients>10000</clients>
  4. <sources>4</sources> Тут менять от количества подключенных Dj, каждый подключенный DJ +2.
  5. <threadpool>5</threadpool>
  6. <queue-size>524288</queue-size>
  7. <client-timeout>30</client-timeout>
  8. <header-timeout>15</header-timeout>
  9. <source-timeout>10</source-timeout>
  10. <burst-on-connect>1</burst-on-connect>
  11. <burst-size>65535</burst-size>
  12. </limits>
  13. <authentication>
  14. <source-password>пароль</source-password>
  15. <relay-password>пароль</relay-password>
  16. <admin-user>admin</admin-user>
  17. <admin-password>пароль</admin-password>
  18. </authentication>
  19. <hostname>localhost</hostname>
  20. <listen-socket>
  21. <port>8000</port>
  22. </listen-socket>
  23. <fileserve>1</fileserve>
  24. <mount>
  25. <mount-name>/live</mount-name>
  26. <password>Пароль от админка icecast</password>
  27. <fallback-mount>/nonstop</fallback-mount>
  28. <fallback-override>1</fallback-override>
  29. </mount>
  30. <mount>
  31. <mount-name>/nonstop</mount-name>
  32. <password>Пароль от админка icecast</password>
  33. </mount>
  34. <mount>
  35. <mount-name>/ник Dj</mount-name>
  36. <password>пароль DJ</password>
  37. <fallback-mount>/nonstop</fallback-mount>
  38. <fallback-override>1</fallback-override>
  39. </mount>
  40. <mount>
  41. <mount-name>/nonstop</mount-name>
  42. <password>Пароль от админка icecast</password>
  43. </mount>
  44. <!-- Что бы подключить ещё одного Dj скопируйте <mount>
  45. <mount-name>/ник Dj</mount-name>
  46. <password>пароль DJ</password>
  47. <fallback-mount>/nonstop</fallback-mount>
  48. <fallback-override>1</fallback-override>
  49. </mount>
  50. <mount>
  51. <mount-name>/nonstop</mount-name>
  52. <password>Пароль от админка icecast</password>
  53. </mount> и замените ники и пароли.> -->
  54. <paths>
  55. <!-- basedir is only used if chroot is enabled -->
  56. <basedir>/usr/share/icecast2</basedir>
  57. <!-- Note that if <chroot> is turned on below, these paths must both
  58. be relative to the new root, not the original root -->
  59. <logdir>/home/radio</logdir>
  60. <webroot>/usr/share/icecast2/web</webroot>
  61. <adminroot>/usr/share/icecast2/admin</adminroot>
  62. <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->
  63. <!-- Aliases: treat requests for 'source' path as being for 'dest' path
  64. May be made specific to a port or bound address using the "port"
  65. and "bind-address" attributes.
  66. -->
  67. <!--
  68. <alias source="/foo" dest="/bar"/>
  69. -->
  70. <!-- Aliases: can also be used for simple redirections as well,
  71. this example will redirect all requests for ********** to
  72. the status page
  73. -->
  74. <alias source="/" dest="/status.xsl"/>
  75. </paths>
  76. <logging>
  77. <accesslog>access.log</accesslog>
  78. <errorlog>error.log</errorlog>
  79. <!-- <playlistlog>playlist.log</playlistlog> -->
  80. <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
  81. <logsize>10000</logsize> <!-- Max size of a logfile -->
  82. <!-- If logarchive is enabled (1), then when logsize is reached
  83. the logfile will be moved to [error|access|playlist].log.DATESTAMP,
  84. otherwise it will be moved to [error|access|playlist].log.old.
  85. Default is non-archive mode (i.e. overwrite)
  86. -->
  87. <!-- <logarchive>1</logarchive> -->
  88. </logging>
  89. <security>
  90. <chroot>0</chroot>
  91. <changeowner>
  92. <user>icecast2</user>
  93. <group>icecast2</group>
  94. </changeowner>
  95. </security>
  96. </icecast>


что бы перезагрузить icecast не прирывание вешания в дебиане командой в ssh killall -HUP icecast2 и через некоторое время DJ может подкл.
Подключение DJ через программу Sam зайти в настройку потока в пароль вводим пароль DJ, а в моунт вводим ник DJ.
Слушателю даем слушать моунт /live.
Dj Подключается без обрыва и со своими данными.
Сильно строго не судить если у видите ошибки поправьте, может это кому нибудь пригодится.

Нашёл косяк, если слушатель подключен к потоку /live, то при подключение DJ слушатель услышит Dj, а если слушатель подключается заново во время вешания DJ, то он слышит нон-стоп. Может кто может поправить конфиг.

0
19
JaST @JaST
Добрый день,куда вставлять данный код <mount></mount>?

0
6245
Тарас @tarasian666
подсказка - название темы

0
19
JaST @JaST
хм... спасибо,догнал :D

0
6
Артемий @Artemiy_Sotnikov
Вопрос - для обоих маунтов (лайв и нонстоп) пароль одинаковый ставится?
И в айсис идет только маунт нонстоп с паролем?

Прост в таком случае если у меня играет нонстоп, то он и монтируется физически на нонстопе, и покаду его не прервать, подконнектиться не возможно. И физически маунты с файлами на прослушку тоже разные для лайва и нонстопа.

Отредактировано Artemiy_Sotnikov - 21.04.2012
0
6245
Тарас @tarasian666
1. на вкус и цвет
2. в ices ничего необычного, просто вещает себе на маунт nonstop
3. конектиться надо к live и диджею и слушателю, где что физически находится тут побоку, количество sources должно соответсвовать кол-ву маунтов

0
6
Артемий @Artemiy_Sotnikov
Насчет подлючения, через сэм идет к лайв маунту, а насчет подключений юзеров, немного не понял, они допустим получают поток /live.m3u, но он активен только тогда, когда активен диджей.

Отредактировано Artemiy_Sotnikov - 21.04.2012
0
6245
Тарас @tarasian666
в том то и вся суть fallback - попадая на пустой live их перекинет на nonstop

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.