Vai al contenuto
Castreon
Distribuzione

WebRTC — riproduzione e trasmissione in diretta nel browser

Aggiornato il 05 ott 2026

WebRTC riproduce un canale direttamente nel browser — senza app, senza plugin — con un ritardo molto più basso di HLS. Castreon ti dà una pagina con il player già pronta, il codice per incorporarla nel tuo sito e un indirizzo WHEP standard per i tuoi player. Se il profilo ha più qualità, ogni spettatore riceve quella adatta alla sua connessione.

Funziona anche al contrario: un canale può ricevere una trasmissione in diretta via WebRTC (WHIP) — da OBS, da un altro programma con WHIP o direttamente dal browser, con una telecamera o con lo schermo condiviso.

Disponibile da Castreon 1.0.4, nel piano Enterprise.

Attivare la riproduzione su un canale

  1. Apri il canale → Modifica → Aggiungi uscita e scegli WebRTC in Tipo.
  2. Se vuoi, imposta Spettatori massimi per canale (0 = nessun limite).
  3. Se il profilo ha almeno due qualità H.264, lascia attiva l'opzione Più qualità nel player (accanto ad Attivo) — vedi sotto. Se è disattivata o il profilo ha una sola qualità, scegli la Qualità inviata.
  4. Salva. Gli indirizzi WebRTC compaiono nella pagina del canale, in Distribuzione.

Finché nessuno guarda, non gira nulla: WebRTC parte con il primo spettatore e si ferma 30 secondi dopo l'ultimo.

Gli indirizzi

Per un canale con il nome breve canale1:

Riga in Distribuzione Indirizzo Per
WebRTC · player http://<dominio>/whep/canale1/player chiunque — si apre in qualsiasi browser recente
WebRTC · iframe il codice che incorpora il player in una pagina web il tuo sito
WebRTC · WHEP http://<dominio>/whep/canale1 il tuo player o la tua app WebRTC (standard WHEP)

<dominio> è il Dominio pubblico in Impostazioni → Istanza — vedi Esportazione M3U e dominio pubblico. Se hai impostato un Token per i player, il pannello lo aggiunge già agli indirizzi per operatori e amministratori, e il player lo passa da solo. Valgono gli stessi Indirizzi consentiti di HLS.

Il player parte senza audio, perché i browser consentono la riproduzione automatica solo senza audio; lo spettatore attiva l'audio con Sound on.

Più qualità nel player

Con un profilo che ha almeno due qualità H.264 — per esempio la ricetta Scala ABR (più qualità): 1080p, 720p e 480p — ogni spettatore ne riceve una:

  • In automatico: Castreon misura di continuo la connessione di ogni spettatore. Quando la connessione non regge più la qualità attuale, scende; dopo un periodo stabile prova la qualità superiore. Se il tentativo non regge, torna indietro e aspetta di più prima del successivo.
  • A mano: il player ha un menu della qualità in alto a destra (Auto, 1080p, 720p, 480p, con il bitrate di ciascuna). Una qualità scelta lì resta finché lo spettatore non sceglie di nuovo Auto.

Il cambio avviene al fotogramma chiave successivo del profilo (al massimo qualche secondo), senza immagine rovinata. Le qualità sono quelle che il profilo codifica già, quindi non si codifica niente in più; si usano solo le qualità H.264. Anche gli altri player WHEP ricevono la scelta automatica; un player che non comunica com'è la sua connessione resta su una qualità media (la migliore fino a circa 3,5 Mb/s).

Se cambi il profilo o l'opzione mentre qualcuno guarda, i player si ricollegano da soli in pochi secondi, con le nuove qualità.

Impostazioni del server

Impostazioni → WebRTC:

  • Porta (UDP + TCP) — vuoto significa 33478; una sola porta per tutti gli spettatori e tutte le trasmissioni. Aprila nel firewall sia in UDP sia in TCP — il pannello mostra il comando esatto, per esempio ufw allow 33478/udp && ufw allow 33478/tcp.
  • IP pubblico — solo quando il server è dietro un NAT 1:1 (alcuni cloud danno al server un indirizzo privato). Lascialo vuoto quando l'indirizzo pubblico è direttamente sul server.
  • Spettatori massimi per server — 0 significa nessun limite; si applica subito.

La porta e l'IP pubblico si applicano dopo il riavvio del servizio (sudo systemctl restart castreon). Quando serve un riavvio, il pannello te lo dice.

Ritardo e immagine

  • Da una sorgente che arriva in modo continuo (UDP, SRT, RIST, DVB, WHIP), il ritardo è di circa uno-due secondi.
  • Da una sorgente HLS o DASH, il segnale arriva in segmenti di qualche secondo. Castreon trattiene un po' l'immagine e la invia in modo uniforme, quindi il ritardo è di qualche secondo. Subito dopo l'avvio può esserci una sola breve pausa, mentre Castreon misura la sorgente; poi l'immagine scorre fluida.
  • I browser riproducono H.264 senza B-frame. Se il canale è già codificato in H.264 da Castreon, l'immagine viene copiata così com'è. Altrimenti (passthrough, HEVC) Castreon la converte per i browser — conta circa uno-due core del processore per un canale Full HD. Le qualità multiple nel player vengono sempre copiate.
  • L'audio viene convertito in Opus, il formato di WebRTC.

Sorgente in diretta: trasmettere da OBS o dal browser (WHIP)

Aggiungere la sorgente

  1. Apri il canale → Modifica → Aggiungi sorgente e scegli WebRTC (WHIP).
  2. Salva. Castreon crea l'Indirizzo WHIP (http://<dominio>/whip/canale1) e una Chiave di pubblicazione. Compaiono entrambi nell'editor, con il pulsante per copiarli.

La chiave funziona come una password: chi la ha può trasmettere sul canale. Nuova chiave ne crea un'altra — dopo il salvataggio, la vecchia chiave non funziona più. Gli account che possono solo vedere il canale vedono la chiave mascherata.

La trasmissione diventa la sorgente del canale come qualsiasi altra: profilo, uscite e failover funzionano allo stesso modo. Finché nessuno trasmette, la sorgente WHIP non ha segnale: il canale aspetta e prende la trasmissione pochi secondi dopo che è partita. Con una sorgente di riserva, nel frattempo il canale riproduce la riserva e torna alla trasmissione al controllo successivo della sorgente principale (le impostazioni di failover del canale). Un canale ha una sola sorgente WHIP e una sola trasmissione alla volta — una nuova trasmissione sostituisce la precedente. Una trasmissione che non invia nulla per 20 secondi viene chiusa.

Da OBS (versione 30 o successiva)

Settings → Stream: Service = WHIP, Server = l'indirizzo WHIP, Bearer Token = la chiave di pubblicazione. In Output, usa un encoder H.264 e un intervallo dei fotogrammi chiave di 2 secondi. Castreon prende l'immagine H.264 così com'è e converte l'audio Opus in AAC per il canale.

Gli altri programmi che possono trasmettere via WHIP si configurano allo stesso modo: l'indirizzo WHIP e la chiave come Bearer token.

Dal browser

Nella pagina del canale, la scheda Sorgente WebRTC (WHIP) mostra se arriva una trasmissione, da quale indirizzo e da quale programma, l'immagine e l'audio. Trasmetti dal browser apre una finestra in cui scegli la Sorgente (telecamera e microfono, oppure lo schermo condiviso) e la Qualità (720p o 1080p), poi Avvia la trasmissione. Tieni la finestra aperta mentre trasmetti — se la chiudi, la trasmissione si ferma.

I browser consentono telecamera e schermo solo su una pagina HTTPS (oppure su localhost, per esempio tramite un tunnel SSH) — vedi la sezione successiva. I browser che non possono inviare H.264 inviano VP8; Castreon lo converte in H.264, il che costa tempo di processore.

HTTPS per il pannello

Castreon serve il pannello in semplice HTTP. Per avere HTTPS, metti davanti un server web con certificato. Il più semplice è Caddy, che ottiene da solo il certificato — /etc/caddy/Caddyfile:

tv.example.com {
    reverse_proxy 127.0.0.1:33400
}

Con nginx, usa proxy_pass http://127.0.0.1:33400; e proxy_buffering off; (il pannello riceve aggiornamenti in tempo reale). Poi imposta il Dominio pubblico in Impostazioni → Istanza su https://tv.example.com, così anche gli indirizzi in Distribuzione e l'indirizzo WHIP usano HTTPS. Immagine e audio di WebRTC continuano a passare direttamente dalla porta WebRTC, non dal server web.

Nella pagina del canale

Mentre qualcuno guarda, la scheda WebRTC mostra gli spettatori e il limite, se l'immagine è copiata o convertita, le Qualità (con il bitrate misurato e quanti spettatori ha ciascuna), il Buffer (quanto Castreon trattiene l'immagine per inviarla in modo uniforme), quanto è stato inviato, le Brevi interruzioni e l'elenco degli spettatori — con la Qualità che riceve ciascuno, se è stata scelta in automatico o nel player, e la banda stimata.

Per il monitoraggio, /metrics pubblica anche le metriche WebRTC (castreon_webrtc_…) — vedi Metriche e Grafana. La verifica automatica in Impostazioni → Supporto ti avvisa quando la porta WebRTC non si è potuta aprire o quando un canale non riesce a inviare l'immagine via WebRTC — vedi Verifica automatica e report di diagnostica.

Se non funziona

  • Il player continua a provare a connettersi — la porta è chiusa nel firewall (deve essere aperta in UDP e TCP), oppure il server è dietro un NAT e l'IP pubblico non è impostato.
  • Il player mostra “WebRTC is available on the Enterprise plan” — la licenza del server non include WebRTC.
  • Il player mostra “channel is not running — retrying…” — il canale non è riuscito a partire; controlla che sia attivo e che la sua sorgente funzioni (WebRTC lo avvia su richiesta).
  • L'immagine si ferma ogni tanto — la sorgente arriva in modo irregolare. Dopo la prima pausa Castreon aumenta da solo la riserva; se Brevi interruzioni continua a crescere, controlla la sorgente.
  • Il player non ha il menu della qualità — il profilo ha una sola qualità H.264, oppure Più qualità nel player è disattivato.
  • OBS non riesce a connettersi — controlla l'indirizzo WHIP e la chiave (dopo Nuova chiave e il salvataggio funziona solo la nuova) e che la porta WebRTC sia aperta in UDP e TCP.
  • La trasmissione dal browser chiede HTTPS — apri il pannello in HTTPS (vedi sopra) oppure tramite un tunnel SSH su localhost.

Privacy

Cookie e memoria locale

I cookie strettamente necessari sono sempre attivi. Statistiche e marketing usano servizi Google e partono solo se li accetti — fino ad allora non viene inviato nulla a Google. Puoi revocare il consenso qui in qualsiasi momento.

Strettamente necessari

Senza di essi non funzionano l’accesso, i moduli e la lingua scelta. Non richiedono consenso (§ 25, comma 2, n. 2 TDDDG).

Sempre attivi
Nome Finalità Durata Tipo
castreon-session Mantiene la sessione: accesso e lingua scelta 2 ore, rinnovato a ogni visita Cookie
XSRF-TOKEN Protegge i moduli da richieste contraffatte 2 ore, rinnovato a ogni visita Cookie
remember_web_… Solo se selezioni „Ricordami“ all’accesso Fino alla disconnessione, max. 400 giorni Cookie
__cf_bm Cloudflare: distingue i visitatori dai bot, solo quando il traffico viene verificato 30 minuti Cookie · Cloudflare
castreon:consent Ricorda la tua scelta sui cookie 12 mesi Memoria locale
theme Aspetto dell’account cliente: chiaro, scuro o sistema Finché non lo cambi Memoria locale

Statistiche

Google Analytics 4 (Google Ireland Ltd.): quali pagine vengono visitate, da dove arrivano le visite e con quale tipo di dispositivo — con identificativi pseudonimi, senza salvare l’indirizzo IP. Ci aiuta a migliorare il sito.

Nome Finalità Durata Tipo
_ga Google Analytics: riconosce il visitatore (identificativo pseudonimo) 13 mesi Cookie · Google Analytics
_ga_VHWQRPHPEF Google Analytics: mantiene lo stato della visita 13 mesi Cookie · Google Analytics

Marketing

Google Ads (Google Ireland Ltd.): misura se le visite provenienti dagli annunci Google portano a una prova o a un piano e consente di mostrare annunci Castreon su altri siti (remarketing).

Nome Finalità Durata Tipo
_gcl_au, _gcl_aw Google Ads: collega la visita al clic sull’annuncio (conversioni) 90 giorni Cookie · Google Ads
IDE, test_cookie Google Ads: remarketing e misurazione degli annunci, sui domini Google (doubleclick.net) Fino a 13 mesi Cookie · Google (terza parte)