Re: liquidsoap
по логике он будет воспроизводить 10 песен из musicold, 2 песни из musicnew и одну песню из musicny
PS
нет необходимости накладывать на каждый плейлист smart_crossfade(normalize
можно только на music1
Первый русскоязычный форум посвященный интернет-радиовещанию
Страницы Назад 1 … 17 18 19 20 21 … 53 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
по логике он будет воспроизводить 10 песен из musicold, 2 песни из musicnew и одну песню из musicny
PS
нет необходимости накладывать на каждый плейлист smart_crossfade(normalize
можно только на music1
пишет devilben:
Подскажите как побороть такую багу, если кто знает:
При добавлении чего либо через smooth_add ломаются теги. То есть, в момент "микширования" вставляется какой то левый тег, а хотелось бы чтоб выводился по прежнему тег из основного источника.
Вот пример конфига:#!/usr/local/bin/liquidsoap set("init.daemon",true) set("log.file.path","/var/log/liquidsoap/liquidsoap.log") set("init.daemon.pidfile.path","/var/run/liquidsoap/liq.pid") jingles = playlist(reload=9000,"/data/air/jingles") #джинглы которые всплывают по времени promo = playlist(reload=9000,"/data/air/promo") #джинглы которые просто вставляет в ротацию music = playlist(reload=9000,"/data/air/music") #основная муз. библиотека music = mksafe(music) music = rotate(weights = [1, 11],[promo, music]) #добавление джинглов в ротацию music = crossfade( fade_out = 4.0, fade_in = 3.0, start_next = 3.0, music ) #кроссфейд треков radio = smooth_add(normal=music,special=switch([({ 00m0s or 30m0s }, jingles)])) #добавление джинглов по времени #выход на icecast2# output.icecast( %mp3, mount="/listen", host="127.0.0.1", port=8000, password="*****", genre="Other", url="http://domain.com", description="Cool Internet Radio", name="Mega Radio", radio )
Нашел похожую проблему в рассылке Liquidsoap, там говорится что нужно использовать map_metadata, но как - не догоняю пока.
у меня всё, что связано с мета сделано так:
#постоянная функция, мета-данные
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 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
# добавляем " - (((=SV=)))"
def append_title(m) =
title = m["title"]
[("title","#{title} - (((=SV=)))")]
end
#и вот map_metadata
music5 = map_metadata(append_title, music4)
и кстати тут тоже проблемка - вместо того, чтобы писать "title","#{title} - (((=SV=))), пишет "title","#{title} - (((=SV=))) - (((=SV=))) - (((=SV=))) - (((=SV=))) до бесконечности ), подскажите, как решить
Отредактировано Danila (25-12-2011 19:42:02)
Показать / Cкрыть текст
спасибо, помогло, теперь у меня так
Показать / Cкрыть текст
пишет Danila:
у меня всё, что связано с мета сделано так:
Код:#постоянная функция, мета-данные
def rewrite_metadata(l,~insert_missing=true,s).....
и кстати тут тоже проблемка - вместо того, чтобы писать "title","#{title} - (((=SV=))), пишет "title","#{title} - (((=SV=))) - (((=SV=))) - (((=SV=))) - (((=SV=))) до бесконечности
Это ваш конфиг мыла? Зачем в него пишете паттерны? Эти "постоянные функции" уже там есть, они переопределяются в конфиге, со своими значениями, двумя строчками.
С рерайтом метаданных на кастомные по любому источнику у меня проблем нет, в этом просто нет необходимости. У меня проблема в сохранении метаданных текущего трека в момент добавления джингла методом smooth_add.
так как правильно теги побороть, сейчас опять вещание тормознулось в логах вот что последнее
2011/12/26 15:23:13 [src_4887:3] Switch to ngring with forgetful transition.
Удалили все теги переименовал се файлы в цифры
в итоге вот это в конце лога
2012/01/01 05:21:30 [decoder:3] Decoder MP3 chosen for "/home/ftp/D3/Radio/ng/382.mp3".
2012/01/01 05:21:40 [ng:3] Finished with "/home/ftp/D3/Radio/ng/599.mp3".
2012/01/01 05:21:40 [ng:3] Prepared "/home/ftp/D3/Radio/ng/382.mp3" (RID 48).
и все опять соап стоит, хелп ми плиз???
Отредактировано Amelion (01-01-2012 14:47:26)
почему liquidsoap может ругаться так на вполне обычную и даже необходимую скобку?
radioone# sh /usr/radio2.sh
/usr/radio2.sh: 2: Syntax error: "(" unexpected
первые три строчки скрипта:
#!/usr/local/bin/liquidsoap/
music = normalize(playlist(mode="randomize", "/data/air/radio1"))
radio = crossfade(fade_out = 3.0, fade_in = 2.0, start_next = 1.0, music)
потому что не надо запускать через шелл тем более уже в файле есть #!/usr/local/bin/liquidsoap/ (и то не правильно, в конце должно быть без слэша)
возможно поэтому считает скрипт шелловским, а не "мыльным". А синтаксис разный вот и ругаеться
Добрый день!
У меня вопрос: как сделать, чтобы в определенное время добавлялся в очередь следующей песней определенный файл? Допустим, наступает 59m15s и надо, чтобы после текущей играющей песни сыграла, допустим, отбивка?
Заранее благодарю за помощь!
чтоб сработало такое на 100% я б рекомендовал внешними средставми в определенное время пускать в queue через telnet нужную, допустим, отбивку
может и возможно сделать это только средствами liquidsoap но это будет сложнее или не будет работать на 100%
Благодарю! Кстати, никак не могу найти в документации про управление через telnet...
там все просто и интуитивно, подключаемся клиентом telnet пишем help и выводит список доступных команд, кол-во которых также зависит от того что в скрипте liquidsoap задействовано
когда знаем нужные команды делаем скрипт, например на php вообще просто - подключиться через fsockopen, дальше шлем команды fwrite и тд
Благодарю за помощь!
UPD. А порт где то указывается или он всегда 1234?
UPD. Ой, все, нашел в настройках:)
Отредактировано Azat (05-01-2012 01:24:46)
Блин, что то не хочет у меня работать telnet... Точнее он работает через встроенную утилиту, а через php - нет! Вот код:
<?php
$telnet = fsockopen("127.0.0.1", "1234");
if($telnet === false) {
die("Плохо");
}
while(!feof($telnet)) {
$out .= fgets($telnet, 1024);
}
echo $out;
fwrite($telnet, "request.push /home/music/otbivky/02.mp3");
fclose($telnet);
?>
Пишет следующее: Connection timed out.. Bye!
Заранее благодарю за помощь!
PS. Файл php запускаю через Apache2, на том же сервере, что и liquidsoap
Отредактировано Azat (05-01-2012 04:05:21)
пробуй ставить таймаут в fsockopen
$fp = fsockopen("127.0.0.1", 1234, $errno, $errstr, 30);
я использовал не fgets а fread и не использоваk while
echo fread($fp, 10);
Блин, не хотелось бы конечно таких задержек... Через консоль то моментально конектит. Ну что делать, сейчас попробую, спасибо!
Неа, не хочет. Даже при таймауте 180 не хочет. Мне кажется, тут дело в telnet, а не в php. Ведь если бы был действительно таймаут, то php выдал бы варнинг, или функция вернула бы false, но ни того, ни этого нет, ведь этот текст, "Connection timed out.. Bye!" приходит из сокета, если закомментировать чтение, то ничего нет. Вот текущий код:
<?php
$telnet = fsockopen("127.0.0.1", "1234", $errno, $errstr, 180);
if($telnet === false) {
die("Плохо");
}
/*while(!feof($telnet)) {
$out .= fgets($telnet, 1024);
}*/
echo fread($telnet, 40);
fwrite($telnet, "request.push /home/music/otbivky/02.mp3");
fclose($telnet);
?>
PS. Пробовал с таймаутом 30 и 180. Результат один и тот же: пишет, что таймаут гораздо раньше, секунд через 10, значит, это не таймаут.
Заранее благодарю!
UPD. Ой, я кажется понял. Он не выводит приглашение, он выводит "Connection timed out.. Bye!" и то же самое он выводит, если в консоли не делать что то 10 секунд, и после этого отключается. Странно, почему он не выводит "Escape character is '^]'." и тд. Сейчас буду разбираться.
Отредактировано Azat (05-01-2012 15:16:28)
вот код который работает у меня
<?php
$fp = fsockopen("127.0.0.1", 1234, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
#$out = "queue.push /tmp/plupload/09 - Never Shall Be Again.mp3\r\n";
$out = "queue.push ";
$out .= "/var/www/music/Nargaroth/Nargaroth - Spectral Visions Of Mental Warfare 2011/Nargaroth - Spectral Visions Of Mental Warfare 2011/01 - Odin's Weeping for Jordh.mp3";
$out .= "\r\n";
usleep(500);
fwrite($fp, $out);
echo fread($fp, 10);
usleep(500);
$out = "quit\r\n";
fwrite($fp, $out);
echo "<br>".fread($fp, 10);
fclose($fp);
}
?>
Да, сам только что пришел к выводу, что надо поставить небольшую задержку и "нажать" enter с помощью "\r", большое спасибо за помощь!
У меня и без задержки работает)
P.S Вывел список следующих треков на главную. штук 6, мне хватает))) Осталось просшедшие сделать) и еще бы неплохо что бы скинули скриптик для стола заказов для Liquidsoap
Отредактировано metra52 (07-01-2012 01:38:00)
пишет metra52:
и еще бы неплохо что бы скинули скриптик для стола заказов для Liquidsoap
сканируешь нужную папку, выводишь все на сайт, при клике на определенный трек делаешь через телнет queue.push
делов то на пару минут
пишет tarasian666:
пишет metra52:
и еще бы неплохо что бы скинули скриптик для стола заказов для Liquidsoap
сканируешь нужную папку, выводишь все на сайт, при клике на определенный трек делаешь через телнет queue.push
делов то на пару минут
Ты как вседа все мериишь по своим возможностям=)
у меня на платформе где стоит liquidsoap и папка с музыкой нет веб сервера) и достучаться туда можно только по FTP или же через Radmin
Отредактировано metra52 (07-01-2012 13:40:51)
Не, это не задержки были, это была тупость моя А так задержки перед каждой командой полсекунды, не заметно. Сделал пока управление нон-стопом для своих, работает:) Но не представляю, как сделать вывод следующих треков... Я, конечно, могу получить список из плейлиста music, но тогда будет без учета queue.push. Подскажите, как можно это реализовать:) Вот скрипт:
#!/usr/local/bin/liquidsoap -d
set("tag.encodings", ["UTF-8", "CP1251"])
set("server.telnet", true)
set("server.telnet.port", 1234)
music = mksafe(playlist(reload = 600, "/home/music/music"))
jingles = mksafe(playlist(reload = 600, "/home/music/jingles"))
jingles = rewrite_metadata([("title","бешеные улитки отдыхают вместе с нами!"),
("artist", "Crazy Radio")],jingles)
short = mksafe(playlist(reload = 600, "/home/music/short"))
short = rewrite_metadata([("title","бешеные улитки отдыхают вместе с нами!"),
("artist", "Crazy Radio")],short)
jinglesnewyear = mksafe(playlist(reload = 600, "/home/music/jinglesnewyear"))
jinglesnewyear = rewrite_metadata([("title","бешеные улитки отдыхают вместе с нами!"),
("artist", "Crazy Radio")],jinglesnewyear)
chart = mksafe(playlist(reload = 600, "/home/music/chart"))
radio = rotate(weights = [3, 1, 2, 1, 2, 1], [music, jingles, music, jinglesnewyear, chart, short])
radio = fallback([request.queue(id = "otbivka"), request.queue(id = "request"), radio])
radio = smart_crossfade(radio)
live = input.harbor("onair", port = 8095, password = "***", metadata_charset = "CP1251")
#live = input.http("http://82.146.58.205:8000/onair")
def append_title(m) =
title = m["title"]
[("title","#{title} - Crazy Radio")]
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(bitrate=128), host = "localhost", icy_metadata = "true", port = 8000, mount = "crazy", description = "The Craziest Radio On The World!", name = "Crazy Radio", url = "http://www.crazyradio.net", genre = "Varios", password = "***", mksafe(normalize(radio)))
output.icecast(%mp3(bitrate=96), host = "localhost", icy_metadata = "true", port = 8000, mount = "crazy96", description = "The Craziest Radio On The World!", name = "Crazy Radio", url = "http://www.crazyradio.net", genre = "Varios", password = "***", mksafe(normalize(radio)))
output.icecast(%mp3(bitrate=24), host = "localhost", icy_metadata = "true", port = 8000, mount = "crazy24", description = "The Craziest Radio On The World!", name = "Crazy Radio", url = "http://www.crazyradio.net", genre = "Varios", password = "***", mksafe(normalize(radio)))
music.next не предлагать, он без учета заказов работает:) Спасибо заранее!
Отредактировано Azat (07-01-2012 14:54:49)
пишет metra52:
Ты как вседа все мериишь по своим возможностям=)
у меня на платформе где стоит liquidsoap и папка с музыкой нет веб сервера) и достучаться туда можно только по FTP или же через Radmin
ну так как ты вообще собираешься делать стол заказов? Каждый раз дергать через телнет весь плейлист?
Ни кто не мешает достучатся на стороне вебсервера через фтп чтоб получить список треков
но ни то ни другое не выход если это будет стол заказов не для одного человека
пишет tarasian666:
но ни то ни другое не выход если это будет стол заказов не для одного человека
есть вариант заполнять скриптом базу, скажем раз в сутки или раз в четыре часа и потом уже на сайт выводить, а без запросов по Telnet ничо не сделать
Страницы Назад 1 … 17 18 19 20 21 … 53 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться