Niskopoziomowy RTSP-wideostremer dla Raspberry Pi 5
Opracowano i pomyślnie oddano do użytku wysoko niezawodną usługę systemową w tle opartą na Pythonie dla platformy Raspberry Pi 5 działającej pod kontrolą systemu operacyjnego Linux.
Głównym zadaniem oprogramowania jest wysokowydajne przechwytywanie surowego strumienia wideo MJPEG z portów USB (zewnętrzne karty przechwytywania wideo HDMI i kamery internetowe) oraz jego stabilna transmisja protokołem RTSP na statyczne adresy lokalnej sieci z minimalnym opóźnieniem.
Kluczowe rozwiązania techniczne i funkcje projektu:
1. Optymalizacja sprzętowa wideo-pipeline: Dostosowanie parametrów buforowania FFmpeg. Dzięki temu opóźnienie sieciowe wideo zostało zredukowane do fizycznego minimum (poniżej 100-150 ms).
2. Dynamiczne wyszukiwanie sprzętu: Integracja z narzędziem v4l2-ctl na poziomie jądra Linux. Skrypt automatycznie skanuje porty, rozpoznaje podłączone karty przechwytywania i na bieżąco je uruchamia. Zrealizowano międzyplatformowy zgodny fallback do symulacji urządzeń w środowisku Windows.
3. Ekstremalna odporność na awarie: Architektura oparta na izolowanych strumieniach StreamWorker zarządzanych przez centralnego nadzorcę StreamManager. Zrealizowano mechanizm automatycznej reanimacji rdzenia wideo w przypadku awarii strumienia lub odłączenia kabla z wykorzystaniem wykładniczego backoffu opóźnień.
4. Bezpieczne zarządzanie procesami systemu operacyjnego: Zrealizowano poprawne czyszczenie procesów zombie na poziomie systemu operacyjnego Linux poprzez tworzenie izolowanych sesji procesów i stosowanie sygnałów systemowych do grup procesów (os.killpg z flagami SIGTERM/SIGKILL). To całkowicie eliminuje wycieki pamięci przy ponownych uruchomieniach.
5. Wbudowana telemetria sprzętowa: Skonfigurowano ciągłe, nieblokujące monitorowanie obciążenia CPU oraz bezpośrednie odczytywanie wartości czujników temperatury układu Raspberry Pi z systemowej strefy jądra (/sys/class/thermal/thermal_zone0/temp) w celu zapobiegania throttlingowi.
Projekt jest całkowicie autonomiczny, zrealizowany jako demon w tle i uruchamiany automatycznie przy starcie urządzenia lub po przerwach w zasilaniu.
#Python #Linux #FFmpeg #RaspberryPi #RTSP #StreamingVideo #SystemProgramming #Subprocess #Architektura
Głównym zadaniem oprogramowania jest wysokowydajne przechwytywanie surowego strumienia wideo MJPEG z portów USB (zewnętrzne karty przechwytywania wideo HDMI i kamery internetowe) oraz jego stabilna transmisja protokołem RTSP na statyczne adresy lokalnej sieci z minimalnym opóźnieniem.
Kluczowe rozwiązania techniczne i funkcje projektu:
1. Optymalizacja sprzętowa wideo-pipeline: Dostosowanie parametrów buforowania FFmpeg. Dzięki temu opóźnienie sieciowe wideo zostało zredukowane do fizycznego minimum (poniżej 100-150 ms).
2. Dynamiczne wyszukiwanie sprzętu: Integracja z narzędziem v4l2-ctl na poziomie jądra Linux. Skrypt automatycznie skanuje porty, rozpoznaje podłączone karty przechwytywania i na bieżąco je uruchamia. Zrealizowano międzyplatformowy zgodny fallback do symulacji urządzeń w środowisku Windows.
3. Ekstremalna odporność na awarie: Architektura oparta na izolowanych strumieniach StreamWorker zarządzanych przez centralnego nadzorcę StreamManager. Zrealizowano mechanizm automatycznej reanimacji rdzenia wideo w przypadku awarii strumienia lub odłączenia kabla z wykorzystaniem wykładniczego backoffu opóźnień.
4. Bezpieczne zarządzanie procesami systemu operacyjnego: Zrealizowano poprawne czyszczenie procesów zombie na poziomie systemu operacyjnego Linux poprzez tworzenie izolowanych sesji procesów i stosowanie sygnałów systemowych do grup procesów (os.killpg z flagami SIGTERM/SIGKILL). To całkowicie eliminuje wycieki pamięci przy ponownych uruchomieniach.
5. Wbudowana telemetria sprzętowa: Skonfigurowano ciągłe, nieblokujące monitorowanie obciążenia CPU oraz bezpośrednie odczytywanie wartości czujników temperatury układu Raspberry Pi z systemowej strefy jądra (/sys/class/thermal/thermal_zone0/temp) w celu zapobiegania throttlingowi.
Projekt jest całkowicie autonomiczny, zrealizowany jako demon w tle i uruchamiany automatycznie przy starcie urządzenia lub po przerwach w zasilaniu.
#Python #Linux #FFmpeg #RaspberryPi #RTSP #StreamingVideo #SystemProgramming #Subprocess #Architektura