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

liquidsoap

 

44
firefedot @firefedot
Послушал умных людей, накатил ubuntu (13.04). Установил все за пару минут и icecast и liquidsoap. Накатал такой скрипт:

#!/usr/bin/liquidsoap

set("log.file.path", "/tmp/test.log")

#myplaylist = playlist("/home/music/list.m3u");
myplaylist = single("/home/music/ram.mp3");
output.icecast(%aac(channels=2, samplerate=44100, bitrate=64), host = "localhost
password="1q2w3e4r", mount="dj", myplaylist)


запускаю скрипт:
./liq.conf

и в плеере начинает играть плей лист, все хорошо, кроме одного моента.
Когда запукаю скрипт, то он как бы переходит в режим выполнения и ничего другогоне могу делать, а нажав ctrl+c, он естественно останавливается и прерывает трансляцию.
Не пойму как правильно запускать скрипты, автозапуском по идее можно, но если нужно запустить другой скрипт. то возникнет такая же штука.
В общем, как правильно запускать скрипты по запуску liquidsoap и плейлистов?
)

6245
Тарас @tarasian666
tarasian666 пишет:

так и должно быть
чтоб запускать его как демон надо писать в начале #!/usr/local/bin/liquidsoap -d
или задать

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

44
firefedot @firefedot
Спасибо огромное, добрый человек.)
Но когда дописываю -d в конце строки #!/usr/bin/liquidsoap
выдается ошибка
FATAL ERROR: PID directory "/usr/local/var/run/liquidsoap" does not exist.
To change it, add the following to your script:
set("init.daemon.pidfile.path", "<path>")

стоит убрать -d и все нормально
Все, просто дописал
set("init.daemon",true)
set("init.daemon.pidfile",false)

и все завелось как демон. без -d
#!/usr/bin/liquidsoap

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

Правильно ли понял. что бы вещать в аас+, нужно собрать из исходников, готовые сборки не дадут?
И не могу найти ни гдке такой пакет libaacplus-dev, о ктором была речь выше, он вроде как нужен... он в составе чего то или отдельно?

А как остановить ваещание в liquidsoap? ) даже новый скрипт не перебивает старый...

Отредактировано firefedot - 07.10.2013
6245
Тарас @tarasian666
Libaacplus-dev есть в репозитории multimedia или на tipok.org.ua

Остановить killall имя_скрипта

44
firefedot @firefedot
Понял... Спасибо.

6
Alexander @KIper
Недавно ставил себе "мыло" версии 1.1.1 на FreeBSD, по-мучился... Если интересно, как поставил, спрашивайте - по возможности отвечу :)

Так же хотел спросить, пользуется ли кто инфой из telnet'а? Вчера скрипт на PHP писал, который в "мыльный" telnet ходит и узнаёт какой файл играет и сколько осталось времени до конца. Может есть менее изврщённый способ доставать такую информацию?

6245
Тарас @tarasian666
телнетом пользуюсь чтоб:
переключить трек
перемотать трек
включить/отключить определенный энкодер
узнать id трека (id получает от внешнего "ротатора")
управление микшером (громкость микрофона/музыки)

и еще много чего, так как делал gui что-то на подобии sam broadcaster

6
Alexander @KIper
и еще много чего, так как делал gui что-то на подобии sam broadcaster

На чём писал gui?

6245
Тарас @tarasian666
python + qt4

6
Alexander @KIper
Подскажи, пожалуйста, с какими "пакетами" собирал "мыло"? Я с минимальным, пока под мои нужды хватает...

6245
Тарас @tarasian666
Да по сути тоже с минимальными, добавил aac+ и alsa и то пользуюсь ими не часто

9
Harper @Harper
Здравствуйте. Хочу узнать по поводу заказов.
в документации есть такое
myplaylist = request.dynamic({request.create("bar:foo", indicators=get_process_lines("playlist.pl"))})
Вопрос, в каком виде вывод playlist.pl? Он выбирает трек по очереди? И как сделать чтобы если стол заказов пуст то играл нонстоп или диджей, если он в эфире. Спасибо заранее

З.Ы. 2 tarasian666: как сделать то что реализовано у Вас на сайте? Очень нужно...а именно блок Now palying и оставшееся время ниже и вывод Картинки альбома

Отредактировано Harper - 10.12.2013
6245
Тарас @tarasian666
playlist.pl выводит адрес к треку, а к какому именно решает скрипт ротации

оставшееся время = время сейчас - время старта трека + время трека
время старта и время трека идет из базы, туда его вносит liquidsoap другим скриптом

картинка идет с ластфм, поиск по альбому и артисту. API ластфм есть у них на сайте

9
Harper @Harper
Спасибо огромное, а если стол заказов пуст то нон-стоп сам будет играть? Ничего на этот случай дописывать не надо?

6245
Тарас @tarasian666
если стол заказов пуст то играет нон-стоп, если появляется заказ то он становится в очередь. Главое все верно раставить

9
Harper @Harper
Извините за наглость, а можете привести пример? :rolleyes:
Я так понимаю что первым стоит стол заказов, а после него прописан плейлист с нон-стопом? Или их переключение осуществляется fallback-ом?

6245
Тарас @tarasian666
можно и так, но у меня все не так ) Что играть у меня решают скрипты, а liquidsoap только играет то что ему скрипт подсовывает.
Если делать через queue самого "мыла" то как-то так

myplaylist = playlist("playlist.m3u")
queue = request.queue(id="queue", length=0.5)
myplaylist = mksafe(fallback([queue, myplaylist]))

9
Harper @Harper
Спасибо =) Буду пробывать

9
Harper @Harper
Здравствуйте еще раз. Возник новый вопрос, что делать когда возникает ситуация что Current Song: Unknown?
Как можно сделать чтобы если в тэгах аудиофайла нет описания - в Current Song писало имя трека?

9
Harper @Harper
Мучал мучал и вот до чего домучал.

req = request.dynamic({request.create("bar:foo", indicators=get_process_lines("get_rq.php"))})
radio = fallback(track_sensitive = false, [live, req, radio])

То есть, например пхп скрипт выдает ! трек из базы, который в очереди стоит. если треков нет идет фоллбэк на нонстоп.
Собственно вопрос - конструкция жизнеспособна? И не будет ли нонстоп играть с начала после того как закончатся заказы? Сейчас радио крутится без стола заказов, не хочется дергать лишний раз его...