Treci la conținut
Callaba

WebRTC, HLS sau RTMP pentru video live?

Pe această pagină

Pe scurt: folosește RTMP când encoderul trebuie să publice la un endpoint de ingestie, WebRTC când interacțiunea cu spectatorul și comunicarea în timp real îl justifică și HLS când ai ales livrarea către public prin HTTP. Un serviciu live folosește adesea mai mult de unul; numele protocoalelor descriu etape diferite ale traseului.

Alege pornind de la spectator către sursă

ÎntrebareWebRTCHLSRTMP
Receptor principalParticipant interactiv într-un browser sau o aplicație, ori serviciu mediaPlayer și cale de livrare compatibile cu HTTPServer de ingestie sau endpoint de platformă
Model de transport și livrareSesiune media în timp real negociată între participanțiListă de redare și segmente media preluate prin HTTPSesiune persistentă de publicare prin TCP
Rolul browseruluiProiectat pentru API-urile media în timp real din browserLivrat printr-un player; suportul diferă între platformeNu oferă redare nativă în browsere moderne
Verificarea codeculuiConfirmă suportul browserului, serviciului și negocieriiConfirmă compatibilitatea playerului, împachetării și variantei mediaConfirmă compatibilitatea encoderului cu endpointul de ingestie
Verificarea rețeleiSemnalizare, ICE/STUN/TURN și condiții de firewallServer de origine, cache sau CDN și comportamentul cererilor playeruluiAccesibilitatea gazdei și portului de ingestie atribuite
Potrivit cândInteracțiunea face parte din cerințele produsuluiSarcina este livrarea către publicUn encoder trebuie să predea fluxul unui receptor de ingestie

Ce testezi mai întâi

Alegerea fluxului de lucruEndpoint de testatPrima verificare de acceptanță
Contribuție sau public interactiv: WebRTCUn endpoint configurat pentru spectator sau sesiune WebRTCSemnalizarea și conectivitatea ICE/TURN, apoi sunetul și imaginea programului
Redare în browser pentru public larg: HLShttps://example.invalid/live/master.m3u8Preluarea manifestului și varianta media dorită în player
Ingestie din encoder către platformă: RTMPrtmp://example.invalid/app împreună cu cheia atribuităStarea emițătorului, apoi ieșirea HLS sau WebRTC selectată explicit

Acestea sunt forme de endpointuri, nu adrese alocate de Callaba. Pentru modelele de livrare, consultă WebRTC W3C, HLS IETF și specificația RTMP.

Decizie rapidă: alege protocolul după sarcină

Pentru contribuție interactivă sau participarea publicului, testează semnalizarea WebRTC și ICE/TURN înainte să îl alegi. Pentru redare în browser către public larg, testează manifestul HLS și playerul. Pentru ingestie din encoder către platformă, testează RTMP la endpointul atribuit, apoi selectează și testează ieșirea HLS sau WebRTC din etapa următoare.

Dacă întrebarea este cum primesc spectatorii programul în browser, pornește de la WebRTC sau HLS și de la cerințele lor pentru player, acces și livrare. Dacă întrebarea este cum transmite acest encoder către platformă, pornește de la cerințele de ingestie RTMP ale platformei. RTMP poate alimenta o etapă HLS sau WebRTC ulterioară, dar nu creează acea etapă de la sine.

Comparații care induc în eroare

WebRTC comparat cu HLS

Aceasta este o decizie de livrare. WebRTC necesită o cale de sesiune în timp real; HLS necesită livrarea listelor de redare și a segmentelor, plus un player compatibil. Testează endpointul exact al publicului și modelul său de acces, nu doar fluxul sursei.

RTMP comparat cu WebRTC

Aceste protocoale ocupă frecvent capete diferite ale fluxului de lucru: RTMP pentru ingestia din encoder, WebRTC pentru livrarea interactivă. Legătura dintre ele este o funcție configurată a unui server sau serviciu media, cu propriile codecuri, semnalizare și operațiuni, nu o proprietate a vreunuia dintre URL-uri.

HLS comparat cu RTMP

HLS împachetează materialul pentru livrare prin HTTP; RTMP îl publică către un receptor de ingestie. Un spectator care nu poate deschide un URL RTMP are nevoie de calea de ieșire HLS sau WebRTC aleasă, nu de alt browser.

Un flux de lucru mixt

Encoderul programului poate publica RTMP către o resursă de ingestie cu acces controlat. Operatorul confirmă activitatea sursei, apoi configurează o ieșire separată pentru public: HLS pentru un player HTTP sau WebRTC pentru interacțiune. Validează fiecare etapă în ordine: encoder către ingestie, procesare și crearea ieșirii, apoi URL-ul real al spectatorului.

Lista de verificare înainte de producție

  • Notează codecul sursei, frecvența cadrelor, sunetul și constrângerile receptorului țintă.
  • Desemnează un responsabil pentru datele de publicare, semnalizare și acces, precum și testarea playerului.
  • Folosește un public privat pentru repetiție și testează recuperarea după oprirea sursei.
  • Leagă afirmațiile despre redarea directă în browser de ieșirea configurată, niciodată de URL-ul sursei RTMP.

Alege pasul următor

Pentru ingestia din encoder și accesul emițătorului și receptorului, consultă RTMP Server. Un URL de publicare RTMP poate folosi aceeași aplicație și același nume de flux ca URL-ul receptorului, însă emițătorul și receptorul au în continuare roluri diferite. Pentru ieșirea în browser, pornește de la ghidul Web Player; pentru împachetare, vezi RTMP către HLS. Dacă fluxul de lucru folosește contribuție SRT, nu publicare RTMP, pagina potrivită este SRT Server.