Когда-то нашему саунд-дизайнеру пришла идея крутить в офисном туалете музыку (прям как в барах). Решили протестировать, поставили первый сетап: в ящике лежал смартфон с плейлистом в AIMP, который подключался к трансляционному усилителю, а сам плейлист закачивался на карту памяти с компа. Костыли, но зато всё заработало моментально. Треки всем зашли, и стали развивать идею до внутреннего радио. Расскажу, какую статью на Хабре мы взяли за основу, что поменяли и бонусом покажу комикс — презент от коллег за музыку.
Сначала телефон в ящике казался неплохим вариантом для концепта. Но постоянно загружать музыку в телефон не хотелось и как-то на корпоративе мы с саунд-дизайнером Ильей Викторовым разговорились про вещание в интернете. Сошлись, что будет круто, если во всех туалетах компании от Белгорода до Лимассола будет играть одна и та же хорошая музыка.
Тем более плейлист очень зашел команде (в Слаке постоянно просили скинуть треки), а московский офис постепенно расширялся — появились новые этажи, столовые и пространства, которые хотелось «оживить».
Полез я на Хабр и наткнулся на статью «Организация музыкального сопровождения торгового зала». Там @Teon_501 дает несколько полезных ссылок и рассказывает, как практично организовать вещание на связке из одного компа с LibreTime и второго — принимающего. Плюс он настроил запуск рекламы по времени. Если кратко, то его решение состоит из готовой сборки LibreTime, которая включает в себя web-админку с LiquidSoap, и с вещанием через IceCast.
Отличный вариант, мы попробовали сделать так же (но без рекламы) и довольно долго его использовали. В результате составили список плюсов и минусов для нашей ситуации.
Плюсы:
- Удобная и простая настройка.
- Стабильность (у нас ничего не падало).
- Есть страничка с онлайн-плеером и расписанием.
Минусы:
- Встроенный модуль, который при автозагрузке треков сам высчитывает Fade in и Fade out, и делает это очень плохо. Многие треки обрезает до минуты.
- Не обновляется.
- Необходимость обязательно делать расписание вещания отдельно на каждый день.
- Излишняя для нашей простой задачи функциональность.
- Не устраивал встроенный перемешиватель музыки, треки часто повторялись.
- Ограниченная длина плейлиста.
Мы же для себя собрали огромный плейлист, который хотели залить и рандомно проигрывать очень долгое время. Поэтому в следующей итерации всё упростили и заменили LibreTime на связку IceCast с MPD. На Хабре найдётся много статей, описывающих всё это (вдохновится можно здесь или здесь), а я приведу краткое описание настройки.
В качестве сервера вещания я выбрал Ubuntu Server 18.04:
sudo apt install mpd icecast2
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%"
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, немного эмбиента, типа Carbon Based Lifeforms, качественный электронный поп, типа Royksopp или Ladytron, немного инди-рока и несколько пасхалок из игр, вроде Fallout. Плюс отдельные плейлисты для рождественских праздников, дня святого Валентина, Хеллоуина, дня рождения War Robots и других событий.
P.S. Приятное лично для нас, захотелось поделиться. Когда все заработало, ребята из других отделов — Егор Гафидов, Даша Карякина, Анастасия Колчина и Софья Соломонова — сделали нам крутой подарок в виде комикса:
Автор: Даниил Борисов