Major Update: Transition to MediaMTX Streaming Engine and WebRTC!
This release marks the largest architectural change in the application's history. We have completely overhauled the core responsible for video stream processing and display, replacing the old system with a modern, high-performance MediaMTX streaming server paired with WebRTC technology.
This change has not only improved performance and stability but also fixed numerous long-standing issues and laid a solid foundation for future development.
🚀 Key Innovation: MediaMTX + WebRTC Integration
Previously, the application launched a separate, resource-intensive FFmpeg process for each camera in the grid. Now, the architecture is different:
A single MediaMTX server starts with the application, centrally managing streams from all your cameras.
When you drag a camera into a cell, the interface connects to MediaMTX using the ultra-fast WebRTC (WHEP) protocol.
What this means for the user:
⚡ Instant Video Display: Latency has been reduced from several seconds to fractions of a second. Video appears almost instantly.
📉 Reduced CPU Load: A single MediaMTX server is far more efficient at managing streams than dozens of separate FFmpeg processes.
⚙️ Enhanced Stability: Centralized stream management is more reliable and less prone to individual process failures.
🔊 Audio Support: WebRTC technology natively supports audio transmission out of the box.
✨ Improvements & Fixes
Core & Performance
Stream Statistics: The data retrieval mechanism has been completely reworked. The application now directly queries the MediaMTX API and correctly calculates the real-time bitrate. Statistics (codec, bitrate) are now displayed accurately.
Screenshot Functionality: The screenshot feature has been restored. The renderer now captures a frame from the video element and passes it to the main process to be saved as a file.
User Interface
Fixed Drag-n-Drop: The camera drag-and-drop feature has been fully restored and enhanced. You can now not only drag cameras from the list to the grid but also freely move them between cells to swap their positions.
Fixed Fullscreen Mode: Resolved an issue where control buttons ("Pause," "Screenshot," etc.) became unclickable in fullscreen mode. The "Close" button (X) is now correctly hidden to prevent accidental camera removal.
Restored Context Menu: Fixed a bug that prevented the context menu (right-click) from working in grid cells.
Fixed Pause/Play Button: The "Play" icon no longer gets stuck on the video after resuming a stream.
Improved IPC Architecture: Refactored the communication between processes for context menu commands, improving application security and reliability.
Web Client
Responsive Design: Optimized the web client for correct display on all devices (PC, phones, tablets, TVs).
Adaptive Streaming: The web client now automatically selects the optimal stream (HLS or WebRTC) based on the device and availability. Added HLS support via hls.js for mobile devices and SmartTVs.
Improved Authentication: Enhanced error handling and the "Remember Me" functionality for the web client.
🛠️ Temporary Changes
PTZ Controls: The PTZ control elements (arrows and zoom buttons) have been temporarily hidden to resolve UI conflicts. They will be reintroduced in future releases.
Большое обновление: Переход на стриминговый движок MediaMTX и WebRTC!
Этот релиз знаменует собой крупнейшее архитектурное изменение в истории приложения. Мы полностью переработали ядро, отвечающее за прием и отображение видеопотоков, заменив старую систему на современный, высокопроизводительный стриминговый сервер MediaMTX в связке с технологией WebRTC.
Это изменение позволило не только повысить производительность и стабильность, но и исправить множество застарелых проблем, а также заложить прочный фундамент для будущего развития.
🚀 Ключевое нововведение: Интеграция MediaMTX + WebRTC
Ранее для каждой камеры в сетке приложение запускало отдельный ресурсоемкий процесс FFmpeg. Теперь все работает иначе:
При запуске приложения стартует один-единственный сервер MediaMTX, который централизованно управляет потоками со всех ваших камер.
Когда вы перетаскиваете камеру в ячейку, интерфейс подключается к MediaMTX по сверхбыстрому протоколу WebRTC (WHEP).
Что это дает пользователю:
⚡ Мгновенное отображение видео: Задержка сократилась с нескольких секунд до долей секунды. Видео появляется практически моментально.
📉 Снижение нагрузки на процессор: Один сервер MediaMTX гораздо эффективнее управляет потоками, чем десятки отдельных процессов FFmpeg.
⚙️ Повышенная стабильность: Централизованное управление потоками более надежно и менее подвержено сбоям.
🔊 Поддержка аудио: Технология WebRTC нативно поддерживает передачу звука из коробки.
✨ Улучшения и исправления
Ядро и производительность
Статистика потока: Полностью переработан механизм получения данных. Теперь приложение напрямую запрашивает статистику у API MediaMTX и корректно рассчитывает реальный битрейт. Статистика (кодек, битрейт) отображается корректно и обновляется в реальном времени.
Сохранение скриншотов: Восстановлена функция сохранения скриншотов. Теперь интерфейс захватывает кадр из видеоэлемента и передает его в основной процесс для сохранения в файл.
Пользовательский интерфейс
Исправлен Drag-n-Drop: Полностью восстановлена и улучшена функциональность перетаскивания камер. Теперь можно не только перетаскивать камеры из списка в сетку, но и свободно перемещать их между ячейками, меняя местами.
Исправлен полноэкранный режим: Устранена проблема, из-за которой кнопки управления ("Пауза", "Скриншот" и др.) становились некликабельными в полноэкранном режиме. Кнопка "Закрыть" (X) теперь корректно скрывается, чтобы избежать случайного удаления камеры.
Восстановлено контекстное меню: Исправлена ошибка, из-за которой не работало контекстное меню (правый клик) в ячейках сетки.
Исправлена кнопка Пауза/Воспроизведение: Иконка "Play" больше не "зависает" на видео после возобновления потока.
Улучшена архитектура IPC: Проведен рефакторинг взаимодействия между процессами для команд контекстного меню, что повышает безопасность и надежность приложения.
Web-клиент
Адаптивный дизайн: Исправлены ошибки и оптимизирована работа web-клиента: теперь интерфейс корректно отображается на всех устройствах (ПК, телефоны, планшеты, ТВ).
Автоматическая адаптация потока: Web-клиент теперь выбирает оптимальный поток (HLS или WebRTC) в зависимости от устройства и доступности. Добавлена поддержка HLS через hls.js для мобильных устройств и SmartTV.
Улучшена авторизация: Внесены правки в обработку ошибок и функции "Запомнить меня" для web-клиента.
🛠️ Временные изменения
Управление PTZ: Элементы управления PTZ (стрелки и кнопки зума) были временно скрыты для устранения конфликтов с другими элементами интерфейса. Они будут возвращены в будущих релизах.