Kamera inspekcyjna to dość nietypowe urządzenie pozwalające dotrzeć tam, gdzie wzrok nie sięga. Dzięki niej, jesteśmy w stanie skontrolować drożność instalacji wodociągowej, sprawdzić co się kryje między ścianami lub zajrzeć w zakamrki urządzeń produkcyjnych. Zastosowania takiej kamery można znaleźć tysiące, a samą kamerę wykorzystać w wielu aspektach czy to hobbysycznych czy też biznesowych. Co jednak zrobić, żeby kamera inspekcyjna pozwalała nam nagrać strumień video (np. RTSP) na rejestrator NVR lub oprogramowanie VMS?
Inspection camera is rather extraordinary device which can help us to reach where eyesight does not reach. Thanks to this camera we can check plumbing system patency, what is going on in the middle of the walls, checking some details in production machinery. Of course – it’s more than thousand of other applications where we can use this device – both: in hobby or in business. But, what if we need to record video stream from this device on our local video recorder (NVR) or VMS software?
English version below.
Rozwiązanie wydaje się proste – kupujemy kamerę, podłączamy dedykowany strumień pod rejestartor i nagrywamy na rejstratorze. Ale co, gdy wybór kamer inspekcyjnych jest bardzo znikomy (pomijam w rozważaniach kamery profesjonalne praktycznie nieosiągalny dla przeciętnego użytkownika) i musimy opierać się na rozwiązaniach z rynków dalekowschodnich (niestety nawet liderzy rynku video security nie mają w swoim portfolio podobnych rozwiązań – oczywiście liczę na zmianę tego trendu w niedługim czasie). Tak jak wspomniałem ogromny wybór rozwiązań inspekcyjnych możemy znaleźć na portalach typu alibaba/aliexpress/itp. – rozwiązania te są różnej jakości, zarówno z punktu widzenia kwestii wizyjnych, wytrzymałościowych, jak i bezpieczeństwa. Co zatem stanowi o przewadze czy też chęci wykorzystania takich urządzeń? Cena. Za ok. 20$ można mieć w pełni mobilną kamerę inspekcyjną z modułem Wi-Fi (komunikacja bezprzewodowa) oraz dedykowanym oprogramowaniem do podglądu i rejestracji:
Jak zatem działa taki zestaw:
Moduł Wi-Fi wysyła strumień wizyjny z kamery do urzadzeń z dedykowaną aplikacją – zarówno do komórki jak i laptopa (najważniejsze to komunikacja Wi-Fi). Mamy możliwość podglądu na żywo oraz nagrania strumienia, ale tylko lokalnie (komputer/komórka) do pliku np. AVI/MP4.
Kiedy przystąpiłem do analizy strumienia z powyższego urzadzenia okazało się, że tak naprawdę dostępne są tylko 3 działające porty: port 80, 8080 oraz 8081. Ten ostatni na bazie protokołu HTTP wysyła strumień MPEG do dedykowanej aplikacji i wyświetla go na urządzeniu. Czy nie można zatem po prostu nagrać tego strumienia na rejestrator i zamknąć cały temat? Otóż niestety, nie. Rejestratory oraz większość aplikacji VMS nie są w stanie poradzić sobie z podobnym strumieniem. Słowo poradzić oznacza, że są w stanie przetworzyć go i nagrać. Najpewniejszą i najbardziej uniwersalną metodą jaka działa z praktycznie każdym urządzeniem rejestrującym jest zastosowanie strumienia RTSP, którego tutaj niestety nie ma…
Co zatem można zrobic bazując na najprostszych (i bezpłatnych) rozwiązaniach? Moja propozycja wygląda następująco:
A teraz po kolei:
1. Uzyskujemy łączność z kamerą za pomocą Wi-Fi (np. z laptopa) – najczęściej jest on na adresie: 192.168.31.1. Uwaga: jednocześnie korzystamy z połączenia kablowego (LAN), gdyż po nim będziemy strumieniować dane. W razie problemów z identyfikacją adresu korzystamy z oprogramowania Wireshark.
2. Uruchamiamy OBS i dokonujemy zaawansowanej konfiguracji (na początek konwersja do streamingu UDP multicast):
1 |
udp://224.0.2.0:9090?pkt_size=1316 |
3. Dodajemy źródło i uruchamiamy nagrywanie (recording):
1 |
http://192.168.31.1:8080 |
4. Uruchamiamy VLC i dokonujemy konfiguracji:
5. Uruchamiamy strumieniowanie w VLC (Media->Stream) – przechwytujemy strumień UDP multicast z OBS:
1 |
udp://@224.0.2.0:9090 |
6. Przechodzimy przez kolejne opcje (szczegóły w filmie) i eksperymentalnie dopieramy odpowiedni proces enkapsulacji:
7. W ostatnim kroku modyfikujemy proces strumieniowania dodając użytkownika i hasło (niezbędne w przypadku większości rejestratorów):
1 |
:sout=#transcode{vcodec=h264,scale=Auto,acodec=none,scodec=none}:rtp{sdp=rtsp://:8554/video} :no-sout-all :sout-keep --sout-rtsp-user admin --sout-rtsp-pwd abcd1234 |
8. Po uruchomieniu strumieniowania (Stream) jest on osiągalny pod adresem (adres komputera dokonującego strumieniowania: 192.168.10.202):
1 |
rtsp://admin:abcd1234@192.168.10.202:8554/video |
9.Uwaga: część parametrów zarówno w VLC jak i OBS może wymagać modyfikacji, zmian lub zwykłego procesu eksperymentowania – niestety, ilość zmiennych możliwych do ustawienia jest ogromna stąd uniwersalność stanowi tutaj swego rodzaju wyzwanie.
10. Poniższy film pokazuje zestawienie wszystkich powyższych czynności krok po kroku oraz efekt finalny – transmisja na żywo na rejestratorze Hikvision:
English version:
Solution looks simple – we just buy camera, using dedicated stream, connecting to the NVR and start recording. That’s the theory. What if number of inspection cameras on the market are very small (I’m avoiding professional devices not available for average user). In this case we need to look far away to the eastern market (unfortunately even security leaders doesn’t provide similar devices – of course I believe it will change soon!). On the other hand full spectrum of inspection cameras we can find on portals like alibaba/aliexpress/etc. – of course things like: quality, security, durability are very discussable so what is the advantage of Chinese products? Price. For 20$ we can buy fully mobile camera including Wi-Fi module and dedicated software for preview and recording:
How is it working?:
Simple. Camera are connected to the W-Fi module which is streaming stream to the device like mobile/PC (we need to use DEDICATED application). We can preview in a live mode and record stream but only locally (mobile/PC to AVI/MP4 file).
When I start analyze stream it turned out that only 3 ports are available/open: 80, 8080 and 8081. The last one based on HTTP protocol streaming MPEG to dedicated application and run preview on the screen. Ok, so why we cannot just simply record this stream and close this topic? Unfortunately it’s not so simple. Most of the VMS applications and NVR’s cannot deal with this kind of stream. It means that they cannot process that information (based on HTTP) – to record this properly we need to provide most universal and known video protocol: RTSP.
How we can do this based on simplest (and complimentary) solutions? This is my proposition:
Step by step:
1. Connect to the Wi-Fi camera module (for instance from laptop) – in most cases module based on IP address: 192.168.31.1. Remark: we need to use two network connections: Wi-Fi and LAN (through LAN there will be going RTSP stream). In any issue to identify proper IP we can use Wireshark.
2. Start OBS and make advanced configuration (at the beginning conversion to UDP multicast stream):
1 |
udp://224.0.2.0:9090?pkt_size=1316 |
3. Add source (inspection camera) and start recording:
1 |
http://192.168.31.1:8080 |
4. Start VLC and make configuration:
5. Start streaming in VLC (Media->Stream) – capture UDP stream from OBS:
1 |
udp://@224.0.2.0:9090 |
6. We are going through next options as a default (details in below video) and making experimental choices on below options encapsulation processes:
7. In the last step we are modifying stream manually adding user and password (necessary in the most NVR devices):
1 |
:sout=#transcode{vcodec=h264,scale=Auto,acodec=none,scodec=none}:rtp{sdp=rtsp://:8554/video} :no-sout-all :sout-keep --sout-rtsp-user admin --sout-rtsp-pwd abcd1234 |
8. After stream starting it is available on below address (IP computer streaming is: 192.168.10.202):
1 |
rtsp://admin:abcd1234@192.168.10.202:8554/video |
9. Important: most of the parameters both: from VLC and OBS needs dedicated modifications, changes or just simply few experiments – unfortunately, there can be many variables and differences between cameras software/unknown vendors.
10. Below video are showing all steps one by one with final effect – live preview and recording on NVR Hikvision:
You should be able to record this stream using mplayer (for sure on linux). 1 command line and your are good to go …
Thanks for the tip Łukasz – the key thing is to use: “LIVE555 Streaming Media” source code libraries. My idea was to change unusuall type of stream (HTTP MPEG) for something which can be use in CCTV environment (RTSP stream is most popuar in this case).
Anyway, I saw that Mplayer is also include LIVE555 so it can be chance that everything will close in one tool (without double conversion).
Worth to try! 🙂