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

liquidsoap

 

6
Анатолий @ashum
Дальше еще есть команда:
s = map_metadata(append_title, s)

Но мне кажется, что проблема в строке
new = request.dynamic({request.create(get_process_output("1.pl"))})
В лог выводится не то.

6245
Тарас @tarasian666
tarasian666 пишет:

я понял, надо просто обращение к скрипту сделать каждые пару секунд или тп

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

48
tirpir @tirpir
А можно его как службу под win32 запустить, чтобы он автоматом загружался со скрипта?

6245
Тарас @tarasian666
теоретически возможно

17
Yohan @Yohan
tirpir
вот почитайте статейку
**********

17
Yohan @Yohan
вопрос к знатокам)

# функция кроссфейда, здесь желательно ни чего не менять
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(duration=start_next,fader,s)
end

реализация кроссфейда работает я так понял по изменению данных metadata.
когда с трека на трек, то переходит нормально, а вот когда нужно перейти с потока на поток, то в моем случае не проходит.
у меня в теге Title идет рекламка, типа RDS, которая меняется постоянно во время играния трека, и получается пока играет трек, то громкость всё время плавает.
как заставить его работать, чтобы он переключался когда в metadata меняется поле Artist?
либо только в тот момент, когда происходило переключение, а не во время всего вещания
radio = switch([({ 6h-22h }, mount1), ({ 22h-6h }, mount2)])

6245
Тарас @tarasian666
кроссфейд работает по окончанию одного трека и начала следующего, метаданные тут ни при чем
у вас скорей не верно настроено

17
Yohan @Yohan
настроено всё очень просто, как в первом сообщении,
тоько когда плейлисты играют, всё хорошо, но когда идет поток, то при каждом изменении метаданных сразу приглушается звук.
есть такое скрипт TitleStreamBanners.pal стандартный для sam'a

6245
Тарас @tarasian666
да не может такого быть, у меня при смене титлов в семе или другом источнике liquidsoap кроссфейд не накладывает !
Это не возможно если верно настроено, так как кроссфейд наложен только на плейлист, а когда появляеться live то его пускает без него

17
Yohan @Yohan
вот конфиг, что может быть не так?

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

url_1 = input.http("http://ip.ip.ip.ip:8000/test1.aac")
url_2 = input.http("http://ip.ip.ip.ip:8000/test2.aac")

radio = switch([({ 12h-18h }, url_1), ({ 18h-12h }, url_2)])
radio = mksafe(radio)

radio=crossfade(start_next=5.,fade_out=7.,fade_in=5.,radio)

6245
Тарас @tarasian666
функцию кроссфейд можно не писать это то что начинаеться с def crossfade и заканчиваеться end

где тут плейлист? Кроссфейд наложен на оконечный поток что уже не правильно, его накладать на плейлист, а если есть live input то его ставить после кроссфейда

17
Yohan @Yohan
tarasian666
этот конфиг работает, кроссфейд тоже. плейлиста вообще нет.
просто в то время, когда включаешь скрипт в sam, то сразу начинается плаванье громкости.
задача стоит такая, чтобы в поток на несколько часов подсоединить звук с другого потока.
без кроссфейда некрасиво, а так всё работает.
стоит выбор, либбо кроссфейд убирать, либо обновляющиеся метаданные из sam.

6245
Тарас @tarasian666
надо будет проэкспериментировать, что то тут не чисто )

17
Yohan @Yohan
tarasian666
ссылку чтобы тут не светить в личку кинул,
может это какие то глюки win32

6245
Тарас @tarasian666
может еще в switch попробовать добавить track_sensetive=false (точно не помню как)
пробовать другие кроссфейды

30
Azat @Azat
Добрый день, уважаемые знатоки!:) У меня проблема: при вещании на harbor раз в 5-10 секунд вещание прерывается и включается нон-стоп на 1-3 секунды. Liquidsoap 0.9.2. Вот конфиг:

######################
#!/usr/local/bin/liquidsoap -d
set("tag.encodings", ["UTF-8"])

music = mksafe(playlist(reload = 600, "/home/liquidsoap/data/music"))
jingles = mksafe(playlist(reload = 600, "/home/liquidsoap/data/jingles"))
short = mksafe(playlist(reload = 600, "/home/liquidsoap/data/short"))

radio = random(weights = [3, 1, 3, 1], [music, jingles, music, short])

radio = smart_crossfade(start_next = 4.0, fade_in = 1.5, fade_out = 1.5, radio)

radio = add(weights = [1, 5], [radio, switch([({0h0m0s}, single("~/otbivky/00.mp3")), ({1h0m0s}, single("~/otbivky/01.mp3")), ({2h0m0s}, single("~/otbivky/02.mp3")), ({3h0m0s}, single("~/otbivky/03.mp3")), ({4h0m0s}, single("~/otbivky/04.mp3")), ({5h0m0s}, single("~/otbivky/05.mp3")), ({6h0m0s}, single("~/otbivky/06.mp3")), ({7h0m0s}, single("~/otbivky/07.mp3")), ({8h0m0s}, single("~/otbivky/08.mp3")), ({9h0m0s}, single("~/otbivky/09.mp3")), ({10h0m0s}, single("~/otbivky/10.mp3")), ({11h0m0s}, single("~/otbivky/11.mp3")), ({12h0m0s}, single("~/otbivky/12.mp3")), ({13h0m0s}, single("~/otbivky/13.mp3")), ({14h0m0s}, single("~/otbivky/14.mp3")), ({15h0m0s}, single("~/otbivky/15.mp3")), ({16h0m0s}, single("~/otbivky/16.mp3")), ({17h0m0s}, single("~/otbivky/17.mp3")), ({18h0m0s}, single("~/otbivky/18.mp3")), ({19h0m0s}, single("~/otbivky/19.mp3")), ({20h0m0s}, single("~/otbivky/20.mp3")), ({21h0m0s}, single("~/otbivky/21.mp3")), ({22h0m0s}, single("~/otbivky/22.mp3")), ({23h0m0s}, single("~/otbivky/23.mp3"))])])

live = input.harbor("onair")
#live = input.http("http://xxx:8000/onair")

def append_title(m) =
artist = m["artist"]

[("artist","Crazy Radio - #{artist}")]
end

radio = map_metadata(append_title, radio)

#radio = smooth_add(delay = 2.0, p = 0.0, normal = radio, special = live)
radio = fallback(track_sensitive = false, [live, radio])

output.icecast.mp3(restart = true, host = "xxx", port = 8000, mount = "xxx", bitrate = 128, password = "xxx", normalize(radio))
output.icecast.mp3(restart = true, host = "xxx", port = 8000, mount = "xxx", bitrate = 96, password = "xxx", normalize(radio))
output.icecast.mp3(restart = true, host = "xxx", port = 8000, mount = "xxx", bitrate = 24, password = "xxx", normalize(radio))
#####################################


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

UPD: Заметил, что название песни не доходит только тогда, когда в названии есть кириллица (точнее не в самом названии, а если средствами сэма добавлять какую нибудь приставку перед названием)

Отредактировано Azat - 15.12.2011
7094
--- @Render
Приветствую. Кто-нибудь ставил beta3?
Такие вот ошибочки после установки.... Не страшны они?
(наскольк понял не поставился, т.к liquidsoap --help выдаёт нот фоунд)

install: missing file operand
Try `install --help' for more information.
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full#
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4boot... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4o... camlp4o
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4of... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4oof... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4orf... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4prof... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4r... camlp4r
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for camlp4rf... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for ocamlfind... ocamlfind
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for caml/threads.h... no
-bash: checking: command not found
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full# checking for gcc... (cached) gcc
-bash: syntax error near unexpected token `('
root@vps10:/tmp/liquidsoap-1.0.0-beta3-full#

Отредактировано Render - 15.12.2011
6245
Тарас @tarasian666
Azat
похоже обрываеться связь, надо пробовать увиличить буфер и время дисконекта harbor или тестить связь
Render
бета 3 у меня сконфигурировалась но не скомпилировалась, жду обновления меркурия

а у вас вообще непонятно что происходит так что это очень страшно )

7094
--- @Render
tarasian666, спасибо за ответ столь быстрый. Какую версию лучше поставить, beta1, beta2?
Ибо я так понимаю значит собрать мыло на Deb 6, не выйдет. Точнее ошибка в конце во время компилирования, не позволит... пока.

6245
Тарас @tarasian666
для debian можно брать собраные пакеты, они уже включают возможность вещать и в мп3 и в аас+ с некоторыми дополнительными пакетами, подробнее на сайте