LW IT Solutions
« Blog Overview /CCTV/Tutorials / Tutorial: Budowanie i sprawdzanie adresów RTSP kamer...
This post in other languages:

Tutorial: Budowanie i sprawdzanie adresów RTSP kamer IP

Tutorial: Budowanie i sprawdzanie adresów RTSP kamer IP
Spis treści
  1. Sześć części adresu strumienia
  2. Dlaczego ścieżka w każdej kamerze nazywa się inaczej
  3. Hasła, które rozbijają adres
  4. Sprawdzenie adresu, zanim gdziekolwiek trafi
  5. Który strumień gdzie należy
  6. Co i tak psuje się później
  7. Źródła

Kamera IP przesyła obraz przez RTSP, a RTSP jest znormalizowany. Adres prowadzący do obrazu już nie. Każdy producent wymyślił własną ścieżkę, a kamera zapytana pod złą ścieżką odpowiada dokładnie tak samo jak przy złym haśle: wcale.

Taki adres składa się z sześciu części. Cztery wyglądają jednakowo w każdej kamerze, dwie trzeba sprawdzić u konkretnego producenta. Poniżej kolejność, w jakiej najlepiej te części złożyć, oraz jedno polecenie rozstrzygające, czy wynik działa – zanim trafi do rejestratora, gdzie błąd chowa się za sześcioma innymi ustawieniami.

Adres RTSP rozłożony na sześć kolorowych odcinków z objaśnieniem każdej części, obok lista ścieżek strumieni czterech producentów kamer
Tylko dwa ostatnie odcinki różnią się zależnie od producenta. Wszystko przed nimi jest identyczne w każdej kamerze.

Sześć części adresu strumienia

Adres RTSP jest zbudowany jak adres internetowy: schemat, dane logowania, host, port, ścieżka, a w części kamer jeszcze ciąg zapytania niosący numer strumienia.

rtsp://admin:Sommer%402026@192.168.1.64:554/Streaming/Channels/102
rtsp://admin:Sommer%402026@192.168.1.64:554/cam/realmonitor?channel=1&subtype=1
rtsps://192.168.1.1:7441/aBcD1234EfGh?enableSrtp

Schemat to rtsp, a port 554, dopóki nikt go nie przeniósł. Ubiquiti stanowi wyjątek wart zapamiętania: UniFi Protect odpowiada na rtsps na porcie 7441, odrzuca zwykłe RTSP i zamiast czytelnej ścieżki wydaje nieprzejrzysty identyfikator. Ten identyfikator pojawia się dopiero po włączeniu RTSP dla pojedynczej kamery w Protect.

Host oznacza kamerę, nigdy rejestrator. Rejestrator potrafi wystawić strumień ponownie, ale wtedy pod własnym adresem i na własnym porcie – a błąd na tej warstwie wygląda jak uszkodzona kamera.

Dlaczego ścieżka w każdej kamerze nazywa się inaczej

Ścieżka niesie dwie informacje, dla których sam RTSP nie ma pola: który obiektyw i który z jego strumieni. Niemal każda kamera oferuje co najmniej dwa – strumień główny w pełnej rozdzielczości do zapisu i podstrumień o czwartej części tej rozdzielczości do podglądu i analizy ruchu.

Producent Strumień główny Podstrumień
Hikvision /Streaming/Channels/101 /Streaming/Channels/102
Dahua, Amcrest /cam/realmonitor?channel=1&subtype=0 /cam/realmonitor?channel=1&subtype=1
Reolink /h264Preview_01_main /h264Preview_01_sub
Axis /axis-media/media.amp /axis-media/media.amp?resolution=640×360

Numeracja Hikvision jest przekręcana najczęściej. Trzy cyfry to sklejone ze sobą kanał i strumień: z 1 oraz 01 powstaje 101, drugi strumień pierwszego kanału to 102. W kamerze z jednym obiektywem kanał zawsze wynosi 1; w obudowie z kilkoma matrycami drugi obiektyw nosi numery 201 i 202.

Zgadywanie staje się zbędne, gdy kamera obsługuje ONVIF. Wywołanie GetStreamUri zwraca adres, który sama kamera uważa za poprawny, wraz ze ścieżką – a ta odpowiedź bije każdą tabelę.

Hasła, które rozbijają adres

Dane logowania stoją między schematem a hostem, oddzielone dwukropkiem i zamknięte znakiem małpy. Właśnie tam siedzi najcichszy błąd: hasło zawierające małpę, dwukropek, ukośnik lub krzyżyk kończy dane logowania za wcześnie, a reszta hasła zostaje odczytana jako nazwa hosta.

Lekarstwem jest kodowanie procentowe. Małpa zamienia się w %40, dwukropek w %3A, ukośnik w %2F, krzyżyk w %23, znak zapytania w %3F. Hasło Sommer@2026 pojawia się więc w adresie jako Sommer%402026 i pozostaje w kamerze niezmienione.

Do drugiej strony tej sprawy należy uwaga: wiele kamer uwierzytelnia się przez RTSP digest, a nie przez Basic Auth. Hasło nie wędruje zatem przez sieć otwartym tekstem, choć otwartym tekstem stoi w adresie. Otwartym tekstem wędruje natomiast sam adres – w historii powłoki, w pliku Compose, w linii dziennika. Dane logowania do kamery należą więc do osobnego konta z samym prawem podglądu, nigdy do konta administratora.

Sprawdzenie adresu, zanim gdziekolwiek trafi

Jedno polecenie odpowiada na jedyne pytanie, które na tym etapie się liczy. Otwiera strumień, czyta pierwsze pakiety, wypisuje znalezione dane i kończy pracę.

ffprobe -hide_banner -rtsp_transport tcp \
  -i "rtsp://admin:Sommer%402026@192.168.1.64:554/Streaming/Channels/102"

Działający adres w ciągu sekundy lub dwóch wypisuje linię strumienia z kodekiem, rozdzielczością i liczbą klatek. Wszystko inne jest diagnozą, a cztery częste odpowiedzi wskazują w cztery różne strony.

Odpowiedź Znaczenie
401 Unauthorized Host i ścieżka są poprawne, dane logowania nie – albo konto nie ma prawa do strumienia
404 Not Found Dane logowania przyjęte, ścieżka błędna – o jednego producenta albo jeden numer strumienia obok
Connection refused Na porcie 554 nic nie nasłuchuje; RTSP wyłączone w kamerze albo port przeniesiony
Przekroczenie czasu po handshake Sesja stoi, pakiety wideo nie docierają – niemal zawsze zablokowany UDP

Ostatnia z czterech tłumaczy, dlaczego w poleceniu stoi -rtsp_transport tcp. Domyślnie kanał sterujący biegnie przez TCP, a obraz przez UDP na osobnych portach. Przez granicę VLAN albo przez zaporę handshake dochodzi więc do skutku, a obraz mimo to nigdy nie przychodzi. Wymuszony TCP kosztuje trochę opóźnienia i usuwa całą klasę usterek.

Który strumień gdzie należy

Gdy adres już działa, podstrumień okazuje się pożyteczniejszą połową. Zapis potrzebuje strumienia głównego, bo to ten materiał ogląda ubezpieczyciel albo sąd. Analiza ruchu i wykrywanie obiektów potrzebują małych obrazów i z nimi przyspieszają: detektor karmiony klatkami 4K spędza czas na ich pomniejszaniu.

Frigate wyraża ten podział wprost, przypisując rolę każdemu strumieniowi – ta sama myśl dotyczy każdego rejestratora przyjmującego dwa wejścia na kamerę.

cameras:
  wjazd:
    ffmpeg:
      inputs:
        - path: rtsp://admin:Sommer%402026@192.168.1.64:554/Streaming/Channels/102
          input_args: preset-rtsp-restream
          roles: [detect]
        - path: rtsp://admin:Sommer%402026@192.168.1.64:554/Streaming/Channels/101
          input_args: preset-rtsp-restream
          roles: [record]

Dwa połączenia do jednej kamery bywają zarazem górną granicą. Tanie kamery dopuszczają cztery równoczesne sesje RTSP, czasem tylko dwie, a piąta próba kończy się komunikatem niemającym nic wspólnego z adresem. Restreamer taki jak go2rtc rozwiązuje to, otwierając jedną sesję i rozdając kopie pozostałym.

Co i tak psuje się później

Adres, który raz zadziałał, potrafi przestać działać, choć nic się w nim nie zmieniło. Trzy przyczyny obejmują niemal wszystko.

Pierwsza to DHCP. Kamera adresowana wypożyczonym IP wędruje po restarcie routera, a adres wskazuje na to, co przejęło numer. Rezerwacja na serwerze DHCP albo stały adres w samej kamerze kończy to na trwałe.

Druga to aktualizacja oprogramowania, która resetuje przełącznik RTSP albo konto podglądu. Oba warto sprawdzić po aktualizacji w pierwszej kolejności, bo objaw – najpierw Connection refused, potem 401 – wygląda na usterkę sieci.

Trzecia to czas. Wiele kamer porzuca sesję leżącą bez informacji zwrotnej RTCP, a część rejestratorów nigdy jej nie wysyła. Wygląda to tak: strumień działa godzinami i znika w nocy, za każdym razem o nieco innej porze. Restreamer z ponownym łączeniem usuwa objaw, a odstęp keepalive poniżej progu czasowego kamery usuwa przyczynę.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (44) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (25) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (15) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Śledź tę kategorię przez RSS