Веб-интерфейс для MediaMTX.
Смотрите трансляции, просматривайте записи, правьте любой ключ конфигурации — прямо в браузере.
🌍 Читать на 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-запросах.
- Потоковая загрузка с прогрессом и отменой.
- Нажмите
/, чтобы отфильтровать.
- Вся конфигурация сервера — 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. Мы следуем Кодексу поведения.