Skip to content

fmatsch/YTlive

Repository files navigation

YTlive

Desktop-App (macOS & Windows) zum Streamen von Playlists oder einer Livequelle nach YouTube Live. Gebaut mit Electron + React + TypeScript, Streaming-Engine über FFmpeg.

Funktionen

  • Welcome: Bei YouTube anmelden oder ohne Anmeldung fortfahren.
  • YouTube-Setup: OAuth-Anmeldung (Loopback + PKCE) und vollständiges Broadcast-Formular — alle an YouTube übermittelbaren Felder (Titel, Beschreibung, Tags, Sichtbarkeit, Latenz, Auto-Start/Stop, DVR, Einbetten, Aufzeichnen, Untertitel, Monitor-Stream, „Für Kinder“, Kategorie). Legt Broadcast + Stream an, bindet sie und holt Ingest-URL + Stream-Key.
  • Livequelle: Eingang wählen (Kamera/Capture-Karte, Bildschirm, NDI), lokal monitoren, „Livestream“ starten. Funktioniert auch ohne YouTube-Login (manuelles RTMP-Ziel).
  • Playlist-Editor: Videos hinzufügen/sortieren, Bumper automatisch zwischen Videos, Crossfade-Übergänge, Endlos-Loop. Clips werden in ein einheitliches Format normalisiert und als durchgehender Stream abgespielt.
  • Monitor: Live-Vorschau + Technik-Dashboard (Encoder-Bitrate, FPS, Speed, Dropped Frames, gesendete Daten) und Bandbreiten-Ampel (benötigt vs. verfügbarer Upload).

Voraussetzungen

  • Node.js ≥ 18 und npm.
  • FFmpeg wird über ffmpeg-static mitgeliefert (kein System-FFmpeg nötig).
  • Für YouTube: eigene Google-Cloud-OAuth-Client-Credentials (Typ „Desktop“) mit aktivierter YouTube Data API v3 und ein für Live freigeschaltetes YouTube-Konto. Die App führt durch das Setup.
  • NDI ist optional: setze die Umgebungsvariablen YTLIVE_NDI_FINDER (CLI, das Quellnamen ausgibt) und YTLIVE_NDI_BRIDGE (CLI, das eine NDI-Quelle als MPEG-TS auf stdout streamt). Ohne diese werden Kamera/Capture/Screen unverändert unterstützt.

Entwicklung

npm install
npm run dev        # startet Electron im Dev-Modus
npm run typecheck  # TypeScript-Prüfung (Node + Web)

Builds

npm run package:mac   # erzeugt .dmg (arm64 + x64) unter release/
npm run package:win   # erzeugt NSIS-Installer (.exe)  unter release/

Architektur

  • src/main/ – Electron-Main: FFmpeg-Steuerung (ffmpeg.ts, encode.ts), Live-Engine (live.ts), Playlist-Engine (playout.ts), Geräte (devices.ts, ndi.ts), Bandbreite (bandwidth.ts), lokaler Monitor-Server (previewServer.ts), YouTube (youtube/), IPC (ipc.ts).
  • src/preload/ – contextBridge-API (window.ytlive).
  • src/renderer/ – React-UI (Screens + Komponenten, Zustand-Store).
  • src/shared/ – geteilte Typen und IPC-Kanalnamen.

Streaming-Prinzip

Ein langlaufender FFmpeg-Prozess encodiert einmal und verteilt per tee-Muxer gleichzeitig an das RTMP(S)-Ziel und einen lokalen MPEG-TS-Feed, den der Renderer via mpegts.js als Monitor abspielt. Progress läuft über fd 3 und speist Bitrate/Speed/Drop-Statistik.

About

Desktop-App (macOS & Windows) zum Streamen von Playlists oder Livequellen nach YouTube Live — Electron + FFmpeg.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors