Client grafico per lo streaming live su istanze PeerTube
Find a file
2026-10-05 21:55:58 +02:00
peertube_live.py fix vari connessione 2026-10-05 21:55:58 +02:00
README.md Aggiorna README.md 2026-10-05 15:26:00 +02:00

PeerTube Live Client — Studio di Trasmissione

Client grafico per lo streaming live su istanze PeerTube, sviluppato in Python, GTK4 e Libadwaita. Funziona come una regia essenziale integrata (stile mini-OBS) specifica per PeerTube, con gestione diretta dell'account, dei canali, delle sessioni live e del flusso multimediale verso RTMP.


🌟 Caratteristiche principali

  • Sorgenti multimediali supportate:
    • Webcam + Microfono.
    • Cattura schermo (Desktop) compatibile sia con X11 che con Wayland (tramite Desktop Portal / PipeWire).
    • Riproduzione di singoli file video locali (MP4, MKV, AVI, MOV, ecc.).
    • Scaletta / Playlist di file multipli con ordinamento personalizzato.
    • Flussi di rete remoti (RTSP, HLS/m3u8, MP4 diretto).
  • Regia e commutazione "Al Volo":
    • Tasto "Passa in Onda" per cambiare sorgente senza dover staccare la diretta su PeerTube.
    • Schermata di cortesia automatica (Pausa) con messaggio a schermo e flusso audio di sicurezza per non far cadere lo stream.
    • Modalità Loop continuo per file locali e scalette.
  • Controllo Audio Avanzato:
    • Selezione dinamica della scheda/microfono di sistema.
    • Mixaggio opzionale dell'audio di sistema (altoparlanti) col microfono.
    • Sliders volume/guadagno indipendenti (0-200%).
    • VU-Meter visivo in tempo reale con indicatore di picco.
    • Tasto rapido Muto e modalità Ascolto microfono in cuffia a bassissima latenza.
  • Codifica e Accelerazione Hardware:
    • Supporto per Intel / AMD GPU via VA-API (h264_vaapi).
    • Supporto per NVIDIA GPU via NVENC (h264_nvenc).
    • Codifica CPU ad alta compatibilità (libx264).
    • Profili di qualità preimpostati: 480p, 720p 30fps, 1080p 30fps, 1080p 60fps.
  • Altre funzioni:
    • Watermark / Logo: sovrapposizione di loghi PNG con trasparenza in 4 posizioni a scelta.
    • Registrazione Locale: salvataggio contemporaneo in MP4 nella cartella ~/Video senza raddoppiare l'uso della CPU.
    • Riconnessione automatica: gestione delle disconnessioni di rete con tentativi automatici progressivi (fino a 10).
    • Test Locale: anteprima a schermo tramite ffplay prima di andare in onda.
    • Gestione PeerTube: creazione live, modifica metadati, upload copertine, gestione canali video e lista registrazioni.

📦 Prerequisiti e Dipendenze di Sistema

Il programma richiede Python 3.10+, le librerie GTK4/Libadwaita e tool a riga di comando per la manipolazione audio/video.

Ubuntu / Debian / Linux Mint / Zorin OS

Installa i pacchetti base richiesti:

sudo apt update
sudo apt install -y \
  python3-gi \
  gir1.2-adw-1 \
  python3-requests \
  ffmpeg \
  pulseaudio-utils

Per il supporto alla condivisione schermo su sessioni Wayland:

Se utilizzi Wayland (default su Ubuntu/Fedora moderni), installa i componenti per PipeWire e il portale desktop:

# Plugin GStreamer e portale
sudo apt install -y \
  gstreamer1.0-tools \
  gstreamer1.0-pipewire \
  xdg-desktop-portal-gnome  # o xdg-desktop-portal-gtk / -kde a seconda del DE

Fedora

sudo dnf install -y \
  python3-gobject \
  libadwaita \
  python3-requests \
  ffmpeg \
  pulseaudio-utils \
  gstreamer1-plugins-good \
  pipewire-gstreamer

Arch Linux / Manjaro

sudo pacman -S --needed \
  python-gobject \
  libadwaita \
  python-requests \
  ffmpeg \
  libpulse \
  gst-plugins-good \
  gst-plugin-pipewire

🚀 Installazione e Primo Avvio

  1. Salva lo script in una directory a tua scelta nominandolo, ad esempio, peertube_live.py.
  2. Assegna i permessi di esecuzione:
    chmod +x peertube_live.py
    
  3. Avvia il programma:
    ./peertube_live.py
    

📖 Guida all'Uso

1. Connessione all'istanza PeerTube

All'avvio comparirà la schermata di login:

  • Istanza: Inserisci il dominio dell'istanza senza protocollo (es. peertube.it, framatube.org) oppure con l'indirizzo completo (https://peertube.example.com).
  • Inserisci le tue credenziali (username o email e password).
  • Clicca su Accedi. I dati del server e l'utente verranno memorizzati in ~/.config/peertube-gtk-client/config.json.

2. Creazione o Selezione della Diretta

  • Nel pannello laterale sinistro seleziona una sessione live esistente, oppure clicca su Nuova diretta.
  • Imposta Titolo, Canale di destinazione, Visibilità (Pubblica, Non in elenco, Privata, Interna) e attiva o meno il salvataggio automatico del Replay.
  • Selezionando una diretta, verranno caricati automaticamente i parametri RTMP e la chiave di trasmissione.

3. Configurazione della Regia

  • Sorgente: Seleziona tra Webcam, Cattura Schermo, Singolo File, Scaletta Video o URL di Rete.
  • Qualità Video: Scegli la risoluzione e il frame rate desiderati in base alla banda in upload a disposizione.
  • Encoder: Seleziona VA-API o NVENC per sfruttare la scheda video integrata o dedicata, risparmiando risorse CPU.
  • Logo / Watermark: Clicca su Sfoglia... per scegliere un'immagine PNG trasparente da sovraimprimere.
  • Audio del computer: Se abilitato, mixa qualsiasi audio riprodotto dal PC (videogiochi, musica di sottofondo, chiamate) direttamente nello stream.

4. Test e Messa in Onda

  • 👁️ Test: Avvia un'anteprima locale a bassa latenza con ffplay per verificare audio, video e posizionamento del logo prima di iniziare la trasmissione vera e propria.
  • 🔴 Avvia Diretta: Apre la connessione RTMP cifrata verso l'istanza PeerTube. Una volta in onda, la sezione Telemetria mostrerà in tempo reale:
    • Uptime (durata diretta).
    • Bitrate effettivo.
    • FPS stabili e frame scartati (Drop frames).
    • Semaforo di stabilità della rete.
  • ⏸ Pausa: Passa istantaneamente a una schermata statica "DIRETTA IN PAUSA - TORNIAMO SUBITO" senza interrompere il flusso con PeerTube.
  • 🔄 Passa in Onda: Permette di preparare una nuova sorgente (es. passare da webcam a uno schermo o a un video) e inviarla direttamente al live stream premendo il pulsante.

⚙️ Architettura Tecnica

L'applicazione adotta un'architettura a doppio processo FFmpeg disaccoppiato tramite UDP locale (127.0.0.1:9999):

  1. Feeder (Sorgente): Acquisisce webcam/schermo/file, applica i filtri visivi (ridimensionamento, padding proporzionale, sovrimpressione logo), mixa i canali audio (resample 44.1kHz, normalizzazione) ed emette un flusso MPEG-TS leggero in localhost.
  2. Master (Encoder & Trasmissione): Riceve il flusso UDP interno, lo codifica con i parametri definiti (H.264 hardware o software) e lo trasmette all'endpoint RTMP di PeerTube. Se richiesto, gestisce la registrazione locale tramite il muxer tee.

Questa separazione garantisce:

  • Commutazione rapida delle scene senza far cadere la connessione RTMP con il server PeerTube.
  • Riconnessione trasparente in caso di micro-interruzioni di rete.
  • Ripresa immediata in caso di fine playback di un file multimediale.

🛠️ Risoluzione Problemi

  • Cattura schermo nera su Wayland: Assicurati di aver installato gstreamer1.0-pipewire e il pacchetto xdg-desktop-portal relativo al tuo ambiente grafico (GNOME, KDE o GTK).
  • Errore "Audio del computer non disponibile": Verifica la presenza di pulseaudio-utils eseguendo da terminale pactl get-default-sink. È necessario un server audio basato su PulseAudio o PipeWire (con emulazione PulseAudio attiva).
  • Nessun encoder GPU visualizzato:
    • Per Intel/AMD: controlla che l'utente appartenga al gruppo video o render (sudo usermod -aG render $USER) e che sia installato il driver va-driver-all.
    • Per NVIDIA: verifica la corretta installazione dei driver proprietari NVIDIA e che ffmpeg -encoders | grep nvenc dia esito positivo.

📄 Licenza

Rilasciato sotto licenza open source standard (GPL-3.0 o compatibile). Sentiti libero di modificare, migliorare e distribuire il codice.

ATTENZIONE

Sono stato aiutato dall' intelligenza artificiale per la realizzazione di questo sofware