Низькорівневий 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 #Архітектура