Differenze tra le versioni di "NGINX RTMP server"

Da GolemWiki.
Jump to navigation Jump to search
(Creata pagina con "== Come faccio a vedere la diretta? == Per vedere la diretta, copia e incolla il seguente collegamento nel tuo lettore multimediale. rtmp://golem.linux.it:8081/live/stream...")
 
(aggiunta configurazione nginx)
Riga 1: Riga 1:
 
== Come faccio a vedere la diretta? ==
 
== Come faccio a vedere la diretta? ==
Per vedere la diretta, copia e incolla il seguente collegamento nel tuo lettore multimediale.
+
Basta [http://golem.linux.it:8080/stream.html 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
 
  rtmp://golem.linux.it:8081/live/stream
Riga 20: Riga 23:
 
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.
 
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 la regia ==
+
=== Per chi trasmette ===
 
Per trasmettere si deve usare [https://obsproject.com/ OBS Open Broadcaster Software].
 
Per trasmettere si deve usare [https://obsproject.com/ OBS Open Broadcaster Software].
  
Riga 36: Riga 39:
  
 
'''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 (<code>2001:470:c844::/48</code>), oppure puoi chiedere al sysop se ti abilita temporaneamente il tuo IPv4 (es. <code>79.11.35.249/32</code>).
 
'''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 (<code>2001:470:c844::/48</code>), oppure puoi chiedere al sysop se ti abilita temporaneamente il tuo IPv4 (es. <code>79.11.35.249/32</code>).
 +
 +
=== 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 <code>hls</code> 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 [https://videojs.com/ 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;
 +
  
 
[[Category:Officina]]
 
[[Category:Officina]]
 
[[Category:Howto]]
 
[[Category:Howto]]

Versione delle 17:04, 8 ott 2020

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ù MediaApri flusso di rete..., inserire il collegamento e fare click su Riproduci.

Rtmp-vlc-00.png Rtmp-vlc-01.png

In caso di problemi, usare la pagina dei contatti.

Per la regia

Golem-template-note-info.png 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;