TGViewer
annFlow annFlow @annsflow · 33 subscribers
Post #181 25
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
Telegram annFlow Without Streaming: Telegram-канал как радиостанция ● Радио из Telegram в один клик ● Две ручки настроения: стиль и энергия ● Как это работает внутри: индексатор → плейлист → стрим ● Инженерная реальность: плеер, фон и PWA ● Without Streaming перестал…
More from @annsflow
  1. Sep 24, 2026LiveContext в реальном разговоре. На видео я разбираюсь с претензией по недоставленному за…
  2. Sep 21, 2026Как LiveContext разделяет мой голос и голос собеседника Чтобы LiveContext мог понимать раз…
  3. Sep 16, 2026Почему мне оказалось недостаточно просто сохранять разговоры В VoxBase я решал проблему то…
  4. Sep 15, 2026Как я построил LiveContext, или Как связать живой разговор с памятью проекта ● Почему мне…
  5. Sep 14, 2026annFlow pinned a video
  6. Sep 14, 2026Самая неожиданная вакансия, которую нашел мой бот Моя система постоянно сама ищет вакансии…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →