2026-07-31 21:37:47 +02:00
2026-07-31 21:37:47 +02:00
2026-07-31 21:37:47 +02:00
2026-07-31 21:37:47 +02:00
2026-07-31 21:37:47 +02:00
2026-07-31 21:37:47 +02:00

Hikvision NVR webcam snapshot

Jednoduchý skript stáhne aktuální obrázek z kanálu Hikvision NVR a atomicky jej publikuje do zadaného souboru na webu. Mimo společné časové okno publikuje připravený dummy obrázek. Podporuje jeden i více kanálů.

Instalace

Požadavek je Python 3.9 nebo novější, bez externích balíčků.

  1. Zkopírujte .env.example jako .env.

  2. Doplňte adresu NVR, samostatného uživatele pouze s potřebným oprávněním, heslo, kanál a cílovou cestu.

  3. Vedle skriptu uložte vlastní dummy.jpg (nebo změňte DUMMY_PATH).

  4. Jednou skript spusťte ručně:

    python3 snapshot.py
    

Heslo v .env může obsahovat mezery a #; uvozovky jsou volitelné. Soubor .env nepatří do verzovacího systému.

Pravidelné spouštění

Skript sám čekání ani plánování neprovádí. Na Linuxu jej lze volat každou minutu:

* * * * * cd /cesta/k/hik2webcam && /usr/bin/python3 snapshot.py >> snapshot.log 2>&1

Ve Windows použijte Plánovač úloh a jako program nastavte python.exe, argument C:\cesta\snapshot.py a pracovní adresář projektu.

Shodné hodnoty ACTIVE_FROM a ACTIVE_TO znamenají nepřetržitý provoz. Interval může přecházet přes půlnoc. Při chybě NVR zůstane poslední platný obrázek zachován a proces skončí kódem 1; mimo časové okno skončí po úspěšném zkopírování dummy obrázku kódem 0.

Hikvision endpoint

Výchozí cesta je:

/ISAPI/Streaming/channels/{channel}{stream_id}/picture

Kanál 1 a stream 01 tedy používají ID 101. Autentizace zobrazená v NVR jako digest je podporovaná; skript umí jako zálohu také Basic autentizaci. Pro HTTPS se self-signed certifikátem lze použít NVR_VERIFY_TLS=false.

Požadované rozlišení se posílá NVR explicitně pomocí ISAPI parametrů videoResolutionWidth a videoResolutionHeight. Nastavuje se globálně přes NVR_SNAPSHOT_WIDTH a NVR_SNAPSHOT_HEIGHT; výchozí hodnota je 1920×1080. NVR musí dané rozlišení podporovat, jinak může vrátit nejbližší podporované rozlišení nebo chybovou XML odpověď.

Pokud zařízení endpoint odmítne, ověřte, že uživatel smí sledovat daný kanál, že je povolené ISAPI a že NVR_SNAPSHOT_PATH odpovídá konkrétnímu firmwaru.

Description
No description provided
Readme 30 KiB
Languages
Python 100%