NGINX RTMP server
Come faccio a vedere la diretta?
Basta cliccare qui e premere Play.
E se non mi funziona?
Copia e incolla il seguente collegamento nel tuo lettore multimediale.
rtmp://golem.linux.it:8081/live/stream
Per esempio, puoi scaricare VLC, aprire il menù Media → Apri flusso di rete..., inserire il collegamento e fare click su Riproduci.
In caso di problemi, usare la pagina dei contatti.
Per la regia
Quanto segue più avanti in questa pagina è dedicato a chi deve occuparsi della regia
Dal Linux Day 2017 registriamo almeno una parte dei nostri eventi, e saltuariamente li trasmettiamo anche in streaming.
Queste registrazioni sono poi raccolte in molti posti oscuri e sconosciuti ai più come le Ore del GOLEM e i video pubblici.
Da quando c'è la pandemia, tuttavia, l'esigenza di trasmettere i nostri incontri si è fatta sempre più pressante, e il nostro caro, vecchio, non-documentato relay RTMP con nginx si è rivelato essere sempre all'altezza di provvedere alle nostre esigenze, riuscendo a reggere lo streaming (uno-a-molti) con almeno 30 persone. Adesso va quantomeno documentato. Vergogna al sysop che non l'ha fatto prima.
Per chi trasmette
Per trasmettere si deve usare OBS Open Broadcaster Software.
Fai uno stream RTMP verso il nostro relay server, con i seguenti parametri:
- Servizio: Personalizzato
- Indirizzo:
rtmp://ipv6.golem.linux.it:8081/live
- Chiave:
stream
- Autenticazione: nessuna
- Codifica: video x264 800kbps, audio aac 64kbps (rappresenta un buon compromesso di qualità per contenuti sui 720p)
Nota: stream è un parametro a piacere per identificare il particolare flusso video. Non cambiarlo: se lo modifichi, cambia anche l'indirizzo al quale ci si deve collegare per ricevere, e avere molti indirizzi diversi genera confusione.
Lo stream sarà riproducibile da chiunque, con un lettore multimediale, all'indirizzo
rtmp://golem.linux.it:8081/live/stream
Attenzione: puoi trasmettere solo se il tuo indirizzo IP è specificato nel file di configurazione di nginx: al momento, puoi trasmettere solo da un indirizzo della sottorete IPv6 del GOLEM (2001:470:c844::/48
), oppure puoi chiedere al sysop se ti abilita temporaneamente il tuo IPv4 (es. 79.11.35.249/32
).
Per il sistemista
Si deve installare il relay RTMP ricompilando un modulo specifico per nginx 1.13 (purtroppo questa cosa non è stata documentata a suo tempo, qualcuno vuole farlo ora?).
Configurazione di nginx
Lo streaming avviene nel seguente modo:
- flusso RTMP in ingresso: il flusso audio/video RTMP viene trasmesso da OBS già codificato correttamente, e nginx si occuperà semplicemente di replicarlo e, eventualmente, di incapsularlo (vedere più avanti);
- flusso RTMP in uscita: lo stesso flusso audio/video in ingresso viene inserito in un buffer in memoria (es. 4096k), e viene replicato ai client che si connettono per la riproduzione tramite RTMP;
- lettore multimediale web: nginx, tramite le direttive
hls
produce un file di playlist .m3u8 e spezza il flusso audio/video che gli giunge tramite RTMP in tanti piccoli file .ts (numerati in sequenza, e che mano a mano che la diretta procede, vengono eliminati a rotazione). Una semplice pagina web con video.js può essere approntata per la riproduzione: il lettore usa il file di playlist per rimanere aggiornato su quali sono gli ultimi "pezzi" .ts, li scarica e li mostra automaticamente in sequenza, senza discontinuità.
Configurazione nginx: File:Rtmp-nginx.conf.gz
Si notino in particolare le seguenti sezioni:
- http server listen 8080, per esporre la pagina con il lettore multimediale web;
- http server listen 8082, per esporre i file .ts e la playlist .m3u8;
- rtmp server listen 8081, per ricevere la trasmissione da OBS, e per replicarla a chi si collega con un lettore multimediale;