ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
7   •   Посмотреть все темы

liquidsoap

 

223
Игорь @devilben
Разве что монтировать на сервер1, каталог с треками из сервера2, через nfs или smb, и указать абсолютные пути в Liquidsoap.

0
28
alexgard @alexgard
devilben пишет:

Разве что монтировать на сервер1, каталог с треками из сервера2, через nfs или smb, и указать абсолютные пути в Liquidsoap.


А для этого, нужны какие-то доступы к серверу №2?

0
223
Игорь @devilben
Нужны, иначе http онли

0
67
nivs @nivs
alexgard, openVPN. Внутри него делай, что хочешь

Отредактировано nivs - 18.05.2012
0
28
alexgard @alexgard
Всем спасибо, эту проблему решил!)

Не подскажете, как установить liquidsoap на freebsd не через порты?

Отредактировано alexgard - 23.05.2012
0
67
nivs @nivs
alexgard, как решил проблему-то? Не через порты - собирать из исходников.

0
28
alexgard @alexgard
nivs пишет:

alexgard, как решил проблему-то? Не через порты - собирать из исходников.


Плейлист обновляется динамически. В плейлисте скрипт который перед началом воспроизведения скачивает трек....

0
1
gef @gef0rce
Привет!
Пролистал тему, но вроде ответа на вопрос не нашел.
Суть проблемы - сервер вещает по плейлисту, но я, как клиент, дослушиваю текущий трек до конца и тишина - до тех пор пока не обновлю стрим - тогда продолжается. То есть после каждого трека происходит "затыкание".

Вещательный скрипт:
  1.  
  2. #!/usr/bin/liquidsoap
  3. set("log.file.path","___/ls.log")
  4. mypl = mksafe(playlist(mode="random","./generalPlaylist.lst"))
  5. output.icecast.vorbis(host = "___", port=___, password="___", mount="__", mypl)

Отредактировано gef0rce - 26.05.2012
0
89
Azat @azatxaker
gef0rce,
та же проблема.
Но сейчас меня мучает другой вопрос. Ребят, подскажите, как подсчитать требуемые ресурсы сервера для вещания?
Сейчас у меня 2,2 мГц + 500 Гц, RAM - 2048 Мб. 4 канала, 1 на 3 потока разбит (128, 96, 24), остальные по 128, проц загружен на ~60%. Переодически либо полностью виснет liquidsoap, либо полностью система зависает. Раньше было 1024 Гц + 1024 Мб все 4 канала по 3 потока - 99%. Надо купить выделенный, либо VPS покруче, но вот какой? Надеюсь на вашу помощь!

0
6245
Тарас @tarasian666
gef0rce, версия какая ? возможно надо добавить еще битрейт

azatxaker, 2,2 мГц ? может гигагерц?
на такое кол-во потоков надо брать как можно мощнее

0
89
Azat @azatxaker
Вот скрипт:

  1.  
  2. #!/usr/local/bin/liquidsoap
  3. # Configuration
  4. set("log.file.path", "/home/music/data/logs/broadcast.log")
  5. set("server.telnet", true)
  6. set("server.telnet.port", 12381)
  7. set("init.daemon", true)
  8. set("init.daemon.pidfile", false)
  9. # Music's playlists
  10. crazy_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/crazy/"))
  11. club_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/club/"))
  12. rap_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/rap/"))
  13. rock_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/rock/"))
  14. # Jingles' playlist
  15. jingles = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
  16. #jingles2 = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
  17. #jingles3 = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
  18. #jingles4 = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
  19. # Mixing music and jingles
  20. crazy_broadcast = smart_crossfade(rotate(weights = [3, 1], [crazy_music, jingles]))
  21. #club_broadcast = smart_crossfade(rotate(weights = [3, 1], [club_music, jingles2]))
  22. #rap_broadcast = smart_crossfade(rotate(weights = [3, 1], [rap_music, jingles3]))
  23. #rock_broadcast = smart_crossfade(rotate(weights = [3, 1], [rock_music, jingles4]))
  24. # Adding requests, "hour open" jingles and normalizing
  25. crazy_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), crazy_broadcast])
  26. #club_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), club_broadcast])
  27. #rap_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), rap_broadcast])
  28. #rock_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), rock_broadcast])
  29. # Outputing
  30. ####################################################################################################
  31. output.icecast(%mp3(bitrate = 128), host = "localhost", port = 8000, password = "***", mount = "crazy128", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Pop/Dance", url = "http://www.crazyradio.net/", encoding = "UTF-8", crazy_broadcast)
  32. output.icecast(%mp3(bitrate = 96), host = "localhost", port = 8000, password = "***", mount = "crazy96", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Pop/Dance", url = "-", encoding = "UTF-8", crazy_broadcast)
  33. output.icecast(%mp3(bitrate = 24), host = "localhost", port = 8000, password = "***", mount = "crazy24", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Pop/Dance", url = "-", encoding = "UTF-8", crazy_broadcast)
  34. ####################################################################################################
  35. output.icecast(%mp3(bitrate = 128), host = "localhost", port = 8000, password = "***", mount = "club128", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Club", url = "-", encoding = "UTF-8", club_broadcast)
  36. #output.icecast(%mp3(bitrate = 96), host = "localhost", port = 8000, password = "***", mount = "club96", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Club", url = "-", encoding = "UTF-8", club_broadcast)
  37. #output.icecast(%mp3(bitrate = 24), host = "localhost", port = 8000, password = "***", mount = "club24", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Club", url = "-", encoding = "UTF-8", club_broadcast)
  38. ####################################################################################################
  39. output.icecast(%mp3(bitrate = 128), host = "localhost", port = 8000, password = "***", mount = "rap128", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Rap", url = "-", encoding = "UTF-8", rap_broadcast)
  40. #output.icecast(%mp3(bitrate = 96), host = "localhost", port = 8000, password = "***", mount = "rap96", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Rap", url = "-", encoding = "UTF-8", rap_broadcast)
  41. #output.icecast(%mp3(bitrate = 24), host = "localhost", port = 8000, password = "***", mount = "rap24", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Rap", url = "-", encoding = "UTF-8", rap_broadcast)
  42. ####################################################################################################
  43. output.icecast(%mp3(bitrate = 128), host = "localhost", port = 8000, password = "***", mount = "rock128", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Rock", url = "-", encoding = "UTF-8", rock_broadcast)
  44. #output.icecast(%mp3(bitrate = 96), host = "localhost", port = 8000, password = "***", mount = "rock96", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Rock", url = "-", encoding = "UTF-8", rock_broadcast)
  45. #output.icecast(%mp3(bitrate = 24), host = "localhost", port = 8000, password = "***", mount = "rock24", name = "Crazy Radio", description = "Crazy Radio - мы заставим зажигать вместе с нами вселенную!", genre = "Rock", url = "-", encoding = "UTF-8", rock_broadcast)

0
89
Azat @azatxaker
Ой, гигагерц:) Ну как можно мощнее, но хотелось бы и в капитал вписаться, поэтому хотелось бы поточнее, сколько примерно надо?

0
6245
Тарас @tarasian666
думаю надо от 3 Ггц но еще зависит от типа процессора.
Но и лучше брать выделеный сервер или виртуальный полностью отделен от других

0
89
Azat @azatxaker
Спасибо! С проблемой остановки плейлиста разобрался просто: проверил все пути. Оказалось, что путь к джинглам был левый, вот вещание на них и останавливалось.

0
888
Falcon @Falcon
Требуется помощь и совет знатоков. В общем, есть соап, его конфиг:

#!/usr/bin/liquidsoap
set("log.file.path","/tmp/liq.log")
set("init.daemon.pidfile.path","/tmp/liq.pid")
output.icecast(%mp3(samplerate=44100, bitrate=192), host = "localhost", port = 8000, password = "888", mount = "192", mksafe(input.http("http://uk3-pn.mixstream.net:8026/")))
output.icecast(%mp3(samplerate=44100, bitrate=96), host = "localhost", port = 8000, password = "888", mount = "96", mksafe(input.http("http://uk3-pn.mixstream.net:8026/")))
output.icecast(%aacplus(channels=2, samplerate=44100, bitrate=32), host = "localhost", port = 8000, password = "888", mount = "32", mksafe(input.http("http://uk3-pn.mixstream.net:8026/")))

Как видно, он 3 раза притягивает поток на перекодировку, можно ли как-то "писать" поток в переменную и уже её перекодировать и отправлять на сервер?

Также тут еще неприятный момент, с этим конфигом соап стартует, работает минуту-две и падает, в логах:
2012/05/29 19:45:17 [src_4322:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4318:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4314:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4314:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4318:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4322:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4318:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4314:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4322:3] Buffer overrun: Dropping 0.07s.
2012/05/29 19:45:17 [src_4318:3] Buffer overrun: Dropping 0.07s.

Отредактировано Falcon - 29.05.2012
0
6245
Тарас @tarasian666
попробуй буфер увеличить

0
888
Falcon @Falcon
Буфер на айскасте или соапе?

Еще вопрос попутно:
Как можно заставить соап реконнектится, если вдруг он прервался?

Отредактировано Falcon - 29.05.2012
0
6245
Тарас @tarasian666
буфер на input.http

рукнектился куда? через input.http?

0
888
Falcon @Falcon
Сделал так:
input=mksafe(input.http(buffer=128.,max=1024.,"http://uk3-pn.mixstream.net:8026/"))
Немного спасло ситуацию, но соап почему-то опять упал, в логах:
2012/05/30 10:39:12 [mksafe:3] Switch to src_4315 with transition.
2012/05/30 10:39:12 [src_4315:3] Incorrect stream type!
2012/05/30 10:39:13 [mksafe:3] Switch to safe_blank with forgetful transition.
2012/05/30 10:39:13 [src_4315:2] Feeding stopped: Incorrect stream type!.
2012/05/30 10:39:15 [decoder:3] Method "MP3/LIBMAD" accepted "audio/mpeg".
2012/05/30 10:39:15 [src_4315:3] Decoding...
2012/05/30 10:39:15 [src_4315:3] New metadata chunk: ? -- .
2012/05/30 10:39:58 [mksafe:3] Switch to src_4315 with transition.
2012/05/30 10:39:58 [src_4315:3] Incorrect stream type!
2012/05/30 10:39:59 [mksafe:3] Switch to safe_blank with forgetful transition.
2012/05/30 10:39:59 [src_4315:2] Feeding stopped: Incorrect stream type!.
2012/05/30 10:40:01 [decoder:3] Method "MP3/LIBMAD" accepted "audio/mpeg".
2012/05/30 10:40:01 [src_4315:3] Decoding...
2012/05/30 10:40:01 [src_4315:3] New metadata chunk: ? -- .
2012/05/30 10:40:44 [mksafe:3] Switch to src_4315 with transition.
2012/05/30 10:40:44 [src_4315:3] Incorrect stream type!
2012/05/30 10:40:44 [src_4315:2] #get_frame didn't add exactly one break!
2012/05/30 10:40:44 [threads:1] Thread "wallclock_main" aborts with exception File "source.ml", line 466, characters 10-16: Assertion failed!
2012/05/30 10:40:44 [main:3] Shutdown started!
2012/05/30 10:40:44 [main:3] Waiting for threads to terminate...
2012/05/30 10:40:44 [stderr:3] Thread 5 killed on uncaught exception Assert_failure("source.ml", 466, 10)
2012/05/30 10:40:44 [stderr:3] Raised at file "list.ml", line 144, characters 16-25
2012/05/30 10:40:44 [src_4315:2] Feeding stopped: Incorrect stream type!.
2012/05/30 10:40:46 [decoder:3] Method "MP3/LIBMAD" accepted "audio/mpeg".
2012/05/30 10:40:46 [src_4315:3] Decoding...
2012/05/30 10:40:47 [src_4315:3] New metadata chunk: ?

А реконнектится надо получается к 2ум потокам:
1)На инпуте
2)На айскаст
Сделал так: output.icecast(fallible=true, %mp3(samplerate=44100, bitrate=192),restart=true,....))
Но соап сдох с вышеописанными логами. Кроме того, как процесс он продолжает висеть.

0
6245
Тарас @tarasian666
1. на инпуте реконект хз, может timeout
2. вполне реально, fallible = true раньше надо было еще restart = true, restart_delay = 5 но щас эти переменные не валидны


буфер там в секундах, думаю 60 будет более чем достаточно, также убавить max

упал помоему изза Incorrect stream type!.

0





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

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