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

liquidsoap

 

6245
Тарас @tarasian666
права на запуск есть?

31
Сергей @meloman197
Да, 755. Правда устанавливал права не через консоль, а через WinSCP конкретно для файла icecast.sh. Может это играет роль?

Отредактировано meloman197 - 13.08.2014
31
Сергей @meloman197
Выполнил команду: ls -l
и получил:
файл скрипта:
-rwxr-xr-x 1 root root 636 Aug 13 07:04 icecast.sh

папка liquidsoap:
drwxr-xr-x 2 root root 4096 Aug 12 07:42 liquidsoap

Так и должно быть или необходимо к скрипту добавить пользователя от имени которого он запускается в консоли, т.к. здесь видно root, а из под него liquidsoap не запуститься?

Прошу прощения за очередные банальные вопросы и заранее благодарен за помощь!

Отредактировано meloman197 - 13.08.2014
68
Алексей @features
Вам бы стоило подробнее ознакомиться с cron. Если вы делаете это в основном то всё запускает под root, вы можете прописать команду используя su либо использовать крон принадлежащий конкретному пользователю.

31
Сергей @meloman197
features пишет:

Вам бы стоило подробнее ознакомиться с cron. Если вы делаете это в основном то всё запускает под root, вы можете прописать команду используя su либо использовать крон принадлежащий конкретному пользователю.

Спасибо. В системе у меня два пользователя root и admin. Под рутом liquidsoap запустить не возможно, поэтому мне необходимо запустить скрипт от пользователя admin. В кроне принадлежащему пользователю admin строка на запуск скрипта прописана, но скрипт не стартует.

Отредактировано meloman197 - 13.08.2014
31
Сергей @meloman197
Ребята, помогите разобраться пожалуйста...

31
Сергей @meloman197
Подскажите пожалуйста как при моей конфигурации сделать (куда и что добавить) постоянное проигрывание плейлиста с именем playlist.pls ? Заранее благодарен всем за помощь!

Мой конфиг:
#!/etc/liquidsoap -d
set("init.daemon",true)
set("init.daemon.pidfile",false)
set("log.file.path","/var/log/liquidsoap/basic.log")
set("log.stdout",true)
set("log.level",3)
set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet",true)
myplaylist = mksafe(playlist(reload=3000, '/home/user/radio/autodj'))
radio = myplaylist
radio = mksafe(radio)
radio = crossfade(start_next=6.0, fade_out=3.0, fade_in=3.0, radio)
output.icecast(%mp3(bitrate=192, id3v2 = true),
mount = "live.mp3", radio,
host = "localhost", port = 8000, password = "пароль"

Отредактировано meloman197 - 14.08.2014
6245
Тарас @tarasian666
Он помоему понимает все плейлисты, так что просто вставить вместо папки.
А первая строчка скорей всего неправильная, не может бинарник лежать в etc

31
Сергей @meloman197
Спасибо. Т.е. так myplaylist = mksafe(playlist(reload=3000, '/home/user/radio/autodj/playlist.pls)) ?

Отредактировано meloman197 - 14.08.2014
31
Сергей @meloman197
Ну наконец частично я решил свою проблему с автозапуском liquidsoap после перезагрузки: добавлением в cron следующей строчки:
/usr/bin/liquidsoap -d /etc/liquidsoap/icecast.sh
Liquidsoap стартует после ребута, аудиопоток идёт, НО..... название трека (остальные метаданные отображаются) не отображается. Если при этом зайти через SSH и в консоли набрать:
liquidsoap -d /etc/liquidsoap/icecast.sh

все начинает отображаться. Может кто - нибудь сталкивался с аналогичной проблемой и имеет какие - либо соображения по данному поводу? Заранее благодарен!

Отредактировано meloman197 - 14.08.2014
68
Алексей @features
ps auux
Под каким пользователем запускается процесс? Настроена ли для него локаль?

31
Сергей @meloman197
Прошу помощи в изменении текущей конфигурации Liquidsoap для решения нижеуказанных задач. Имеется основной плейлист длительностью 24 часа. Необходимо добавить следующее:
1. Как добавить дополнительный плейлист (на следующие сутки) длительностью 24 часа, который можно было бы заранее загрузить на сервер и он автоматически стартовал?
2. Как добавить дополнительный плейлист, который бы стартовал каждую среду в 21.00 часов и повторялся в четверг в 12.00 часов?
При этом перед стартом вышеуказанных плейлистов необходимо чтобы "старый" плейлист не просто обрывался, а плавно переходил на запланированный. Ребята, огромная просьба помочь! Заранее благодарен всем откликнувшимся!

Конфигурация:
#!/usr/bin/liquidsoap -d
set("init.daemon",true)
set("init.daemon.pidfile",false)
set("log.file.path","/var/log/liquidsoap/basic.log")
set("log.stdout",true)
set("log.level",3)
set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet",true)
myplaylist = mksafe(playlist(reload=300, '/home/radio/playlist.pls'))
radio = myplaylist
radio = mksafe(radio)
radio = crossfade(start_next=6.0, fade_out=3.0, fade_in=3.0, radio)
output.icecast(%mp3(bitrate=192, id3v2 = true),
mount = "live.mp3", radio,
host = "localhost", port = 8000, password = "пароль",
genre="Rock",
name="",
url="",
description="")

Отредактировано meloman197 - 16.08.2014
20
Вадим @Vadim_CHichkan
liquidsoap перестал запускаться, после того как я обновил IDtag песен.
Лог
2014/08/17 22:07:28 [threads:3] Created thread "generic queue #1".
2014/08/17 22:07:28 [threads:3] Created thread "generic queue #2".
2014/08/17 22:07:28 [threads:3] Created thread "non-blocking queue #1".
2014/08/17 22:07:28 [jingles:3] Loading playlist...
2014/08/17 22:07:28 [jingles:3] Playlist is a directory.
2014/08/17 22:07:28 [jingles:3] Successfully loaded a playlist of 1 tracks.
2014/08/17 22:07:28 [promo:3] Loading playlist...
2014/08/17 22:07:28 [promo:3] Playlist is a directory.
2014/08/17 22:07:28 [promo:3] Successfully loaded a playlist of 2 tracks.
2014/08/17 22:07:28 [radio:3] Connecting mount radio for source@localhost...
2014/08/17 22:07:28 [decoder:3] Method "MAD" accepted "/home/music/retro/miTagLib: String::prepare() - Unicode conversion error.chael_jackson_-_history_remix.mp3".
2014/08/17 22:07:28 [stderr:3]
2014/08/17 22:07:28 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
2014/08/17 22:07:28 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
2014/08/17 22:07:28 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
2014/08/17 22:07:28 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
2014/08/17 22:07:28 [stderr:3] TagLib: String::prepare() - Unicode conversion error.
2014/08/17 22:07:28 [stderr:3] TagLib: String::prepare() - Unicode conversion error.

Пытался поменять кодировку как описано здесь: ********** не помогает
Иногда может запуститься но может вылететь после конца первой, второй песни

Отредактировано Vadim_CHichkan - 17.08.2014
67
nivs @nivs
meloman197 пишет:


1. Как добавить дополнительный плейлист (на следующие сутки) длительностью 24 часа, который можно было бы заранее загрузить на сервер и он автоматически стартовал?
2. Как добавить дополнительный плейлист, который бы стартовал каждую среду в 21.00 часов и повторялся в четверг в 12.00 часов?

1) В смысле менять содержимое потока каждые 24 часа? Думаю, что лучше по крону менять содержимое /home/radio/playlist.pls в нужное время (рядом руками или как-то там создавать playlist2.pls, а в нужное время cp playlists.pls playlist.pls
2) switch() **********

Vadim.CHichkan, **********

Вопрос: есть ли возможность выполнять скрипт по окончании каждого трека? source делается обычным sound = playlist (reload = 3600, "#{pl}"), где pl - папка. Если силами liquidsoap никак, мб парсить какую-то инфу внешними силами и выполнять скрипт, но лучше без костылей, конечно.

Отредактировано nivs - 18.08.2014
20
Вадим @Vadim_CHichkan
Все равно ошибка
[stderr:3] TagLib: String::prepare() - Unicode conversion error.

Перекодировал в mp3tag все равно выбивает liquidsoap
upd: все проблему решил оказалось liquidsoap не читает APE тэги. Удалил прогой mp3tag

Отредактировано Vadim_CHichkan - 19.08.2014
20
Вадим @Vadim_CHichkan
# загружаем скрипт с музыкой
def nonstop() =
# Get the first line of my external process
result =
list.hd(
get_process_lines("/script/nonstop.php"))
# Create and return a request using this result
request.create(result)
end
def retro() =
# Get the first line of my external process
result =
list.hd(
get_process_lines("/script/retro.php"))
# Create and return a request using this result
request.create(result)
end
def promo() =
# Get the first line of my external process
result =
list.hd(
get_process_lines("/script/promo.php"))
# Create and return a request using this result
request.create(result)
end
nonstop = request.dynamic(nonstop)
retro = request.dynamic(retro)
promo = request.dynamic(promo)
nonstop = rotate(weights = [1, 3], [promo, nonstop])
retro = rotate(weights = [1, 5], [promo, retro])
radio = switch(track_sensitive=true,
[
({0h - 7h}, retro),
({7h - 0h}, nonstop),
])
radio = mksafe(radio)
radio = crossfade(start_next=6.,fade_out=4.,fade_in=1., radio)

Как сделать чтобы кроссфэйд применялся к именно к музыке, а не к промо+музыка. Пробывал многими способами. Играет либо только музыка, либо только промо.

382
Grigorij @gyurgin_1
К выдаче promo.php можно приписать в начале "annotate:liq_start_next=0.,liq_fade_in=0.,liq_fade_out=0.:" кроссфейд среагирует, но лучше сделать один толковый скрипт.

20
Вадим @Vadim_CHichkan
gyurgin_1 пишет:

К выдаче promo.php можно приписать в начале "annotate:liq_start_next=0.,liq_fade_in=0.,liq_fade_out=0.:" кроссфейд среагирует, но лучше сделать один толковый скрипт.

Не работает(

382
Grigorij @gyurgin_1
Не может не работать - чтение метаданных намертво вшито в функции fade.in, fade.out, cross, amplify и т.д. Ну может в кавычки заключить данные, хотя нет, там float... Короче - вывод скрипта должен быть например таким: annotate:liq_start_next=0.,liq_fade_in=0.,liq_fade_out=0.:/home/music/some_mp3_file.mp3
Проверяйте.

20
Вадим @Vadim_CHichkan
все работает спасибо.
Хочу прикрутить чтобы парсил тэги с lastfm
но ошибка, в логе
2014/08/24 21:46:47 [LastFM:3] Kylie Minogue - Love At First Sight (Album Version)
2014/08/24 21:46:47 [stderr:3] Use of uninitialized value in subroutine entry at /usr/lib/perl/5.14/Encode.pm line 202.

В Encode.pm
sub encode_utf8($) {
my ($str) = @_;
utf8::encode($str); #202
return $str;

Настраивал по инструкции **********

Отредактировано Vadim_CHichkan - 24.08.2014