926

Re: liquidsoap

господа, не уловил с чего, но пропало динамическое обновление meta даты.
может кто сталкивался?
meta берется динамически:

def rewrite_dynamic_metadata(pls,lab) =
  content = list.hd(get_process_lines("/Clients/WWW/exec/radio/radio_title.php #{lab}"))
  log("--- Add META dynamic: #{content}")
  rewrite_metadata([
    ("artist",meta_artist),
    ("title", "#{meta_title1} #{content} #{meta_title2}" ),
    ("comment",meta_comment)
    ],pls)
end

в описании источника стоит последним:

iplaylist = rewrite_dynamic_metadata(iplaylist,"vinterview")

далее ротация...

zplaylist = fallback(track_sensitive=false, transitions=[trans1,trans1],[
        fallback(track_sensitive=true,[
            iplaylist,
            normalize(aplaylist)
            ]),
        normalize(mplaylist)
        ])
.... итд

trans1 по факту для этого источника вызывает xfade:

def xfade(a,b)
  add(normalize=false,
      [ sequence([ blank(duration=1.),
                   fade.initial(duration=2.,b) ]),
        fade.final(duration=2.,a) ])
end

по сути это все преобразования на этапе смены источника с динамической meta датой.
проставил дату с временем на meta title в скрипте, так он его читает только при старте, далее обращений за meta нет.
чего случилось, ума не приложу, помогите советом.

927

Re: liquidsoap

iplaylist = rewrite_dynamic_metadata(iplaylist,"vinterview")

здесь нет даже намека на динамичность

928

Re: liquidsoap

пишет tarasian666:

iplaylist = rewrite_dynamic_metadata(iplaylist,"vinterview")

здесь нет даже намека на динамичность

ok, раньше как-то работало smile
а как ему намекнуть что оно динамическое?

вот собственно все формирование iplaylist:

iplaylist = delay(5.,input.external(samplerate=7800,restart=true,restart_on_error=true,"/Clients/WWW/exec/radio/radio_stream.php"))
iplaylist = filter(freq=2200.,q=0.7,mode="low",iplaylist)
iplaylist = filter(freq=10.,q=0.8,mode="high",iplaylist)
iplaylist = audio_to_stereo(iplaylist)
iplaylist = amplify(osc.float("/seek3",3.),iplaylist)
iplaylist = rewrite_dynamic_metadata(iplaylist,"vinterview")

на мой взгляд, он по контенту сам определяет и берет что характерно, стрмы из листа...
от туда PCM поток...

Отредактировано den68 (28-03-2014 22:06:35)

929

Re: liquidsoap

Надо привязать к какомо-то событию, например к смене трэка, не помню какие там есть, вроде on_track

930

Re: liquidsoap

попробовал вставить пустышку on_track, да, действительно, в логах при смене траков есть обращения - спасибо!

но не могу сообразить, как правильно параметры функции через on_track передать:
хочется чего-то таково, но так не работает:

source = on_track(rewrite_dynamic_metadata_01(source,"string"),source)

но он принципиально передает функции, (ИМХО), только метадату, судя по мануалу, как правильно в таком случае передать остальные параметры?
работает только так, может я в синтаксисе чего не так понимаю ?

def rewrite_dynamic_metadata_01(m) =
      log("--- Callback is empty #{m}")
end

а хотелось-бы по смыслу так:

def rewrite_dynamic_metadata_01(m,source,string) =
      .....
end

Отредактировано den68 (28-03-2014 23:36:17)

931

Re: liquidsoap

def ab_played(t, m) =
log("Played. Done.")
system("uptime")
end

radio = on_end(ab_played, radio, delay=3.0)

932

Re: liquidsoap

пишет Render:

def ab_played(t, m) =
...
radio = on_end(ab_played, radio, delay=3.0)

пример не в тему, к сожалению...
как из этой функции (ab_played) вызвать map_metadata(...,source) - вот основная проблема, как туда метку "string" и тип "source" передать?

или придется велосипед с флагами придумывать?
выставлять значение, в циклах читать значение, если совпадает, чего-то запускать, но опять возникает проблемы с типом source, как-то он плохо в произвольные функции передается... или я не умею его готовить.. wink

Отредактировано den68 (29-03-2014 09:15:40)

933

Re: liquidsoap

Подскажите, как научить liquidsoap воспринимать ссылки на файлы?

И ещё вопрос.
При отключении liquidsoap у меня отключается icecast. Не важно как, через rc.d скрипт или просто kill pid. Если liquidsoap вырубился, то icecast за ним следом. ОС Freebsd, icecast 2.3.3-kh10, liquidsoap 1.1.1+scm. Как собственно это починить?

upd: второй воспрос думаю отпадает. Косяк у icecast. Вот в логах что:
[2014-04-02  06:13:44] EROR thread/rwlock unlock error triggered at 0x28c3d3b8, source.c:317 (1)

Отредактировано features (02-04-2014 10:30:47)

934

Re: liquidsoap

пишет features:

upd: второй воспрос думаю отпадает. Косяк у icecast. Вот в логах что:
[2014-04-02  06:13:44] EROR thread/rwlock unlock error triggered at 0x28c3d3b8, source.c:317 (1)

У меня такой косяк был на FreeBSD с айсом установленным из портов, после отсоединения источника он падал.
Проблема решилась удалением и компиляцией из сайта icecast-kh

Windows 2003 Server --> Digispot Djin --> CDDXP(TuneInSender) --> Edcast --> IceCast

935

Re: liquidsoap

пишет ubuntu-studio:

пишет features:

upd: второй воспрос думаю отпадает. Косяк у icecast. Вот в логах что:
[2014-04-02  06:13:44] EROR thread/rwlock unlock error triggered at 0x28c3d3b8, source.c:317 (1)

У меня такой косяк был на FreeBSD с айсом установленным из портов, после отсоединения источника он падал.
Проблема решилась удалением и компиляцией из сайта icecast-kh

Да, freebsd и icecast из портов. Возможно фикс в порты не внесли. Спасибо, буду его из сорцов ставить.

936

Re: liquidsoap

Подскажите, как бороться с id источника?
после любых пертубаций (fallback,switch,strip_blank итд) оно меняется внизу пример лога...
а хотелось чтобы id весь путь источника было одним и тем-же, иначе чего хочется не отловить толком...
ситуацию с source.id(b) == source.id("ид источника") не предлагать - работает неправильно, по тому как ИМХО смотрим выше, ид меняется на последнюю операцию с уникальным числом...

может глобальные команды какие на эту тему есть? гугл ничего не дал...

2014/04/06 08:59:09 [lang:1] ---- Transition blognews: = a: empty_9211 b: blognews
2014/04/06 09:00:11 [lang:1] ---- Transition else: = a: empty_9222 b: strip_blank_8817
2014/04/06 09:00:11 [lang:1] ---- Transition else: = a: empty_9241 b: switch_8816
2014/04/06 10:00:00 [lang:1] ---- Transition else: = a: empty_9260 b: quota_8833
2014/04/06 10:00:02 [lang:1] ---- Transition else: = a: map_metadata_8751 b: quota_8812
2014/04/06 10:00:42 [lang:1] ---- Transition else: = a: empty_9295 b: blogin
2014/04/06 10:00:42 [lang:1] ---- Transition else: = a: empty_9314 b: strip_blank_8819
2014/04/06 10:00:43 [lang:1] ---- Transition else: = a: empty_9333 b: strip_blank_8820
2014/04/06 10:00:45 [lang:1] ---- Transition blognews: = a: empty_9352 b: blognews
2014/04/06 10:01:47 [lang:1] ---- Transition else: = a: empty_9363 b: strip_blank_8817
2014/04/06 10:02:05 [lang:1] ---- Transition else: = a: empty_9382 b: speechblog
2014/04/06 10:02:06 [lang:1] ---- Transition else: = a: empty_9401 b: strip_blank_8819
2014/04/06 10:02:07 [lang:1] ---- Transition else: = a: empty_9420 b: strip_blank_8820
2014/04/06 10:02:44 [lang:1] ---- Transition else: = a: empty_9439 b: blogin
2014/04/06 10:02:44 [lang:1] ---- Transition else: = a: empty_9458 b: strip_blank_8817
2014/04/06 10:02:57 [lang:1] ---- Transition else: = a: empty_9477 b: map_metadata_8751
2014/04/06 10:02:58 [lang:1] ---- Transition else: = a: empty_9496 b: strip_blank_8819
2014/04/06 10:02:59 [lang:1] ---- Transition else: = a: empty_9515 b: strip_blank_8820
2014/04/06 10:03:00 [lang:1] ---- Transition else: = a: map_metadata_8751 b: quota_8812

937

Re: liquidsoap

и еще вопрос, как средствами сабжа проиграть только один файл из плей листа.
фалбек не предлагать, поскольку если из листа1 надо проиграть 1 файл, то из остальных источников, а их 4 надо брать  с учетом track_sensitive=true, rotate на практике тоже мало подходит ... или я не умею его готовить ...

938

Re: liquidsoap

Kak izpravit stob v icecast status pokazival ,( Currently playing: ) nepokazivait nazvania pesni , esli ve6ayu v mp3 formate vso ok pokazivait no esli aac+ ili opus to tam pustata:(

p.s. icecast samiy novij i liquidsoap toza.

Отредактировано enzO (07-04-2014 15:54:40)

https://cdn1.iconfinder.com/data/icons/fatcow/16/debian.png

939

Re: liquidsoap

а можно как то обновить конфиг не выключая liquidsoap?
по типу как kill -hup в icecast
чтобы радио не выключать и снова включать

Установка и настройка Icecast и Liquidsoap на Debian

940

Re: liquidsoap

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

941

Re: liquidsoap

пишет enzO:

Kak izpravit stob v icecast status pokazival ,( Currently playing: ) nepokazivait nazvania pesni , esli ve6ayu v mp3 formate vso ok pokazivait no esli aac+ ili opus to tam pustata:(

p.s. icecast samiy novij i liquidsoap toza.

а в шоуткасте как обстоят дела? Может просто liquidsoap не читает теги aac+ изза отсутствия какого либо пакета

942

Re: liquidsoap

Господа, а как скробблить-то нынче? В доке не нашел про скробблинг, только про проигрывание с ластика.
Еще объясните, пожалуйста, что есть harbor.

943

Re: liquidsoap

Я скроблинг делал внешним скриптом, так как с встроеными утилитами не разобрался, если они вобще есть

944

Re: liquidsoap

пишет tarasian666:

Я скроблинг делал внешним скриптом, так как с встроеными утилитами не разобрался, если они вобще есть

Если верить гитхабу - есть. Но как-то это не описано, посему возникли вопросами.
В общем и целом понятно.

945

Re: liquidsoap

Объясните, пожалуйста, как делать заказы - дюже не по мне их дока, ничего не понимаю.

946

Re: liquidsoap

Через queue и fallback, в queue пихать телнетом

947

Re: liquidsoap

а можно подробнее про queue ?

948

Re: liquidsoap

s = fallback([ request.queue(id="q"), s, default ])

949

Re: liquidsoap

Ну а дальше-то как? smile
q.push <uri>? Так он просто висит в очереди и все, не проигрывается.

950

Re: liquidsoap

значит fallback не правильно настроен