101

Re: liquidsoap

Пробовал. не помогло. версия liquidsoap 1.0-beta(svn)

102

Re: liquidsoap

пишет Danila:

metra52 конфиг в студию

tarasian666 а можешь поподробнее описать вариант какой-нибудь с удалённым управлением микрофоном или что-то в этом духе?, input.alsa не заработала, как не крутил

тогда ищем input harbor на оф сайте

103

Re: liquidsoap

может кто знает как настроить LiGUIdsoap mixer, на оф сайте ничего не нашёл, в самой проге есть следующее: A mixer is a mixing table. It has some input sources, and allows you
to select which one you want to play, tune the volume, etc

Отредактировано Danila (18-03-2011 19:07:22)

104

Re: liquidsoap

поставь дефолтную кодировку 1251 в браузере

105

Re: liquidsoap

пишет metra52:

#!/usr/local/bin/liquidsoap
set("log.file.path","/tmp/nonstop.log")

set("init.daemon",true)
set("init.daemon.pidfile",false)

# telnet server для использования liGUIdsoap
set("server.telnet", true)

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

#дневной плейлист
day = out(playlist("/var/www/metra52/data/www/onlydc.ru/music/day.txt"))
#ночной
night = out(playlist("/var/www/metra52/data/www/onlydc.ru/music/night.txt"))
#Джинглы
jingles = out(playlist("/var/www/metra52/data/www/onlydc.ru/music/jingls.txt"))

myplay = switch([({ 3h-23h }, day),({ 23h-3h }, night)])

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


#построение плейлиста с кроссфейдом
#fade_out - затухание предыдущей песни в сек
#fade_in - нарастание следующей песни в сек

radioq = mksafe(crossfade(start_next=1.,fade_out=7.,fade_in=7.,myplay))
radio = smooth_add(normal=radioq,special=switch([({ 20m0s or 50m0s }, jingles)]))

#radio = random(weights = [1, 4],[jingles, myplay])

#запускаем вещалку
#output.icecast(%mp3,
#     host = "localhost", port = 9000,
 #    password = "****", mount = "non-stop",name="OnLY DanCe Radio ~ RJ^NOED ~net", description="Club Music For LIVE", genre="Club House",url="http://onlydc.ru",radio)

output.icecast(%mp3,
     host = "localhost", port = 9000,
     password = "***", mount = "test",name="OnLY DanCe Radio ~ RJ^NOED ~net", description="Club Music For LIVE", genre="Club House",url="http://onlydc.ru",radio)

Вот конфиг. орет вот такое Error when initializing source at line 15, char 8-36: a source cannot belong to two clocks (cross_4408[], wallclock_ao[]).

106

Re: liquidsoap

кое-что нашёл, помогите воплотить в жизнь микрофон
mix

(?id:string, [source])->source
Mixing table controllable via the telnet interface.

id (string – defaults to ""): Force the value of the source ID.
(unlabeled) ([source])

а всё вот так: radiomix = mix([radio,request.equeue(id="mic")])
mic - название "кнопочки" в liGUIdsoap
нужна помощь в подключении микрофона - какой-нить кнопочки в liGUIdsoap
описанное выше позволяет микшировать, но микрофон не выводит, а очень хочеться sad

Отредактировано Danila (18-03-2011 21:48:34)

107

Re: liquidsoap

а sam broadcaster можно прикрутить к liquidsoap не как input.http а с управлением, переключением его потока и потока с liquidsoap, громкость регулировать??

108

Re: liquidsoap

только через input harbor

109

Re: liquidsoap

а по-подробнее про input.harbor можешь рассказать? чем на него надо сигнал слать? что на другом компе ставить? где регулировать громкости? как переключать каналы?
при попытке настроить у меня слетают маунты все на icecast'е

Отредактировано Danila (18-03-2011 23:41:43)

110

Re: liquidsoap

он работает по принципу sc_trans2 подключаетесь к liquidsoap как к серверу, а он переключает (если настроить) с плейлиста на то что подключено к harbor
к нему можно подключатся любым источником, sam-ом или винампом и тд

111

Re: liquidsoap

по поводу input.harbor:
set("server.telnet", true)
#localhost - цифрами - например 192.168.0.1
set("harbor.bind_addr","localhost")
set("harbor.port",9000)
set("harbor.password","pass")
live = input.harbor("live.ogg")
radiolive = fallback(track_sensitive=false,[live,radio])
в sam broadcaster - адрес сервака моунт - /live.ogg
порт - 9000
но приходиться делать рестарт энкодера ( выпадает с ошибкой при остановке воспроизведения) в сэме для перехвата потока на себя

Отредактировано Danila (20-03-2011 16:40:32)

112

Re: liquidsoap

конфиг 0.9.2
вот что получилось smile
классная вещь
подведём итоги:

#!/usr/bin/liquidsoap -d

# где будут логи
set("log.file.path","/tmp/test.log")

# telnet server для использования liGUIdsoap
set("server.telnet", true)
set("harbor.bind_addr","192.168.100.61")
set("harbor.port",9000)
set("harbor.password","1475963")

################################
# вход с другой тачки
live = input.harbor("live.ogg")
live=rewrite_metadata([("artist","XX-Radio"),
                            ("title","LIVE Stream"),
                        ("comment","http://xx.com")],live)
################################

####################                       
#ПОСТОЯННЫЕ ФУНКЦИИ                       
####################
# функция наложения
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

####################
#META
####################
# META-данные название песен
def rewrite_metadata(l,~insert_missing=true,s)
  def map(m)
    def apply(x)
      label = fst(x)
      meta = snd(x)
      if list.mem_assoc(label,l) then
        pattern = l[label]
        (label,pattern % m)
      else
        (label,meta)
      end
    end
    m = list.map(apply,m)
    def add(m,x)
      label = fst(x)
      pattern = snd(x)
      # If m does not have (label,_), then it was
      # not processed previously, we have to
      # add it now..
      if not list.mem_assoc(label,m) then
        list.append(m,[(label,pattern % m)])
      else
        m
      end
    end
    list.fold(add,m,l)
  end
  map_metadata(map,insert_missing=insert_missing,s)
end   

# к каждому кусочку метаданных прибаляем слово
def append_title(m) =
  # берём настоящее название
  # Grab the current title
  title = m["title"]
# вставляем новое значение
  [("title","#{title} - (((=Radio=)))")]
end

####################################
#PLAYLIST
####################################
# загружаем плейлист - папку с *.ogg, выравнивание громкости, обновление содержимого
music = smart_crossfade(normalize(playlist(reload=600, mode="normal", "/home/radio/radio/music")))
music = mksafe(music)

# построение плейлиста с кроссфейдом
#fade_out - затухание предыдущей песни в сек
#fade_in - нарастание следующей песни в сек
music=crossfade(start_next=1.,fade_out=7.,fade_in=5.,music)

# загружаем джинглы - папку с *.ogg
jingles = playlist("/home/radio/radio/jingles")

# остроение листа с джинглами,
# воспроизведение в 00,15,30,45 минут каждого часа
radio = smooth_add(normal=music,special=switch([
({ 00m0s or 15m0s or 30m0s or 45m0s },
jingles)]))

# Применить  новые мета-данные к названию
radio = map_metadata(append_title, radio)

# добавляем переключение между harbor live и основным плей-листом
radiolive = fallback(track_sensitive=false,[live,radio])

#############################
#ВЫХОДЫ
#############################
output.icecast.vorbis(
    mount="High-quality.ogg",quality=8.,
    host="localhost",port=8000,password="pass",genre="xx",
    name="xx", description="xx", url="http://xx.com",
    restart=true,radiolive)
 
output.icecast.vorbis(
    mount="Low-quality.ogg",quality=2.,
    host="localhost",port=8000,password="pass",genre="xx",
    name="xx", description="xx", url="http://xx.com",
    restart=true,radiolive)

теперь буду добивать 1.0.0 версию

113

Re: liquidsoap

а можно ли как-то так сделать?:
output.icecast.vorbis(
    mount="High-quality.ogg",quality=8.,
    host="localhost",port=8000,password="pass",genre="xx",
    name="xx", description="xx", url="http://xx.com",
    restart=true,music)
именно так НЕ работает
интересует именно вот что:как на какой-то стадии обработки вырвать поток и отправить на icecast?

как сделать crossfading при смене источника между harbor.input и radio?
и ещё:как собрать 2 потока в 1 (одновременное воспроизведение)?
и как регулировать громкость этих потоков в liGUIdsoap?
возможна ли полная фильтрация голоса (отсеивание) с потока?
проблема: есть щелчёк при проигрывании джинглов в конце при поднятии громкости музыки, может кто знает как убрать?(джинглы записывались в студии звукозаписи, в них самих всё ок smile )
smile так много вопросов, сам не ожидал, но всё таки liquidsoap - классный зверь=)
только не надо меня отправлять на оф сайт - там я этого не нашёл smile

Отредактировано Danila (20-03-2011 21:29:17)

114

Re: liquidsoap

Народ, плиз кто нибудь пробовал выводить на сайт - трек, что играет и последние 10, как это осуществить то?

Отредактировано Amelion (21-03-2011 12:15:40)

115

Re: liquidsoap

вам в раздел "скрипты для..."

116

Re: liquidsoap

пишет tarasian666:

вам в раздел "скрипты для..."

что для?

117

Re: liquidsoap

icecast или shoutcast в зависимости что у вас установлено

118

Re: liquidsoap

стоит Icecast2

119

Re: liquidsoap

пишет Danila:

как сделать crossfading при смене источника между harbor.input и radio?

так же как и между песен, правда у меня пока удалось сделать кроссфейд только "в одну сторону" при подключении или отключении

пишет Danila:

и ещё:как собрать 2 потока в 1 (одновременное воспроизведение)?

smooth_add например

пишет Danila:

и как регулировать громкость этих потоков в liGUIdsoap?

mix.py но gui у меня кажеться не работает

пишет Danila:

возможна ли полная фильтрация голоса (отсеивание) с потока?

если найдете подходящий плагин ladspa и прикрутите его туда

пишет Danila:

проблема: есть щелчёк при проигрывании джинглов в конце при поднятии громкости музыки, может кто знает как убрать?

а каким методом джинглы добавляються?

120

Re: liquidsoap

пишет Danila:

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

У меня тоже самое было, только не с джинглами а с переходом между треками. Если я правильно понял, то функции описывать в скрипте не нужно, вот мой конфиг:

[mono]
#!/usr/local/bin/liquidsoap
#*Liquidsoap 1.0.0-beta+svn (trunk/liquidsoap@rev8237)*#

set("init.daemon",true)
set("init.daemon.pidfile",false)
set("log.file.path","/var/log/liquidsoap.log")

jingles = playlist("/data/air/jingles")

music = smart_crossfade(normalize(playlist(reload=600, "/data/air/tracks")))
music = mksafe(music)

radio = smooth_add(normal=music,special=switch([({ 00m0s or 15m0s or 30m0s or 45m0s }, jingles)]))

#######################OUTPUT#######################
# выход на Icecast2
##
    output.icecast(
        %mp3,
        mount="/myradio",
        host="127.0.0.1", port=8000,
        password="mypasswd",
        genre="various",
        url="http://www.site.com",
        description="My Best Radio",
        name="My Best Radio",
        radio
    )
[/mono]

Джинглы в треках "всплывают", crossfading есть, но он как то сам решает когда нужно быть а когда нет, что и видно из логов:

[mono]
[tracks:3] Prepared "/data/air/tracks/Oomph!-Ready Or Not (I'm Coming).mp3" (RID 2).
[src_4222:3] Analysis: -nandB / -43.148390dB (5.00s / 2.00s)
[smart_crossfade:3] Old <= medium, new <= medium and |old-new| <= margin.
[smart_crossfade:3] Old and new source are not too loud and close.
[smart_crossfade:3] Transition: crossed, fade-in, fade-out.

[tracks:3] Prepared "/data/air/tracks/In Flames-Alias.mp3" (RID 5).
[src_4222:3] Analysis: -nandB / -18.525919dB (5.01s / 1.99s)
[smart_crossfade:3] new >= old + margin, old <= medium and new <= high.
[smart_crossfade:3] Do not fade if it's already very low.
[smart_crossfade:3] Transition: crossed, no fade.
[/mono]

Добавляю:
[mono]music=crossfade(start_next=1.,fade_out=7.,fade_in=5.,music) [/mono]
и появляются эти мерзкие щелчки.
Видимо нужно юзать что то одно, либо crossfade либо smart_crossfade

121

Re: liquidsoap

Остановился на этом:

[mono]
#!/usr/local/bin/liquidsoap

set("init.daemon",true)
set("init.daemon.pidfile",false)
set("log.file.path","/var/log/liquidsoap.log")

# определяем директорию с джинглами
jingles = playlist("/data/air/jingles")

# определяем директорию с треками
music = playlist(reload=600, "/data/air/tracks")
music = mksafe(music)

# использование кроссфейдера для перехода между треками
music = crossfade( fade_out = 12.0, fade_in = 12.0, start_next = 12.0, music )

# наложение джинглов на треки, каждые 15 мин.
radio = smooth_add(normal=music,special=switch([({ 00m0s or 15m0s or 30m0s or 45m0s }, jingles)]))

#######################OUTPUT#######################
# выход на Icecast2
   output.icecast(
        %mp3,
        mount="/myradio",
        host="127.0.0.1", port=8000,
        password="mypasswd",
        genre="various",
        url="http://www.site.com",
        description="My Best Radio",
        name="My Best Radio",
        radio
    )
[/mono]

Так нет щелчков  и некрасивых "врываний" следующего трека, но кроссфейд используется всегда.
Можно конечно crossfade заменить на smart_crosfade.

Отредактировано devilben (21-03-2011 20:24:56)

122

Re: liquidsoap

а мне нужно соеденить 2 плей листа по времени. помогите как сделать. а то матерится на меня ошибками

123

Re: liquidsoap

от щелчка избавился просто - джинглы были в фармате wav - отквертировал в ogg и всё ок

124

Re: liquidsoap

как на какой-то стадии обработки вырвать поток (музыка без джинглов) и отправить на icecast??

Добавлено спустя     8 минут   17 секунд:
поставил 1.0.0 но не запускается автоматом и не подхватывает все скрипты из папки, также отсутствует в init.d от root не стартует. Где косяки? В сборке?
Или не лилеять надежды и самому вбивать в init.d?

125

Re: liquidsoap

а куда он идет если не на icecast? вопрос вообще бредово звучит

в init.d пишет если установлено из репозиториев, в сырцах такого нет. Или пишите сами скрипт или проще забить команду в cron