Jak do nas trafić?
Znajdziesz nas na Youtube
Login
Hasło

Pobieranie nagrań z rejestratora NVR Dahua przez API w aplikacji desktopowej

Data dodania: 2025-09-23

Odkryj, jak wykorzystać API rejestratorów NVR Dahua do automatycznego pobierania nagrań wideo z wybranego zakresu czasu – idealne rozwiązanie dla firm potrzebujących szybkiego dostępu do archiwalnych materiałów.

 

API, czyli interfejs programowania aplikacji, umożliwia bezpośrednią komunikację z urządzeniem NVR za pośrednictwem zapytań sieciowych. Dzięki temu możemy tworzyć własne narzędzia do zarządzania nagraniami, dopasowane do potrzeb własnej organizacji.

 

 

Rejestrator IP NVR5432-EI 32
 

 

Wykorzystując właśnie API rejestratorów, stworzyliśmy prosty program, który pozwala w szybki sposób pobrać nagranie z dysku urządzenia, z określonego przedziału czasu. Dzięki temu nie trzeba ręcznie logować się do interfejsu WWW czy przeszukiwać osi czasu. Wystarczy wskazać kanał, datę i godzinę, a aplikacja automatycznie zapisze plik wideo na komputerze.

 

 

 

Poniżej przedstawimy 3 warianty omawianego programu, aby każdy użytkownik mógł wybrać najwygodniejszy dla siebie sposób pracy:

 

•    Hardcoded – najprostszy skrypt, w którym parametry wpisane są bezpośrednio w kodzie
•    CLI – wersja uruchamiana z linii poleceń z argumentami. Idealna do automatyzacji i integracji z  innymi narzędziami
•    GUI – aplikacja z prostym interfejsem graficznym w Tkinterze, przeznaczona dla osób, które wolą pracować w trybie „okienkowym”.

 

Dzięki podzieleniu programu na trzy warianty, całość staje się na tyle elastyczna, że odnajdzie się w niej zarówno administrator systemów bezpieczeństwa, jak również mniej techniczni pracownicy, którzy potrzebują tylko kilku kliknięć, by uzyskać dostęp do archiwum.

 

 


 

1. Hardcoded



Użyte biblioteki : requests

 


Pierwszy wariant programu to tzw. wersja hardcoded
W tym podejściu wszystkie parametry potrzebne do pobrania nagrania zapisane są bezpośrednio w kodzie źródłowym.

W tym celu należało utworzyć zmienne, przechowujące dane do logowania (ip rejestratora, login, hasło), oraz parametry takie jak kanał (obraz której kamery pobieramy), zakres pożądanego nagrania oraz nazwę pliku do którego nastąpi zapis.

 

 

 

 

W kolejnym kroku program przygotowuje dane potrzebne do komunikacji z rejestratorem.
 

Łączymy się Endpointem loadfile.cgi rejestratora Dahua, który odpowiada za udostępnienie nagrań zapisanych na dysku NVR. Wysyłane jest tam żądanie, z parametrami podanymi w zmiennych.

 

 

 

Na koniec program wysyła zapytanie do rejestratora i obsługuje odpowiedź. Najpierw próbuje nawiązać połączenie:

 

 

 

Jeśli odpowiedź ma kod 200 (OK), oznacza to, że nagranie zostało znalezione. Program pobiera je strumieniowo w kawałkach (żeby nie obciążać pamięci) i zapisuje do wskazanego pliku .dav. Na końcu wyświetla komunikaty o sukcesie i rozmiarze zapisanego pliku :

 

 

 

 

W przeciwnym wypadku sprawdzane są inne statusy: 400 (brak nagrania w danym zakresie), 401 (błąd logowania) lub inne nieoczekiwane kody, dzięki czemu w razie problemów użytkownik od razu wie, co poszło nie tak :

 

 

 

 

Ten wariant jest szczególnie przydatny dla:

•    osób technicznych, które chcą szybko przetestować komunikację z rejestratorem,
•    administratorów, którzy potrzebują pobrać pojedynczy plik bez dodatkowej konfiguracji,
•    osób uczących się podstaw integracji z API Dahua

 

 

 

2. CLI


Użyte biblioteki : requests, argparse


Drugi wariant programu został przygotowany w formie narzędzia CLI (Command Line Interface), czyli aplikacji wywoływanej z poziomu terminala. 

W tym podejściu wszystkie parametry, które w wersji hardcoded były wpisane na sztywno w kodzie, podajemy jako argumenty w wierszu poleceń. Do obsługi tego mechanizmu wykorzystaliśmy bibliotekę argparse.

 

 

Jako parametry zapytania wysyłanego do API podajemy tym razem elementy tablicy args :

 

 



 

Mechanizm działania samego programu pozostaje ten sam: nawiązuje połączenie z rejestratorem przez API Dahua, pobiera nagranie z wybranego kanału i zapisuje je do pliku .dav. Różnica polega jedynie na tym, że wszystkie dane wejściowe, podawane są w wygodny sposób jako parametry wywołania.


Przykładowe wywołanie skryptu wygląda tak :



 

 
 

3. GUI



Użyte biblioteki:

 

  • requests – wysyłanie żądań
  • tkinter – interfejs graficzny
  • os – do operacji na plikach i folderach. Tworzy katalog videos
  • json – do zapisywania i odczytywania IP i loginu w pliku config.json
  • datetime – do walidacji poprawności czasu startu i końca




Trzecim wariantem programu jest wersja GUI (Graphical User Interface), w której całość została opakowana w prosty interfejs okienkowy przygotowany w bibliotece tkinter. 

Dzięki temu użytkownik nie musi znać ani edytować kodu źródłowego, ani wpisywać parametrów w linii poleceń. Wszystkie potrzebne dane może wprowadzić w wygodnych polach formularza.

 

 
Wygląd interfejsu




Najbardziej charakterystycznym fragmentem kodu jest tworzenie pól formularza, w których użytkownik wpisuje wszystkie potrzebne dane: adres IP rejestratora, login, hasło, numer kanału, czas startu i końca nagrania oraz nazwę pliku wyjściowego. 

Dzięki temu nie trzeba edytować kodu ani używać konsoli, a wszystkie informacje wprowadzane są w prostym i czytelnym formularzu:

 

 

Kolejnym ważnym elementem jest uruchamianie pobierania w osobnym wątku, dzięki czemu interfejs pozostaje responsywny nawet podczas zapisu dużego pliku:

 

 

 

Ta wersja świetnie sprawdzi się dla użytkowników nietechnicznych.
Wystarczy kilka kliknięć, by pobrać nagranie z NVR bez znajomości konsoli czy kodu źródłowego.

 

 

Podsumowanie


 

 

Pokazana aplikacja to tylko przykład tego, co można osiągnąć, wykorzystując API firmy Dahua.

Jeżeli Twoja firma potrzebuje indywidualnych narzędzi do obsługi urządzeń monitoringu, 
od prostych aplikacji desktopowych, po zaawansowane systemy integrujące wiele źródeł danych, chętnie pomożemy w ich stworzeniu.
 

Powyższa aplikacja powstała w oparciu o model rejestratora  Dahua NVR5432-EI