626

Re: liquidsoap

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

627

Re: liquidsoap

пишет nivs:

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

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

628

Re: liquidsoap

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

Вещательный скрипт:

#!/usr/bin/liquidsoap
set("log.file.path","___/ls.log")
mypl = mksafe(playlist(mode="random","./generalPlaylist.lst"))
output.icecast.vorbis(host = "___", port=___, password="___", mount="__", mypl)

Отредактировано gef0rce (26-05-2012 14:59:05)

629

Re: liquidsoap

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

630

Re: liquidsoap

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

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

631

Re: liquidsoap

Вот скрипт:

#!/usr/local/bin/liquidsoap

# Configuration
set("log.file.path", "/home/music/data/logs/broadcast.log")
set("server.telnet", true)
set("server.telnet.port", 12381)
set("init.daemon", true)
set("init.daemon.pidfile", false)

# Music's playlists
crazy_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/crazy/"))
club_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/club/"))
rap_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/rap/"))
rock_music = mksafe(playlist(reload = 600, "/home/music/data/public_html/music/rock/"))

# Jingles' playlist
jingles = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
#jingles2 = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
#jingles3 = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))
#jingles4 = mksafe(playlist(reload = 3600, "/home/music/data/public_html/jingles/Jingles/"))

# Mixing music and jingles
crazy_broadcast = smart_crossfade(rotate(weights = [3, 1], [crazy_music, jingles]))
#club_broadcast = smart_crossfade(rotate(weights = [3, 1], [club_music, jingles2]))
#rap_broadcast = smart_crossfade(rotate(weights = [3, 1], [rap_music, jingles3]))
#rock_broadcast = smart_crossfade(rotate(weights = [3, 1], [rock_music, jingles4]))

# Adding requests, "hour open" jingles and normalizing
crazy_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), crazy_broadcast])
#club_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), club_broadcast])
#rap_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), rap_broadcast])
#rock_broadcast = fallback([request.queue(id = "crazy_request"), request.queue(id = "hour_open"), rock_broadcast])

# Outputing
####################################################################################################
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)
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)
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)
####################################################################################################
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)
#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)
#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)
####################################################################################################
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)
#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)
#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)
####################################################################################################
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)
#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)
#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)

632

Re: liquidsoap

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

633

Re: liquidsoap

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

634

Re: liquidsoap

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

635

Re: liquidsoap

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

#!/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 19:53:15)

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

636

Re: liquidsoap

попробуй буфер увеличить

637

Re: liquidsoap

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

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

Отредактировано Falcon (29-05-2012 23:55:26)

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

638

Re: liquidsoap

буфер на input.http

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

639

Re: liquidsoap

Сделал так:
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,....))
Но соап сдох с вышеописанными логами. Кроме того, как процесс он продолжает висеть.

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

640

Re: liquidsoap

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


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

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

641

Re: liquidsoap

пишет tarasian666:

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


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

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

Вполне возможно.
Не пойму, какой stream type ему не нравится(

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

642

Re: liquidsoap

Ну что, так нормальной панельки под liquidsoap так и не появилось никакой?

643

Re: liquidsoap

Еще вопрос по соапу:
Схема:
Поток с Вин 32 ->Linux (soap) -> Win32 Icecast
На выходе, искривляется метадата, русские буквы кракозябрами, как в айскасте, так и в аимпе.
Пробовал output.icecast(fallible=true, timeout=30.,encoding = "CP1251",...); Т.е. добавлять кодировку, но это не спасло.

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

644

Re: liquidsoap

Попробуйте в input.http указать metadata_encoding = "CP1251", в output - encoding = "UTF-8" и в настройках айскаста маунту указать <charset>UTF-8</charset>

645

Re: liquidsoap

Falcon, <charset>UTF-8</charset> в соответствующий mount icecast'a мне помог. Как на всех потоках исправить кракозябры я так и не понял - к каждому маунту приходится писать

646

Re: liquidsoap

Чарсет на маунте - не помогает. Искореженная метадата даже в локальном плеере (винамп, аимп)

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

647

Re: liquidsoap

эфир fm на приемнике, передаем через выход мини-джек на вход (line in) компа, как сделать в соап из этого поток?
p.s. Может кто делал уже такое, а то иногда глюки в fm а находясь за тредевять земель, не могу послушать что в эфире, только что из соапа, но здесь все ок.

648

Re: liquidsoap

в линуксе - без проблем input.alsa, в винде хз как

649

Re: liquidsoap

пишет tarasian666:

в линуксе - без проблем (...), в винде хз как

как же часто я говорю эти слова последнее время -_- . Хотя вот немного костыльная идея в голову пришла - прослушивать с помощью VLC из линейного входа, сделать транслцию по HTTP, а затем эту трансляцию подхватывать liquidsoap'ом

Отредактировано nivs (07-06-2012 12:13:10)

650

Re: liquidsoap

можно но зачем тогда liquidsoap?
также есть всякие simplecast-ы и тп

Отредактировано tarasian666 (07-06-2012 12:18:47)