WebRTC — redare și transmisie în direct din browser
Actualizat la 05 oct. 2026WebRTC redă un canal direct în browser — fără aplicație, fără plugin — cu o întârziere mult mai mică decât HLS. Castreon vă oferă o pagină cu player gata făcută, codul pentru a o încorpora în site-ul dumneavoastră și o adresă WHEP standard pentru playerele proprii. Când profilul are mai multe calități, fiecare privitor o primește pe cea potrivită conexiunii lui.
Merge și invers: un canal poate primi o transmisie în direct prin WebRTC (WHIP) — din OBS, din alt program cu WHIP sau direct din browser, cu o cameră sau cu ecranul partajat.
Disponibil din Castreon 1.0.4, în planul Enterprise.
Pornirea redării pe un canal
- Deschideți canalul → Editează → Adaugă output și alegeți WebRTC la Tip.
- Opțional, setați Privitori maxim pe canal (0 = fără limită).
- Când profilul are cel puțin două calități H.264, lăsați pornită opțiunea Mai multe calități în player (lângă Activ) — vedeți mai jos. Când e oprită sau profilul are o singură calitate, alegeți Calitatea trimisă.
- Salvați. Adresele WebRTC apar pe pagina canalului, la Livrare.
Cât timp nu urmărește nimeni, nu rulează nimic: WebRTC pornește la primul privitor și se oprește la 30 de secunde după ultimul.
Adresele
Pentru un canal cu numele scurt canal1:
| Rândul din Livrare | Adresa | Pentru |
|---|---|---|
| WebRTC · player | http://<domeniu>/whep/canal1/player |
oricine — se deschide în orice browser actual |
| WebRTC · iframe | codul care încorporează playerul într-o pagină web | site-ul dumneavoastră |
| WebRTC · WHEP | http://<domeniu>/whep/canal1 |
un player sau o aplicație WebRTC proprie (standardul WHEP) |
<domeniu> este Domeniu public din Setări → Instanță — vedeți Exportul M3U și domeniul public. Dacă ați setat un Token pentru playere, panoul îl adaugă deja în adrese pentru operatori și administratori, iar playerul îl transmite singur. Se aplică aceleași Adrese permise ca la HLS.
Playerul pornește fără sunet, pentru că browserele permit redarea automată doar fără sunet; privitorul pornește sunetul cu Sound on.
Mai multe calități în player
Cu un profil care are cel puțin două calități H.264 — de exemplu rețeta Scară ABR (mai multe calități): 1080p, 720p și 480p — fiecare privitor primește una dintre ele:
- Automat: Castreon măsoară tot timpul conexiunea fiecărui privitor. Când conexiunea nu mai duce calitatea curentă, coboară; după o perioadă stabilă încearcă calitatea de deasupra. Dacă încercarea nu ține, revine și așteaptă mai mult până la următoarea.
- Manual: playerul are un meniu de calitate sus în dreapta (Auto, 1080p, 720p, 480p, cu bitrate-ul fiecăreia). O calitate aleasă acolo rămâne până când privitorul alege din nou Auto.
Schimbarea se face la următorul cadru-cheie al profilului (cel mult câteva secunde), fără imagine stricată. Calitățile sunt cele pe care profilul le codează oricum, deci nu se mai codează nimic în plus; se folosesc doar calitățile H.264. Celelalte playere WHEP primesc și ele alegerea automată; un player care nu raportează cum îi merge conexiunea rămâne pe o calitate medie (cea mai bună până la aproximativ 3,5 Mb/s).
Dacă schimbați profilul sau opțiunea cât urmărește cineva, playerele se reconectează singure în câteva secunde, cu calitățile noi.
Setările serverului
Setări → WebRTC:
- Port (UDP + TCP) — gol înseamnă 33478; un singur port pentru toți privitorii și toate transmisiile. Deschideți-l în firewall atât pe UDP, cât și pe TCP — panoul arată comanda exactă, de exemplu
ufw allow 33478/udp && ufw allow 33478/tcp. - IP public — doar când serverul stă în spatele unui NAT 1:1 (unele servicii cloud dau serverului o adresă privată). Lăsați-l gol când adresa publică se află chiar pe server.
- Privitori maxim pe server — 0 înseamnă fără limită; se aplică imediat.
Portul și IP-ul public se aplică după repornirea serviciului (sudo systemctl restart castreon). Când e nevoie de repornire, panoul vă spune.
Întârzierea și imaginea
- De la o sursă care vine continuu (UDP, SRT, RIST, DVB, WHIP), întârzierea este de aproximativ una-două secunde.
- De la o sursă HLS sau DASH, semnalul vine în segmente de câteva secunde. Castreon ține puțin imaginea și o trimite uniform, așa că întârzierea este de câteva secunde. Imediat după pornire poate apărea o singură pauză scurtă, cât Castreon măsoară sursa; după aceea imaginea merge fluent.
- Browserele redau H.264 fără B-frames. Când canalul este deja codat în H.264 de Castreon, imaginea se copiază ca atare. Altfel (passthrough, HEVC), Castreon o convertește pentru browsere — socotiți cam unul-două nuclee de procesor pentru un canal Full HD. Calitățile multiple din player se copiază întotdeauna.
- Sunetul se convertește în Opus, formatul WebRTC.
Sursă în direct: transmisie din OBS sau din browser (WHIP)
Adăugarea sursei
- Deschideți canalul → Editează → Adaugă sursă și alegeți WebRTC (WHIP).
- Salvați. Castreon creează Adresa WHIP (
http://<domeniu>/whip/canal1) și o Cheie de publicare. Amândouă apar în editor, cu buton de copiere.
Cheia funcționează ca o parolă: cine o are poate transmite pe canal. Cheie nouă creează alta — după salvare, cheia veche nu mai funcționează. Conturile care doar vizualizează canalul văd cheia mascată.
Transmisia devine sursa canalului ca oricare alta: profilul, ieșirile și failover-ul funcționează la fel. Cât timp nu transmite nimeni, sursa WHIP nu are semnal: canalul așteaptă și preia transmisia în câteva secunde după ce pornește. Cu o sursă de rezervă, canalul redă între timp rezerva și revine la transmisie la următoarea verificare a sursei principale (setările de failover ale canalului). Un canal are o singură sursă WHIP și o singură transmisie odată — o transmisie nouă o înlocuiește pe cea veche. O transmisie care nu trimite nimic 20 de secunde se închide.
Din OBS (versiunea 30 sau mai nouă)
Settings → Stream: Service = WHIP, Server = adresa WHIP, Bearer Token = cheia de publicare. La Output, folosiți un encoder H.264 și un interval de keyframe de 2 secunde. Castreon preia imaginea H.264 ca atare și convertește sunetul Opus în AAC pentru canal.
Alte programe care pot transmite prin WHIP se configurează la fel: adresa WHIP și cheia ca Bearer token.
Din browser
Pe pagina canalului, cardul Sursă WebRTC (WHIP) arată dacă vine o transmisie, de la ce adresă și din ce program, imaginea și sunetul. Transmite din browser deschide o fereastră în care alegeți Sursă (cameră și microfon sau ecranul partajat) și Calitate (720p sau 1080p), apoi Pornește transmisia. Țineți fereastra deschisă cât transmiteți — dacă o închideți, transmisia se oprește.
Browserele permit camera și ecranul doar pe o pagină HTTPS (sau pe localhost, de exemplu printr-un tunel SSH) — vedeți secțiunea următoare. Browserele care nu pot trimite H.264 trimit VP8; Castreon îl convertește în H.264, ceea ce consumă procesor.
HTTPS pentru panou
Castreon servește panoul prin HTTP simplu. Pentru HTTPS, puneți în fața lui un server web cu certificat. Cel mai simplu este Caddy, care își obține singur certificatul — /etc/caddy/Caddyfile:
tv.example.com {
reverse_proxy 127.0.0.1:33400
}
Cu nginx, folosiți proxy_pass http://127.0.0.1:33400; și proxy_buffering off; (panoul primește actualizări în timp real). Apoi setați Domeniu public din Setări → Instanță la https://tv.example.com, ca adresele de la Livrare și adresa WHIP să folosească și ele HTTPS. Imaginea și sunetul WebRTC circulă în continuare direct prin portul WebRTC, nu prin serverul web.
Pe pagina canalului
Cât timp urmărește cineva, cardul WebRTC arată privitorii și limita, dacă imaginea e copiată sau convertită, Calități (cu bitrate-ul măsurat și câți privitori are fiecare), Tampon (cât ține Castreon imaginea ca s-o trimită uniform), cât s-a trimis, Opriri scurte și lista privitorilor — cu Calitatea pe care o primește fiecare, dacă a fost aleasă automat sau în player, și banda estimată.
Pentru monitorizare, /metrics publică și metricile WebRTC (castreon_webrtc_…) — vedeți Metrici și Grafana. Verificarea automată din Setări → Suport vă avertizează când portul WebRTC nu s-a putut deschide sau când un canal nu își poate trimite imaginea prin WebRTC — vedeți Verificarea automată și raportul de diagnostic.
Dacă nu funcționează
- Playerul tot încearcă să se conecteze — portul este închis în firewall (trebuie deschis pe UDP și pe TCP) sau serverul este în spatele unui NAT, iar IP public nu este setat.
- Playerul afișează „WebRTC is available on the Enterprise plan” — licența serverului nu include WebRTC.
- Playerul afișează „channel is not running — retrying…” — canalul nu a putut porni; verificați că este activ și că sursa lui funcționează (WebRTC îl pornește la cerere).
- Imaginea se oprește din când în când — sursa vine neregulat. După prima pauză, Castreon își mărește singur rezerva; dacă Opriri scurte tot crește, verificați sursa.
- Playerul nu are meniu de calitate — profilul are o singură calitate H.264 sau opțiunea Mai multe calități în player este oprită.
- OBS nu se poate conecta — verificați adresa WHIP și cheia (după Cheie nouă și salvare, merge doar cheia nouă) și că portul WebRTC este deschis pe UDP și pe TCP.
- Transmisia din browser cere HTTPS — deschideți panoul prin HTTPS (vedeți mai sus) sau printr-un tunel SSH, pe
localhost.