Низькорівневый RTSP-видеостример для Raspberry Pi 5
Разработан и успешно введен в эксплуатацию высоконадежный фоновый системный сервис на базе Python для платформы Raspberry Pi 5 под управлением ОС Linux.
Главная задача софта - высокоскоростное захватывание сырого MJPEG видеопотока из USB-портов (внешние карты видеозахвата HDMI и веб-камеры) и его стабильная трансляция по протоколу RTSP на статические адреса локальной сети с минимальной задержкой.
Ключевые технические решения и функции проекта:
1. Аппаратная оптимизация видеопайплайна: Тонкая настройка параметров буферизации FFmpeg. Благодаря этому сетевая задержка видео снижена до физического минимума (менее 100-150 мс).
2. Динамический поиск оборудования: Интеграция с утилитой v4l2-ctl на уровне ядра Linux. Скрипт автоматически сканирует порты, распознает подключенные платы захвата и на лету подтягивает их в работу. Реализован кроссплатформенный совместимый фоллбек для симуляции устройств в Windows-окружении.
3. Экстремальная отказоустойчивость: Архитектура построена на базе изолированных потоков StreamWorker под управлением центрального супервайзера StreamManager. Реализован механизм автоматической реанимации видеоядра в случае падения потока или выдергивания кабеля с использованием экспоненциального бэкаффа задержек.
4. Безопасное управление процессами ОС: Реализовано корректное очищение зомби-процессов на уровне операционной системы Linux через создание изолированных сессий процессов и применение системных сигналов к группам процессов (os.killpg с флагами SIGTERM/SIGKILL). Это полностью исключает утечки оперативной памяти при перезапусках.
5. Встроенная телеметрия железа: Настроен непрерывный неблокирующий мониторинг нагрузки на CPU и прямое считывание показателей температурных датчиков кристалла Raspberry Pi из системной зоны ядра (/sys/class/thermal/thermal_zone0/temp) для предотвращения троттлинга.
Проект полностью автономен, оформлен как фоновый демон и запускается автоматически при старте устройства или после перебоев с питанием.
#Python #Linux #FFmpeg #RaspberryPi #RTSP #StreamingVideo #SystemProgramming #Subprocess #Архитектура
Главная задача софта - высокоскоростное захватывание сырого MJPEG видеопотока из USB-портов (внешние карты видеозахвата HDMI и веб-камеры) и его стабильная трансляция по протоколу RTSP на статические адреса локальной сети с минимальной задержкой.
Ключевые технические решения и функции проекта:
1. Аппаратная оптимизация видеопайплайна: Тонкая настройка параметров буферизации FFmpeg. Благодаря этому сетевая задержка видео снижена до физического минимума (менее 100-150 мс).
2. Динамический поиск оборудования: Интеграция с утилитой v4l2-ctl на уровне ядра Linux. Скрипт автоматически сканирует порты, распознает подключенные платы захвата и на лету подтягивает их в работу. Реализован кроссплатформенный совместимый фоллбек для симуляции устройств в Windows-окружении.
3. Экстремальная отказоустойчивость: Архитектура построена на базе изолированных потоков StreamWorker под управлением центрального супервайзера StreamManager. Реализован механизм автоматической реанимации видеоядра в случае падения потока или выдергивания кабеля с использованием экспоненциального бэкаффа задержек.
4. Безопасное управление процессами ОС: Реализовано корректное очищение зомби-процессов на уровне операционной системы Linux через создание изолированных сессий процессов и применение системных сигналов к группам процессов (os.killpg с флагами SIGTERM/SIGKILL). Это полностью исключает утечки оперативной памяти при перезапусках.
5. Встроенная телеметрия железа: Настроен непрерывный неблокирующий мониторинг нагрузки на CPU и прямое считывание показателей температурных датчиков кристалла Raspberry Pi из системной зоны ядра (/sys/class/thermal/thermal_zone0/temp) для предотвращения троттлинга.
Проект полностью автономен, оформлен как фоновый демон и запускается автоматически при старте устройства или после перебоев с питанием.
#Python #Linux #FFmpeg #RaspberryPi #RTSP #StreamingVideo #SystemProgramming #Subprocess #Архитектура