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

liquidsoap

 

18
Максим @Maksim_CHaykin
tarasian666 пишет:

впихать в queue через telnet
или
генерировать плейлист в файл который liquidsoap будет читать обычным способом

об этом я тоже думал. Как думаешь будет лучше?

6245
Тарас @tarasian666
через telnet можно добавлять и добавлять в случае чего, только когда очередь кончится то наверно будет молчать

если через плейлист то добавление не будет таким динамичным, перечитывание плейлиста будет только по заданному времени, зато если доиграет до конца то начнет сначала

тут уже что больше подходит в конкретных нуждах

18
Максим @Maksim_CHaykin
tarasian666 пишет:

через telnet можно добавлять и добавлять в случае чего, только когда очередь кончится то наверно будет молчать

Даже если fallback настроить?

6245
Тарас @tarasian666
с fallback не будет молчать

18
Максим @Maksim_CHaykin
tarasian666 пишет:

с fallback не будет молчать

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

1
mikhailkrasov @mikhailkrasov
Друзья, помогите пожалуйста написать код. В принципе по примерам я уже запустил простецкий сервак, но мне необходимо реализовать такую схему...

Примерная суть: 5 маунтпоинтов на harbor. Два из них рандомом активируются (то есть играет двое человек в эфире. Один заканчивает, другой его сменяет) Далее, если расписывать кождого через fallback, то получается, что тот, кто прописан первее, тот и должен отключиться, тогда следующий попадет в эфир. Но нужно сделать так, чтобы каждое последующее подключение выходило поверх предыдущего.

96
solariz @solariz
Уважаемые, нуждаюсь в добром совете!

Имеем:

set("harbor.bind_addr","0.0.0.0")
live = audio_to_stereo(input.harbor(id="livedj", port=8020, password="password", "livedj"))

К этому маунтпоинту dj снаружи подключаются с помощью traktor, который отдает теги проигрываемых песен.

morningregress = audio_to_stereo(playlist("/home/radio/audio/denplaylist.m3u"))
jin = audio_to_stereo(jin_tag(playlist("/home/radio/audio/jin.m3u")))
morningregress = random(weights=[1,5],[jin,morningregress])

Внимание, вопрос: в момент переключения dj песен, почему-то срабатывает random(weights=[1,5],[jin,morningregress]) и перед песней проигрывается кусок джингла из плейлиста jin. В тот-же момент затираются id3-теги песни. Как этого избежать?

Отредактировано solariz - 16.08.2015
1
Huko @Huko
День добрый !
Есть 2 плейлиста, 1 большой с музыкой, другой маленький с джинглами (3-4 шт).
Как сделать что-бы плейлист с джинглами проигрывался несколько раз в час в режиме normal и только 1 раз от начала до конца и потом снова переключалось на плейлист с музыкой ?
Сейчас конструкция с использованием switch переключает на джинглы но они начинают проигрываться по кругу,
можно ли как-то это обойти желательно без использования таких конструкций как playlist.merge или playlist.once т.к. при их использовании я не вижу очередей этого плейлиста через telnet и плюс при их проигровании в лог сыпится что-то типа такого:
[request:3] Nonexistent file or ill-formed URI "/opt/btsync/ro/radio/Jingles/golos.mp3"
хотя все на месте и нормально играется.

4
Maksimum @Maksimum
Всем здрасьте! Прошу помощи. В общем, сделал расписание через switch. Две часовые отбивки (одна стандартная, а другая выходит только в полночь и полдень), и два блока (~ на 20й и 50й минуте). Остальное - музыка. Запустил, порадовался что всё выходит как надо, но... эта собака отыграет час-два и на расписание забивает, т.е. в эфире начинает играть только музыка. Кто-нибудь сталкивался с подобной проблемой?

Отредактировано Maksimum - 07.11.2015
25
djgelius @djgelius

#!/usr/bin/liquidsoap

set("init.daemon", true)
set("init.daemon.pidfile.path", "/var/run/liquidsoap/icecast.pid")

set("log.file", true)
set("log.file.path", "/var/log/liquidsoap/radio_7000.log")

set("log.stdout",false)

set("server.telnet", true)
set("server.telnet.bind_addr", "127.0.0.1")
set("server.telnet.port",1234)

# нонстоп
myplaylist = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/nonstop/01"))

jingles = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/jingls"))

#сетка вещания

#понедельник
outmind = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/outmind"))
roman_volkov = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/roman_volkov"))
sky_paradise = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/sky_paradise"))

#вторник
sairtech = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/sairtech"))
constantine_kashirin = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/constantine_kashirin"))
aeroritmix = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/aeroritmix"))
aquasound = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/aquasound"))

#среда
value = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/value"))
alexnegniy = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/alexnegniy"))
yaricmelody = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/yaricmelody"))
kontroller_project = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/kontroller_project"))
outey = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/outey"))
kirill_forvard = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/kirill_forvard"))

#четверг
mischa_sobakin = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/mischa_sobakin"))
airdigital = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/airdigital"))
armin_live = input.http("http://pub8.di.fm:80/di_trance")

#пятница
helgi = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/helgi"))
foxt = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/foxt"))
deimandedis = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/deimandedis"))
dj_silere = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/dj_silere"))
ocean_moments = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/ocean_moments"))
guest_radio = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/guest_radio"))

#суббота
djkostya_d = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/djkostya_d"))
james_angel = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/james_angel"))
artem_maltsev = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/artem_maltsev"))
moonrider = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/moonrider"))
mj_mark = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/mj_mark"))

#воскресенье
maksim_day = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/maksim_day"))
tailer = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/tailer"))
dj_slaider = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/dj_slaider"))
alexander_igorev = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/alexander_igorev"))
dj_denori = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/dj_denori"))
belaha = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/belaha"))
dj_gelius = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/dj_gelius"))

#технические плейлисты
tehnical = audio_to_stereo(playlist(reload=360, "/var/www/radio/music/tehnical"))

rotate_air = random(weights=[1,3],[jingles,myplaylist])

prog = switch([

({1w20h00m00s-1w20h59m59s}, once(outmind)),
({1w21h00m00s-1w21h59m59s}, once(roman_volkov)),
({1w22h00m00s-1w22h59m59s}, once(sky_paradise)),

({2w18h00m00s-2w18h59m59s}, once(sairtech)),
({2w21h00m00s-2w21h59m59s}, once(constantine_kashirin)),
({2w22h00m00s-2w22h59m59s}, once(aeroritmix)),
({2w23h00m00s-2w23h59m59s}, once(aquasound)),

({3w16h00m00s-3w16h59m59s}, once(value)),
({3w18h00m00s-3w19h59m59s}, once(alexnegniy)),
({3w20h00m00s-3w20h59m59s}, once(yaricmelody)),
({3w21h00m00s-3w21h59m59s}, once(kontroller_project)),
({3w22h00m00s-3w23h59m59s}, once(outey)),
({4w0h00m00s-4w0h59m59s}, once(kirill_forvard)),

({4w18h00m00s-4w19h59m59s}, once(mischa_sobakin)),
({4w20h00m00s-4w20h59m59s}, once(airdigital)),
({4w22h00m00s-4w23h59m59s}, armin_live),

({5w16h00m00s-5w16h59m59s}, once(helgi)),
({5w17h00m00s-5w18h59m59s}, once(foxt)),
({5w19h00m00s-5w19h59m59s}, once(deimandedis)),
({5w20h00m00s-5w20h59m59s}, once(dj_silere)),
({5w21h00m00s-5w21h59m59s}, once(ocean_moments)),
({5w22h00m00s-5w22h59m59s}, once(guest_radio)),

({6w15h00m00s-6w16h59m59s}, once(djkostya_d)),
({6w18h00m00s-6w18h59m59s}, once(james_angel)),
({6w20h00m00s-6w20h59m59s}, once(artem_maltsev)),
({6w21h00m00s-6w21h59m59s}, once(moonrider)),
({7w0h00m00s-7w0h59m59s}, once(mj_mark)),

({7w15h00m00s-7w15h59m59s}, once(maksim_day)),
({7w17h00m00s-7w17h59m59s}, once(tailer)),
({7w18h00m00s-7w18h59m59s}, once(dj_slaider)),
({7w19h00m00s-7w19h59m59s}, once(alexander_igorev)),
({7w20h00m00s-7w20h59m59s}, once(dj_denori)),
({7w21h00m00s-7w21h59m59s}, once(belaha)),
({7w22h00m00s-7w22h59m59s}, once(dj_gelius)),

({1w19h55m-1w20h00m}, once(tehnical))


])

radio = fallback(track_sensitive=false,[prog, rotate_air])

radio = mksafe(radio)
radio = smart_crossfade(start_next=6.0, fade_out=3.0, fade_in=3.0, radio)

output.icecast(%mp3(bitrate=256, samplerate = 44100, stereo = true),
host = "localhost",
port = 7000,
name="EDM Radio 256 Kbit/s",
genre="Elecrtonic",
url="http://edmradio.ru/",
description="Electronic Dance Music Radio",
password = "xxxxxxxxxxxx",
mount = "/autodj",
radio)

Здравствуйте!
Почему у меня не всегда загружается сетка вещания? нонстоп играет а расписание не работает иногда! Не могу полноценно перейти на liquidsoap из-за этого

10
oprst @oprst
Привет, уважаемые гуру.
Подскажите пожалуйста решение моей проблемы.
Есть очень простой скрипт воспроизведения, например:
#!/usr/bin/liquidsoap

set("log.level", 3)
set("log.file",true)
set("log.stdout",false)

wd = "/srv/music"
pl = "#{wd}/playlist"
sc = "#{wd}/sec"
ni = "#{pl}/night"
da = "#{pl}/day"

mus_ni = mksafe(playlist (mode="random", reload = 10800, "#{ni}"))
mus_da = mksafe(playlist (mode="random", reload = 10800, "#{da}"))
security = mksafe(playlist("#{sc}"))

music = fallback(track_sensitive = false, [switch([
({ 18h - 08h }, mus_ni),
({ 08h - 18h }, mus_da)]),security
])

music = crossfade(start_next=10., fade_out=10., fade_in=5., music)
music = compress(attack=2., ratio=2., knee=6., gain=-1., threshold=-4.64, release=50., music)
music = ladspa.tap_equalizer(band_7_freq=16., band_7_gain=3., music)
music = ladspa.tap_limiter(output_volume=-1., limit_level=1., music)

output.alsa(music)

Бьюсь уже который день со следующей проблемой. В момент перехода (crossfade) в логах вываливается ошибка, типа:
2015/12/22 08:39:54 [alsa_out(default):2] Underrun!
2015/12/22 08:39:54 [alsa_out(default):2] Trying to recover..
2015/12/22 08:39:58 [alsa_out(default):2] Underrun!
2015/12/22 08:39:58 [alsa_out(default):2] Trying to recover..

В момент появления этой ошибки происходит заикание звука. Я видел на форумах, что подобная проблема существует, но простите меня пожалуйста, я никак не могу избавится от нее и найти решение. Подскажите пожалуйста, в чем может быть дело. Заранее благодарю.

2
artem78 @artem78
У меня вывод звука сейчас идёт в интернет. Как добавить к нему вывод ещё на hw0:0?


set("log.file",false)
set("log.stdout", true)
set("log.level", 3)

set("tag.encodings",["UTF-8"])

set("server.telnet", true)


# Live
#set("harbor.bind_addr","0.0.0.0")

live = audio_to_stereo(
input.harbor(
id="LIVE",
port=8010,
password="123",
"live"
)
)



# Music
myplaylist = playlist(mode = "random", "/home/radio/music/")
myplaylist = mksafe(myplaylist)


radio = fallback(id="STREAM", track_sensitive = false, ([
fallback.skip(input=live, nrj(myplaylist)),
blank()
]))


output.icecast(
%mp3(bitrate=128, samplerate = 44100, stereo = true),
host = "127.0.0.1",
port = 8000,
name="Test radio",
genre="various",
url="",
description="",
user = "source",
password = "123",
mount = "/radio",
radio
)




UPDATE 1

Если добавить в конец строку:
output.alsa(radio)
при запуске возникает ошибка:
2016/06/03 02:50:27 [threads:1] Thread "alsa_out(default)" aborts with exception Alsa error: No such file or directory!
Thread 6 killed on uncaught exception Alsa.Unknown_error(2)

Отредактировано artem78 - 03.06.2016
1
asnik @asnik
Всем привет!
Не могу найти решение казалось бы простой задачи. Делаю радио с музыкой 24ч и джинглами. Но есть также передачи в виде последовательного набора файлов(фактически это плейлисты со списком локальных mp3 файлов, генерируемые периодически по cron). Нужно их проигрывать с началом в заданное время однократно (единоразово) в день, но ежедневно. Например, в 14:00 тормозим музыку, включаем последовательно 4 файла передачи1(плейлист), по окончании передачи возобновляем музыку.
Включить передачи в switch на заданный промежуток времени (типа с 14 до 15) нельзя, т.к. не известна заранее продолжительность. Switch либо отбрубает передачи не вовремя, либо наоборот, плейлист успевает пойти повторно по кругу.
Пробовал sequence, playlist.once - но они срабатывают правильно лишь однократно и останавливают плейлист передачи. В следующее включение источник уже не активен.
Пробую playlist.reloadable с функцией перегрузки плейлиста.Но он перегружает мгновенно и плейлист сразу идет по кругу.
Можно ли как-то установить таймаут для перегрузки в playlist.reloadable? Или можно ли как-то активировать заново источник, прибитый после playlist.once? Или есть более гениальный путь, как проигрывать плейлисты ежедневно, но только по одному разу?

245
radio_good @radio_good
млять чуваки .. как можно заморачиваться на юникс платформах с радио ? Не понимаю. Заняться в жизни чтоль больше нечем ? Кому оно нужно такое Г? Покажите мне хоть одно радио на юниксах, где слушателей больше сотни и эфир приятно будет слушать .. .. 95% нет такого радио.

з.ы. windows - качество, удобство и простота в реализации любых ваших нереальных идей. Ключ от всех дверей славы ..

Отредактировано radio_good - 24.08.2016
29
Григорий @gyurgin_1_3
Не путайте именно контент с вещанием. Покажите мне сервер на винде котрый выдержит в пике 30 000 слушателей.
Windows - система, качество - люди.
Удобство - не спорю. Все остальное не про интернет вещание.
P.S. По звуку вот можете протестировать, не все сидят и разглогольстувуют [url=radioprocessor]http://radioprocessor.com/[/url] я там сделал деморежим.

Отредактировано gyurgin_1_3 - 26.08.2016
245
radio_good @radio_good
не .слабенький процессор .. почти ничего он толком и не меняет картину ... по сути это максимайзер. Динамику звучанию он врятли сможет дать.
рано предоставлчешь услугу ... хотя бы пресетов навоял шутк десять. Не каждыы знает и не разберется в обработке и терминах процессора.
Я бы не пользовался онлайн, а сделал проще - муз. базу прогнал в оффлайн обработке и вопрос снят. Например, Samplitude или в др.
Если хочешь вообще классный звук был "FM" то однозначно Sonos, StereoTool ну или в конце концов Sam )
Вопрос вообще не вижу сложным. всё делается на раз-два-три ... программным путем.
Про обработку Аппаратными средствами здесь на форуме нет смысла говорить )

про нагрузку ... раньше пятерка р/станций (DFM/Mcarlo/Maximum/русское Р/) вещали в интернет с Windows media server
сейчас не знаю ... надо смотреть ихнии потоки ...

Вот в чем я с вами соглашусь на 100% так это только в ценовой политики этих двух платформ. Тут без компромиисоов - *nix

так что gyurgin_1_3 ...как юзал свой bigtunesradio.com на никсах так и продолжай дальше ... сайт скатился до "просто плеер"...смысл потихоньку сходит на нет .... рекламой бы лучше занялся своего проекта ...

Отредактировано radio_good - 30.08.2016
25
djgelius @djgelius
кто побывал ставить на debian 8 + icecast 2.4.0?

131
Enzo @enzO
ya stavil no sovetalbi ludza icecast KH versiju postavit :)

419
gyurgin_ @gyurgin_
radio_good пишет:

не .слабенький процессор .. почти ничего он толком и не меняет картину ... по сути это максимайзер. Динамику звучанию он врятли сможет дать.
рано предоставлчешь услугу ... хотя бы пресетов навоял шутк десять. Не каждыы знает и не разберется в обработке и терминах процессора.
Я бы не пользовался онлайн, а сделал проще - муз. базу прогнал в оффлайн обработке и вопрос снят. Например, Samplitude или в др.
Если хочешь вообще классный звук был "FM" то однозначно Sonos, StereoTool ну или в конце концов Sam )
Вопрос вообще не вижу сложным. всё делается на раз-два-три ... программным путем.
Про обработку Аппаратными средствами здесь на форуме нет смысла говорить )

про нагрузку ... раньше пятерка р/станций (DFM/Mcarlo/Maximum/русское Р/) вещали в интернет с Windows media server
сейчас не знаю ... надо смотреть ихнии потоки ...

Вот в чем я с вами соглашусь на 100% так это только в ценовой политики этих двух платформ. Тут без компромиисоов - *nix

так что gyurgin_1_3 ...как юзал свой bigtunesradio.com на никсах так и продолжай дальше ... сайт скатился до "просто плеер"...смысл потихоньку сходит на нет .... рекламой бы лучше занялся своего проекта ...

Сорри, опять сменил ник, теперь без лохинзы, это железно будет мой))
Да о массштабном предоставлении услуг речи нет, сделали лендинг чтобы просто демонстрировать что такое возможно.
Пресеты - понятно надо, но это тесты, время которого катастрофически не хвататет и где то просто лень.
Вобще это одна из частей массштабного приложения для радиохостинга и все доводки потом, кто захочет использовать сейас и тем самым станет тестером получит полную поддержку и ему все настроят в лучшем виде.
Было время - шпарили (а в интросетях наверняка логгеры играют на windows media, ну потому что удобно).
За Бигтюнс не надо мне - отрабатываем синдикации еле еле - опять таки некому заниматься серьезно, да и не горит.
Просто плеер скоро сменю на непросто плеер, и вобще он превратился в тестовый и "повещать для своих", зато в отличие от многих имеет свой подкаст и кучу плюшек на субдоменах.
Поймите - я не против винды, в плане генерации контента варианта ПРОЩЕ и ДОСТУПНЕЙ не придумать, хотя тут конечно для меня примари, да и наверно существует только Джин который увы не всем по карману и обсуждать тут нам нечего.

Отредактировано gyurgin_ - 10.09.2016
245
radio_good @radio_good
для любительского и полупрофессионального интернет-радио radioboss уже дорос до уровня Джина ... и цена в 3000 руб )