Когда-то нашему саунд-дизайнеру пришла идея крутить в офисном туалете свою музыку (прям как в барах). Решили протестировать, поставили первый сетап: в ящике лежал смартфон с плейлистом в AIMP, который подключался к трансляционному усилителю, а сам плейлист закачивался на карту памяти с компа. Костыли, но зато всё заработало моментально. Треки всем зашли, и стали развивать идею до внутреннего радио. Расскажу, какую статью на Хабре мы взяли за основу, что поменяли и бонусом покажу комикс — презент от коллег за музыку.

Сначала телефон в ящике казался неплохим вариантом для концепта. Но постоянно загружать музыку в телефон не хотелось и как-то на корпоративе мы с саунд-дизайнером Ильей Викторовым разговорились про вещание в интернете. Сошлись, что будет круто, если во всех туалетах компании от Белгорода до Лимассола будет играть одна и та же хорошая музыка. Тем более плейлист очень зашел команде (в Слаке постоянно просили скинуть треки).

Полез я на Хабр и наткнулся на статью «Организация музыкального сопровождения торгового зала». Там @Teon_501 дает несколько полезных ссылок и рассказывает, как практично организовать вещание на связке из одного компа с LibreTime и второго — принимающего. Плюс он настроил запуск рекламы по времени. Если кратко, то его решение состоит из готовой сборки LibreTime, которая включает в себя web-админку с LiquidSoap, и с вещанием через IceCast.



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

Плюсы:

  • Удобная и простая настройка.
  • Стабильность (у нас ничего не падало).
  • Есть страничка с онлайн-плеером и расписанием.

Минусы (на текущий момент многие из них уже исправлены):

  • Встроенный модуль, который при автозагрузке треков сам высчитывает Fade in и Fade out, и делает это очень плохо. Многие треки обрезает до минуты (UPD: сейчас поможет обновление библиотеки silan до последней версии).
  • Не обновляется (UPD: тогда проект не обновлялся так часто, как сейчас)
  • Необходимость обязательно делать расписание вещания отдельно на каждый день (UPD: в комментариях говорят, что уже нет — можно сделать «связанную» программу и раскатывать до бесконечности).
  • Излишняя для нашей простой задачи функциональность.
  • Не устраивал встроенный перемешиватель музыки, треки часто повторялись.
  • Ограниченная длина плейлиста.

Мы же для себя собрали огромный плейлист, который хотели залить и рандомно проигрывать очень долгое время. Поэтому в следующей итерации всё упростили и заменили LibreTime на связку IceCast с MPD. На Хабре найдётся много статей, описывающих всё это (вдохновится можно здесь или здесь), а я приведу краткое описание настройки.

В качестве сервера вещания я выбрал Ubuntu Server 18.04:

Ставим Icecast и MPD
sudo apt install mpd icecast2

Потом правим конфиг MPD
sudo vi /etc/mpd.conf

И приводим его к такому виду (по факту это конфиг по умолчанию с отредактированными настройками выходного устройства и буфера)
music_directory "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
db_file "/var/lib/mpd/tag_cache"
log_file "/var/log/mpd/mpd.log"
pid_file "/run/mpd/pid"
state_file "/var/lib/mpd/state"
sticker_file "/var/lib/mpd/sticker.sql"
user "mpd"
bind_to_address "0.0.0.0"
port "6600"
log_level "default"
metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
auto_update "yes"
auto_update_depth "3"
default_permissions "read,add,control,admin"
audio_output
{
type "shout"
encoding "mp3"
name "Pixonic FM"
host "localhost"
port "8000"
mount "/_a"
password "613112"
bitrate "192"
format "44100:16:2"
protocol "icecast2"
}
replaygain "auto"
replaygain_preamp "0"
replaygain_missing_preamp "0"
replaygain_limit "yes"
volume_normalization "no"
filesystem_charset "UTF-8"
audio_buffer_size "2048"
buffer_before_play "50%"


Заливаем файлы, включаем как службу и перезапускаем mpd
systemctl enabled mpd
systemctl restart mpd && systemctl status mpd


Конфиг IceCast из коробки рабочий, но я всё же советую поменять хотя бы пароль в файле /etc/icecast2/icecast.xml (по умолчанию это hackme).

На данном этапе настройка завершена, теперь можете подключиться любимым плеером к серверу mpd и запустить треки. Мне нравится ncmpc, но можно выбрать другой по душе. Там же есть веб-клиенты, чтобы управлять плейлистом через браузер, но наш плейлист не меняется так часто.

Теперь на your_server:8000/_a можно прослушать свою трансляцию, но лучше, конечно, вставить ссылку в VLC.

Хотя планов еще много, это тот случай, когда надо делать проще. Например, сделать главную страницу. Сейчас мы просто отдаём поток для клиентов, который можно слушать через VLC.

To-Do List:

  • сделать, чтобы сотрудники могли сами предлагать треки прямо в вебе;
  • и голосовать за следующую композицию.

За звук у нас отвечает Илья, которому изначально и пришла идея. Сейчас в плейлисте уже много треков, плюс специально сделанные для такого случая джинглы.

Музыка, в основном, подбиралась фоновая. Хотелось, чтобы она всем нравилась, и тут помог большой опыт написания треков и составления плейлистов для мероприятий. Преимущественно это легкий liquid funk, chillwave, deep house, dub techno, немного эмбиента, электронный поп, немного инди-рока и несколько пасхалок из игр. Плюс отдельные плейлисты для рождественских праздников, дня святого Валентина, Хеллоуина, дня рождения War Robots и других событий.

P.S. Приятное лично для нас, захотелось поделиться. Когда все заработало, ребята из других отделов — Егор Гафидов, Даша Карякина, Анастасия Колчина и Софья Соломонова — сделали нам крутой подарок в виде комикса:



ПРОДОЛЖЕНИЕ КОМИКСА









Комментарии (22)


  1. Exosphere
    19.02.2019 11:40
    +5

    После введения музыки в туалетах эта часть вашей картинки стала, наверное, в разы актуальнее :-)

    Please, don't stop the music


    1. azazelis
      19.02.2019 12:16
      +1

      И ротация засыпающих увеличилась) Но все зависит от стиля музыки, каждый день меняем)


    1. orange303
      19.02.2019 12:39

      под CBL засыпают, а следом включается что-нибудь бодрое


    1. Ilha
      19.02.2019 12:43

      Главное, попасть в ритм.


  1. iSm1le
    19.02.2019 13:02

    А почему решили не использовать готовые облачные стриминговые радио сервисы? Там и расписание, и свой плейлист, и бесплатные тарифные планы.


    1. danyline Автор
      19.02.2019 13:09

      Изначально мы рассматривали self-hosted решения, только для своих. Поэтому даже не рассматривали подобный вариант. Но я буду рад, если вы поделитесь сервисами которые используете.


      1. iSm1le
        19.02.2019 13:26
        +1

        К примеру достаточно неплох radionomy, когда я его использовал мне все нравилось, удобная веб панель, нет ограничения на количество пользователей, они берут на себя хостинг, возможность загрузить любой трек, настроить расписание и тд. Единственный существенный минус как по мне, то что они предлагают стриминг 128кб/с, но с другой стороны как для радио должно хватать этого.


  1. 2PAE
    19.02.2019 14:00

    А как быть с отчислениями? Берёте проигрываете чужую музыку, в коммерческих целях. Это не к тому, что вы плохие, это вопрос к тому, что делать есть придут и спросят?


    1. orange303
      19.02.2019 14:04

      цели абсолютно некоммерческие


      1. Kozel-007
        19.02.2019 15:05

        Всё, что делают в компании в рабочее время, можно назвать коммерческим.


      1. 2PAE
        20.02.2019 06:07

        Любой грамотный юрист легко обоснует, что любые действия улучшающие условия труда персонала, это действия в коммерческих целях. ОК?

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


    1. AlxDr
      19.02.2019 18:38

      Как вариант — есть бесплатная музыка, Libre.FM, например.


  1. rostislav-zp
    19.02.2019 17:34
    +2

    Спасибо за статью.использовал Libretime тоже, то в итоге мне больше понравился проект azuracast.com и кстати там есть возможность голосования за треки.так же есть онлайн плеер и экспорт плейлистов в .pls/.m3u.Количество радиостанций не ограничено.

    интерфейс с моего радио




  1. nixoved
    19.02.2019 19:05

    Извините, но не согласен с Вашими выводами по поводу Либратайм:
    Минусы:

    Встроенный модуль, который при автозагрузке треков сам высчитывает Fade in и Fade out, и делает это очень плохо. Многие треки обрезает до минуты.

    Нужно было обновить библиотеку silan до последней версии.
    Не обновляется.

    Посмотрите тут — последние апдейты несколько дней назад:
    github.com/LibreTime/libretime
    Необходимость обязательно делать расписание вещания отдельно на каждый день.

    Совершенно нет. Делаете «связанную» программу и раскатываете до бесконечности.
    Ограниченная длина плейлиста.

    Да, максимально 24 часа)))

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


    1. danyline Автор
      19.02.2019 19:15

      Спасибо за комментарий! Добавил в статью комментарии в нужных местах)

      Когда мы пробовали LibreTime впервые — проект обновлялся не так часто. Поэтому проблемы с Silan и длиной плейлиста побудили искать новое решение.

      Сейчас Libre большой и крутой проект, просто для нас он оказался избыточным)


  1. courser
    19.02.2019 23:48

    одна и та же хорошая музыка

    Выглядит как конкретная жесть. У вас работают клоны с одинаковыми музыкальными вкусами? Хорошая это какая? Шнитке, Губайдулина или Мэрлин Мэнсон?


  1. DoctorMoriarty
    20.02.2019 02:24
    -1

    >сделать, чтобы сотрудники могли сами предлагать треки прямо в вебе

    К вам представители РАО еще не наведывались? :-)


  1. alex103
    20.02.2019 06:15
    +2

    Мне комикс понравился…
    :)


    1. lostpassword
      20.02.2019 11:19

      Присоединюсь) Кто рисовал комикс?


      1. danyline Автор
        20.02.2019 12:14

        Рисовал Егор Гафидов, а идея принадлежит Даше Карякиной, Анастасии Колчиной и Софье Соломоновой.


        1. lostpassword
          20.02.2019 14:57

          Это всё сотрудники?


  1. CLaiN
    21.02.2019 15:06

    А поделитесь плейлистом?