Радио на VDS с автодиджеем, кроссфейдингом и джинглами. Пошаговая инструкция 2017 года! Часть 2

В предыдущей своей статье я очень подробно рассказал о создании онлайн радиостанций на виртуальном выделенном сервере при помощи Icecast2 и ezstream. Однако, разбираясь дальше в вопросе запуска собственного радио на VDS, я всё-таки нашёл способ запустить ices вместо ezstream. Эта программа очень долго мне не поддавалась: в процессе установки всё что-то было не так. Но, как говорится, вода камень точит и наконец я её одолел.

Преимущества ices перед ezstream состоит в следующем:

  • Есть перекодировка потока на лету и кроссфейдинг (наложение треков друг на друга с плавным нарастанием/затуханием).
  • Нет необходимости возиться с плейлистами в текстовом формате. Благодаря perl можно играть музыку прямо из папки в режиме random (случайное воспроизведение).
  • Скрипт perl также делает возможным добавить в ротацию джинглы, которые будут звучать через чётко определённое количество треков (например, один джинг через каждые пять песен).
  • Если хорошенько поразбираться, то в скрипт perl можно написать свои правила ротации.
  • При использовании ices точно так же, как и в случае с ezstream, можно создать сразу множество радиостанций на одном выделенном сервере и IP адресе.

icecast2 + ices0.4

Что касается недостатков, то, пожалуй, он всего один: для радио мы будем использовать устаревшую версию ices0.4. Уже давно существует официальная ices2, но нам она абсолютно неинтересна. И вот почему: из-за патентных ограничений во 2 версии убрали поддержку формата mp3 - оставили лишь ogg. Лично я считаю вещание в mp3 принципиальным моментом для себя, поэтому и остановился на более старой ices0.4. Впрочем, старая версия это не так страшно, как показалось мне в самом начале - ведь мы будем использовать версию этого ПО, модифицированную небезысвестной канадской компанией Centova (об этом чуть ниже).

Данный материал я не буду писать так подробно, как предыдущий. Если вы совсем «чайник» в работе с выделенным сервером, то лучше вам сначала пошагово выполнить всё описанное в прошлой статье. Так вы разберётесь в самых важных моментах. Тем более, что в той статье подробно рассмотрен не только процесс запуска радио на VDS, но и дан подробный пошаговый алгоритм заказа самого дешёвого выделенного сервера и его первичной настройки.

Итак, будем считать, что 1 и 2 шаг из прошлой статьи мы уже выполнили: у нас есть выделенный сервер с установленной на него виртуальной машиной Debian 7 (разумеется, без панели управления ISP Manager), а на компьютер установлены программы PuTTYWinSCP и Notepad++ (если нет, читаем прошлый гайд). Теперь переходим к собственно установке и настройке необходимого нам программного обеспечения: Icecast2 и ices0.4.

Устанавливаем Ices0.4 (модифицированная версия от Centova) и Icecast2

Предполагая, что вы не только прочитали внимательно предыдущую статью, но и на практике осуществили все описанные в ней шаги (возможно, и не один раз), в этой инструкции я не буду разжёвывать, как и чем пользоваться. если что-то непонятно, внимательно изучайте предыдущий гайд. Если всё равно что-то не идёт, только тогда задавайте вопросы в комментариях.

Думаю, будет лучше, если перед установкой нового ПО по этой статье, вы полностью переустановите операционную систему на своей виртуальной машине (напоминаю, что на FirstVDS это делается буквально за несколько секунд тут).

Итак, запускаем PuTTY и для начала обновляем нашу систему.

Не забываем отвечать y+Enter на возникающие в процессе установки вопросы.

apt-get update

apt-get upgrade

Теперь по очереди ставим из репозиториев нашей Linux Debian нужные нам дополнительные библиотеки.

apt-get install nano make gcc libperl-dev libshout-dev libmp3lame-dev libxml2-dev

apt-get build-dep libpcre3

Теперь ставим саму ices0.4. Её придётся собирать самостоятельно.

wget http://www.centova.com/clientdist/ices/ices-cc-0.4.2.tar.gz

Вообще, эта версия ices0.4 не официальная, а доработанная сторонними разработчиками - канадскими специалистами из компании Centova. В ней были исправлены некоторые баги. С одним из них я лично столкнулся, когда пытался поставить ices с её официального сайта - вместо названий некоторых треков у меня вылезала непереводимая абракадабра из трёх символов в имени исполнителя и названии песни. Характерно, что такая проблема возникала отнюдь не с кириллицей, а с латиницей, и не у меня одного. Доверять разработчикам сайта centova.com однозначно можно: именно они создали и поддерживают всемирно известную панель управления для радиовещания Centova Cast (о самом дешёвом радиохостинге с этой панелью и о том, как управлеть ей самой, у меня есть статья). Подозреваю, что для Centova Cast они и дорабатывали библиотеку ices0.4.2. В результате получилась отдельная версия ices-cc-0.4.2, где cc - это Centova Cast или Centova.Com. На всякий случай архив с этой библиотекой я скопировал к себе. Если вдруг вам не удастся загрузить ices-cc-0.4.2 с сайта centova.com, то качайте отсюда: http://mnogoradio.ru/MYfiles/ices-cc-0.4.2.tar.gz

Кажется, я немного отвлёкся)) Далее последовательно выполняем следущие команды: распаковываем архив, переходим в папку с ним, собираем и устанавливаем:

tar -zxvf ices-cc-0.4.2.tar.gz

cd ices-cc-0.4.2

./configure

make

make install

Теперь устанавливаем Icecast2. В процессе сразу же соглашаемся сконфигурировать программу: настраиваем host (вводим наш IP адрес) и три раза пароль (я использую один и тот же).

apt-get install icecast2

Настройка Icecast2

При необходимости настраиваем конфигурационный файл Icecast (число слушателей, количество радиопотоков и т.п.) под себя. Как это делать, писать тут не буду - опять же это всё довольно подробно расписано в предыдущей статье. Перезапускаем icecast.

/etc/init.d/icecast2 restart

Настройка конфигурации Ices 0.4

На этом шаге нам прежде всего нужно запустить программу WinSCP и соединиться со своим выделенным сервером, введя IP, логин (root) и пароль.

Хранить музыкальные mp3 файлы мы будем в директории /home. Поскольку радиостанций я запускаю несколько, а не одну,  то внутри этой папки для каждого радио я создаю свою вложенную папку: например, enigma - для радиостанции с песнями группы Enigma. Получается такой путь к файлам: /home/enigma

Небольшая предыстория. Вообще, есть два способа настройки конфигурации ices: при помощи встроенного обработчика builtin или сторонних (perl, script или python). Запуску ices со встроенным обработчиком builtin посвящены почти все найденные мною в рунете статьи на эту тему. Там всё и проще, и одновременно сложнее и малофункциональнее: каждый раз при запуске станции нужно формировать плейлист, нет джинглов, но всё-таки есть кроссфейдинг. Мне этот вариант по умолчанию кажется менее интересным и в данный момент и на перспективу. Описывать его я не буду. Если вам вдруг захочется его попробовать, то инструкций на эту тему в сети просто навалом. Просто набирайте в поисковике «ices0 icecast настройка» и выбирайте гайд.

Файл конфигурации ices.conf, в котором собственно радио сначала и настраивается, а затем запускается, можно расположить где угодно. Мы с вами не будем зарываться глубоко от корня сервера, а разместим его, как и папки с музыкой, в каталоге home. Оригинал конфигурационного файла всегда хранится по пути: /usr/local/etc/ices.conf.dist. Предполагается, что мы скопируем его в нужное нам место. Вы можете его взять оттуда, но для большего удобства предлагаю вам скачать подправленный мною оригинальный файл. Все настройки по умолчанию в нём сохранены, вот только комментарии, что и как прописывается в конфигурации, я как смог перевёл на русский. Скачать ices.conf.

  • Первые два параметра в этом файле (file и randomize) мы не трогаем, так как они будут определяться скриптом perl.
  • В Type заменяем встроенный обработчик builtin на perl. <Type>perl</Type>
  • В Module мы прописываем своего рода уникальное имя для каждой нашей радиостанции. Именно в файле с таким именем будет храниться скрипт, отвечающий за правила воспроизведения треков. Если станция всего одна, то можно оставить этот параметр как есть - ices, если же несколько, то надо дать уникальное имя для каждого радио. (Сразу скажу на своём опыте, что тире и пробелы в имени использовать нельзя, а цифры можно. Лично я даю имя так: icesenigma, iceshits и т.д.). <Module>icesenigma</Module>
  • Crossfade - раскомментируйте этот параметр, если хотите, чтобы треки накладывались друг на друга и применялся эффект плавного затухания/нарастания. Продолжительность кроссфейдинга указывается в секундах. Эффект не будет применять к тем трекам, длина которых не более, чем в два раза превышает продолжительность самого кроссфейда. К примеру, если вы установили кроссфейдинг 5 секунд, то он не будет применяться к mp3 файлам длиной 10 секунд и короче. Это очень удобно для работы с короткими джинглами.
  • В Background пишем 1 для автозапуска потока в случае перезагрузки ices. Как это работает и работает ли вообще, пока не разобрался.
  • Hostname - прописываем IP адрес выделенного сервера (как в Icecast).
  • Port - 8000 (или другой, если меняли в конфиге Icecast).
  • Пароль (Password) - тот же, что и в Icecast.
  • Mountpoints - точка монтирования конкретно радиостанции (например, enigma).
  • Далее заполняются информационные данные о радио: название, жанр, описание, сайт. Думаю, в пояснении они не нуждаются.
  • Bitrate - битрейт радиостанции. В случае, если ниже включена перекодировка (а она обязательно должна быть включена для работы кроссфейдинга), то весь поток будет перекодироваться в указанный битрейт.
  • Reencode - та самая перекодировка, о которой написано выше. 1 - включена, 0 - выключена. Библиотеку LAME, необходимую для её работы, мы с вами установили в самом начале вместе с другим необходимым ПО.

Настроенному файлу конфигурации даём своё имя (например, у меня это ices-enigma.conf) и закачиваем в папку home через программу WinSCP.

Настройка perl для ices

Теперь переходим к размещению скрипта, который будет выводить нам в эфир в случайном порядке музыку и джинглы через определённое количество треков.

Имя для этого файла мы прописали в параметре Module конфигурации ices. Имя файла скрипта по умолчанию ices, но для нескольких станций надо задавать разные имена. Поэтому я сразу использую изменённое имя - например, icesenigma.

На рабочем столе компьютера при помощи редактора Notepad++ создаём файл с придуманным вами именем и расширением pm (ices.pm для одной станции или icesenigma.pm - если поток не один). Вставляем в этот файл следующий код (его я взял отсюда):

sub ices_init {
print "Perl subsystem Initializing:\n";
$jingle = 0;
return 1;
}
sub ices_shutdown {
print "Perl subsystem shutting down:\n";
}
sub ices_get_next {
print "Perl subsystem quering for new track:\n";
if($jingle < 5){
$jingle ++;
@music=`/bin/ls -1 /home/enigma/*.mp3`;
}else{
$jingle = 0;
@music=`/bin/ls -1 /home/jingles/*.mp3`;
}
$num = scalar (@music);
$play=int(rand($num));
chomp $music[$play];
return $music[$play];
}
return 1;

Пути в папки с музыкой и джинглами надо прописать свои. В данном скрипте джингл играет раз в пять песен. Если нужно изменить это, то вместо 5 ставим свою цифру.

Сохраняем и закачиваем этот файл в папку по пути /usr/local/etc/modules/.

Внимание! Ещё раз подчеркну, что имя данного файла должно сопадать с тем, что указано в пункте Module конфигурации ices. Например, для <Module>icesenigma</Module> имя файла будет icesenigma.pm

Для того, чтобы запустить радиостанцию в эфир, в PuTTY даём команду (не забудьте поменять название файла конфигурации на своё):

ices -c /home/ices-enigma.conf

Напомню, что оставновить ices можно такой командой:

killall ices

Автозапуск ices 0.4

Как заставить ices запускаться автоматически в случае сбоя или перезагрузки сервера (как это, например, делает Icecast) я пока не разобрался. Поэтому на данный момент, к сожалению, если случится форс-мажор, поток замолчит до тех пор, пока не будет перезапущен в терминале.

Пара бессонных ночей и я всё-таки разобрался (прыгаю от радости!), как заставить автоматически запускаться не только Icecast2, но и конфигурационные файлы всех радиостанций вида ices.conf. Для этого в файл /etc/rc.local перед последней строчкой exit 0 нужно добавить вот это:

sleep 10 && /usr/local/bin/ices -c /home/ices-enigma.conf &

Sleep 10 - это задержка выполнения команды на 10 секунд. Она необходима, чтобы до её запуска гарантированно успел запуститься Icecast (разные люди в сети пишут, что надо ставить 30, 60 или даже 120 секунд, однако моя проверка показала, что хватает и 10 секунд). /usr/local/bin/ices - стандартный путь для ices. А вот имя конфигурационного файла (у меня это ices-enigma.conf), разумеется, надо заменить на своё. Если потоков несколько, то и строчек будет несколько - для каждого дополнительного радио меняем только имя файла конфигурации ices (ну и путь к нему, если он отличается).

 

Поделиться страницей в соцсетях:

Хотите создать собственное музыкальное онлайн радио? Легко!