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

liquidsoap

 

833
metra52 @metra52
for-all-host:~# ./liqu.liq
./liqu.liq: line 3: syntax error near unexpected token `"init.daemon",true'
./liqu.liq: line 3: `set("init.daemon",true)'


не помогло

223
Игорь @devilben
metra52 пишет:

for-all-host:~# ./liqu.liq
./liqu.liq: line 3: syntax error near unexpected token `"init.daemon",true'
./liqu.liq: line 3: `set("init.daemon",true)'


не помогло

Тогда ставь дебиан и не парся :)

833
metra52 @metra52
Это уже на дебиане....на центосе я тек и не поставил эту тему....

6245
Тарас @tarasian666
похоже что собрал без чего-то или не хватает библиотеки

468
Klef @Klef
очередной праждник вопросов.
периодически есть "пшиканье" на потоке.
из обработок и наложений есть тока add и amplify
гришил на наложение, временно отключил, сохраняется.

все треки выведены в mp3 128, стерео 44Гц, ликвид гонит в том же качестве.

223
Игорь @devilben
Klef пишет:

очередной праждник вопросов.
периодически есть "пшиканье" на потоке.
из обработок и наложений есть тока add и amplify
гришил на наложение, временно отключил, сохраняется.

все треки выведены в mp3 128, стерео 44Гц, ликвид гонит в том же качестве.

У меня после апдейта до бета2, иногда перед джинглом такое "заикание" трека, как будто сейчас машина в БСОД упадет) Это бывает редко, но бывает.
Треки в mp3 320, 44Гц, на выходе 128 и 64 ААС, пока что ничего не пытался делать.

468
Klef @Klef
на транк что ли вернуться

6245
Тарас @tarasian666
to metra
yum remove ocaml-camlp4

833
metra52 @metra52
for-all-host:~# ./liqu.liq
Error when initializing source at line 15, char 8-16: a source cannot belong to two clocks (cross_4284[], wallclock_ao[]).

#!/usr/local/bin/liquidsoap

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

# 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(fader,s)
end

#дневной плейлист
day = out(playlist("/root/test/day.txt"))
#ночной
night = out(playlist("/root/test/night.txt"))
#Джинглы
jingles = out(playlist("/root/test/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 = "46.4.207.220", port = 9000, password = "216937612", mount = "non-stop",name="OnLY DanCe Radio ~ RJ^NOED ~net", description="Club Music For LIVE", genre="Club House",url="http://onlydc.ru",radio)

Отредактировано metra52 - 11.07.2011
833
metra52 @metra52
с рабочим конфигом запустился но вещание не запустилось, открыл лог там это

2011/07/13 01:38:41 >>> LOG START
2011/07/13 01:38:41 [protocols.external:3] Didn't find "ufetch".
2011/07/13 01:38:41 [protocols.external:3] Found "/usr/bin/wget".
2011/07/13 01:38:41 [main:3] Liquidsoap 1.0.0-beta+svn (trunk/liquidsoap@rev8272)
2011/07/13 01:38:41 [main:3] Using: graphics=[distributed with Ocaml] pcre=5.13.0 dtools=0.2.2 duppy=0.4.0 duppy.syntax=0.4.0 cry=0.1.6 mm=0.1.0 mad=0.4.0 lame=0.2.4 ao=0.2.0 samplerate=0.1.1 taglib=0.1.4 camomile=0.7.1 pulseaudio=0.1.1
2011/07/13 01:38:41 [main:2]
2011/07/13 01:38:41 [main:2] DISCLAIMER: This version of Liquidsoap has been
2011/07/13 01:38:41 [main:2] compiled from a snapshot of the development code.
2011/07/13 01:38:41 [main:2] As such, it should not be used in production
2011/07/13 01:38:41 [main:2] unless you know what you are doing!
2011/07/13 01:38:41 [main:2]
2011/07/13 01:38:41 [main:2] We are, however, very interested in any feedback
2011/07/13 01:38:41 [main:2] about our development code and committed to fix
2011/07/13 01:38:41 [main:2] issues as soon as possible.
2011/07/13 01:38:41 [main:2]
2011/07/13 01:38:41 [main:2] If you are interested in collaborating to
2011/07/13 01:38:41 [main:2] the development of Liquidsoap, feel free to
2011/07/13 01:38:41 [main:2] drop us a mail at <savonet-devl@lists.sf.net>
2011/07/13 01:38:41 [main:2] or to join the #savonet IRC channel on Freenode.
2011/07/13 01:38:41 [main:2]
2011/07/13 01:38:41 [main:2] Please send any bug report or feature request
2011/07/13 01:38:41 [main:2] using our trac <**********>.
2011/07/13 01:38:41 [main:2]
2011/07/13 01:38:41 [main:2] We hope you enjoy this snapshot build of Liquidsoap!
2011/07/13 01:38:41 [main:2]
2011/07/13 01:38:41 [lang:3] Lastfm/audioscrobbler support was not compiled.
2011/07/13 01:38:41 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master.
2011/07/13 01:38:41 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples.
2011/07/13 01:38:41 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks.
2011/07/13 01:38:41 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks.
2011/07/13 01:38:41 [threads:3] Created thread "generic queue #1".
2011/07/13 01:38:41 [threads:3] Created thread "non-blocking queue #1".
2011/07/13 01:38:41 [jingles:3] Loading playlist...
2011/07/13 01:38:41 [jingles:3] Playlist is a directory.
2011/07/13 01:38:41 [jingles:3] Successfully loaded a playlist of 9 tracks.
2011/07/13 01:38:41 [music:3] Loading playlist...
2011/07/13 01:38:41 [music:3] Playlist is a directory.
2011/07/13 01:38:41 [music:3] Successfully loaded a playlist of 5 tracks.
2011/07/13 01:38:41 [decoder:3] Method "MP3/LIBMAD" accepted "/root/test/music/04. Sly One Vs Jurrane - Open Roads (Original Mix).mp3".
2011/07/13 01:38:41 [decoder:3] Method "MP3/LIBMAD" accepted "/root/test/jingles/45_Non-stop.mp3".
2011/07/13 01:38:41 [/test:3] Connecting mount test for source@localhost...
2011/07/13 01:38:41 [/test:2] Connection failed: could not connect to host: Unix.Unix_error(63, "connect", "")!
2011/07/13 01:38:41 [stderr:3] init: exception encountered during main phase:
2011/07/13 01:38:41 [stderr:3] Tutils.Exit
2011/07/13 01:38:41 [stderr:3] exception: Tutils.Exit
2011/07/13 01:38:41 [main:3] Shutdown started!
2011/07/13 01:38:41 [main:3] Waiting for threads to terminate...
2011/07/13 01:38:41 [main:3] Cleaning downloaded files...
2011/07/13 01:38:41 >>> LOG END

Отредактировано metra52 - 13.07.2011
156
Eugene @MechanisM
а я люблю MPD его и юзаю в качестве вещателя. да и к нему куча интерфейсов и клиентов написано.
все что мне нужно он умеет, ну а mpdscribble постит треки на last.fm/jamendo/libre.fm/twitter/и на сайте станции реалтайм трек обновляет.

Отредактировано MechanisM - 13.07.2011
48
Amelion @Amelion
привет всем, подскажите битые треки как обходить, а то стопориться не гуд?

и ещё вопросик, давно мучает, если не плейлистами, пример:

radio = fallback(track_sensitive=false, [
switch([({ 6h-21h }, new),
({ 22h-00h }, clubs),
({ 00h-6h }, laung)
]), general ])

но
radio = rotate(weights=[1,4,3,5,1,6,1,3,1,1,4,10,3],[ jingles, radio, discoru, music, jingles, radio, prikol, slow, disconew, jingles, radio, music, discoin ])
надо чтобы срабатывал только когда по расписанию new - играет

а
radio = rotate(weights=[1,5,3],[ jingles, radio, slow ])
срабатывал когда играет laung, вот и не догоняю, как это сделать?

223
Игорь @devilben
Amelion пишет:

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

Что значит "битые", что в логе пишет ?

48
Amelion @Amelion
логи обнулил ))) как ошибка вновь появиться, выложу

Выкладываю логи:


2011/07/13 22:00:00 [src_4909:3] Switch to src_4908 with transition.
2011/07/13 22:00:00 [src_4908:3] Switch to clubs.
2011/07/13 22:03:11 [output(dot)icecast(dot)aacplusenc:3] Restarting encoder after delay (3600s)
2011/07/13 22:03:11 [stderr:3] [0%]^M[-1%]^M[-2%]^M[-3%]^M[-4%]^M[-5%]^M[-6%]^M[-7%]^M[-8%]^M[-9%]^M[-10%]^M[-11%]^M[-12%]^M[-13%]^M[-14%]^M[-15%]^M[-16%]^M[-17%]^M[-18%]^M[-19%]
2011/07/13 22:03:11 [stderr:3]
2011/07/13 22:03:11 [stderr:3] encoding finished
2011/07/13 22:03:11 [output(dot)icecast(dot)aacplusenc:2] Creating external encoder..
2011/07/13 22:03:11 [stderr:3]
2011/07/13 22:03:11 [stderr:3] *************************************************************
2011/07/13 22:03:11 [stderr:3] * Enhanced aacPlus Encoder
2011/07/13 22:03:11 [stderr:3] * Build Oct 14 2010, 13:36:52
2011/07/13 22:03:11 [stderr:3] * Matteo Croce <rootkit85@yahoo.it>
2011/07/13 22:03:11 [stderr:3] *************************************************************
2011/07/13 22:03:11 [stderr:3]
2011/07/13 22:03:11 [stderr:3] input file -:
2011/07/13 22:03:11 [stderr:3] sr = 44100, nc = 2
2011/07/13 22:03:11 [stderr:3]
2011/07/13 22:03:11 [stderr:3] output file -:
2011/07/13 22:03:11 [stderr:3] br = 64000 sr-OUT = 44100 nc-OUT = 2
2011/07/13 22:03:11 [stderr:3]
2011/07/13 22:06:24 [decoder:3] Decoder MP3 chosen for "/home/ftp/D3/Radio/clubs/club_iun_2011/06. Gregori Klosman - Jaws.mp3".
2011/07/13 22:06:24 [stderr:3] [0%]^M[-1%]^M[-2%]^M[-3%]^M[-4%]^M[-5%]^M[-6%]^M[-7%]^M[-8%]^M[-9%]^M[-10%]^M[-11%]^M[-12%]^MTagLib: ID3v2.4 no longer supports the frame type TDAT
2011/07/13 22:06:24 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
2011/07/13 22:06:24 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
.
.
.
последняя строка повторяется до бесконечности

Отредактировано Amelion - 18.07.2011
3
zona_bikini @zona_bikini
доброго дня!
коль скоро не я один осваивают ликвидсоап, то, возможно, поможем друг другу, задавая вопросы.

вот на какой конфигурации все работает:

Liquidsoap 1.0.0-beta2.1+svn

Distributor ID: Debian
Description: Debian GNU/Linux 6.0.2 (squeeze)
Release: 6.0.2
Codename: squeeze

4 гига памяти

расскажите плз, кто сталкивался с такими проблемами:

1. никак не канает такая штука
output.icecast(%aacplus(bitrate=128)

вообще больше 72кбитс не удается сделать при использовании аас+. это какое-то ограничение кодека или глюк?

2. переодически ликвидсоап отваливается с сообщением в терминале "Ошибка сегментирования".
это может произойти 2 раза за час или 2 раза за сутки. в любом случае, стабильно без остановок он работать не хочет.
отчего такое может быть и как исправить?

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

def smooth_add(~delay=0.5,~p=0.8,~normal,~special)
d = delay
fade.final = fade.final(duration=d*1.)
fade.initial = fade.initial(duration=d*2.)
q = 0.7
c = amplify
fallback(track_sensitive=false,
[special,normal],
transitions=[
fun(normal,special)->
add(normalize=false,
[c(p,normal),
c(q,fade.final(type="log",normal)),
sequence([blank(duration=d),c(q,special)])]),
fun(special,normal)->
add(normalize=false,
[c(p,normal),
c(q,fade.initial(type="log",normal))])
])
end

проблема в том, что звук в потоке получается явно перегруженный, нелинейные искажения весьма хорошо слышно.
но если эту штуку ниже закоментировать, то со звуком все ок.
radio = smooth_add(normal=radio,special=switch([({ 0m0s or 10m0s or 20m0s or 30m0s or 40m0s or 50m0s }, jingles_overlay)]))
я полагаю собака зарыта где-то в c = amplify, которое используется в функции smooth_add. дак вот каким образом бы исправить такой косяк?

и за одно не подскажете ли, как написать попроще строчку
switch([({ 0m0s or 10m0s or 20m0s or 30m0s or 40m0s or 50m0s }
потому что громоздко, наверняка есть простое описание для задачи "через каждые 10 минут".

спасибо!

6245
Тарас @tarasian666
1. нет в GNU лицензии на использование аас+ больше 64 кбит/с
2. смотреть лог после чего ошибка, или пробовать старшую версию
3. в версии бета 1 smooth_add работал нормально с таким же конфигом

я пока юзаю svn beta 1

для каждых 10 минут тоже видел в примерах на оф сайте, щас кинуть ссылку не могу(

3
zona_bikini @zona_bikini
tarasian666 пишет:

1. нет в GNU лицензии на использование аас+ больше 64 кбит/с
2. смотреть лог после чего ошибка, или пробовать старшую версию
3. в версии бета 1 smooth_add работал нормально с таким же конфигом

1. а можно как-то прикрутить сторонние кодеры аас+?
2. а какой логлевел включить стоит, чтобы отловить ошибку? потому что щас у меня в логе в консоли служебные сообщения ликвидсоупа и потом просто обрыв без всяких объяснений.
3. вот бету2 я поставил день назад. до этого была бета1 и проблема тоже имела место быть.

48
Amelion @Amelion
Получается, что в какой то момент (каждый раз в разное время происходит), либо перестает работать и при рестарте liquidsoap, пишет pid №..... до бесконечности, либо работает, в плеере и время показывает и название трека, но на эквалайзере пусто и звука нет, после перезапуска liquidsoap, опять все норма.
Вот думаю может с нормализацией, лимитом или фильтрами перемудрил. По логам (см. выше) типа кодек? Из за Unicode чето мало как то вериться, что соап падает, народ хелп помогите разобрать.

p.s. И не надо отсылать в доки или говорить, что выше похожее было (не было). Да и tarasian666 не все такие умные и круто во все дыры разбирающиеся лезущие. Для меня это хобби. Раз прошу помощи значит не просто так.

Брал с форума по оригиналу то же самое

radio = normalize(
target = -13., #(anything that is either float or ()->float . defaults to -13.): Desired RMS (dB).
window = 0.0001, #(float . defaults to 0.1): Duration of the window used to compute the current RMS power (second).
k_up = 0.005, #(anything that is either float or ()->float . defaults to 0.005): Coefficient when the power must go up (between 0 and 1, sl)
k_down = 0.0001, #(anything that is either float or ()->float . defaults to 0.1): Coefficient when the power must go down (between 0 and 1,)
threshold = -60., #(anything that is either float or ()->float . defaults to -40.): Minimal RMS for activaing gain control (dB).
gain_min = -6., #(anything that is either float or ()->float . defaults to -6.): Minimal gain value (dB).
gain_max = 6., #(anything that is either float or ()->float . defaults to 6.): Maximal gain value (dB).
debug = false, #(bool . defaults to false): Show coefficients.
radio )

radio = limit(
ratio = 10., #(float . defaults to 2.): Gain reduction ratio (n:1).
attack = 1., #(anything that is either float or ()->float . defaults to 100.): Attack time (ms).
release = 10000., #(anything that is either float or ()->float . defaults to 400.): Release time (ms).
threshold = -45., #(anything that is either float or ()->float . defaults to -10.): Threshold level (dB).
knee = 0.50, #(anything that is either float or ()->float . defaults to 1.): Knee radius (dB).
rms_window = 1., #(float . defaults to 0.1): Window for computing RMS (in sec).
gain = 20., #(anything that is either float or ()->float . defaults to 0.): Additional gain (dB).
debug = false, #(bool . defaults to false)
radio )

radio = filter.iir.eq.peak( frequency=250., q = 1., gain=-4., radio )
radio = filter.iir.eq.peak( frequency=180., q = 1., gain=-6., radio )
radio = filter.iir.eq.high( frequency=100., q = 2., radio )

radio = crossfade(start_next=1.,fade_out=5.,fade_in=2., radio)

223
Игорь @devilben
Сегодня в твиттере появилось сообщение что собран порт win32 **********. Ради интереса скачал, у меня не запускается, видимо потому что у меня венда х64. Никто не пробовал?)

833
metra52 @metra52
Запускается очень просто создаешь файл start.bat внутри пишешь liquidsoap.exe название файла конфига(test.liq)
@pause (@pause можно не писать)

Добавлено спустя 7 минут 30 секунд:
Запустил, Заработало

Отредактировано metra52 - 21.07.2011