Сравнение 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с вызовом ядра Linuxsendmmsg. Пакетирует до 32 RTP-пакетов или сбрасывает батч по маркерному биту кадра ($M=1$), снижая нагрузку на процессор на 85–90%.
4. База данных: Встроенная BadgerDB против YAML
- MediaMTX: Хранит настройки только в статическом файле YAML.
- RUSEON Core: Включает встраиваемую БД BadgerDB v4 (LSM-дерево с ACID), поддерживая динамическое добавление камер, теги, папки и снапшоты бэкапов.
2. Сводка производительности
| Показатель | RUSEON Core | MediaMTX |
|---|---|---|
| Максимум потоков на узел | 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 | Отсутствует |