Kompletny przewodnik po RTMP: co to jest i kiedy go używać?
Protokół przesyłania wiadomości w czasie rzeczywistym (RTMP) to szeroko stosowany format przesyłania strumieniowego. Istnieje od wielu lat i stał się niezbędnym narzędziem dla nadawców, operatorów sieci i wielu innych branż. Jednak niektóre błędne przekonania na temat RTMP sprawiły, że stał się on mniej popularny niż mógłby być.
Ale czym dokładnie jest RTMP? Jak to działa? I czy powinieneś używać go podczas następnej transmisji na żywo?
Dowiedz się więcej na ten temat poniżej.
Co to jest RTMP?
RTMP to protokół sieciowy lub system używany do strumieniowego przesyłania treści multimedialnych przez Internet w oparciu o technologię Transmission Control Protocol (TCP).
Protokół TCP jest jednym ze składników pakietu protokołów internetowych. Innym ważnym składnikiem jest protokół internetowy, określany również jako IP.
RTMP to protokół sieciowy lub system używany do strumieniowego przesyłania treści multimedialnych przez Internet.
TCP i IP działają razem jako mosty komunikacyjne między warstwą aplikacji i sieci. Pomyśl o tym w ten sposób; warstwa aplikacji obejmuje to, z czym normalnie wchodzisz w interakcję, na przykład przeglądarkę Mozilla Firefox lub dowolną inną aplikację użytkownika.
Aby przeglądarka Firefox mogła załadować stronę internetową, musi wysłać żądanie do serwera witryny. Po otrzymaniu żądania serwer wysyła żądany zasób (np. strumień wideo, wcześniej nagrany film na YouTube lub kod HTML dla strony internetowej).
Aby utrzymać skuteczną komunikację (tj. uniknąć porzucenia lub opóźnienia korespondencji), wiadomość musi zostać podzielona na mniejsze części, znane jako pakiety. Odbywa się to po stronie nadawcy, a po otrzymaniu wiadomości jest ona ponownie składana dla użytkownika.
TCP to komponent, który zajmuje się dzieleniem wiadomości na pakiety lub mniejsze części, które mogą być przesyłane skutecznie i wydajnie.
Warstwa IP działa jako agent przekazujący, który określa najlepsze trasy do przesyłania pakietów przez Internet.
Protokół RTMP jest używany przez wiele popularnych odtwarzaczy multimedialnych, w tym Adobe Flash Player, VLC Media Player, QuickTime Player i Windows Media Player. RTMP jest również obsługiwany przez niektóre przeglądarki internetowe, w tym Google Chrome i Mozilla Firefox.
Podstawową kwestią dla większości użytkowników rozwiązań streamingowych jest sposób dostarczania treści. Jeśli jakość rozdzielczości strumieniowania jest niska, dla większości konsumentów będzie to przeszkodą. Podobnie, rozwiązanie streamingowe z dużymi opóźnieniami i buforami lub ładuje się zbyt długo przed odtworzeniem treści nie będzie dobrze działać.
To właśnie tutaj RTMP błyszczy. Od momentu opracowania, RTMP gwarantuje niskie opóźnienia, minimalne buforowanie i jedną z najlepszych rozdzielczości strumieniowania, pod warunkiem, że połączenie sieciowe jest wystarczająco silne i szybkie.
Kolejnym plusem RTMP jest jego zdolność do obsługi masowego strumieniowania jednocześnie i bez większych problemów.
Jednak pomimo wielu lat istnienia, RTMP został ostatnio poddany wzmożonej kontroli, ponieważ system ten nie jest bezpieczny dla użytkowników.
Oto jak powstaje luka(i) w zabezpieczeniach:
Po pierwsze, protokół RTMP nie ma wbudowanego żadnego szyfrowania. W związku z tym każda komunikacja lub transfer pakietów podczas korzystania z RTMP jest otwarty na podsłuchiwanie przez nieautoryzowane grupy lub ataki typu man-in-the-middle.
Innym czynnikiem, który przyczynił się do luki w zabezpieczeniach RTMP jest fakt, że jego kod źródłowy był przez długi czas zastrzeżony. Oprogramowanie własnościowe (tj. oprogramowanie, którego prawa własności i kontroli są ograniczone do podmiotu, który je opracował lub kupił) zazwyczaj otrzymuje regularnie pojawiające się poprawki zabezpieczeń, ale to nie wystarcza.
Nowe luki pojawiają się często, a społeczność zbudowana wokół oprogramowania open-source gwarantuje stosunkowo częstsze i lepsze łatki bezpieczeństwa. Tego właśnie brakowało RTMP, aby zwiększyć jego poziom bezpieczeństwa.
Warianty RTMP
Odmiany RTMP obejmują następujące elementy:
- Real-Time Messaging Protocol Server (RTMPS) - jest podobny do RTMP, ale ma włączone szyfrowanie, tj. warstwę bezpiecznych gniazd (SSL) i Transport Layer Security (TLS), i obsługuje wszystkie odtwarzacze z włączonym odtwarzaczem Flash. Jest używany w scenariuszach, w których istotne jest zapobieganie manipulacjom lub nieautoryzowanemu dostępowi do przesyłanych danych.
- Encrypted Real-Time Messaging Protocol (RTMPE) - jest to bardzo wszechstronny protokół przesyłania strumieniowego, który wykorzystuje zarówno Transport Control Protocol (TCP), jak i User Datagram Protocol (UDP) do przesyłania danych. RTMPE szyfruje również wszystkie transmisje danych przy użyciu zastrzeżonego szyfrowania Adobe, aby uniknąć nieautoryzowanego dostępu i manipulacji.
- Real-Time Messaging Protocol Tunnel (RTMPT) - RTMPT wykorzystuje mechanizm tunelowania w celu ominięcia zapór sieciowych , które zazwyczaj blokują cały ruch RTMP. W praktyce RTMPT wymaga od klienta wysłania zmodyfikowanego żądania HTTP do serwera, który odpowiada prawie podobną transmisją HTTP. Klient i serwer używają identyfikatora sesji; po ustanowieniu połączenia można rozpocząć transmisję danych między nimi.
- Real-Time Media Flow Protocol (RTMFP) - RTMFP jest ulepszoną wersją RTMP, ponieważ wykorzystuje inny format kodowania UDP w celu uzyskania wysokiej wydajności strumieniowego przesyłania multimediów.
Historia streamingu RTMP
Real-Time Messaging Protocol (RTMP) był początkowo zastrzeżonym protokołem opracowanym przez firmę Macromedia do przesyłania strumieniowego audio, wideo i danych przez Internet między odtwarzaczem Flash a serwerem.
RTMP jest obecnie wykorzystywany przez wiele popularnych usług online, takich jak Facebook, Twitch i Twitter do strumieniowego przesyłania wideo na żywo.
Pierwsze publiczne wydanie RTMP miało miejsce w 2002 roku. W 2009 roku firma Adobe wydała wersję RTMP o otwartej specyfikacji, znaną jako OpenRTMP. Główną różnicą między RTMP i OpenRTMP jest to, że w przypadku OpenRTMP można użyć dowolnego serwera multimediów zamiast tylko Flash Media Server (FMS).
Otwarta specyfikacja RTMP zapewnia również większą elastyczność w zakresie sposobu, w jaki deweloperzy mogą zabezpieczać lub konfigurować funkcje peer-to-peer. Ma to na celu zachęcanie do innowacji i współpracy poprzez konkurencję i otwarty dostęp wśród deweloperów w celu opracowania idealnego rozwiązania RTMP.
Główna zasada
RTMP wykorzystuje technikę zwaną "streamingiem" do dostarczania treści. Oznacza to, że dane są przesyłane w małych kawałkach zwanych "fragmentami". Fragmenty są ponownie łączone na drugim końcu, dzięki czemu użytkownik może oglądać lub słuchać treści bez czekania na ich całkowite pobranie.
Sposób działania RTMP składa się z dwóch części: Dostawa na pierwszą i ostatnią milę.
Dostarczanie pierwszej mili zazwyczaj obejmuje przesyłanie multimediów z kodera do serwera przy użyciu RTMP. Dostarczanie ostatniej mili odnosi się do przesyłania multimediów z serwera do urządzenia użytkownika. W tej drugiej części wykorzystywany jest odtwarzacz Flash lub inne równie wydajne narzędzie. Istnieją doniesienia, że Adobe porzuca wszelkie wsparcie dla Flasha; w konsekwencji oznacza to koniec dostarczania ostatniej mili.
W odpowiedzi branża przyjęła protokół HTTP (Hypertext Transfer Protocol), bardziej wydajne rozwiązanie do przesyłania strumieniowego.
Odmiany RTMP, takie jak RTMPT, wykorzystują obecnie protokół HTTP do enkapsulacji i przesyłania multimediów.
Jak działa pozyskiwanie danych RTMP
Jest to prawdopodobnie jedna z zalet RTMP, która pozwoliła mu przetrwać tak długo. Gdy świat odszedł od oglądania multimediów na komputerach na rzecz urządzeń mobilnych, RTMP stanął przed wyzwaniem.
Po pierwsze, RTMP opierał się na odtwarzaczu Adobe Flash, aby zapewnić płynne przesyłanie strumieniowe, ale był mały problem. Urządzenia mobilne nie obsługiwały odtwarzacza Adobe Flash; zasadniczo RTMP stał się bezużyteczny dla użytkowników, którzy chcieli korzystać z tych samych usług streamingowych na swoich urządzeniach mobilnych.
W odpowiedzi firma Apple opracowała protokół HLS do obsługi funkcji strumieniowania na urządzeniach mobilnych.
Rozsądne było oczekiwanie, że RTMP stanie się przestarzały. Na szczęście RTMP doczekał się nowej wersji, tworząc swoją niszę jako idealny protokół do transportu multimediów z kodera do serwera.
Pozyskiwanie RTMP priorytetowo traktuje tanie kodery do działania i generalnie oferuje użytkownikom strumieniowanie o niskim opóźnieniu.
Obejmuje ona trzy główne elementy:
1. Uścisk dłoni
Gdy klient chce połączyć się z serwerem RTMP, musi najpierw ustanowić uzgadnianie. Proces ten rozpoczyna się od wysłania przez klienta żądania "connect" do serwera, które zawiera informacje o kliencie i typie połączenia, które próbuje nawiązać.
Następnie serwer odpowiada komunikatem "connected", który zawiera informacje o serwerze i typie nawiązanego połączenia.
Na koniec klient i serwer wymieniają się wiadomościami, aby potwierdzić, że obaj są nadal połączeni i wynegocjować wszelkie parametry potrzebne do połączenia.
2. Połączenie
Podstawowym celem połączenia RTMP ingest jest zapewnienie środków do strumieniowego przesyłania treści multimedialnych ze źródła do miejsca docelowego.
Źródłem multimediów może być transmisja na żywo z kamery, wcześniej nagrane wideo, audio lub inne media. Miejscem docelowym jest zazwyczaj serwer mediów strumieniowych, który dystrybuuje treści do widzów.
Połączenie pozyskiwania RTMP składa się z trzech elementów:
- Koder konwertuje sygnał wideo i audio na format cyfrowy, który może być przesyłany przez Internet.
- Transport: Jest to medium, za pośrednictwem którego zakodowany sygnał jest wysyłany z kodera do serwera; zazwyczaj odbywa się to za pośrednictwem protokołu UDP lub TCP.
- Serwer odbiera zakodowany sygnał i udostępnia go widzom (zwykle pakując go do formatu takiego jak Flash).
3. Streaming
Gdy użytkownik przesyła strumieniowo zawartość do serwera multimediów, serwer musi najpierw zakodować przychodzący strumień wideo i audio przed wysłaniem go do wszystkich podłączonych klientów.
Proces kodowania i ponownego formatowania wideo i audio do standardowego formatu pliku nazywany jest transkodowaniem. Polega on na konwersji sygnału wejściowego do postaci, która może być odtwarzana na różnych urządzeniach.
Istnieją dwa rodzaje streamingu: na żywo i na żądanie. Strumieniowanie na żywo odnosi się do transmisji w czasie rzeczywistym, podczas gdy strumieniowanie na żądanie ma miejsce, gdy użytkownicy mogą wygodnie oglądać treści.
Streaming na żywo wymaga stałego połączenia między klientem a serwerem, podczas gdy streaming na żądanie nie.
RTMP wykorzystuje protokół TCP do utrzymywania stałego połączenia między klientem a serwerem, umożliwiając przesyłanie strumieniowe z niskimi opóźnieniami. RTMP nie nadaje się jednak dobrze do streamingu na żądanie.
Alternatywy RTMP dla pozyskiwania
SRT i WebRTC to główni rywale, którzy mogą dorównać lub przewyższyć możliwości RTMP. Oto krótki podgląd tych dwóch alternatyw:
Bezpieczny i niezawodny transport (SRT)
SRT wypełnia luki, z którymi nie poradził sobie RTMP, takie jak utrzymywanie niskiego opóźnienia strumieniowania, nawet gdy użytkownik jest podłączony do stosunkowo zawodnej sieci. To sprawia, że jest to doskonały wybór zarówno do streamingu na żywo, jak i na żądanie.
Ponieważ jest to oprogramowanie typu open source, ograniczenia jego możliwości są nieograniczone i nie ma obaw o wycofanie wsparcia programistycznego.
Internetowa komunikacja w czasie rzeczywistym (WebRTC)
WebRTC wygrywa dzięki możliwości publikowania w przeglądarce. Protokół WebRTC HTTP Ingest Protocol (WHIP) jest również w przygotowaniu, a dla użytkowników oznacza to, że będą mogli przesyłać strumieniowo tylko za pomocą przeglądarki internetowej, zamiast zawracać sobie głowę koderami, jak w przypadku RTMP.
Alternatywy RTMP dla wyjść
Na szczycie listy alternatywnych rozwiązań RTMP egress znajdują się HTTP Live Streaming (HLS), MPEG-DASH i WebRTC.
Oto krótki podgląd alternatyw:
HLS i MPEG-DASH
Są one praktycznie takie same, z tą różnicą, że HLS jest prawnie zastrzeżony, podczas gdy MPEG-DASH jest open-source.
Najlepszą rzeczą w tych dwóch urządzeniach jest to, że zostały one zaprojektowane tak, aby zapewniać niskie opóźnienia, optymalną jakość multimediów, a nawet działać z zawodnymi połączeniami sieciowymi.
WebRTC jest również godną uwagi alternatywą dla rozwiązań RTMP egress.
Czy RTMP i Flash umierają?
Krótka odpowiedź brzmi: prawdopodobnie nie. Dłuższa odpowiedź jest nieco bardziej skomplikowana.
Stały wzrost popularności HTML5 i rozprzestrzenianie się wydajnych alternatyw dla Flasha może sprawiać wrażenie, że RTMP i Flash umierają. Tak jednak nie jest.
Flash od jakiegoś czasu chyli się ku upadkowi, tracąc w ostatnich latach znaczny udział w rynku na rzecz HTML5, a jego niegdyś dominująca pozycja w świecie wideo jest obecnie stale zagrożona.
Niemniej jednak, nadal jest on obecny w sieci i jest używany przez wiele popularnych witryn, w tym YouTube i Facebook.
Jeśli chodzi o RTMP, jest on nadal szeroko stosowany do strumieniowego przesyłania treści audio i wideo. Jego przyszłość jest jednak mniej pewna niż Flasha.
Adobe ogłosiło, że przestanie wspierać RTMP w 2020 roku, co może oznaczać koniec tego protokołu. Niemniej jednak istnieje wiele alternatyw opartych na RTMP, więc prawdopodobnie będzie on nadal używany w takiej czy innej formie przez wiele lat.
Czy zatem warto streamować przy użyciu RTMP?
To zależy. Zapoznaj się z niektórymi zaletami i wadami korzystania z RTMP.
Plusy
- Jest bardzo stabilny. W porównaniu z innymi alternatywami na rynku, bardzo mało prawdopodobne jest wystąpienie jakichkolwiek zakłóceń lub przestojów podczas korzystania z usługi obsługującej RTMP.
- Niskie opóźnienia i minimalne buforowanie. RTMP jest wyjątkowy pod tym względem, co oznacza, że użytkownicy mogą oglądać filmy w lepszej rozdzielczości, a ładowanie multimediów zajmuje znacznie mniej czasu.
- Kompatybilność. Solidna i niezawodna natura RTMPS zachęciła większą liczbę producentów do projektowania swoich produktów w celu łatwej integracji z RTMP
Wady
- RTMP wymaga stałego połączenia między klientem a serwerem, co może być problematyczne w przypadku zakłóceń w sieci
- Jako oprogramowanie własnościowe, jest mało elastyczne dla zaawansowanych użytkowników.
FAQ
Jak używać Wave.video do streamowania przez RTMP?
Jeśli chcesz strumieniować wideo przez RTMP, Wave.video jest świetną opcją. Oto jak z niej korzystać:
- Utwórz konto na Wave.video i zaloguj się, jeśli jeszcze tego nie zrobiłeś.
- Wybierz wideo, które chcesz przesyłać strumieniowo.
- Przejdź do strony "Miejsca docelowe" w Wave.video i kliknij "Niestandardowy RTMP".
- Następnie musisz znaleźć adres URL serwera i klucz strumienia dla treści, którą próbujesz przesyłać strumieniowo. Aby to zrobić, przejdź do strony internetowej ze strumieniem, który chcesz wyświetlić.
- Jeśli nie wiesz, jak to zrobić, możesz użyć aplikacji lub rozszerzenia innej firmy, aby wyodrębnić adres URL i klucz.
- Skopiuj adres URL serwera i klucz strumienia.
- Wklej adres URL serwera i klucz strumienia do Wave.video.
- Utwórz lub zaplanuj transmisję strumieniową.
- Otwórz studio na żywo i rozpocznij transmisję strumieniową.
To wszystko, szybko i łatwo!
Które kodery obsługują RTMP?
Istnieje wiele koderów sprzętowych i oprogramowania, które obsługują RTMP. Niektóre z nich obejmują:
- Adobe Media Encoder
- OBS Studio
- Elemental Server
- TriCaster
- Wirecast
- vMix
- TeraDek
- Wowza Streaming Engine
- Niagara Video
RTMP vs. RTSP - co jest lepsze?
RTMP i RTSP to protokoły do przesyłania strumieniowego audio, wideo i danych przez Internet. Są one podobne pod wieloma względami, ale pewne kluczowe różnice czynią je idealnymi dla różnych sytuacji lub preferencji.
Oto krótkie podsumowanie kluczowych różnic między nimi:
- RTMP jest lepszy do strumieniowania na żywo, podczas gdy RTSP jest lepszy do strumieniowania na żądanie.
- RTMP ma mniejsze opóźnienia, podczas gdy RTSP może zapewnić wyższą jakość wideo.
- RTMP wymaga serwera Flash Media Server, podczas gdy RTSP może współpracować z dowolnym serwerem multimediów.
Który protokół jest lepszy? Wszystko zależy od konkretnych potrzeb.
RTMP to dobry wybór, jeśli potrzebujesz niskiego opóźnienia i nie masz nic przeciwko używaniu Flasha. RTSP może być idealnym rozwiązaniem, jeśli potrzebujesz wysokiej jakości wideo lub chcesz korzystać z serwera multimediów innego niż Flash.
Co to jest Action Message Format (AMF)?
AMF to format binarny służący do kodowania i przesyłania danych przez Internet, często używany w połączeniu z RTMP.
AMF umożliwia przesyłanie danych niekompatybilnych z RTMP, takich jak obiekty ActionScript. Umożliwia również wydajną wymianę danych między aplikacjami Flash i serwerami.
Co to jest adres URL RTMP i jak go uzyskać z Facebooka lub YouTube?
Adres URL RTMP to unikalny identyfikator używany do strumieniowego przesyłania treści wideo na żywo na różne platformy.
Zazwyczaj zawiera on adres IP, nazwę domeny i numer portu.
Musisz utworzyć wydarzenie transmitowane na żywo na dowolnej platformie, aby pobrać je z YouTube lub Facebooka. Gdy już to zrobisz, będziesz mógł znaleźć adres URL RTMP w ustawieniach wydarzenia.
Przemyślenia końcowe
RTMP bez wątpienia odcisnęło swoje piętno na świecie. Czy zmierza ku końcowi? Jako rozwiązanie egress, być może, ingest wcale nie!
Nawet jeśli pojawią się inne, równie lub bardziej wydajne alternatywy, RTMP pozostanie istotny w transmisji multimediów i streamingu.