Skip to content

RUSEON Core против MediaMTX (ранее rtsp-simple-server)

MediaMTX — популярный и качественно написанный медиасервер и роутер потоков на чистом Go (автор Alessandro Decina). Он отлично подходит в качестве универсального мультипротокольного прокси (RTSP, RTMP, HLS, WebRTC, SRT, WebTransport).

Однако, если MediaMTX создавался как универсальный маршрутизатор сетевых стримов, то RUSEON Core изначально проектировался под высоконагруженное видеонаблюдение (CCTV), гарантированную сохранность 24/7 архивов при сбоях и минимальную нагрузку на дисковый I/O в Linux.


🏗 Ключевые архитектурные различия

1. Подсистема записи: Direct I/O fMP4 против стандартного MP4

  • MediaMTX: Запись в MP4 ведется через стандартные операции записи Go (os.File.Write). При 50+ камерах ядро Linux забивает всю оперативную память "грязными страницами" (Page Cache), вызывая дисковые зависания (I/O wait) и аварийные завершения процесса по Out-Of-Memory (OOM Killer).
  • RUSEON Core: Запись ведется в фрагментированный MP4 (fMP4) с вызовом системного вызова POSIX_FADV_DONTNEED после каждого сегмента. RUSEON принудительно указывает ядру Linux выгружать записанные видеоблоки из ОЗУ. Память остается строго плоской (~180MB) даже при непрерывной записи 100 камер 24/7.

2. Защита от сбоев: Восстановление незавершенных записей

  • MediaMTX: В стандартном MP4 служебный заголовок (moov atom) записывается в конец файла при его корректном закрытии. Если выключилось питание или сервер экстренно перезагрузился, незакрытый MP4-файл оказывается битым и не открывается плеерами.
  • RUSEON Core: RUSEON пишет независимые фрагменты moof + mdat. Каждый фрагмент самодостаточен. При внезапном падении питания файл воспроизводится с точностью до последней миллисекунды перед сбоем без какого-либо восстановления.

3. Нагрузка на процессор: Ленивый муксинг HLS (Lazy Muxing)

  • MediaMTX: Нарезает и муксит HLS-сегменты постоянно, пока идет поток с камеры.
  • RUSEON Core: Использует Lazy HLS с таймером-вотчдогом на 15 секунд. Если в данный момент никто не смотрит камеру по HLS, муксер спит. Как только приходит веб-клиент, RUSEON моментально забирает последние 4 секунды из кольцевого буфера в RAM. Это экономит до 80% CPU на простаивающих камерах.

4. База данных: Встроенная BadgerDB против текстового YAML

  • MediaMTX: Использует статический файл mediamtx.yml и структуры данных в оперативной памяти.
  • RUSEON Core: Включает встроенную LSM-базу данных BadgerDB на чистом Go. Обеспечивает ACID-транзакции, хранение токенов, тегов камер и автоматические ежедневные бэкапы без необходимости ставить PostgreSQL или Redis.

⚡ Сравнение производительности

ПоказательRUSEON CoreMediaMTX
Максимум камер на 1 узел100+ Потоков~40-60 Потоков
RPS на отдачу (WHEP/HLS)~7 000 RPS~2 500-3 500 RPS
Задержка p951.7 мс~5-12 мс
Потребление RAM (100 камер)~180 MB - 350 MB~1.2 GB - 3.5 GB (Page Cache)
Встроенный Web UIReact 19 GlassmorphismОтсутствует

🚀 Итог: Что выбрать?

  • Выбирайте MediaMTX, если: Вам нужен гибкий универсальный конвертер протоколов (например, принять RTMP и отдать в SRT/WebTransport) и не требуется встроенное хранение архивов и веб-кабинет.
  • Выбирайте RUSEON Core, если: Вы строите систему видеонаблюдения, корпоративный NVR или видеоаналитику для AI, где важна сохранность архива при сбоях, защита от вымывания памяти Linux и моментальный WebRTC.

Released under the MIT License.