Имеется соап, вещающий из упорядоченных плейлистов, но надо каждый день эти плейлисты менять (физически буду менять по крону). Как организовать перечитывание плейлиста перед воспроизведением или что-то в этом роде? Вот конфиг (не факт, что рабочий, он у меня первый, а потестить пока негде):
#!/usr/bin/liquidsoap
# логи
set("log.file.path","/home/radio/soap/load/logs/monday.log)
# загружаем плейлисты и джинглы
playlist_01-06 = playlist("/home/radio/soap/load/01-06.m3u")
playlist_06-09 = playlist("/home/radio/soap/load/06-09.m3u")
playlist_09-18 = playlist("/home/radio/soap/load/09-18.m3u")
playlist_18-01 = playlist("/home/radio/soap/load/18-01.m3u")
jingles_01-06 = playlist("/home/radio/soap/load/01-06.m3u")
jingles_06-09 = playlist("/home/radio/soap/load/06-09.m3u")
jingles_09-18 = playlist("/home/radio/soap/load/09-18.m3u")
jingles_18-01 = playlist("/home/radio/soap/load/18-01.m3u")
# и один проверенный аудиоисточник
security = playlist("/home/radio/soap/load/security.m3u")
# перемешиваем джинглы и плейлист
play_1 = normal(weights = [1, 3], [jingles_01-06, playlist_01-06])
play_2 = normal(weights = [1, 3], [jingles_06-09, playlist_06-09])
play_3 = normal(weights = [1, 3], [jingles_09-18, playlist_09-18])
play_4 = normal(weights = [1, 3], [jingles_18-01, playlist_18-01])
# делаем так, чтобы если основной плейлист упадёт, то подхватился запасной
radio = fallback(track_sensitive = false, [radio, security])
play_1 = fallback(track_sensitive = false, [play_1, security])
play_2 = fallback(track_sensitive = false, [play_2, security])
play_3 = fallback(track_sensitive = false, [play_3, security])
play_4 = fallback(track_sensitive = false, [play_4, security])
# создаём цельный
radio = switch([ ({1h-6h}, play_1), ({6h-9h}, play_2), ({9h-18h}, play_3), ({18h-1h}, play_4)])
# добавляем озвучивание времени каждый час. Дофига, зато без мозговнушения с кроном.
radio = switch(track_sensitive=false, [({0h0m0s},"/home/radio/soap/collection/hello_p_fm/0.mp3"))])
radio = switch(track_sensitive=false, [({1h0m0s},"/home/radio/soap/collection/hello_p_fm/1.mp3"))])
radio = switch(track_sensitive=false, [({2h0m0s},"/home/radio/soap/collection/hello_p_fm/2.mp3"))])
radio = switch(track_sensitive=false, [({3h0m0s},"/home/radio/soap/collection/hello_p_fm/3.mp3"))])
radio = switch(track_sensitive=false, [({4h0m0s},"/home/radio/soap/collection/hello_p_fm/4.mp3"))])
radio = switch(track_sensitive=false, [({5h0m0s},"/home/radio/soap/collection/hello_p_fm/5.mp3"))])
radio = switch(track_sensitive=false, [({6h0m0s},"/home/radio/soap/collection/hello_p_fm/6.mp3"))])
radio = switch(track_sensitive=false, [({7h0m0s},"/home/radio/soap/collection/hello_p_fm/7.mp3"))])
radio = switch(track_sensitive=false, [({8h0m0s},"/home/radio/soap/collection/hello_p_fm/8.mp3"))])
radio = switch(track_sensitive=false, [({9h0m0s},"/home/radio/soap/collection/hello_p_fm/9.mp3"))])
radio = switch(track_sensitive=false, [({10h0m0s},"/home/radio/soap/collection/hello_p_fm/10.mp3"))])
radio = switch(track_sensitive=false, [({11h0m0s},"/home/radio/soap/collection/hello_p_fm/11.mp3"))])
radio = switch(track_sensitive=false, [({12h0m0s},"/home/radio/soap/collection/hello_p_fm/12.mp3"))])
radio = switch(track_sensitive=false, [({13h0m0s},"/home/radio/soap/collection/hello_p_fm/13.mp3"))])
radio = switch(track_sensitive=false, [({14h0m0s},"/home/radio/soap/collection/hello_p_fm/14.mp3"))])
radio = switch(track_sensitive=false, [({15h0m0s},"/home/radio/soap/collection/hello_p_fm/15.mp3"))])
radio = switch(track_sensitive=false, [({16h0m0s},"/home/radio/soap/collection/hello_p_fm/16.mp3"))])
radio = switch(track_sensitive=false, [({17h0m0s},"/home/radio/soap/collection/hello_p_fm/17.mp3"))])
radio = switch(track_sensitive=false, [({18h0m0s},"/home/radio/soap/collection/hello_p_fm/18.mp3"))])
radio = switch(track_sensitive=false, [({19h0m0s},"/home/radio/soap/collection/hello_p_fm/19.mp3"))])
radio = switch(track_sensitive=false, [({20h0m0s},"/home/radio/soap/collection/hello_p_fm/20.mp3"))])
radio = switch(track_sensitive=false, [({21h0m0s},"/home/radio/soap/collection/hello_p_fm/21.mp3"))])
radio = switch(track_sensitive=false, [({22h0m0s},"/home/radio/soap/collection/hello_p_fm/22.mp3"))])
radio = switch(track_sensitive=false, [({23h0m0s},"/home/radio/soap/collection/hello_p_fm/23.mp3"))])
# radio = smooth_add(track_sensitive=false, normal = radio, special = "/home/radio/soap/collection/hello_p_fm/00.mp3")
# запускаем вещалку
output.icecast(%mp3,
host = "localhost", port = 8000,
password = "owhackmepls", mount = "test", smart_crossfade(mksafe(myplaylist))
genre = "Radio",
name = "Интернет радио",
url="http://radio")
Второй вопрос... switch видимо резко заменяет плейлист звуковым файлом, а потом резко возвращает назад. Возможно ли (примерно за 1 секунду, но плавно) сильно приглушить музыку, проиграть файлик ровно в определённое время, и вернуть громкость основному потоку (тоже быстро, но не рывком)? Нагуглил smooth_add, но в документации не разобраться
smooth_add
(?delay:float,?p:float,
normal:source(audio='#a,video='#b,midi=0),
special:source(audio='#a,video='#b,midi=0))->
source(audio='#a,video='#b,midi=0)
Отредактировано nivs (15-04-2012 03:28:23)