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),
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.
12345678H.H.ParmarH.H., M.M.ThornburghM.M., Adobe’s Real Time Messaging Protocol [online], Adobe Systems Incorporated, 21 grudnia 2012, s. 3–5, 11, 37–47 [dostęp 2026-03-04](ang.).