Een complete gids voor RTMP: wat is het en wanneer te gebruiken?
Real-time messaging protocol (RTMP) is een veelgebruikt streamingformaat. Het bestaat al vele jaren en is uitgegroeid tot een essentieel hulpmiddel voor omroepen, netwerkbeheerders en vele andere industrieën. Door een aantal misvattingen over RTMP is het echter minder populair dan het zou kunnen zijn.
Maar wat is RTMP precies? Hoe werkt het? En moet je het gebruiken voor je volgende livestream?
Ontdek dit en nog veel meer hieronder.
Wat is RTMP?
RTMP is een netwerkprotocol of een systeem dat wordt gebruikt om media-inhoud over het internet te streamen op basis van TCP-technologie (Transmission Control Protocol).
TCP is een van de onderdelen van de internetprotocolsuite. De andere belangrijke component is het internetprotocol, ook wel IP genoemd.
RTMP is een netwerkprotocol of een systeem dat wordt gebruikt om media-inhoud over het internet te streamen.
Samen vormen TCP en IP communicatiebruggen tussen de toepassings- en netwerklaag. Bekijk het zo: de applicatielaag omvat datgene waarmee u normaal gesproken communiceert, zoals de Mozilla Firefox-browser of een andere gebruikerstoepassing.
Om uw Firefox-browser een webpagina te laten laden, moet deze een verzoek naar de server van de website sturen. Na ontvangst van het verzoek stuurt de server de gevraagde bron (d.w.z. een videostream, vooraf opgenomen video op YouTube of html-code voor de webpagina).
Om effectieve communicatie te onderhouden (d.w.z. om te voorkomen dat de correspondentie wegvalt of vertraging oploopt), moet het bericht worden opgesplitst in kleinere stukjes die pakketten worden genoemd. Dit gebeurt aan de kant van de verzender en zodra het bericht is ontvangen, wordt het opnieuw samengesteld voor de gebruiker.
TCP is het onderdeel dat het bericht opdeelt in pakketten of kleinere stukjes die effectief en efficiënt kunnen worden verzonden.
De IP-laag fungeert als de doorstuuragent die de beste routes bepaalt om de pakketten over het internet te verzenden.
Het RTMP-protocol wordt gebruikt door veel populaire mediaspelers, waaronder Adobe Flash Player, VLC Media Player, QuickTime Player en Windows Media Player. RTMP wordt ook ondersteund door sommige webbrowsers, waaronder Google Chrome en Mozilla Firefox.
De voornaamste zorg voor de meeste gebruikers van een streamingoplossing is hoe het de inhoud levert. Als de kwaliteit van de streamingresolutie laag is, zal dat voor de meeste consumenten een dealbreaker zijn. Ook een streamingoplossing met een hoge latentie en buffers of ladingen die te lang duren voordat de inhoud wordt afgespeeld, zal het niet goed doen.
Dit is waar RTMP uitblinkt. Sinds de ontwikkeling ervan heeft RTMP een lage latentie, minimale buffering en een van de beste streamingresoluties gegarandeerd, op voorwaarde dat de netwerkverbinding sterk en snel genoeg is.
Een ander voordeel van RTMP is de mogelijkheid om massale gelijktijdige streaming te ondersteunen zonder grote problemen.
Maar ondanks dat RTMP al vele jaren bestaat, is het recentelijk onder de loep genomen omdat het systeem onveilig is voor zijn gebruikers.
Dit is hoe de beveiligingskwetsbaarheid(en) tot stand komt (komen):
Ten eerste heeft het RTMP protocol geen ingebouwde encryptie. Daarom kan elke communicatie of pakketoverdracht tijdens het gebruik van RTMP worden afgeluisterd door onbevoegde groepen of man-in-the-middle type aanvallen.
Een andere factor die bijdroeg aan het beveiligingslek van RTMP is dat de broncode lange tijd propriëtair was. Propriëtaire software (d.w.z. software waarvan de eigendoms- en controlerechten beperkt zijn tot de entiteit die het ontwikkeld of gekocht heeft) ontvangt meestal regelmatig beveiligingspatches, maar dat is niet genoeg.
Nieuwe kwetsbaarheden duiken regelmatig op en de gemeenschap rond open-source software garandeert relatief frequentere en betere beveiligingspatches. Dit is wat RTMP miste om zijn beveiliging te verbeteren.
RTMP-variaties
RTMP-varianten omvatten het volgende:
- Real-Time Messaging Protocol Server (RTMPS) - lijkt veel op RTMP, maar heeft encryptie, d.w.z. SSL (Secure Sockets Layer) en TLS (Transport Layer Security), en ondersteunt alle spelers met Flash Player. Het wordt gebruikt in scenario's waar het van vitaal belang is om knoeien met of ongeautoriseerde toegang tot gegevens tijdens het transport te voorkomen.
- Encrypted Real-Time Messaging Protocol (RTMPE) - het is een zeer veelzijdig streaming protocol dat gebruik maakt van zowel Transport Control Protocol (TCP) als User Datagram Protocol (UDP) om gegevens te verzenden. RTMPE versleutelt ook alle gegevensoverdracht met behulp van Adobe's eigen encryptie om ongeoorloofde toegang en geknoei te voorkomen.
- Real-Time Messaging Protocol Tunnel (RTMPT) - RTMPT maakt gebruik van een tunnelmechanisme om firewallste omzeilen die normaal gesproken al het RTMP-verkeer blokkeren. In de praktijk vereist RTMPT dat de client een aangepast HTTP-verzoek naar de server stuurt, die antwoordt met een bijna gelijke HTTP-overdracht. De client en server gebruiken een sessie-ID; zodra er een verbinding tot stand is gebracht, kan de gegevensoverdracht tussen de twee beginnen.
- Real-Time Media Flow Protocol (RTMFP) - RTMFP is een verbeterde versie van RTMP omdat het gebruik maakt van een ander coderingsformaat UDP om krachtige mediastreaming te bereiken.
Geschiedenis van RTMP-streaming
Real-Time Messaging Protocol (RTMP) was oorspronkelijk een eigen protocol ontwikkeld door Macromedia voor het streamen van audio, video en gegevens over het internet tussen een Flash-speler en een server.
RTMP wordt nu gebruikt door veel populaire online diensten zoals Facebook, Twitch en Twitter voor live videostreaming.
De eerste publieke uitgave van RTMP was in 2002. In 2009 bracht Adobe een open versie van RTMP uit, bekend als OpenRTMP. Het belangrijkste verschil tussen RTMP en OpenRTMP is dat met OpenRTMP elke mediaserver kan worden gebruikt in plaats van alleen Flash Media Server (FMS).
Er is ook meer flexibiliteit met de open RTMP-specificatie over hoe ontwikkelaars peer-to-peer functionaliteit kunnen beveiligen of configureren. Dit is bedoeld om innovatie en samenwerking aan te moedigen via concurrentie en open toegang tussen ontwikkelaars om de ideale RTMP-oplossing te ontwikkelen.
Het belangrijkste principe
RTMP gebruikt een techniek genaamd "streaming" om inhoud te leveren. Dat betekent dat de gegevens in kleine stukjes, "chunks" genaamd, worden overgebracht. De chunks worden aan de andere kant weer samengevoegd, zodat de gebruiker de inhoud kan bekijken of beluisteren zonder te hoeven wachten tot deze volledig is gedownload.
De werking van RTMP bestaat uit twee delen: First en last-mile levering.
First-mile delivery omvat over het algemeen het verzenden van media van de encoder naar de server met behulp van RTMP. Last-mile levering verwijst naar het verzenden van media van de server naar het apparaat van de gebruiker. In dit tweede deel wordt een Flash player of een tool met dezelfde mogelijkheden gebruikt. Er zijn berichten dat Adobe alle ondersteuning voor Flash stopzet; dit betekent dus het einde van last-mile delivery.
Als reactie hierop heeft de industrie het Hypertext Transfer Protocol (HTTP) omarmd, een efficiëntere streamingoplossing.
RTMP-varianten zoals RTMPT gebruiken momenteel HTTP om media in te kapselen en te verzenden.
Hoe RTMP-ingest werkt
Dit is waarschijnlijk een van de redenen waarom RTMP zo lang heeft bestaan. Toen de wereld overstapte van het bekijken van media op computers naar mobiel bekijken, stond RTMP voor een uitdaging.
RTMP vertrouwde op de Adobe Flash player om zijn naadloze streamingervaring te leveren, maar er was een klein probleem. Mobiele apparaten ondersteunden Adobe Flash player niet; in wezen werd RTMP nutteloos voor gebruikers die dezelfde streamingdiensten op hun mobiele apparaten wilden.
Als antwoord hierop ontwikkelde Apple het HLS-protocol om de streamingfunctionaliteit op mobiele apparaten te ondersteunen.
Het was niet meer dan redelijk om te verwachten dat RTMP verouderd zou raken. Gelukkig leefde het voort met RTMP ingest, waardoor het zijn niche creëerde als het ideale protocol om media te transporteren van de encoder naar de server.
RTMP ingest geeft prioriteit aan het functioneren van goedkope encoders en biedt gebruikers over het algemeen streaming met een lage latentie.
Het bestaat uit drie hoofdonderdelen:
1. De handdruk
Wanneer een client verbinding wil maken met een RTMP-server, moet deze eerst een handshake tot stand brengen. Dit proces begint met het sturen van een "connect" verzoek naar de server, dat informatie bevat over de client en het type verbinding dat hij probeert te maken.
De server antwoordt dan met een "connected" bericht, dat informatie bevat over de server en het type verbinding dat tot stand is gebracht.
Tenslotte wisselen de client en server berichten uit om te bevestigen dat ze beiden nog steeds verbonden zijn en om te onderhandelen over eventuele parameters die nodig zijn voor de verbinding.
2. De verbinding
Het primaire doel van de RTMP ingest verbinding is om een middel te bieden voor het streamen van media-inhoud van een bron naar een bestemming.
De mediabron kan een live camerafeed, vooraf opgenomen video, audio of andere media zijn. De bestemming is meestal een streaming mediaserver die de inhoud verdeelt onder de kijkers.
Een RTMP ingest verbinding bestaat uit drie onderdelen:
- De encoder zet het video- en audiosignaal om in een digitaal formaat dat over het internet getransporteerd kan worden.
- Het transport: Dit is het medium waarover het gecodeerde signaal van de encoder naar de server wordt gestuurd; meestal gebeurt dit via UDP of TCP.
- De server ontvangt het gecodeerde signaal en maakt het beschikbaar voor kijkers (meestal door het te verpakken in een formaat zoals Flash).
3. Het streamen
Wanneer een gebruiker inhoud streamt naar een mediaserver, moet de server eerst de inkomende video- en audiofeed coderen voordat deze wordt verzonden naar alle aangesloten clients.
Het proces van het coderen en herformatteren van video en audio naar een standaard bestandsindeling wordt transcodering genoemd. Hierbij wordt het ingangssignaal omgezet in een vorm die kan worden afgespeeld op verschillende apparaten.
Er zijn twee soorten streaming: live streaming en streaming op aanvraag. Live streaming verwijst naar het uitzenden in realtime, terwijl streaming op aanvraag betekent dat gebruikers de inhoud gemakkelijk kunnen bekijken.
Live streaming vereist een constante verbinding tussen de client en de server, terwijl streaming op aanvraag dat niet doet.
RTMP gebruikt TCP om een permanente verbinding te onderhouden tussen de client en de server, waardoor streaming met een lage latentie mogelijk is. RTMP is echter niet geschikt voor streaming op aanvraag.
RTMP-alternatieven voor inlezen
SRT en WebRTC zijn de grote kanshebbers die de mogelijkheden van RTMP kunnen evenaren of zelfs overtreffen. Hier volgt een kort overzicht van de twee alternatieven:
Veilig en betrouwbaar transport (SRT)
SRT vult de gaten die RTMP niet kon dichten, zoals het behouden van streaming met lage latency, zelfs als de gebruiker verbonden is met een relatief onbetrouwbaar netwerk. Dit maakt het een uitstekende keuze voor zowel live streaming als streaming op aanvraag.
Omdat het open source is, zijn de grenzen van de mogelijkheden oneindig en hoef je je geen zorgen te maken dat ontwikkelingsondersteuning wordt ingetrokken.
Web Real-Time Communicatie (WebRTC)
WebRTC wint met zijn browsergebaseerde publicatie. WebRTC HTTP Ingest Protocol (WHIP) is ook in de maak, en wat dit betekent voor gebruikers is dat ze kunnen streamen met alleen een webbrowser in plaats van met encoders zoals bij RTMP.
RTMP Alternatieven voor Egress
Bovenaan de lijst van RTMP egress alternatieven staan HTTP Live Streaming (HLS), MPEG-DASH en WebRTC.
Hier volgt een kort voorproefje van de alternatieven:
HLS en MPEG-DASH
Deze twee zijn vrijwel hetzelfde, alleen is HLS propriëtair terwijl MPEG-DASH open-source is.
Het beste aan deze twee is dat ze ontworpen zijn om lage latentie en optimale mediakwaliteit te leveren en zelfs te werken met onbetrouwbare netwerkverbindingen.
WebRTC is ook een opmerkelijk alternatief voor RTMP egress-oplossingen.
Sterven RTMP en Flash?
Het korte antwoord is: waarschijnlijk niet. Het lange antwoord is iets ingewikkelder.
Door de gestage toename van de populariteit van HTML5 en de proliferatie van goede alternatieven voor Flash lijkt het misschien alsof RTMP en Flash op sterven na dood zijn. Maar dat is niet het geval.
Flash gaat al een tijdje achteruit en heeft de afgelopen jaren een aanzienlijk marktaandeel verloren aan HTML5. De eens zo dominante positie in de videowereld wordt nu voortdurend bedreigd.
Toch is het nog steeds sterk aanwezig op het web en wordt het gebruikt door veel populaire sites, waaronder YouTube en Facebook.
RTMP wordt nog steeds veel gebruikt voor het streamen van audio en video. De toekomst is echter minder zeker dan die van Flash.
Adobe heeft aangekondigd dat het in 2020 stopt met de ondersteuning van RTMP, wat het einde van dit protocol zou kunnen betekenen. Er zijn echter genoeg alternatieven die gebaseerd zijn op RTMP, dus het zal waarschijnlijk nog jaren in een of andere vorm gebruikt worden.
Dus, moet je streamen met RTMP?
Dat hangt ervan af. Bekijk enkele voor- en nadelen van het gebruik van RTMP.
Voordelen
- Het is zeer stabiel. Vergeleken met andere alternatieven op de markt, is het zeer onwaarschijnlijk dat je enige onderbreking of downtime ondervindt tijdens het gebruik van een RTMP-service.
- Lage latentie en minimale buffering. RTMP is uniek in dit opzicht, wat betekent dat gebruikers video's in een betere resolutie kunnen bekijken en dat het aanzienlijk minder lang duurt voordat de media is geladen.
- Compatibiliteit. De robuustheid en betrouwbaarheid van RTMPS moedigde meer fabrikanten aan om hun producten zo te ontwerpen dat ze gemakkelijk met RTMP kunnen integreren.
Nadelen
- RTMP vereist een permanente verbinding tussen de client en de server, wat problematisch kan zijn bij netwerkstoringen
- Omdat het propriëtaire software is, is er weinig flexibiliteit voor power users.
FAQS
Hoe gebruik ik Wave.video voor streamen via RTMP?
Als je video wilt streamen via RTMP, is Wave.video een geweldige optie. Zo gebruik je het:
- Maak een account aan bij Wave.video en log in als u dat nog niet hebt gedaan.
- Kies de video die je wilt streamen.
- Navigeer naar de pagina "Bestemmingen" op Wave.video en klik op "Aangepaste RTMP".
- Vervolgens moet je de server URL en de stream key vinden voor de content die je probeert te streamen. Navigeer hiervoor naar de website met de stream die je wilt bekijken.
- Je kunt een app van derden of een extensie gebruiken om de URL en sleutel te extraheren als je niet weet hoe je dit moet doen.
- Kopieer de server URL en stream key.
- Plak de server-URL en streamsleutel in Wave.video.
- Creëer of plan je stream.
- Open de live studio en begin met streamen.
Dat is alles, snel en gemakkelijk!
Welke encoders ondersteunen RTMP?
Er zijn veel encoder hardware en software die RTMP ondersteunen. Enkele hiervan zijn:
- Adobe Media Encoder
- OBS Studio
- Elementaire server
- TriCaster
- Wirecast
- vMix
- TeraDek
- Wowza uitzendingen
- Niagara Video
RTMP vs. RTSP - Wat is beter?
RTMP en RTSP zijn protocollen voor het streamen van audio, video en gegevens via het internet. Ze lijken in veel opzichten op elkaar, maar enkele belangrijke verschillen maken ze ideaal voor verschillende situaties of voorkeuren.
Hier volgt een kort overzicht van de belangrijkste verschillen tussen de twee:
- RTMP is beter voor live streaming, terwijl RTSP beter is voor streaming op aanvraag.
- RTMP heeft een lagere latentie, terwijl RTSP video van hogere kwaliteit kan leveren.
- RTMP vereist een Flash Media Server, terwijl RTSP met elke mediaserver kan werken.
Welk protocol is nu beter? Het hangt allemaal af van je specifieke behoeften.
RTMP is een goede keuze als je een lage latentie nodig hebt en het niet erg vindt om Flash te gebruiken. RTSP kan ideaal zijn als je een video van hoge kwaliteit nodig hebt of een niet-Flash mediaserver wilt gebruiken.
Wat is het Action Message Format (AMF)?
AMF is een binair formaat voor het coderen en verzenden van gegevens via het internet en wordt vaak gebruikt in combinatie met RTMP.
Met AMF kunnen gegevens worden verzonden die niet compatibel zijn met RTMP, zoals ActionScript-objecten. Het maakt ook de efficiënte uitwisseling van gegevens tussen Flash-toepassingen en servers mogelijk.
Wat is een RTMP URL en hoe haal ik die van Facebook of YouTube?
Een RTMP URL is een unieke identificatie die gebruikt wordt om live video content te streamen naar verschillende platformen.
Het bevat meestal een IP-adres, domeinnaam en poortnummer.
Je moet een livestreaming-evenement op een van beide platforms maken om het van YouTube of Facebook te krijgen. Zodra je dit hebt gedaan, kun je de RTMP URL vinden in de instellingen van het evenement.
Laatste gedachten
RTMP heeft ongetwijfeld zijn stempel gedrukt op de wereld. Is het op zijn retour? Als egress-oplossing misschien wel, als ingest-oplossing helemaal niet!
Zelfs als er andere alternatieven komen die even goed of beter zijn, zal RTMP relevant blijven voor het verzenden en streamen van media.