Skip to content

Latest commit

 

History

History
165 lines (125 loc) · 10.3 KB

File metadata and controls

165 lines (125 loc) · 10.3 KB

MediaMTX Connect

Веб-интерфейс для MediaMTX.
Смотрите трансляции, просматривайте записи, правьте любой ключ конфигурации — прямо в браузере.

CI Release Docker MIT

MediaMTX Connect — сетка трансляций, браузер записей и редактор конфигурации
🌍 Читать на 30 языках

🇺🇸 English • 🇪🇸 Español • 🇨🇳 中文 • 🇮🇹 Italiano • 🇩🇪 Deutsch • 🇷🇺 Русский • 🇫🇷 Français • 🇵🇹 Português • 🇯🇵 日本語 • 🇵🇱 Polski • 🇰🇷 한국어 • 🇹🇷 Türkçe • 🇳🇱 Nederlands • 🇨🇿 Čeština • 🇹🇼 繁體中文 • 🇧🇷 Português (BR) • 🇮🇩 Bahasa Indonesia • 🇷🇴 Română • 🇸🇪 Svenska • 🇩🇰 Dansk • 🇳🇴 Norsk • 🇫🇮 Suomi • 🇬🇷 Ελληνικά • 🇭🇺 Magyar • 🇺🇦 Українська • 🇻🇳 Tiếng Việt • 🇵🇭 Tagalog • 🇹🇭 ไทย • 🇮🇳 हिन्दी • 🇧🇩 বাংলা

Что это

MediaMTX — отличный стриминговый сервер без интерфейса. Connect — недостающий фронтенд: один контейнер, который говорит с API MediaMTX и превращает его в стену камер, архив записей и редактор конфигурации.

Это спутник, а не замена. Каждый экран опирается на то, что MediaMTX уже отдаёт: path, эндпоинт API, хук runOn*, протокол, который он раздаёт нативно. Видео не хранит, медиа не проксирует, базы данных нет.

Быстрый старт

Мультиархитектурные образы (linux/amd64, linux/arm64) — Docker скачает нужный.

MediaMTX уже работает? Поставьте Connect рядом:

docker run -d \
  -p 3000:3000 \
  -e BACKEND_SERVER_MEDIAMTX_URL=http://<your-mediamtx-host> \
  -v /path/to/recordings:/recordings \
  -v mediamtx-connect-data:/data \
  bcanfield/mediamtx-connect:latest

Начинаете с нуля? Встроенный compose поднимет оба:

git clone https://github.com/bcanfield/mediamtx-connect.git
cd mediamtx-connect
docker compose up -d

Затем откройте http://localhost:3000.

Important

Connect требует api: yes в вашем mediamtx.yml. Приложенная конфигурация работает как есть.

Что вы получаете

Живой просмотр

Все path, которые знает MediaMTX, сеткой в 2–4 колонки.

  • WebRTC или HLS — для каждой карточки. AUTO молча откатывается на HLS, LOW-LAT настаивает на WebRTC, COMPAT включает HLS — и каждая карточка показывает транспорт, который реально получила.
  • Снимки в простое. Фоновая задача держит на каждой карточке свежий кадр, а его возраст — на бейдже.
  • Живая телеметрия. Кодеки, число зрителей и время в эфире — прямо из списка path.
  • Честное состояние записи. Карточки показывают, идёт ли запись фактически; состояние, которое Connect не смог прочитать, отмечено как неизвестное, а не как выключенное.
  • Ссылки для публикации в буфер обмена. RTSP, RTMP и SRT, построенные из собственных listen-адресов сервера.

Записи

  • MP4 каждого потока, сгруппированные по дням, с автоматическими миниатюрами.
  • Плеер, разворачивающийся прямо в строке, с перемоткой на HTTP Range-запросах.
  • Потоковая загрузка с прогрессом и отменой.
  • Нажмите /, чтобы отфильтровать.

Конфигурация без YAML

  • Вся конфигурация сервера — 65 типизированных и проверяемых элементов в Logging, API, Hooks, RTSP, RTMP, HLS, WebRTC и SRT.
  • Path defaults и переопределения для отдельных path — в тех областях, откуда MediaMTX их отдаёт. Сохранение потока, покрытого шаблоном, пишет разреженную запись, поэтому нетронутые ключи продолжают наследоваться.
  • Все 15 хуков runOn*, с предупреждением там, где сохранение перезапускает path.
  • Разреженная запись — только изменённые ключи.

Эксплуатация

Один процесс на API, SPA и медиа · мультиархитектурность · GET /health · структурированные логи · PWA · светлая и тёмная темы · 30 языков · без базы данных.

Переменные окружения

Они задают лишь первый запуск. Дальше всё правится в Config.

Переменная По умолчанию Назначение
BACKEND_SERVER_MEDIAMTX_URL http://mediamtx Где Connect достаёт API MediaMTX изнутри своего контейнера
MEDIAMTX_API_PORT 9997 Порт API MediaMTX
MEDIAMTX_RECORDINGS_DIR ./recordings Путь на хосте, смонтированный под записи (только compose)
MEDIAMTX_SCREENSHOTS_DIR /screenshots Где хранятся миниатюры

http://mediamtx разрешается только в сети встроенного compose — для отдельного docker run укажите свой хост.

Как это работает

Browser ──HLS / WebRTC (WHEP)──────────────────────────┐
                                                      
    oRPC (typed)                                      
                                                 ┌──────────┐
┌─────────────────────┐    MediaMTX HTTP API       MediaMTX 
 mediamtx-connect     ────────────────────────▶   server  
 Hono API + React SPA│                           └──────────┘
└─────────────────────┘                                
    reads                                              writes
                                                      
recordings/ + screenshots/  ◀────────────────────  MP4 segments

Воспроизведение идёт из браузера в MediaMTX. Connect передаёт только JSON плюс записи и миниатюры, которые читает с диска.

Документация

Возможности Все выпущенные возможности, маршруты и процедуры
Архитектура Как складываются части
Участие Настройка окружения, скрипты, процесс PR
Примеры Камера Raspberry Pi, фейковые потоки для тестов

Участие

Issue и PR приветствуются. pnpm install && pnpm dev поднимает полный стек с тестовыми данными — см. CONTRIBUTING.md; заголовки PR — conventional commits. Мы следуем Кодексу поведения.

Лицензия

MIT