- Python 100%
| peertube_live.py | ||
| README.md | ||
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.
- Supporto per Intel / AMD GPU via VA-API (
- Altre funzioni:
- Watermark / Logo: sovrapposizione di loghi PNG con trasparenza in 4 posizioni a scelta.
- Registrazione Locale: salvataggio contemporaneo in MP4 nella cartella
~/Videosenza 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
ffplayprima 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
- Salva lo script in una directory a tua scelta nominandolo, ad esempio,
peertube_live.py. - Assegna i permessi di esecuzione:
chmod +x peertube_live.py - 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-APIoNVENCper 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
ffplayper 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):
- 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.
- 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-pipewiree il pacchettoxdg-desktop-portalrelativo al tuo ambiente grafico (GNOME, KDE o GTK). - Errore "Audio del computer non disponibile":
Verifica la presenza di
pulseaudio-utilseseguendo da terminalepactl 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
videoorender(sudo usermod -aG render $USER) e che sia installato il driverva-driver-all. - Per NVIDIA: verifica la corretta installazione dei driver proprietari NVIDIA e che
ffmpeg -encoders | grep nvencdia esito positivo.
- Per Intel/AMD: controlla che l'utente appartenga al gruppo
📄 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