Kompletny przewodnik po protokole przesyłania strumieniowego w czasie rzeczywistym (RTSP)

Ponieważ nadzór wideo staje się coraz bardziej popularnym zastosowaniem inteligentnych technologii, protokołom strumieniowania wideo poświęca się coraz więcej uwagi. Niedawno spędziliśmy dużo czasu na naszych blogach, omawiając komunikację w czasie rzeczywistym, zarówno do, jak i z urządzeń wideo, co w końcu doprowadziło do zbadania protokołu przesyłania strumieniowego w czasie rzeczywistym (RTSP) i jego miejsca w Internecie rzeczy (IoT).

Czym jest protokół przesyłania strumieniowego w czasie rzeczywistym?

The Protokół przesyłania strumieniowego w czasie rzeczywistym to konwencja kontroli sieci, która została zaprojektowana do użytku w systemach rozrywkowych i komunikacyjnych w celu ustanawiania i kontrolowania sesji strumieniowego przesyłania multimediów. RTSP to sposób odtwarzania, nagrywania i wstrzymywania multimediów w czasie rzeczywistym. Zasadniczo działa to jak cyfrowa forma pilota zdalnego sterowania, którego używają Państwo na swoim telewizorze w domu.

Początki protokołu RTSP sięgają 1996 roku, kiedy to w ramach współpracy firm RealNetworks, Netscape i Columbia University opracowano go z zamiarem stworzenia znormalizowanego protokołu do kontrolowania mediów strumieniowych przez Internet. Grupy te zaprojektowały protokół tak, aby był kompatybilny z istniejącymi protokołami sieciowymi, takimi jak HTTP, ale ze szczególnym naciskiem na aspekty kontrolne mediów strumieniowych, których HTTP nie uwzględniał w tamtym czasie.

Internet Engineering Task Force (IETF) oficjalnie opublikowała RTSP w kwietniu 1998 roku. Od momentu powstania RTSP, deweloperzy IoT używają go do różnych zastosowań, w tym do przesyłania strumieniowego multimediów przez Internet, w kamerach monitorujących IP i we wszelkich innych systemach, które wymagają dostarczania treści strumieniowych w czasie rzeczywistym.

Należy zauważyć, że RTSP w rzeczywistości nie transportuje samych danych strumieniowych; raczej kontroluje połączenie i strumieniowanie, często pracując w połączeniu z innymi protokołami, takimi jak Real-time Transport Protocol (RTP) do transportu rzeczywistych danych multimedialnych.

RTSP działa w architekturze klient-serwer, w której oprogramowanie lub odtwarzacz multimedialny – zwany klientem – wysyła żądania do drugiej strony, tj. serwera. W przypadku interakcji IoT sposób działania jest zazwyczaj taki, że oprogramowanie klienckie znajduje się na smartfonie lub komputerze, a użytkownik wysyła polecenia do inteligentnej kamery wideo lub innego inteligentnego urządzenia, które działa jako serwer. Serwer odpowie na żądania, wykonując określoną czynność, taką jak odtwarzanie lub wstrzymywanie strumienia multimediów lub rozpoczęcie nagrywania. Będą Państwo mogli wybrać, co urządzenie zrobi w czasie rzeczywistym.

RTSP

Zrozumienie żądań RTSP

Klient w połączeniu RTSP wysyła żądania. Ale co to dokładnie oznacza?

Zasadniczo proces konfiguracji przesyłania strumieniowego przez RTSP obejmuje odtwarzacz multimedialny lub platformę monitorowania kanałów na komputerze lub smartfonie wysyłającą żądanie do adresu URL kamery w celu nawiązania połączenia. Odbywa się to za pomocą polecenia “SETUP” w celu skonfigurowania sesji przesyłania strumieniowego i polecenia “PLAY” w celu rozpoczęcia przesyłania strumieniowego. Następnie kamera odpowiada, podając szczegóły sesji, aby protokół RTP mógł wysłać dane multimedialne, w tym szczegóły dotyczące protokołu transportowego, którego będzie używać.

Gdy kamera otrzyma polecenie “PLAY” za pośrednictwem RTSP, zaczyna przesyłać strumieniowo pakiety danych wideo w czasie rzeczywistym za pośrednictwem protokołu RTP, ewentualnie przez tunel TCP (więcej na ten temat później). Odtwarzacz multimedialny lub oprogramowanie monitorujące następnie odbiera i dekoduje te pakiety danych wideo na wideo, które można wyświetlić.

Tutaj znajdą Państwo bardziej szczegółową listę dodatkowych żądań i ich znaczeń w RTSP:

  1. OPCJE: Odpytuje serwer o obsługiwane polecenia. Służy do żądania dostępnych opcji lub możliwości serwera.
  2. DESCRIBE: Żąda opisu zasobu multimedialnego, zazwyczaj w formacie SDP (Session Description Protocol), który zawiera szczegóły dotyczące zawartości multimedialnej, kodeków i informacji o transporcie.
  3. SETUP: Inicjuje sesję i ustanawia transport multimediów, określając sposób wysyłania strumieni multimediów. Polecenie to przygotowuje również serwer do przesyłania strumieniowego poprzez przydzielenie niezbędnych zasobów.
  4. PLAY: Rozpoczyna strumieniowe przesyłanie multimediów. Nakazuje serwerowi rozpoczęcie wysyłania danych za pośrednictwem protokołu transportowego zdefiniowanego w poleceniu SETUP.
  5. PAUSE: Tymczasowo zatrzymuje strumień bez przerywania sesji, umożliwiając jej późniejsze wznowienie za pomocą innego polecenia PLAY.
  6. TEARDOWN: Kończy sesję i zatrzymuje strumień multimediów, zwalniając zasoby serwera. To polecenie skutecznie zamyka połączenie.
  7. GET_PARAMETER: Służy do zapytania o bieżący stan lub wartość parametru w sesji lub strumieniu multimediów.
  8. SET_PARAMETER: Umożliwia klientowi zmianę lub ustawienie wartości parametru w sesji lub strumieniu multimediów.

Po przejściu żądania serwer może zaoferować odpowiedź. Na przykład odpowiedź “200 OK” oznacza pomyślne zakończenie żądania, podczas gdy “401 Unauthorized” wskazuje, że serwer wymaga dodatkowego uwierzytelnienia. A “404 Not Found” oznacza, że określony zasób nie istnieje. Jeśli wygląda to znajomo, to dlatego, że prawdopodobnie widzieli Państwo błędy 404 i komunikat taki jak “Nie znaleziono strony internetowej” przynajmniej raz w trakcie poruszania się po Internecie.

Protokół transportowy czasu rzeczywistego

Jak wspomniałem wcześniej, RTSP nie przesyła bezpośrednio strumienia wideo. Zamiast tego deweloperzy używają tego protokołu w połączeniu z protokołem transportowym. Najpopularniejszym z nich jest protokół RTP (Real-time Transport Protocol). RTP dostarcza audio i wideo przez sieć z serwera do klienta, dzięki czemu można na przykład oglądać obraz z kamery monitorującej na telefonie. Protokół ten jest szeroko stosowany w systemach mediów strumieniowych i wideokonferencjach do przesyłania danych w czasie rzeczywistym, takich jak dźwięk, wideo lub dane symulacyjne.

Niektóre z kluczowych cech RTP obejmują:

  • Identyfikacja typu ładunku: Nagłówki RTP zawierają pole typu ładunku, które umożliwia odbiorcom interpretację formatu danych, takich jak używany kodek.
  • Numeracja sekwencji: Każdy pakiet danych RTP ma przypisany numer sekwencyjny. Pomaga to odbiornikowi wykryć utratę danych i zmienić kolejność pakietów, które docierają poza kolejnością.
  • Znacznik czasu: Pakiety RTP zawierają informacje o znaczniku czasu, aby umożliwić odbiornikowi odtworzenie czasu strumienia multimediów, utrzymując prawidłowe tempo odtwarzania audio i wideo.

Protokoły RTP i RTSP nadal nie są wystarczające do obsługi wszystkich różnych zadań związanych z przesyłaniem strumieniowym danych wideo. Zazwyczaj sesja przesyłania strumieniowego obejmuje również protokół kontroli transportu w czasie rzeczywistym (RTCP), który zapewnia informacje zwrotne na temat jakości dystrybucji danych, w tym statystyki i informacje o uczestnikach sesji przesyłania strumieniowego.

Wreszcie, sam RTP nie zapewnia żadnego mechanizmu zapewniającego terminowe dostarczanie lub ochronę przed utratą danych; zamiast tego opiera się na podstawowych protokołach sieciowych, takich jak User Datagram Protocol (UDP) lub Transport Control Protocol (TCP) do obsługi transmisji danych. Podsumowując, RTP umieszcza dane w pakietach i transportuje je za pośrednictwem UDP lub TCP, podczas gdy RTCP pomaga w kontroli jakości, a RTSP służy jedynie do konfiguracji strumienia i działa jak pilot zdalnego sterowania.

RTSP przez tunelowanie TCP

Chociaż powiedziałem, że można używać zarówno UDP, jak i TCP do dostarczania strumienia multimediów, zwykle zalecam RTSP przez TCP, w szczególności przy użyciu Tunelowanie TCP. Zasadniczo tunelowanie TCP ułatwia poleceniom RTSP przedostawanie się przez zapory sieciowe i systemy translacji adresów sieciowych (NAT).

Powodem, dla którego jest to konieczne, jest fakt, że RTSP w swojej gotowej wersji ma pewne braki, jeśli chodzi o uwierzytelnianie i prywatność. Zasadniczo jego funkcje nie zostały stworzone z myślą o dzisiejszym Internecie, który jest blokowany przez zapory sieciowe ze wszystkich stron. Zamiast być stworzonym dla urządzeń w lokalnych sieciach domowych za systemami NAT, RTSP został pierwotnie zaprojektowany bardziej do przesyłania strumieniowego danych z usług centralnych. Z tego powodu trudno jest mu przedostać się przez zapory sieciowe lub zlokalizować i uzyskać dostęp do kamer znajdujących się za tymi zaporami, co ogranicza jego możliwe zastosowania.

Jednak korzystanie z tunelowania TCP pozwala RTSP przejść przez zapory ogniowe i umożliwia łatwe przechodzenie przez NAT przy jednoczesnym zachowaniu silnego uwierzytelniania. Pozwala to na wykorzystanie istniejącego protokołu i “spakowanie” go w TCP w celu zwiększenia funkcjonalności.

Tunel może owijać komunikację RTSP wewnątrz warstwy NAT traversal, aby przejść przez zaporę. Jest to ważne, ponieważ skonfigurowanie strumienia multimediów między urządzeniami znajdującymi się w różnych sieciach może być trudne: na przykład, jeśli próbujesz monitorować swój domowy system nadzoru, gdy jesteś na wakacjach.

Kolejną zaletą tunelowania TCP jest zwiększone bezpieczeństwo. Podczas gdy RTSP i RTP nie mają gotowych funkcji bezpieczeństwa niektórych innych protokołów, takich jak WebRTC, można w pełni zaszyfrować wszystkie dane, które przechodzą przez tunel TCP. Te ważne czynniki sprawiły, że RTSP poprzez tunelowanie TCP jest najlepszą opcją do strumieniowego przesyłania wideo w IoT.

Przemyślenia końcowe

Podsumowując, podczas gdy RTSP zapewnia znormalizowany sposób kontrolowania sesji strumieniowego przesyłania multimediów, jego nieodłączne ograniczenia sprawiają, że stanowi on wyzwanie dla nowoczesnych przypadków użycia wideo IoT wymagających zdalnego dostępu i solidnych zabezpieczeń.

Jednakże, wykorzystując techniki tunelowania TCP, deweloperzy mogą wykorzystać zalety RTSP, jednocześnie pokonując przeszkody związane z zaporą sieciową i szyfrowaniem. Ponieważ strumieniowanie wideo nadal napędza innowacje IoT, rozwiązania takie jak tunelowanie RTSP przez TCP będą miały kluczowe znaczenie dla zapewnienia bezpiecznej łączności w czasie rzeczywistym między rozproszonymi urządzeniami i sieciami. Dzięki odpowiednim protokołom i usługom deweloperzy IoT mogą płynnie zintegrować funkcje wideo na żywo ze swoimi produktami.