Когда-то нашему саунд-дизайнеру пришла идея крутить в офисном туалете свою музыку (прям как в барах). Решили протестировать, поставили первый сетап: в ящике лежал смартфон с плейлистом в 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. Приятное лично для нас, захотелось поделиться. Когда все заработало, ребята из других отделов — Егор Гафидов, Даша Карякина, Анастасия Колчина и Софья Соломонова — сделали нам крутой подарок в виде комикса:
ПРОДОЛЖЕНИЕ КОМИКСА
Exosphere
После введения музыки в туалетах эта часть вашей картинки стала, наверное, в разы актуальнее :-)
azazelis
И ротация засыпающих увеличилась) Но все зависит от стиля музыки, каждый день меняем)
orange303
под CBL засыпают, а следом включается что-нибудь бодрое
Ilha
Главное, попасть в ритм.
iSm1le
А почему решили не использовать готовые облачные стриминговые радио сервисы? Там и расписание, и свой плейлист, и бесплатные тарифные планы.
danyline Автор
Изначально мы рассматривали self-hosted решения, только для своих. Поэтому даже не рассматривали подобный вариант. Но я буду рад, если вы поделитесь сервисами которые используете.
iSm1le
К примеру достаточно неплох radionomy, когда я его использовал мне все нравилось, удобная веб панель, нет ограничения на количество пользователей, они берут на себя хостинг, возможность загрузить любой трек, настроить расписание и тд. Единственный существенный минус как по мне, то что они предлагают стриминг 128кб/с, но с другой стороны как для радио должно хватать этого.
2PAE
А как быть с отчислениями? Берёте проигрываете чужую музыку, в коммерческих целях. Это не к тому, что вы плохие, это вопрос к тому, что делать есть придут и спросят?
orange303
цели абсолютно некоммерческие
Kozel-007
Всё, что делают в компании в рабочее время, можно назвать коммерческим.
2PAE
Любой грамотный юрист легко обоснует, что любые действия улучшающие условия труда персонала, это действия в коммерческих целях. ОК?
И это не говоря о том, что Михалков умудрялся выставлять счета авторам, за воспроизведения ими своей собственной музыки.
AlxDr
Как вариант — есть бесплатная музыка, Libre.FM, например.
rostislav-zp
Спасибо за статью.использовал Libretime тоже, то в итоге мне больше понравился проектazuracast.com и кстати там есть возможность голосования за треки.так же есть онлайн плеер и экспорт плейлистов в .pls/.m3u.Количество радиостанций не ограничено.
nixoved
Извините, но не согласен с Вашими выводами по поводу Либратайм:
Минусы:
Нужно было обновить библиотеку silan до последней версии.
Посмотрите тут — последние апдейты несколько дней назад:
github.com/LibreTime/libretime
Совершенно нет. Делаете «связанную» программу и раскатываете до бесконечности.
Да, максимально 24 часа)))
Почему я это пишу — просто Либратайм один из немногих продуктов для радиовещания в интернете и поверьте — достаточно энтерпрайзного уровня: каждая третья станция работает на нем. Продукт достаточно отточен, просто нужно было изучить документацию по продукту, которая в избытке.
danyline Автор
Спасибо за комментарий! Добавил в статью комментарии в нужных местах)
Когда мы пробовали LibreTime впервые — проект обновлялся не так часто. Поэтому проблемы с Silan и длиной плейлиста побудили искать новое решение.
Сейчас Libre большой и крутой проект, просто для нас он оказался избыточным)
courser
одна и та же хорошая музыка
Выглядит как конкретная жесть. У вас работают клоны с одинаковыми музыкальными вкусами? Хорошая это какая? Шнитке, Губайдулина или Мэрлин Мэнсон?
DoctorMoriarty
>сделать, чтобы сотрудники могли сами предлагать треки прямо в вебе
К вам представители РАО еще не наведывались? :-)
alex103
Мне комикс понравился…
:)
lostpassword
Присоединюсь) Кто рисовал комикс?
danyline Автор
Рисовал Егор Гафидов, а идея принадлежит Даше Карякиной, Анастасии Колчиной и Софье Соломоновой.
lostpassword
Это всё сотрудники?
CLaiN
А поделитесь плейлистом?