Real-Time Messaging Protocol (RTMP) – protokół komunikacyjny służący do przesyłania strumieni audio, wideo oraz danych w czasie zbliżonym do rzeczywistego, opracowany pierwotnie przez firmę Macromedia (na potrzeby platformy Flash), a następnie rozwijany przez Adobe Systems. RTMP został zaprojektowany z myślą o współpracy z technologią Adobe Flash i przez wiele lat był jednym z podstawowych mechanizmów dystrybucji treści multimedialnych w Internecie. Mimo zakończenia wsparcia dla Flash Playera protokół nadal bywa wykorzystywany jako metoda dostarczania sygnału wejściowego (ingest) do serwerów streamingowych i platform transmisji na żywo.
Charakterystyka RTMP jest protokołem warstwy aplikacji, zapewniającym dwukierunkową multipleksację komunikatów nad niezawodnym transportem strumieniowym (najczęściej TCP). Domyślnym portem kojarzonym z RTMP jest port 1935, choć w praktyce (zależnie od wdrożenia) możliwe jest używanie innych portów, w tym portów typowo wykorzystywanych dla HTTP/HTTPS. Protokół dzieli przesyłane dane na małe fragmenty (chunki) oraz multipleksuje wiele strumieni logicznych w obrębie jednego połączenia, co umożliwia równoczesny transport danych audio, wideo i komunikatów sterujących.
Strumień RTMP może zawierać: dane wideo (np. skompresowane przy użyciu H.264/AVC; w niektórych zastosowaniach także H.265/HEVC), dane audio (np. AAC, MP3), dodatkowe metadane oraz komunikaty sterujące.
Protokół wspiera mechanizmy kontroli sesji po stronie odtwarzania (m.in. polecenia odtwarzania, pauzowania i przewijania w obrębie materiału).
Historia RTMP został wprowadzony przez firmę Macromedia w 2002 r. (m.in. wraz z Flash Player 6 oraz serwerem Flash Communication Server MX), jako element infrastruktury do strumieniowego przesyłania multimediów w ekosystemie Flash. Po przejęciu Macromedii przez Adobe Systems (2005) rozwój technologii i produktów z nią związanych kontynuowano pod marką Adobe.
W 2012 r. opublikowano specyfikację RTMP (wersja 1.0), co ułatwiło implementację protokołu przez inne podmioty. Po zakończeniu wsparcia dla Flash Playera (31 grudnia 2020) oraz zablokowaniu uruchamiania treści Flash w 2021 r. rola RTMP po stronie odbioru w przeglądarkach internetowych znacząco zmalała. W praktyce protokół zachował jednak zastosowanie jako format dostarczania strumienia z enkodera do usług i serwerów transmisyjnych (ingest), m.in. w serwisach oferujących transmisje na żywo.
Zastosowania RTMP jest używany przede wszystkim w następujących zastosowaniach: transmisje na żywo (publikacja strumienia z programowych i sprzętowych enkoderów do serwerów streamingowych lub usług platformowych), strumieniowe przesyłanie materiałów na żądanie (video on demand) w ramach rozwiązań serwerowych obsługujących RTMP, przekazywanie sygnału wejściowego do wybranych platform internetowych, które udostępniają punkty ingest w RTMP/RTMPS.
Typowe scenariusze obejmują konfigurację enkodera poprzez podanie adresu serwera (URL RTMP/RTMPS) oraz klucza transmisji (stream key), po czym strumień jest przekazywany do usługi lub serwera docelowego.
Odmiany protokołu Protokół RTMP występuje w kilku odmianach, różniących się sposobem transportu danych oraz zabezpieczeniami: RTMP – podstawowa wersja protokołu działająca bezpośrednio nad TCP; domyślnie kojarzona z portem 1935. RTMPS – RTMP przesyłany przez TLS/SSL (szyfrowane połączenie); w wielu wdrożeniach domyślnym portem jest 443. RTMPT – RTMP tunelowany przez HTTP (dane RTMP są enkapsulowane jako poprawny HTTP); domyślnym portem jest 80. RTMPE – szyfrowany wariant RTMP (mechanizm odrębny od SSL/TLS) oferowany w ekosystemie Adobe. RTMFP – (Real-Time Media Flow Protocol) protokół UDP zaprojektowany przez Adobe jako bezpieczny transport wideo, audio i danych, m.in. z myślą o komunikacji peer-to-peer.
W praktyce współcześnie często spotyka się użycie RTMP/RTMPS jako protokołu wejściowego dla transmisji na żywo (ingest).
Budowa strumienia Strumień RTMP opiera się na koncepcji chunk streamów (kanałów logicznych), w ramach których przesyłane są fragmenty (chunki) wiadomości; po stronie odbiorcy chunki są składane z powrotem w wiadomości na podstawie identyfikatora strumienia (chunk stream ID). Taki podział pozwala przeplatać fragmenty wiadomości o różnych priorytetach (np. audio i wideo) w jednym połączeniu, ograniczając ryzyko blokowania mniejszych komunikatów przez duże wiadomości.
RTMP a inne protokoły strumieniowe Wraz z rozwojem transmisji multimedialnych w internecie RTMP funkcjonuje obok innych protokołów, m.in.: RTSP – protokół warstwy aplikacji przeznaczony głównie do sterowania sesjami strumieniowymi (np. komendy odtwarzania i pauzy). HLS – protokół dystrybucji strumieni przez HTTP, opisany w RFC 8216. MPEG-DASH – zestaw standardów dla adaptacyjnej transmisji multimediów przez istniejącą infrastrukturę HTTP.
W kontekście transmisji na żywo RTMP/RTMPS bywa wykorzystywany do ingestu (połączenie stałe i niskie opóźnienia), natomiast protokoły segmentowe oparte na HTTP (np. HLS/DASH) są często stosowane do dystrybucji na większą skalę kosztem wyższych opóźnień.
SRT (Secure Reliable Transport) jest przykładem protokołu działającego nad UDP, projektowanego z myślą o niezawodności, bezpieczeństwie i niskich opóźnieniach w sieciach o zmiennej jakości.
Implementacje RTMP jest obsługiwany przez wiele rozwiązań serwerowych i enkoderów; w praktyce „publikacja” strumienia RTMP z enkodera do serwera lub usługi jest wskazywana jako jedno z typowych zastosowań protokołu. W konfiguracjach platformowych często stosuje się adres RTMP/RTMPS oraz klucz transmisji, które identyfikują kanał nadawania i uprawnienia do publikacji strumienia.
Linki zewnętrzne
Przypisy
Kategoria:Adobe Kategoria:Protokoły internetowe Kategoria:Multimedia