AirPlay и Spotify на Яндекс Станции. что? да
иногда мне кажется, что в жизни я занимаюсь чем-то не тем. поэтому сегодня вы узнаете, как завести airplay или спотифай на вашей фсбшной колоночке.
зачем, если есть блютуз?
честно? главный аргумент — блютуз меня бесит. и тебя, скорее всего, блютуз полностью устроит — пользуйся, я не осуждаю. но если ты всё же дочитал, вот по делу:
- телефон перестаёт быть проводом. по блютузу твой телефон — это и есть звуковая труба: любой дзиньк уведомления, звонок, звук из ютуба и рандомной игры летит прямо в колонку. отошёл в другую комнату — музыка отвалилась. по airplay колонка сама тянет поток по wi-fi, а телефон свободен: можно принять звонок, уйти на кухню, кинуть телефон на зарядку — играет дальше.
- дальнобойность. wi-fi добивает по всей квартире, блютуз — метров 10 и то пока стенка не встанет.
- мультирум. можно лить на несколько колонок сразу и группировать их. блютуз — это всегда один-на-один. правда, с music assistant никто не гарантирует качественного мультирума из-за буферизации потока, об этом в конце этой простыни.
- никаких танцев с сопряжением. любое устройство в сети видит колонку, не надо каждый раз коннектиться и выяснять, к чьему телефону она сейчас прицепилась.
- качество. wi-fi по полосе несравнимо шире. блютуз режет звук кодеком (sbc/aac, лосси, ещё и пережимает). airplay несёт alac вплоть до 16 бит / 44.1 — то есть без второго пережатия поверх и так не lossless-источника.
а спотифай — это вообще другое: подрубаешь колоночку прямо из приложения (примерно как это сделано в приложении яндекс музыки) и рулишь всей своей библиотекой спотифай прямо на станции.
что понадобится
домашний сервер, например на убунте. на нём поднимаем Music Assistant с кастомной интеграцией ma-provider-yandex-station — она пока не в официальном репозитории MA (когда-нибудь будет, автор уже льёт PR-ы в апстрим, но пока копируем исходнички ручками).
провайдер общается со станцией по локальному протоколу Glagol (тот самый недокументированный вебсокет в яндекс станции), даёт полноценное управление — play/pause/next/перемотка/громкость — и сам находит колонки в сети по mDNS. это не блютуз и не проброс через облако, всё локально.
шаг 1. ставим Music Assistant с провайдером станции
клонируй репозиторий провайдера, там лежит docker-compose.dev.yml. поднимай его:
docker compose -f docker-compose.dev.yml up -d
либо поправь compose под себя. например, в нём по умолчанию nightly-билд MA — можешь заменить на стабильный:
image: ghcr.io/music-assistant/server:latest
вся магия внутри: compose монтирует исходники провайдера в контейнер, а скриптик на старте линкует их в нужную папку MA и доставляет зависимости.
и не забудь:
– network_mode: host — обязателен, иначе не будет ни обнаружения колонок, ни звука (в dev-compose он обычно уже прописан, но проверь).
– сервер, станция и телефон — в одной плоской сети без vlan (mDNS через них не ходит). хотя, если ты знаешь что такое vlan, то ты это понимаешь.
шаг 2. добавляем станцию как плеер
заходим на http://<ваш_сервер>:8095, регистрируемся.
идём в Settings → Player Providers → Add a player provider → Yandex Station. логин через девайс-код или qr — мне было удобнее через qr. под капотом провайдер получит долгоживущий токен, им он и авторизуется на колонке.
прожимаем снизу сохранить.
всё — теперь ваши фиолетовые товарищи майоры добавлены как колонки в Music Assistant, и на них можно транслировать любую музыку из MA.
шаг 3. подрубаем AirPlay
добавляем первый плагин: Plugins → Add a plugin → AirPlay Receiver.
- Connected Music Assistant Player — выбираем алисоньку из списка (это плеер, на который приёмник будет переливать звук).
- AirPlay device name — так колонка будет называться в списке устройств.
сохраняем. теперь можно транслировать звук с любого устройства из яблочной экосистемы.
честно: плагин пока в раннем бете, добавлять его надо отдельно под каждый плеер, и иногда он капризничает. работает — да и ладно. иногда нестабильно, иногда не подключается. такова цена жизни в чужой закрытой экосистеме, которую мы любим.
шаг 4. Spotify Connect
добавляется там же, в Plugins. думаю, не заблудитесь в трёх кнопках. так же выбираем алисоньку как connected player.
что стоит знать заранее: – нужен Spotify Premium (плагин работает через librespot, а он с бесплатными аккаунтами не дружит). – команды из приложения долетают с задержкой 0.5–5 секунд — звук буферизуется и переливается на колонку, так что метадата иногда бежит впереди звука. это норма для такой схемы.
как это вообще работает (для любознательных)
и airplay, и spotify connect тут — это плагины-приёмники. MA притворяется колонкой: телефон/приложение думают, что играют на «устройство MA», а Music Assistant буферизует входящий поток и переливает его на реальную станцию по Glagol.
отсюда и плюсы, и минусы. плюс — станция становится универсальным выходом для чего угодно. минус — для самой колонки это просто внешний аудиопоток, поэтому родного визуализатора Алисы на экранчике и голосового управления очередью тут не будет, только звук и управление из приложения-источника. хочешь визуализацию — это уже нативное воспроизведение, только библиотека яндекс музыки.
вот таким пердолингом я и занимаюсь. но оно работает. звезду на репозиторий уже поставил, жду, когда провайдер добавят в официальный реестр — тогда весь этот кастомный образ можно будет выкинуть и жить на чистом MA.
а чем вы занимаетесь в свободное время?