LINUX.ORG.RU

Jessie/Liquidsoap: То работает, то не работает.

 , ,


0

1

Ось: Debian Jessie.

За основу взята статья: https://habrahabr.ru/post/156591/

Устанавливаю из репов:

apt-get install liquidsoap
При установке цепляет и устанавливает следующие зависимости:

Будут установлены следующие дополнительные пакеты:
  libao-common libao4 libasound2 libasound2-data libasyncns0
  libcamomile-ocaml-data libfaad2 libflac8 libgomp1 libgsm1 libice6 libltdl7
  libmad0 libmp3lame0 libopencore-amrnb0 libopencore-amrwb0 libpulse0 libsm6
  libsndfile1 libsox-fmt-alsa libsox-fmt-base libsox2 libtag1-vanilla
  libtag1c2a libvo-aacenc0 libvorbisenc2 libvorbisfile3 libwavpack1
  libx11-xcb1 libxtst6 liquidsoap-plugin-faad liquidsoap-plugin-flac
  liquidsoap-plugin-icecast liquidsoap-plugin-lame liquidsoap-plugin-mad
  liquidsoap-plugin-ogg liquidsoap-plugin-pulseaudio liquidsoap-plugin-taglib
  liquidsoap-plugin-voaacenc liquidsoap-plugin-vorbis sox vorbis-tools
  vorbisgain x11-common
Предлагаемые пакеты:
  libaudio2 libesd0 libesd-alsa0 libasound2-plugins alsa-utils
  libcamomile-ocaml-dev pulseaudio libsox-fmt-all festival mplayer liguidsoap
  liquidsoap-plugin-samplerate liquidsoap-plugin-xmlplaylist
Рекомендуемые пакеты:
  mp3gain
НОВЫЕ пакеты, которые будут установлены:
  libao-common libao4 libasound2 libasound2-data libasyncns0
  libcamomile-ocaml-data libfaad2 libflac8 libgomp1 libgsm1 libice6 libltdl7
  libmad0 libmp3lame0 libopencore-amrnb0 libopencore-amrwb0 libpulse0 libsm6
  libsndfile1 libsox-fmt-alsa libsox-fmt-base libsox2 libtag1-vanilla
  libtag1c2a libvo-aacenc0 libvorbisenc2 libvorbisfile3 libwavpack1
  libx11-xcb1 libxtst6 liquidsoap liquidsoap-plugin-faad
  liquidsoap-plugin-flac liquidsoap-plugin-icecast liquidsoap-plugin-lame
  liquidsoap-plugin-mad liquidsoap-plugin-ogg liquidsoap-plugin-pulseaudio
  liquidsoap-plugin-taglib liquidsoap-plugin-voaacenc liquidsoap-plugin-vorbis
  sox vorbis-tools vorbisgain x11-common
обновлено 0, установлено 45 новых пакетов, для удаления отмечено 0 пакетов, и 50 пакетов не обновлено.

Копирую полностью готовую структуру (как в статье) директорий с музыкой в /data/radio/. Вся музыка строго одного и того же формата: MP3 CBR 192kbps сконвертированная через WinLame.

Создаю скрипт start-radio.liq:

#!/usr/local/bin/liquidsoap

# создаём переменные быстрого исправления в одном месте по необходимости
# базовая информация о выводимом потоке
out = output.icecast(
# хост с icecast
host = "127.0.0.1",

# его порт
port = 8000,

# логин
user = "source",

# и пароль
password = "hackme",

# название
name = "Testing Radio",

# жанр
genre = "Rock",

# ссылка на сайт
url = "http://radio.ru",

# кодировка
encoding = "UTF-8"
)

# включаем telnet-сервер
set("server.telnet.bind_addr","127.0.0.1")
set("server.telnet",true)

# _____________________________________
# Описание файловой структуры нашего радиосервера. 
# Переменные можно не использовать, а писать сразу полные пути к плейлистам, но при изменении названия одной из папок, придётся править довольно много строк в конфигурации. Как показала практика, такой подход удобнее.

# абсолютный путь к рабочей директории
wd = "/data/radio"

# путь к папке с аудиофайлами
pl = "#{wd}/collection"

# техническая папка
tech = "#{wd}/technical"

# логи
set("log.file.path","#{tech}/liquidsoap.log") # путь к файлу лога
set("log.level", 3) # уровень логирования

# папка с информационными вставками
promo_dir = "#{pl}/promo"

# папка с программами
# progr_dir = "#{pl}/programs"

# папка с изменяющимся эфиром
ef = "#{pl}/efir"

# папки соответствующих эфиров
ni = "#{ef}/night"
mo = "#{ef}/morning"
da = "#{ef}/daytime"
ev = "#{ef}/evening"

# папки с музыкой
mus_ni_dir = "#{ni}/music"
mus_mo_dir = "#{mo}/music"
mus_da_dir = "#{da}/music"
mus_ev_dir = "#{ev}/music"

# папки с джинглами
jin_ni_dir = "#{ni}/jingles"
jin_mo_dir = "#{mo}/jingles"
jin_da_dir = "#{da}/jingles"
jin_ev_dir = "#{ev}/jingles"

# плейлисты с программами. Обратите внимание - до этого указывались пути к папкам, а здесь - к простым текстовым файлам.
# 1_prog_pl = "#{progr_dir}/1_prog.pl"
# 2_prog_pl = "#{progr_dir}/2_prog.pl"


# _____________________________________
# Создаём объекты типа "source", в нашем случае это аудиоисточники. 
# Здесь атрибут "reload" позволяет раз в 360 секунд перечитывать плейлист по пути, указанному далее.
# По умолчанию, музыка проигрывается рандомно, атрибут <code>mode = "normal"</code> указывает на проигрывание по порядку.

# загружаем плейлисты, джинглы, вставки, программы
mus_ni   = playlist (reload = 360, "#{mus_ni_dir}")
mus_mo   = playlist (reload = 360, "#{mus_mo_dir}")
mus_da   = playlist (reload = 360, "#{mus_da_dir}")
mus_ev   = playlist (reload = 360, "#{mus_ev_dir}")

jin_ni   = playlist (reload = 360, "#{jin_ni_dir}")
jin_mo   = playlist (reload = 360, "#{jin_mo_dir}")
jin_da   = playlist (reload = 360, "#{jin_da_dir}")
jin_ev   = playlist (reload = 360, "#{jin_ev_dir}")

promo    = playlist (reload = 360, "#{promo_dir}")
# 1_prog   = playlist (reload = 360, "#{1_prog_pl}", mode = "normal")
# 2_prog   = playlist (reload = 360, "#{2_prog_pl}", mode = "normal")

# _____________________________________
# строим 4 потока, сразу всё перемешивая
# смешиваем вставки
ins_ni = rotate (weights = [2, 1], [jin_ni, promo])
ins_mo = rotate (weights = [2, 1], [jin_mo, promo])
ins_da = rotate (weights = [2, 1], [jin_da, promo])
ins_ev = rotate (weights = [2, 1], [jin_ev, promo])

# смешиваем вставки и потоки
ni = rotate (weights = [3, 1], [mus_ni, ins_ni])
mo = rotate (weights = [3, 1], [mus_mo, ins_mo])
da = rotate (weights = [3, 1], [mus_da, ins_da])
ev = rotate (weights = [3, 1], [mus_ev, ins_ev])

#_______________________________________________________________________
# конфигурируем расписание эфира

radio = switch (track_sensitive = true,
[
  ({  2h - 6h  }, ni),
  ({  6h - 9h  }, mo),
  ({  9h - 19h }, da),
  ({ 19h - 2h  }, ev)
])

#_______________________________________________________________________

# добавляем crossfade
radio = crossfade(start_next=1., fade_out=1., fade_in=1., radio)

# и, наконец, запускаем вещалку

out(
 %mp3(bitrate = 192, id3v2 = true),
 description = "MP3 192 Kbps",
 mount = "music",
 mksafe(radio)
)

В скрипте видно, что я закомментировал/удалил значения касательно первой и второй программы (пока не нужны):

# progr_dir = "#{pl}/programs"
# 1_prog_pl = "#{progr_dir}/1_prog.pl"
# 2_prog_pl = "#{progr_dir}/2_prog.pl"
# 1_prog   = playlist (reload = 360, "#{1_prog_pl}", mode = "normal")
# 2_prog   = playlist (reload = 360, "#{2_prog_pl}", mode = "normal")
Удалил:
  ({ (1w21h - 1w22h) or (3w21h - 3w22h) or (5w21h - 5w22h)}, 1_prog),
  ({ (1w18h - 1w19h) or (3w18h - 3w19h) or (4w18h - 4w19h) or (5w18h - 5w19h)}, 2_prog),
Затем создал пустой лог-файл, и рекурсивно сменил владельца и права на доступ к каталогу /data/radio:
touch /data/radio/technical/liquidsoap.log
chown -R liquidsoap:liquidsoap /data/radio/
chmod -R 0775 /data/radio/
Создал ссылку на скрипт для liquidsoap:
ln -s /data/radio/technical/start-radio.liq /etc/liquidsoap
Дальше что старт/рестарт/ребут службы и системы: Захочет заработает, а захочет - выкинет в тишину.
2016/07/17 02:44:44 [mksafe:3] Switch to safe_blank.
Лог 1

Лог 2

Что делать?

P.S.: Странно - каты не работают...

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.