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

liquidsoap

 

6245
Тарас @tarasian666
это настройка микшера неправильная

28
pincher @pincher
В том то и дело что никакого микшера и в помине нет!

6245
Тарас @tarasian666
я о програмном

28
pincher @pincher
Понял. Буду пробовать. Спасибо!

28
pincher @pincher
Мой конфиг (большей частью конечно скомунизженный здесь) Спасибо что делились информацией

#!/usr/local/bin/liquidsoap

# функция наложения
def crossfade(~start_next,~fade_in,~fade_out,s)
s = fade.in(duration=fade_in,s)
s = fade.out(duration=fade_out,s)
fader = fun (a,b) -> add(normalize=false,[b,a])
cross(fader,s)
end

#функция для воспроизведения джинглов во время проигрывания музыки
def smooth_add(~delay=0.5,~p=0.2,~normal,~special)
d = delay
fade.final = fade.final(duration=d*2.)
fade.initial = fade.initial(duration=d*2.)
q = 1. - p
c = amplify
fallback(track_sensitive=false,
[special,normal],
transitions=[
fun(normal,special)->
add(normalize=false,
[c(p,normal),
c(q,fade.final(type="sin",normal)),
sequence([blank(duration=d),c(q,special)])]),
fun(special,normal)->
add(normalize=false,
[c(p,normal),
c(q,fade.initial(type="sin",normal))])
])
end

# где будут логи
set("log.file.path","/home/pincher/logs/lqs.log")
set("log.stdout", true)
set("server.telnet", true)

# загружаем плейлист
morning = playlist(reload=600,"/mnt/music/morning")
novosti = playlist(reload=600,"/mnt/music/novosti")
doobeda = playlist(reload=600,"/mnt/music/doobeda")
posleobeda = playlist(reload=600,"/mnt/music/posleobeda")
vecher = playlist(reload=600,"/mnt/music/vecher")
night = playlist(reload=600,"/mnt/music/night")
morning = mksafe(morning)
novosti = mksafe(novosti)
doobeda = mksafe(doobeda)
posleobeda = mksafe(posleobeda)
vecher = mksafe(vecher)
night = mksafe(night)
morning = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, morning)
novosti = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, novosti)
doobeda = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, doobeda)
posleobeda = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, posleobeda)
vecher = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, vecher)
night = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, night)

# Джинглы
jingles = playlist("/mnt/music/jingles/")

# Временные рамки и джинглы поверх музыки
radio = switch(track_sensitive = true,[({7h-9h}, morning),
({9h-9h10}, novosti), ({9h10-13h}, doobeda), ({13h-13h10}, novosti),
({13h10-19h}, posleobeda), ({19h-22h}, vecher), ({ 22h-7h }, night)])
radio = mksafe(radio)
radio = smooth_add(normal=radio,special=switch([({ 5m0s or 15m0s or 30m0s or 45m0s }, jingles)]))

#вещание
output.icecast(%mp3,
host = "localhost", port = 8991,
password = "парол", mount = "radio", radio)

есть fallback mount в icecast настраивал так
(для того чтобы не потеряться в конфиге......начинать отсюда.......
<listen-socket>
<port>8991</port>
</listen-socket>

<mount>
<mount-name>/radio</mount-name>
<hidden>0</hidden>
<charset>utf8</charset>
</mount>
<fileserve>1</fileserve>
)
Сам маунт fallback
<mount>
<fallback-mount>/radio</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<mount-name>/air</mount-name>
<charset>utf8</charset>
</mount>

к нему цепляюсь RadioBoss и получается эфир но пока до ума не довел эту часть
На звание гуру не претендую так как сам только неделю знакомлюсь со связкой icecast+liquidsoap
ранее была icecast+ices пока переход не разочаровал.
Надеюсь пригодиться таким же как я новичкам!

Отредактировано pincher - 06.06.2013
445
Alex @VapSite
morning = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, morning)
novosti = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, novosti)
doobeda = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, doobeda)
posleobeda = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, posleobeda)
vecher = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, vecher)
night = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, night)


так вот оно и есть истинно настоящее программирование в радиовещании ...


)))

28
pincher @pincher
Уверен что у вас есть более презентабельное и алгоритмически верное решение.............так поделитесь а не зубоскальте!

28
pincher @pincher
Столкнулся с проблемой
radio = switch (track_sensitive = true,
при этой конструкции нет перехода по времени а вот если поставить false то работает. Что может быть не так?

6245
Тарас @tarasian666
Все верно, если true оно не будет обрывать трек в нужное время, а если подождет конца трека то время будет уже не то.

28
pincher @pincher
Подскажите есть ли возможность менять трэки в режиме реального времени через telnet? Почитал об этом ********** ,но таких команд у себя не обнаружил......есть ли живой(работающий)пример?
из request у меня только
| request.alive
| request.all
| request.metadata <rid>
| request.on_air
| request.resolving
| request.trace <rid>

6245
Тарас @tarasian666
доступность команд через телнет зависит от конфигурационного файла, телнетом можно управлять лишь тем что есть в файле

менять треки можно если ставить в очередь (queue) трэк и переключать на следующий, или даже запустить отдельный плейлист и через микшер на него переключиться. Но для этого также надо все верно настроить.

28
pincher @pincher
Спасибо! Очень доходчиво. Попытаюсь реализовать.

28
pincher @pincher
Через telnet в liquidsoap есть очень интересная "плюшка" (название плэйлиста).next каким образом можно вытянуть эту информацию с сервера чтобы реализовать на сайте? Спасибо!

6245
Тарас @tarasian666
написать на php клиент telnet и вуаля )

28
pincher @pincher
C telnet клиентом более ли менее разобрался.......выводит данные но появилось то чего я раньще не замечал поскольку liquidsoap воспроизводит randomно файлы из папок то получается что данные из .next верны всего на две песни....то есть то что играет сейчас и следующая. Вопрос таков: Это правильное поведение или чего то я не досмотрел в своем liq файле?

6245
Тарас @tarasian666
насколько я понял то поведение правильное. Чтоб рандумно планировать несколько песен вперед нужно уже сторонним скриптом это делать

28
pincher @pincher
Здравствуйте tarasian666 хотел бы у вас узнать реализацию плеера на вашем сайте? Каким образом при переключении страниц плеер продолжает играть? Сайт организован полностью на flash?

28
pincher @pincher
Спасибо уже разобрался!
Поторопился сказав что разобрался! Подскажите все же как это реализовано у вас? Это Ajax? Просто хочу то же самое а в какую сторону смотреть не знаю.Посоветуйте что сделать фрэйм,popup или все же ajaх и что почитать на эту тему?

Отредактировано pincher - 18.06.2013
6245
Тарас @tarasian666
подгрузка всех страниц через ajax

28
pincher @pincher
Спасибо за ответ. Пока обошелся popup'ом не комильфо конечно,но со временем буду решать и этот вопрос.

Отредактировано pincher - 20.06.2013