● Desktop-App für macOS & Windows · Electron + FFmpeg

Streame Playlists & Live
nach YouTube

Spiele mehrere Videos als durchgehenden Livestream ab — mit automatischen Bumpern und Crossfades — oder gehe direkt mit Kamera, Capture-Karte, Bildschirm oder NDI live. Inklusive lokalem Monitoring und Bandbreiten-Dashboard.

YTlive Livequelle — Eingang wählen, monitoren und live gehen

Alles in einer App

Zwei Streaming-Modi, vollständige YouTube-Anbindung, technisches Monitoring — ohne externe Tools.

🎬

Playlist-Streaming

Mehrere Videos zu einem durchgehenden Livestream zusammenspielen. Clips werden automatisch in ein einheitliches Format normalisiert.

Bumper & Crossfades

Kurze Bumper automatisch zwischen den Videos einspielen und weiche Überblendungen (xfade) zwischen Clips erzeugen.

📹

Live-Eingänge

Kamera & Capture-Karten, Bildschirm/Fenster oder NDI-Netzwerkquellen — Gerät wählen und auf „Livestream" klicken.

▶️

YouTube direkt aus der App

Anmelden, Broadcast samt aller Metadaten anlegen, binden und live schalten — Ingest-URL und Stream-Key werden automatisch gesetzt.

🖥️

Lokales Monitoring

Vorschau der Quelle und des laufenden Streams direkt in der App — funktioniert auch komplett ohne YouTube-Anmeldung.

📊

Bandbreiten-Dashboard

Benötigte vs. verfügbare Upload-Bandbreite als Ampel, dazu Encoder-Bitrate, FPS, Speed und Dropped Frames in Echtzeit.

🔒

Ohne Anmeldung nutzbar

Playlist-Editor und Livequellen-Monitoring stehen auch ohne Login bereit. Ein manuelles RTMP-Ziel lässt sich frei eintragen.

⚙️

Effizienter Encoder

Ein einziger Encode, per tee-Muxer gleichzeitig an YouTube (RTMP) und den lokalen Monitor — schont CPU und Bandbreite.

Ein Blick in die App

Vier Arbeitsbereiche, eine klare dunkle Oberfläche.

Welcome-Screen
StartBei YouTube anmelden oder ohne Anmeldung fortfahren.
Livequelle
LivequelleEingang wählen, lokal monitoren, live gehen.
Playlist-Editor
Playlist-EditorVideos, Bumper, Crossfade-Übergänge und Loop.
YouTube-Setup
YouTubeAnmeldung und vollständiges Broadcast-Formular.
Monitor
MonitorLive-Vorschau, Bandbreiten-Ampel und Technik-Details.

Funktionsweise

FFmpeg encodiert einmal und verteilt gleichzeitig an YouTube und den lokalen Monitor.

01

Quelle

Live-Eingang oder normalisierte Playlist (concat / xfade).

02

Encode

H.264 / AAC mit einstellbarer Auflösung, FPS und Bitrate.

03

Tee-Muxer

Ein Encode → RTMP(S) an YouTube und MPEG-TS lokal.

04

Monitor

Lokaler Feed im Fenster + Bitrate / Speed / Drops aus FFmpeg.

Playlist-Modus

  • Jeder Clip wird in ein einheitliches Mezzanine-Format normalisiert.
  • Ohne Crossfade: nahtlose concat-Wiedergabe ohne Neu-Rendern.
  • Mit Crossfade: ein Programm mit verketteten xfade-Übergängen.
  • Optionale Bumper zwischen Videos und Endlos-Loop.

Live-Modus

  • Kamera / Capture-Karte via avfoundation (macOS) / dshow (Windows).
  • Bildschirm via avfoundation-Screen bzw. gdigrab.
  • NDI optional über eine gekapselte Bridge.
  • Ziel: YouTube-Ingest (bei Anmeldung) oder manuelles RTMP.

Installation

Voraussetzungen: Node.js ≥ 18. FFmpeg ist eingebunden (kein System-FFmpeg nötig).

# Repository klonen und Abhängigkeiten installieren
git clone https://github.com/fmatsch/YTlive.git
cd YTlive
npm install

# App im Entwicklungsmodus starten
npm run dev

Installer bauen

# macOS (.dmg, arm64 + x64)
npm run package:mac

# Windows (NSIS .exe)
npm run package:win

NDI aktivieren (optional)

NDI darf nicht mit FFmpeg mitgeliefert werden. Über zwei Umgebungsvariablen wird eine eigene Bridge eingebunden:

export YTLIVE_NDI_FINDER=/pfad/finder
export YTLIVE_NDI_BRIDGE=/pfad/bridge

Ohne diese funktionieren Kamera, Capture-Karte und Bildschirm unverändert.

Was an YouTube übermittelt wird

Beim Anlegen eines Broadcasts setzt die App diese Felder direkt über die YouTube Live Streaming API.

MetadatenTitel, Beschreibung, Tags, Kategorie, geplanter Start-/Endzeitpunkt, eigenes Thumbnail
Sichtbarkeitöffentlich · nicht gelistet · privat  ·  „Für Kinder gemacht"
Latenznormal · niedrig · ultra-niedrig
TechnikAuto-Start, Auto-Stop, DVR (Zurückspulen), Einbetten erlauben, ab Start aufzeichnen, Untertitel, Monitor-Stream + Stream-Verzögerung
Stream / CDNAuflösung & Framerate → liefert Ingest-URL und Stream-Key zurück, die automatisch an FFmpeg übergeben werden
Hinweis. Für das YouTube-Login werden eigene Google-Cloud-OAuth-Credentials (Typ „Desktop", YouTube Data API v3 aktiviert) sowie ein für Live freigeschaltetes Konto benötigt. Die App führt im Setup-Dialog durch die Einrichtung. Tokens werden lokal verschlüsselt (Electron safeStorage) gespeichert.