Re: liquidsoap
Пробовал. не помогло. версия liquidsoap 1.0-beta(svn)
Первый русскоязычный форум посвященный интернет-радиовещанию
Страницы Назад 1 2 3 4 5 6 7 … 53 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Пробовал. не помогло. версия liquidsoap 1.0-beta(svn)
пишет Danila:
metra52 конфиг в студию
tarasian666 а можешь поподробнее описать вариант какой-нибудь с удалённым управлением микрофоном или что-то в этом духе?, input.alsa не заработала, как не крутил
тогда ищем input harbor на оф сайте
может кто знает как настроить 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)
пишет 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[]).
кое-что нашёл, помогите воплотить в жизнь микрофон
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
описанное выше позволяет микшировать, но микрофон не выводит, а очень хочеться
Отредактировано Danila (18-03-2011 21:48:34)
а sam broadcaster можно прикрутить к liquidsoap не как input.http а с управлением, переключением его потока и потока с liquidsoap, громкость регулировать??
а по-подробнее про input.harbor можешь рассказать? чем на него надо сигнал слать? что на другом компе ставить? где регулировать громкости? как переключать каналы?
при попытке настроить у меня слетают маунты все на icecast'е
Отредактировано Danila (18-03-2011 23:41:43)
он работает по принципу sc_trans2 подключаетесь к liquidsoap как к серверу, а он переключает (если настроить) с плейлиста на то что подключено к harbor
к нему можно подключатся любым источником, sam-ом или винампом и тд
по поводу 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)
конфиг 0.9.2
вот что получилось
классная вещь
подведём итоги:
#!/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 версию
а можно ли как-то так сделать?:
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?
возможна ли полная фильтрация голоса (отсеивание) с потока?
проблема: есть щелчёк при проигрывании джинглов в конце при поднятии громкости музыки, может кто знает как убрать?(джинглы записывались в студии звукозаписи, в них самих всё ок )
так много вопросов, сам не ожидал, но всё таки liquidsoap - классный зверь=)
только не надо меня отправлять на оф сайт - там я этого не нашёл
Отредактировано Danila (20-03-2011 21:29:17)
Народ, плиз кто нибудь пробовал выводить на сайт - трек, что играет и последние 10, как это осуществить то?
Отредактировано Amelion (21-03-2011 12:15:40)
пишет Danila:
как сделать crossfading при смене источника между harbor.input и radio?
так же как и между песен, правда у меня пока удалось сделать кроссфейд только "в одну сторону" при подключении или отключении
пишет Danila:
и ещё:как собрать 2 потока в 1 (одновременное воспроизведение)?
smooth_add например
пишет Danila:
и как регулировать громкость этих потоков в liGUIdsoap?
mix.py но gui у меня кажеться не работает
пишет Danila:
возможна ли полная фильтрация голоса (отсеивание) с потока?
если найдете подходящий плагин ladspa и прикрутите его туда
пишет Danila:
проблема: есть щелчёк при проигрывании джинглов в конце при поднятии громкости музыки, может кто знает как убрать?
а каким методом джинглы добавляються?
пишет 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
Остановился на этом:
[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)
а мне нужно соеденить 2 плей листа по времени. помогите как сделать. а то матерится на меня ошибками
от щелчка избавился просто - джинглы были в фармате wav - отквертировал в ogg и всё ок
как на какой-то стадии обработки вырвать поток (музыка без джинглов) и отправить на icecast??
Добавлено спустя 8 минут 17 секунд:
поставил 1.0.0 но не запускается автоматом и не подхватывает все скрипты из папки, также отсутствует в init.d от root не стартует. Где косяки? В сборке?
Или не лилеять надежды и самому вбивать в init.d?
а куда он идет если не на icecast? вопрос вообще бредово звучит
в init.d пишет если установлено из репозиториев, в сырцах такого нет. Или пишите сами скрипт или проще забить команду в cron
Страницы Назад 1 2 3 4 5 6 7 … 53 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться