Skip to content

Сравнение RUSEON Core и MediaMTX (бывший rtsp-simple-server) ​

MediaMTX — популярный медиароутер на языке Go, отлично подходящий для универсальной трансляции между протоколами RTSP, RTMP, HLS, WebRTC, SRT и WebTransport.

В отличие от универсального роутинга MediaMTX, RUSEON Core спроектирован специально для высокоплотного видеонаблюдения, круглосуточного архивирования в fMP4 и защиты ядра Linux от переполнения дискового кеша.


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

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

  • MediaMTX: Записывает видео через стандартные функции ОС. При круглосуточной записи десятков камер ядро Linux накапливает "грязные страницы" в Page Cache, что приводит к зависаниям I/O Wait и авариям OOM Killer.
  • RUSEON Core: Пишет фрагментированный MP4 (fMP4) в связке с вызовами sync_file_range и POSIX_FADV_DONTNEED. После сброса блока 2 МБ ядро Linux мгновенно освобождает страницы из RAM. Расход памяти остаётся плоским (~471 МБ RSS даже при 600 камерах).

2. Отказоустойчивость архива при сбоях питания ​

  • MediaMTX: Обычные файлы MP4 требуют записи индекса moov в конце файла. При аварийном отключении питания незавершённый файл становится нечитаемым.
  • RUSEON Core: Записывает самоописываемые фрагменты moof + mdat. Все завершённые фрагменты воспроизводятся сразу без утилит восстановления.

3. Сетевой стек WebRTC: Адаптивный батчинг sendmmsg ​

  • MediaMTX: Отправляет каждый RTP-пакет через отдельный системный вызов UDP.
  • RUSEON Core: Использует мультиплексор BatchingUDPMuxConn с вызовом ядра Linux sendmmsg. Пакетирует до 32 RTP-пакетов или сбрасывает батч по маркерному биту кадра ($M=1$), снижая нагрузку на процессор на 85–90%.

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

  • MediaMTX: Хранит настройки только в статическом файле YAML.
  • RUSEON Core: Включает встраиваемую БД BadgerDB v4 (LSM-дерево с ACID), поддерживая динамическое добавление камер, теги, папки и снапшоты бэкапов.

2. Сводка производительности ​

ПоказательRUSEON CoreMediaMTX
Максимум потоков на узел600+ камер (18 139 FPS / 1.34 Гбит/с)~60 – 100 камер
Число зрителей1 800 HLS + 240 WebRTC~200 – 400 зрителей
Отклик Master плейлиста< 0.5 мс (из памяти)~2 – 5 мс
Расход RAM (600 камер)471 МБ RSS (140 МБ Heap)~2 – 4 ГБ
Веб-интерфейсВстроенный React 19Отсутствует

Связанная документация ​

Released under the MIT License.