Real Time Messaging Protocol
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.
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[1][2]. 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[3]. 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[4][5][6].
Charakterystyka
[edytuj | edytuj kod]RTMP jest protokołem warstwy aplikacji, zapewniającym dwukierunkową multipleksację komunikatów nad niezawodnym transportem strumieniowym (najczęściej TCP)[1][2]. 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[7][2]. 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[1][2].
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[1][8].
Protokół wspiera mechanizmy kontroli sesji po stronie odtwarzania (m.in. polecenia odtwarzania, pauzowania i przewijania w obrębie materiału)[1].
Historia
[edytuj | edytuj kod]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[9]. Po przejęciu Macromedii przez Adobe Systems (2005) rozwój technologii i produktów z nią związanych kontynuowano pod marką Adobe[10].
W 2012 r. opublikowano specyfikację RTMP (wersja 1.0), co ułatwiło implementację protokołu przez inne podmioty[1][11]. 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[3]. 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[9][4][5][6].
Zastosowania
[edytuj | edytuj kod]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)[9][6],
- strumieniowe przesyłanie materiałów na żądanie (video on demand) w ramach rozwiązań serwerowych obsługujących RTMP[2],
- przekazywanie sygnału wejściowego do wybranych platform internetowych, które udostępniają punkty ingest w RTMP/RTMPS[4][5].
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[4][12].
Odmiany protokołu
[edytuj | edytuj kod]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[2][7].
- RTMPS – RTMP przesyłany przez TLS/SSL (szyfrowane połączenie); w wielu wdrożeniach domyślnym portem jest 443[2][13].
- RTMPT – RTMP tunelowany przez HTTP (dane RTMP są enkapsulowane jako poprawny HTTP); domyślnym portem jest 80[2].
- RTMPE – szyfrowany wariant RTMP (mechanizm odrębny od SSL/TLS) oferowany w ekosystemie Adobe[2].
- 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[14][15].
W praktyce współcześnie często spotyka się użycie RTMP/RTMPS jako protokołu wejściowego dla transmisji na żywo (ingest)[6][5].
Budowa strumienia
[edytuj | edytuj kod]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)[1]. 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[1].
RTMP a inne protokoły strumieniowe
[edytuj | edytuj kod]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)[16].
- HLS – protokół dystrybucji strumieni przez HTTP, opisany w RFC 8216[17].
- MPEG-DASH – zestaw standardów dla adaptacyjnej transmisji multimediów przez istniejącą infrastrukturę HTTP[18].
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ń[19][20].
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[20].
Implementacje
[edytuj | edytuj kod]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[9][6]. W konfiguracjach platformowych często stosuje się adres RTMP/RTMPS oraz klucz transmisji, które identyfikują kanał nadawania i uprawnienia do publikacji strumienia[4][12].
Linki zewnętrzne
[edytuj | edytuj kod]- Gnash Project Wiki - RTMP/AMF/SOL. wiki.gnashdev.org. [zarchiwizowane z tego adresu (2008-03-13)]. (ang.).
Przypisy
[edytuj | edytuj kod]- ↑ a b c d e f g h H. Parmar, M. Thornburgh, 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.).
- ↑ a b c d e f g h i Streaming media [online], Adobe Help Center, 9 lutego 2015 [dostęp 2026-03-04] (ang.).
- ↑ a b Adobe Flash Player End of Life [online], Adobe, 13 stycznia 2021 [dostęp 2026-03-04] (ang.).
- ↑ a b c d e Video Broadcast – Twitch Developers (Broadcast URLs and Stream Keys) [online], Twitch Developers [dostęp 2026-03-04] (ang.).
- ↑ a b c d Delivering Live YouTube Content via RTMPS [online], Google for Developers, 28 sierpnia 2025 [dostęp 2026-03-04] (ang.).
- ↑ a b c d e IVS Stream Ingest – Real-Time Streaming [online], Amazon Web Services Documentation [dostęp 2026-03-04] (ang.).
- ↑ a b Service Name and Transport Protocol Port Number Registry (wpis: 1935/tcp – rtmp) [online], IANA [dostęp 2026-03-04] (ang.).
- ↑ Choose live encoder settings, bitrates, and resolutions [online], YouTube Help [dostęp 2026-03-04] (ang.).
- ↑ a b c d Robert Reinhardt, RTMP in the Age of HTTP Video Streaming: Don't Count it Out [online], Streaming Media, 2 grudnia 2014 [dostęp 2026-03-04] (ang.).
- ↑ Adobe to Acquire Macromedia [online], U.S. Securities and Exchange Commission (EDGAR), 18 kwietnia 2005 [dostęp 2026-03-04] (ang.).
- ↑ Adobe to publish the Real-Time Messaging Protocol (RTMP) specification [online], InfoQ, 22 stycznia 2009 [dostęp 2026-03-04] (ang.).
- ↑ a b Często zadawane pytania dotyczące kluczy transmisji na Twitch [online], Twitch Help [dostęp 2026-03-04] (pol.).
- ↑ Encrypt your stream using RTMPS [online], YouTube Help [dostęp 2026-03-04] (ang.).
- ↑ M. Thornburgh, RFC 7016: Adobe’s Secure Real-Time Media Flow Protocol [online], RFC Editor, listopad 2013 [dostęp 2026-03-04] (ang.).
- ↑ M. Thornburgh, RFC 7425: Adobe’s RTMFP Profile for Flash Communication [online], RFC Editor, grudzień 2014 [dostęp 2026-03-04] (ang.).
- ↑ H. Schulzrinne, A. Rao, R. Lanphier, RFC 2326: Real Time Streaming Protocol (RTSP) [online], RFC Editor, kwiecień 1998 [dostęp 2026-03-04] (ang.).
- ↑ R. Pantos, W. May, RFC 8216: HTTP Live Streaming [online], IETF / datatracker.ietf.org, sierpień 2017 [dostęp 2026-03-04] (ang.).
- ↑ MPEG-DASH (Dynamic Adaptive Streaming over HTTP) [online], MPEG [dostęp 2026-03-04] (ang.).
- ↑ YouTube Live Streaming Ingestion Protocol Comparison [online], Google for Developers, 28 sierpnia 2025 [dostęp 2026-03-04] (ang.).
- ↑ a b M.P. Sharabayko, M.A. Sharabayko, J. Dube, JS Kim, JW Kim, The SRT Protocol (Internet-Draft draft-sharabayko-srt-latest) [online], Haivision / GitHub Pages, 8 stycznia 2024 [dostęp 2026-03-04] (ang.).