Without Streaming перестал быть плеером и стал радиостанциейКогда я писал
первые посты про Without Streaming, слово «радио» было скорее формой описания.
Тогда каждый человек фактически запускал свой собственный плеер. Браузер получал плейлист из Telegram, сам выбирал последовательность треков, управлял переходами, а две ручки Jazz ⇄ Hip-hop и Drifting ⇄ Driving позволяли каждому собирать собственную версию потока.
Это работало, но у настоящего радио есть одно фундаментальное свойство:
в каждый момент времени существует один эфир для всех.
Именно это я в итоге полностью перестроил.
Теперь человек, который открывает Without Streaming, не получает собственную очередь и не начинает трек сначала. Он подключается к тому месту, которое прямо сейчас звучит в эфире.
Внутри архитектура теперь выглядит примерно так:
Telegram
↓
локальная медиатека
↓
Python
↓
Liquidsoap
↓
AAC-LC
↓
HLS
↓
Caddy
↓
один общий live-эфир
Если совсем простыми словами:
Liquidsoap — это радиодвижок. Он непрерывно воспроизводит выбранные треки, делает переходы между ними и формирует тот самый сигнал, который в этот момент действительно находится в эфире.
AAC-LC — аудиокодек: он сжимает этот сигнал в формат, который можно достаточно экономно передавать слушателям через интернет.
HLS — способ доставки live-потока. Вместо одного бесконечного соединения эфир постоянно нарезается на короткие сегменты, а браузер последовательно забирает их и поэтому может подключиться к текущему моменту трансляции.
Caddy — веб-сервер на выходе этой цепочки. Он раздаёт слушателям HLS, сайт и остальные публичные файлы.
Самое важное изменение здесь связано даже не с Liquidsoap или HLS, а с разделением ответственности.
Python решает,
что должно прозвучать дальше.
Liquidsoap является
фактической точкой эфира.
Браузер больше ничего не программирует, он только слушает.
Раньше трек во время Play запрашивался непосредственно из Telegram и потоково отдавался браузеру. Сейчас вся пригодная медиатека зеркалируется локально и может продолжать играть независимо от доступности Telegram.
То есть Telegram постепенно превратился из:
CMS + файлового сервера + runtime-зависимости
в:
CMS + источник публикации и происхождения материала.
Изменился и сам клиент.
Вместо браузерного аудиодвижка сейчас используется один постоянный <audio>, подключённый к HLS.
Play теперь после паузы возвращает слушателя не к старой позиции, а обратно в текущий эфир.
Визуалы существуют отдельно от музыкальной программы. Они локально подготовлены, раздаются как статические MP4 и вращаются независимо у каждого слушателя.
Старые Jazz / Hip-hop и Drifting / Driving ручки поэтому исчезли из интерфейса не случайно. Их идея не отброшена, но управление музыкальной логикой постепенно переезжает туда, где ему теперь правильнее находиться:
в серверное программирование общего эфира, а не в персональный плеер каждого слушателя.Параллельно у радио появился отдельный operational layer. Теперь я вижу, сколько людей находится на сайте, сколько реально слушает HLS, дневное количество listening sessions и peak.
Сейчас следующий этап для меня уже не про новые кнопки. Я довожу систему до состояния, где она самостоятельно восстанавливается после падений процессов, потери сети и reboot, затем измерю реальную пропускную способность домашнего сервера и только после этого продолжу строить Programming Engine.
И дальше начинается, пожалуй, самая интересная часть развития Without Streaming. Музыкальная программа постепенно станет намного сложнее, а в самом эфире появятся вещи, которых раньше в проекте вообще не было. Но про это уже отдельно.
Получился немного парадоксальный результат:
чем сложнее Without Streaming становится внутри, тем меньше действий остаётся у слушателя снаружи :)😎
Запустить Without Streaming 👈👈
#WithoutStreaming@annsFlow
Оглавление темы 📌Навигация по проектам канала 📍
Все каналы 🎶
💻
annFlow