server_streaming_linux

Server di streaming con Linux: come realizzarlo

Una guida per creare il tuo server di streaming e mandare il flusso sul nostro servizio di Cloud Streaming
Indice dei contenuti

La messa in atto di misure di distanza sociale e quarantena per la pandemia del coronavirus sta trasformando le abitudini digitali degli abitanti di tutto il mondo. Uno degli effetti più importanti del lockdown è l’aumento dell’uso dei servizi di video streaming. Cambiano, quindi, il terreno e le regole di gioco per i brand. Con l’aumento delle visualizzazioni dei servizi in streaming, i brand dispongono di nuovi mezzi per raggiungere il proprio pubblico.

Server di streaming: realizzarlo in autonomia

Il nostro servizio di Cloud Streaming è la soluzione ideale per trasmissioni multiutente: consente di effettuare più flussi simultanei con lo stesso account e gestire fino a 5000 utenti con un flusso video fino a 1 Mbit/s; inoltre, è possibile usare lo stesso servizio anche per erogare video-on-demand: è disponibile, infatti, l’opzione con Cloud Object Storage collegata, il nostro storage S3, grazie al quale è possibile caricare in uno spazio remoto i video da far riprodurre a richiesta. Il flusso erogato dal Cloud Streaming è facilmente integrabile usando un player che supporti uno dei formati di seguito riportati:

  • RTMP
  • Apple HTTP Live Streaming (per iOS/Android e player HTML5/Javascript)
  • Microsoft Smooth Streaming (per dispositivi Microsoft/Silverlight)
  • Flash HTTP Streaming (per player Flash compatibili)
  •  

Vediamo come è possibile realizzare un server che ci consenta di inviare il flusso di streaming. Il processo di creazione dello streaming viene descritto dallo schema riportato di seguito [1], in cui si evidenzia la peculiarità del dispositivo di encoding, che può essere di tipo puramente hardware o hardware/software, utilizzando pacchetti commerciali o gratuiti.

Streaming software OBS Studio: come sfruttarlo

Facendo riferimento in particolare a software Open Source, un prodotto interessante che riscuote oggi una notevole popolarità è OBS Studio [2] (Open Broadcaster System), disponibile su piattaforma Windows, macOS e Linux.  Oltre al dispositivo di acquisizione audio/video (generalmente una webcam), è necessario utilizzare un computer che implementi il processo di encoding, munito ovviamente di connettività e banda in upload tale da garantire l’invio del flusso di streaming al server.

Se non sono richieste particolari prestazioni è possibile utilizzare come hardware un sistema compatto come ad esempio Rabsperry; nel nostro caso, abbiamo realizzato il sistema utilizzando un NUC INTEL [3] (NUC5PPHYH) con 4G di RAM ed un disco SSD, in modo da garantire la compatibilità con il maggior numero di distribuzioni Linux.  

Dopo aver predisposto l’immagine ISO Ubuntu 20.10 Desktop amd64 su chiavetta USB, procediamo all’installazione di FFmpeg ed OBS Studio collegando una tastiera ed un monitor esterno.  

Attivare il monitoraggio remoto

A questo punto è indispensabile attivare un sistema di monitoraggio remoto. Se disponiamo di IP statico, la scelta migliore consiste nell’utilizzare il protocollo VNC, che può essere attivato dalle impostazioni di Ubuntu mediante screen sharing con password (Ubuntu integra nativamente il Vino VNC Server). L’accesso remoto al nostro server sarà possibile facendo riferimento all’indirizzo vnc://<IP>:5900 (si faccia attenzione che a seconda del client utilizzato può essere necessario disabilitare l’encription di Vino con il comando gsettings set org.gnome.Vino require-encryption ‘false’). Nel caso in cui invece non fosse disponibile un IP statico, è possibile installare un Dynamic Update Client o un software di accesso remoto come TeamViewer.

Creare il monitor per l’accesso remoto

Passiamo adesso alla creazione di un monitor fittizio per l’accesso remoto.

Dopo l’installazione del monitor fittizio bisogna creare il file di configurazione /etc/X11/xorg.conf con il contenuto seguente e riavviare il server:

Da questo momento il monitor esterno non è più attivo e può essere scollegato; l’accesso al nostro server potrà avvenire da remoto.

Configurare OBS

Procediamo adesso con la configurazione di OBS. Nelle impostazioni di stream dobbiamo impostare un service custom, inserendo il FMS URL che ci è stato fornito all’attivazione del servizio di Cloud Streaming e specificando l’utilizzo dell’autenticazione con username e password in nostro possesso. Il campo Stream Key deve essere lasciato vuoto.

Per quanto riguarda l’impostazione Output, il video e audio bitrate devono essere determinati in base alla banda disponibile e alla risoluzione desiderata.

Nel nostro caso è stato scelto un video bitrate di 1200 Kbps con encoder software x264 ed un audio bitrate di 160 Kbs, non essendo necessaria per le finalità richieste (streaming della messa in Parrocchia) una elevata qualità. L’impostazione Video è legata alla risoluzione della nostra webcam ed al bitrate selezionato, nel nostro caso abbiamo selezionato una risoluzione base di 1280×720 ed una scaled di 853×480 con 30 FPS.

Per approfondimenti sulla scelta di tali parametri è possibile consultare in rete moltissime guide, come ad esempio [4].

Uno dei punti di forza del nostro sistema è che è anche possibile configurare dei cron per avviare ed arrestare lo streaming, infatti OBS Studio dispone di una potente cli [5]. Ad esempio, per avviare lo streaming il 7 marzo alle 11,30 ed arrestarlo alle 13,30 dovremo inserire nel nostro cron utente la seguente configurazione:

30 11  7  3  * export DISPLAY=:0 && /usr/bin/obs –startstreaming

30 13  7  3  * killall obs

Server di streaming? Facile e a bassissimo costo

In conclusione con una spesa di poco più di un centinaio di euro per l’hardware e grazie alla potenza del nostro sistema di Cloud Streaming, abbiamo realizzato un versatile sistema di streaming, basato su OS Linux e software Open Source e su PC compatto, che è possibile gestire completamente da remoto.

Bibliografia

[1] https://nasaspeed.news/tech/electronics/in-living-color-how-to-live-stream-video-to-the-world-wide-web/

[2] https://obsproject.com

[3] https://www.intel.it/content/www/it/it/products/boards-kits/nuc.html

[4] https://support.video.ibm.com/hc/en-us/articles/207852117-Internet-connection-and-recommended-encoding-settings

[5] https://obsproject.com/wiki/Launch-Parameters

CONDIVIDI SUI SOCIAL

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

12 + = 13