Guida passo-passo con script pronto all’uso

1. Prerequisiti

Trasmettere un flusso video in diretta su YouTube non richiede OBS o software pesanti:
basta FFmpeg, un terminale e una connessione stabile.
In questa guida vediamo come creare uno script bash per mandare in streaming una telecamera IP (o qualunque sorgente RTSP) direttamente su YouTube Live.

Ti serve:

  • Un computer Linux (ad es. Raspberry Pi, Debian, Ubuntu…)
  • FFmpeg installato
  • Una telecamera IP o sorgente video RTSP, la telecamera che ho usato in questo esperimento è la REOLINK C510 una cam POE di basso costo (sotto i 50 euro), la cam crea un flusso RTSP raggiungibile con questo indirizzo-schema rtsp://username:password@IP_CAM:554/h264Preview_01_main
  • Una Stream Key YouTube Live
sudo apt install ffmpeg

2. Conservare la Stream Key in un file protetto

Per sicurezza è meglio non inserire la Stream Key direttamente nello script.
Creiamo invece un file nascosto nella home dell’utente con permessi restrittivi.

echo "LA_TUA_STREAM_KEY" > ~/.streamkey_youtube
chmod 600 ~/.streamkey_youtube

3. Lo script completo per lo streaming YouTube

Lo script seguente prende il flusso video da una telecamera IP via RTSP, applica un overlay con logo e testo, ricodifica in H.264 e invia tutto a YouTube.
Contiene anche un semplice sistema di log e riavvio automatico in caso di errore.

Salva questo file come: /usr/local/bin/youtube-live.sh

#!/bin/bash

# ────────────────────────────────────────────────
# CONFIGURAZIONE UTENTE
# ────────────────────────────────────────────────

RTSP_URL="rtsp://username:password@IP_CAM:554/h264Preview_01_main"
LOGO_PATH="/percorso/al/logo.png"
TEXT_OVERLAY="Streaming Live!"
AUDIO_INPUT="default"   # lascia così se usi l’audio della cam
BITRATE=4500
FPS=25
RESOLUTION="1280:720"
LOGFILE="/percorso/al/youtube-live.log" # Questo va creato preventivamente con permessi chown utente/utente
STREAMKEY_FILE="$HOME/.streamkey_youtube"

# ────────────────────────────────────────────────
# CARICA LA STREAM KEY
# ────────────────────────────────────────────────

if [[ ! -f "$STREAMKEY_FILE" ]]; then
    echo "Errore: manca il file della Stream Key ($STREAMKEY_FILE)."
    exit 1
fi
STREAMKEY=$(cat "$STREAMKEY_FILE")

# ────────────────────────────────────────────────
# LOOP DI STREAMING (auto-restart)
# ────────────────────────────────────────────────
while true; do
    echo "────────────────────────────────────" | tee -a "$LOGFILE"
    echo "$(date '+%F %T') - Avvio streaming YouTube" | tee -a "$LOGFILE"
    echo "────────────────────────────────────" | tee -a "$LOGFILE"

    ffmpeg -rtsp_transport tcp \
        -thread_queue_size 4096 \
        -i "$RTSP_URL" \
        -i "$LOGO_PATH" \
        -filter_complex "\
            scale=$RESOLUTION:force_original_aspect_ratio=decrease, \
            drawtext=text='$TEXT_OVERLAY':x=20:y=H-th-30:fontsize=26:fontcolor=white:borderw=2, \
            overlay=10:10 \
        " \
        -c:v libx264 -preset veryfast \
        -b:v ${BITRATE}k -maxrate ${BITRATE}k -bufsize 2000k \
        -g $((FPS*2)) -keyint_min $FPS \
        -c:a aac -b:a 128k -ar 44100 \
        -f flv "rtmp://a.rtmp.youtube.com/live2/$STREAMKEY" \
        2>&1 | tee -a "$LOGFILE"

    echo "$(date '+%F %T') - ffmpeg terminato, riavvio tra 5 secondi..." | tee -a "$LOGFILE"
    sleep 5
done

4. Rendere lo script eseguibile

Rendiamo lo script eseguibile e pronto all’uso:

sudo chmod +x /usr/local/bin/youtube-live.sh

Lanciare la diretta diventa semplicissimo:

youtube-live.sh

5. Personalizzare l’overlay (logo + testo)

Lo script inserisce:

  • un logo PNG in alto a sinistra
  • un testo (di default “Streaming Live!”) in basso a sinistra

Puoi modificare facilmente:

  • la posizione del logo cambiando overlay=10:10
  • il contenuto, la posizione o lo stile del testo nella parte drawtext

Esempio per centrare il testo in basso:

drawtext=text='Live':x=(w-text_w)/2:y=H-th-30:fontsize=26:fontcolor=white:borderw=2

6. Controllare lo stato dello stream

Nella dashboard di YouTube Studio puoi vedere in tempo reale:

  • bitrate
  • keyframe
  • stabilità
  • latenza

Dal lato Linux puoi monitorare lo script guardando il log:

tail -f /var/log/youtube-live.log

7. Consigli per uno streaming stabile

  • Usa RTSP over TCP (già impostato con -rtsp_transport tcp).
  • Mantieni il bitrate sotto i 5000 kbps se la connessione non è perfetta.
  • Imposta la telecamera a 720p / 25fps per ridurre il carico.
  • Preferisci la connessione cablata al Wi-Fi.
  • Mantieni un keyframe ogni 2 secondi (gestito da -g nello script).

Conclusione

Con questo script puoi trasformare una semplice telecamera IP in una “regia” live
automatica, stabile e sufficientemente professionale per eventi, iniziative locali,
conferenze o monitoraggi.

Da qui puoi estendere il sistema aggiungendo:

  • ingressi audio esterni (microfono, mixer, ecc.)
  • multi-streaming verso più piattaforme (YouTube, Twitch, Facebook)
  • un servizio di avvio automatico all’accensione del sistema