Hab bereits was Ähnliches entwickelt und seit jetzt 10 Monaten im Dauerbetrieb laufen. Aber ich gehe da einen etwas anderen Weg, bei mir läuft auf meinem VServer nur ein Streaming-Proxy der zB. auch Multistreams machen könnte, dieser bekommt sein Signal von einer Streaming-Box (das ist 'nen Hardware h264 Encoder) der bei mir zu Hause steht. Die Box bekommt das Signal per HDMI von einem MiniPC (bin eher der Hardware Typ). Auf dem MiniPC ist nur Chrome im Kiosk-Modus. Mein kompletter "Sender" ist 'ne Web-Anwendung (bin eher der dezentrale Typ), die auf einem lokalen Server läuft, inkl. Datenbank für Sendeplan und Videos. Mein Twitch-Bot ist noch im Anfangsstadium, kann aber bereits Titel, Tags und Spiel automatisch ändern.
Vorteil meiner Webanwendung ist, dass ich dynamisch sowohl Inserts als auch Überblendungen und Effekte machen kann, die per CSS definiert werden und nicht nur stur ein Video nach dem anderen abspiele.
Aber interessanter approach. Nur frage ich mich, gibt's da keine Probleme das der Stream abbricht, wenn du die Playliste wechselst? FFMPEG wird ja neu gestartet und beendet dann den Stream bei Twitch... Und was sind deine weiteren Pläne? Gibt es einen Test-Sender wo man sehen kann, wie das in der Praxis aussieht? Leider war deine Homepage gerade nicht erreichbar als ich mir das ganze anschauen wollte, habe nur etwas in den Quelltext reingeschaut.
Hey,
vielen Dank für deinen Einblick und die Vorstellung deines Projekts! Das klingt nach einem super spannenden und robusten Ansatz, vor allem die Hardware-Komponente mit dem dedizierten Encoder und dem Streaming-Proxy ist stark. Die Idee, Overlays dynamisch per CSS zu steuern, ist genial und definitiv etwas, wo mein Projekt noch Nachholbedarf hat. Respekt für die Arbeit, die du da reingesteckt hast!
Du hast ein paar exzellente Fragen gestellt, die genau ins Schwarze treffen.
Projektphilosophie: Eine reine Software-Lösung
Mein Ansatz zielt bewusst darauf ab, eine reine Software-Lösung zu sein, die ohne externe Hardware wie Mini-PCs oder Encoder-Boxen auskommt. Das Ziel ist es, dass jeder mit einem ausreichend starken PC (oder sogar einem kleinen Server) und seinen Videodateien loslegen kann, ohne zusätzlich investieren zu müssen.
Deshalb nutze ich im Kern FFmpeg. Du hast aber richtig erkannt, dass das "sture Abspielen" nicht alles ist. Dafür gibt es zwei Modi:
- Remuxing/Copy-Modus: Das ist die CPU-schonendste Methode und entspricht dem, was du als "stur ein Video nach dem anderen" beschreibst. Hier werden die Videodaten fast nur durchgereicht.
- Transcoding-Modus: Das ist die flexiblere Option. Hier wird das Video in Echtzeit neu kodiert. Das erlaubt es uns, dynamische Overlays einzublenden, wie zum Beispiel einen "Now Playing"-Text mit anpassbarer Schriftart, Farbe und Position. Das ist also bereits Teil des Konzepts, um den Stream lebendiger zu gestalten.
Bricht der Stream beim Playlist-Wechsel ab?
Das ist der kritischste Punkt, und die kurze Antwort lautet: Jein, weil es zwei verschiedene Modi für den Wechsel gibt.
- "Sanfter Neustart" (Soft Restart): Das ist der Standardmodus. Das Skript wartet, bis das aktuell laufende Video komplett zu Ende gespielt ist. Erst dann, im natürlichen Übergangsmoment, lädt es die neue Playlist und startet FFmpeg neu. Für den Zuschauer bei Twitch gibt es dabei keine spürbare Unterbrechung.
- "Harter Neustart" (Hard Restart): Diesen Modus löst man manuell über Buttons wie "Sofort aktivieren" aus. Hier wird der FFmpeg-Prozess tatsächlich sofort beendet und neu gestartet. Das führt zu einer kurzen Unterbrechung von wenigen Sekunden. Glücklicherweise hat Twitch dafür eine eingebaute Schutzfunktion: Bei kurzen Disconnects geht der Stream meist nicht komplett offline, sondern es wird für die Zuschauer nur ein Störungsbild angezeigt, bis das Signal wieder da ist. Das überbrückt diesen Moment perfekt. Das ist quasi der "Notfall"-Knopf.
Gibt es einen Test-Sender?
Ja! Du kannst dir das Ergebnis live ansehen. Unter
https://www.twitch.tv/knautsch_kartoeffliestv läuft ein 24/7-Teststream, der von diesem System gesteuert wird.
Und danke für den Hinweis zur Homepage! Die ist momentan nicht im Fokus der Entwicklung. Alle aktuellen Infos, der Code und die Dokumentation sind direkt auf GitHub zu finden:
https://github.com/Loip104/Stream-Control-Center.
Was sind die weiteren Pläne?
- Integration von Twitch-Kanalpunkten: Nutzer sollen Aktionen (z.B. "Video überspringen") direkt mit Kanalpunkt-Belohnungen verknüpfen können.
- Verbesserung der Datenqualität: Eine Live-Prüfung bei der Eingabe, ob ein Spiel auf Twitch überhaupt existiert.
- Bugfixing & Stabilität: Derzeit funktioniert das Drag & Drop im "Rotationen"-Tab nicht. Solche Kernfunktionen stabil zu machen, hat oberste Priorität.
- Dokumentation & Code-Qualität: Die
README auf GitHub finalisieren, um anderen Entwicklern den Einstieg zu erleichtern.
Nochmal danke für das super Feedback und die interessanten Fragen! Freue mich auf weiteren Austausch.
Viele Grüße!
ps: Eventuell hat jemand gestern das Live System anstatt den Testserver herunter gefahren 