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

liquidsoap

 

888
Falcon @Falcon
Как вариант:
get_process_lines("/usr/bin/php /var/www/1.php"))

20
Вадим @Vadim_CHichkan
tarasian666 все заработало спс

Отредактировано Vadim_CHichkan - 06.08.2014
20
Вадим @Vadim_CHichkan
Как разбить на рубрики через внешний скрипт
как это было только через liquidsoap
music = switch(track_sensitive=true,
[
({0h - 7h}, night),
({7h - 14h}, nonstop),
({14h - 17h}, hits80),
({17h - 19h}, nonstop),
({19h - 0h}, retro)
])

Сделал так
def night() =
# Get the first line of my external process
result =
list.hd(
get_process_lines("/var/www/night.php"))
# Create and return a request using this result
request.create(result)
end
def nonstop() =
# Get the first line of my external process
result =
list.hd(
get_process_lines("/var/www/nonstop.php"))
# Create and return a request using this result
request.create(result)
end
def hits80() =
# Get the first line of my external process
result =
list.hd(
get_process_lines("/var/www/hits80.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("/var/www/retro.php"))
# Create and return a request using this result
request.create(result)
end
night = request.dynamic(night)
nonstop = request.dynamic(nonstop)
hits80 = request.dynamic(hits80)
retro = request.dynamic(retro)
music = switch(track_sensitive=true,
[
({0h - 7h}, night),
({7h - 14h}, nonstop),
({14h - 17h}, hits80),
({17h - 19h}, nonstop),
({19h - 0h}, retro)
])

В итоге liquidsoap делает одновременно несколько запросов. Как сделать чтобы запрос к скрипту был в определенное время??

Отредактировано Vadim_CHichkan - 07.08.2014
6245
Тарас @tarasian666
Через внешний срипт как бы нет ограничений, незнаю в чем там у вас возникла проблема.

1
Kunik @Kunik
Добрый день!

Конфиг liquidsoap минимален:
set("log.file.path","liquidsoap.log")

set("log.level", 4)
set("harbor.bind_addr","82.146.33.16")

live = input.harbor("mount", port=8000)

single = single("fa0b6aa85ffd63.mp3")

radio = fallback(track_sensitive=false, [live, single])

output.icecast(%mp3,
host = "82.146.33.16",
port = 8080,
password = "XXXX",
mount = "AutoDJ",
mksafe(radio))


На моунте AutoDJ играет сингл fa0b6aa85ffd63.mp3

Дальше начинается чертовщина: пытаюсь подконнектится вебкастером (**********) к моунту mount.

Лог, показывающий, что моунт вроде как создан:

2014/08/08 14:43:24 [threads:3] Created thread "generic queue #1".
2014/08/08 14:43:24 [threads:3] Created thread "generic queue #2".
2014/08/08 14:43:24 [clock:4] Currently 1 clocks allocated.
2014/08/08 14:43:24 [clock.wallclock_main:4] Starting 1 sources...
2014/08/08 14:43:24 [source:4] Source output.icecast_5881 gets up.
2014/08/08 14:43:24 [source:4] Source mksafe gets up.
2014/08/08 14:43:24 [source:4] Source fallback_5877 gets up.
2014/08/08 14:43:24 [source:4] Source harbor_5873 gets up.
2014/08/08 14:43:24 [harbor_5873:4] Content kind is {audio=2;video=0;midi=0}.
2014/08/08 14:43:24 [harbor:4] Opening port 8000 with icy = false
2014/08/08 14:43:24 [harbor:3] Adding mountpoint '/mount' on port 8000
2014/08/08 14:43:24 [harbor_5873:4] Activations changed: static=[], dynamic=[fallback_5877:mksafe:AutoDJ:AutoDJ].
2014/08/08 14:43:24 [source:4] Source single_5875 gets up.
2014/08/08 14:43:24 [single_5875:4] Content kind is {audio=2;video=0;midi=0}.
2014/08/08 14:43:24 [single_5875:4] Activations changed: static=[], dynamic=[fallback_5877:mksafe:AutoDJ:AutoDJ].
2014/08/08 14:43:24 [fallback_5877:4] Activations changed: static=[], dynamic=[mksafe:AutoDJ:AutoDJ].
2014/08/08 14:43:24 [source:4] Source safe_blank gets up.
2014/08/08 14:43:24 [safe_blank:4] Content kind is {audio=2;video=0;midi=0}.
2014/08/08 14:43:24 [safe_blank:4] Activations changed: static=[], dynamic=[mksafe:AutoDJ:AutoDJ].
2014/08/08 14:43:24 [mksafe:4] Activations changed: static=[AutoDJ:AutoDJ], dynamic=[].
2014/08/08 14:43:24 [single_5875:3] Prepared "fa0b6aa85ffd63.mp3" (RID 0).
2014/08/08 14:43:24 [AutoDJ:4] Activations changed: static=[AutoDJ], dynamic=[].
2014/08/08 14:43:24 [AutoDJ:4] Enabling caching mode: active source.
2014/08/08 14:43:24 [AutoDJ:3] Connecting mount AutoDJ for source@82.146.33.16...
2014/08/08 14:43:24 [AutoDJ:3] Connection setup was successful.
2014/08/08 14:43:24 [threads:3] Created thread "wallclock_main" (1 total).
2014/08/08 14:43:24 [clock:4] Main phase starts.
2014/08/08 14:43:24 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock.
2014/08/08 14:43:24 [mksafe:3] Switch to fallback_5877.
2014/08/08 14:43:24 [fallback_5877:4] Activations changed: static=[mksafe:AutoDJ:AutoDJ], dynamic=[mksafe:AutoDJ:AutoDJ].
2014/08/08 14:43:24 [fallback_5877:3] Switch to single_5875.
2014/08/08 14:43:24 [single_5875:4] Activations changed: static=[fallback_5877:mksafe:AutoDJ:AutoDJ], dynamic=[fallback_5877:mksafe:AutoDJ:AutoDJ].


Но жидкое мыло посылает меня далеко и надолго:

2014/08/08 14:45:38 [harbor:4] New client on port 8000: 87.228.30.246
2014/08/08 14:45:38 [harbor:4] Header: Upgrade, value: websocket.
2014/08/08 14:45:38 [harbor:4] Header: Connection, value: Upgrade.
2014/08/08 14:45:38 [harbor:4] Header: Host, value: gcmedia.ru:8000.
2014/08/08 14:45:38 [harbor:4] Header: Sec-WebSocket-Protocol, value: webcast.
2014/08/08 14:45:38 [harbor:4] Header: Pragma, value: no-cache.
2014/08/08 14:45:38 [harbor:4] Header: Cache-Control, value: no-cache.
2014/08/08 14:45:38 [harbor:4] Header: Sec-WebSocket-Key, value: qK2nym/slHUZj1EOakP79A==.
2014/08/08 14:45:38 [harbor:4] Header: Sec-WebSocket-Version, value: 13.
2014/08/08 14:45:38 [harbor:4] Header: Sec-WebSocket-Extensions, value: permessage-deflate; client_max_window_bits, x-webkit-deflate-frame.
2014/08/08 14:45:38 [harbor:4] Header: User-Agent, value: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36.
2014/08/08 14:45:38 [harbor:4] HTTP GET request on /mount.
2014/08/08 14:45:38 [harbor:4] Returned 404 for '/mount'.


Если есть идеи, буду очень рад выслушать. Спасибо.

Отредактировано Kunik - 08.08.2014
31
Сергей @meloman197
Здравствуйте уважаемые форумчане! Прошу помощи у знающих. Имеется установленный Debian 7, на котором крутиться icecast2 и liquidsoap. Liquidsoap из консоли запускается от пользователя admin командой: liquidsoap /etc/liquidsoap/icecast.sh о Не могу решить следующих двух вопросов:
1. Как добавить данный скрипт в автозагрузку и чтобы liquidsoap запускал вещание автоматически после перезагрузки системы?
2. Как сделать, чтобы liquidsoap продолжал работу даже после закрытия консоли?
Заранее благодарен всем откликнувшимся за помощь!

P.S. пытался добавить команду /etc/liquidsoap/icecast.sh в файл rc.local, права на сам скрипт выставлены 755, но liquidsoap после рестарта системы автоматом не срабатывает.

Отредактировано meloman197 - 13.08.2014
6245
Тарас @tarasian666
1. или через cron или писать init.d скрипт
2.
#!/usr/bin/liquidsoap -d
set("init.daemon",true)
set("init.daemon.pidfile",false)

31
Сергей @meloman197
tarasian666, спасибо за оперативный ответ. Если у меня путь к скрипту liquidsoap такой: /etc/liquidsoap, то прописывать так:
#!/etc/liquidsoap -d
set("init.daemon",true)
set("init.daemon.pidfile",false)

?

31
Сергей @meloman197
Содержание файла с конфигурацией /etc/liquidsoap/icecast.sh:
Т.е. вставлять в данный файл вот так:
#!/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 = "пароль"


Прошу прощения, а не подскажете как еще правильно строку через cron прописывать?
Заранее благодарен.

Отредактировано meloman197 - 13.08.2014
6245
Тарас @tarasian666
/etc/liquidsoap текстовый конфиг или бинарный исполняемый файл?

31
Сергей @meloman197
Прошу прощения но не совсем понял суть вопроса... Полный путь к скрипту с вышеуказанным содержимым расположен по адресу:
/etc/liquidsoap/icecast.sh Ну скорее всего это будет являться текстовым файлом.

Отредактировано meloman197 - 13.08.2014
6245
Тарас @tarasian666

#!/usr/bin/liquidsoap -d

это должен быть путь к бинарному файлу который читает конфиг и запускается, эта строчка позволяет запускать сразу конфиг как исполняемый файл.
Если вы запускаете так liquidsoap /etc/liquidsoap/icecast.sh то или не пользуйтесь той строчкой и запускайте так
liquidsoap -d /etc/liquidsoap/icecast.sh
или вставьте ту строчку и запускайте проще
/etc/liquidsoap/icecast.sh
только надо знать точный путь к бинарному файлу чтоб прописать его в конфиге и дать файлу /etc/liquidsoap/icecast.sh права на запуск

для cron
@reboot /путь_к_запускаемому_файлу

31
Сергей @meloman197
Огромное спасибо за помощь. При запуске в консоли командой liquidsoap -d /etc/liquidsoap/icecast.sh получаю ошибку:
Fatal error: exception Sys_error("/var/run/liquidsoap/icecast.pid: Permission denied")
Raised at file "pervasives.ml", line 231, characters 21-47

6245
Тарас @tarasian666

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

эта строчка точно присутствует?

31
Сергей @meloman197
Перезагрузил сервер, заработало. Т.е. если я теперь пропишу в кроне@reboot /etc/liquidsoap/icecast.sh, то теперь после ребута сервера liquidsoap будет запускаться автоматически?

Отредактировано meloman197 - 13.08.2014
6245
Тарас @tarasian666
должен, если все правильно сделано

31
Сергей @meloman197
Еще раз огромное спасибо за помощь, tarasian666!

31
Сергей @meloman197
Прощу прощения но прописал в кроне, но не запускается:

MAILTO=
15 02 * * * sudo /usr/local/vesta/bin/v-update-sys-queue disk
10 00 * * * sudo /usr/local/vesta/bin/v-update-sys-queue traffic
30 03 * * * sudo /usr/local/vesta/bin/v-update-sys-queue webstats
*/5 * * * * sudo /usr/local/vesta/bin/v-update-sys-queue backup
10 05 * * * sudo /usr/local/vesta/bin/v-backup-users
20 00 * * * sudo /usr/local/vesta/bin/v-update-user-stats
*/5 * * * * sudo /usr/local/vesta/bin/v-update-sys-rrd
@reboot /etc/liquidsoap/icecast.sh

31
Сергей @meloman197
Может в кроне нужно прописывать: @reboot liquidsoap -d /etc/liquidsoap/icecast.sh ?

Отредактировано meloman197 - 13.08.2014
31
Сергей @meloman197
При запуске по крону @reboot /etc/liquidsoap/icecast.sh получаю ошибку: /bin/sh: 1: /etc/liquidsoap/icecast.sh: Permission denied
Задание по крону в консоли добавлял под пользователем admin под которым в консоли скрипт запускается успешно. Может ошибка в данном случае возникает из - за того, что запускается она из под root?

Сейчас посмотрел файл /var/spool/cron/crontabs вышеуказанная строчка @reboot /etc/liquidsoap/icecast.sh присутствует в нужном крон-файле для пользователя admin. В чем тогда проблема никак не пойму?

Отредактировано meloman197 - 13.08.2014