Links oben ist ein Screenshot der Stream-Software OBS. Darunter ein Screenshot einer PeerTube Website mit einem eingebundenen Video. Ein grüner Pfeil zeigt vom obigen Screenshot auf den unteren.

Unsere Streams bei Peertube

Im Rahmen der Digitalen Unabhängigkeit teste ich für uns einen Peertube Hosting Service. Dabei handelt es sich um eine dezentrale und föderierte Videoplattform. In unserem Fall eine Alternative zu YouTube. Ich verwende dazu unsere Baustreams bei Twitch.

Ich habe mich für den Anbieter Weingärtner IT mit Sitz in Dresden entschieden. Dort gibt es eine PeerTube Instanz ab 7 Euro / Monat. Die Domain spitzohrs.tv liegt bei Manitu. Ich musste dann nur die Nameserver-Einträge anpassen. Und schon konnte ich meine eigene Instanz nutzen. Ich muss mir da keine Gedanken über Updates und Monitoring machen. Das überlass ich den Profis, die damit bereits Erfahrung haben.

Streams aufzeichnen

Für die Streams nutze ich Open Broadcaster Software (OBS). Wir streamen über Twitch. Zusätzlich erzeugen wir noch lokal eine Aufnahme in Full HD (1920×1080) bei 60 Frames per Seconds (FPS) und speichern das im Aufnahmeformat Matroska-Video (.mkv). MKV ist eine Empfehlung von OBS.

OBS – Einstellungen – Ausabe, wenn als Aufnahmeformat MPEG-4 (.mp4) ausgewählt ist.
Screenshot des Dialogs "Aufnahme remuxen". Darunter eine Tabelle mit zwei Spalten. Links "OBS-Aufanhme" und rechts "Zieldatei". Über diesem Fenster ist ein weiterer Dialog mit "Aufnahme remuxed".

Die darüber erzeugten MP4-Dateien sind ein wenig größer als die MKV-Dateien.

Export mit MAGIX Video deluxe 2025 Plus

Zum Vergleich habe ich mit MAGIX Video deluxe 2025 Plus auch ein Video als MP4 exportiert.
Video: H.264; 1920x1080p; 30 frames/s; VBR 6000 kbit/s; HW MultiGPU encoding
Audio: AAC; Stereo; 48000 Hz; 128 kbit/s

Ich hatte ein wenig vom Vorspann weggeschnitten. Die Datei ist trotzdem kaum kleiner als die original MKV.

ffmpeg

ffmpeg   -i "2026-01-01 15-01-01 LEGO Shuttle und MINT.mkv"
  -r 30
  -c:v libx264
  -preset medium
  -crf 23
  -c:a aac
  -b:a 128k 
  "2026-01-01 15-01-01 LEGO Shuttle und MINT.mp4"

Vorschlag von ChatGPT:

  • -vf scale=-2:720 => Höhe auf 720p setzen, Breite wird automatisch berechnet (-2)
  • -r 30 => reduziert von 60fps auf 30fps
  • -c:v libx264 => H.264 (perfekt für PeerTube)
  • -crf 23 => Qualität (kleiner = bessere Qualität, größer = kleinere Datei)
  • -preset medium => Geschwindigkeit vs. Effizienz
  • -c:a aac => kompatibler Audio-Codec

Die Original MKV-Datei war 13,0 GB groß. Die neue MP4 ist jetzt 4,46 GB groß. Der Vorgang hat ca. 27 Minuten gedauert.

Screenshot der Powershell nach dem Ausführen des Befehls ffmpeg. Dort sind oben Zeilen mit frame=546105 fps=212, etc. angezeigt. Und zahlreiche andere Informationen, die Florian nicht versteht.
Ausgabe des Terminals nach der Ausführung von ffmpeg

Bei Peertube hochladen

Die Videos konnte ich als MKV erfolgreich nach PeerTube hochladen. Dort wurden sie dann in andere Formate transkodiert. Das dauert aber immer etwas.

Ob es wohl schneller geht, wenn ich das MKV erstmal in MP4 remuxe?

VOD-Konfiguration

In PeerTube gibt es unter Administration > Einstellungen > VOD Einstellungen für Transkodierung. Bei Max. Video-FPS war bisher der Wert 60 eingetragen. Ich habe das jetzt auf 30 geändert, da das für unsere Videos komplett ausreichend ist.

Bei den zu generierenden Auflösungen schwanke ich aktuell zwischen 360p + 720p und 480p + 1080p. Für die Aufzeichnungen unserer Streams sind niedrigere Auflösungen sicherlich ausreichend. Ich habe dazu auch eine Frage auf Mastodon gestellt.

Geplanter Workflow

Ich muss noch für mich herausfinden, was der sinnvollste Workflow ist.

  • Stream aufzeichnen als MKV (1080p60)
  • Lokal nach MP4 (1080p30) transkodieren; mit ffmpeg
    • ffmpeg -i input.mkv -r 30 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4
  • Oder lokal nach MP3 (720p30) transkodieren; mit ffmpeg
    • ffmpeg -i input.mkv -vf scale=-2:720 -r 30 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4
  • Upload nach PeerTube
  • Transkodieren nach HLS
    • 1080p, 480p oder
    • 720p, 360p

Einbinden

Das Video auf PeerTube lässt sich über oEmbed ganz einfach in WordPress einbinden.

Marker und Kapitel

Für die Streams habe ich einen Bot, der mir die Nachrichten aus dem Chat in ein Log schreibt. Dieser erkennt auch, wenn eine berechtige Person (Mod, VIP) einen Marker setzt (z.B. !marker Es geht los) und schreibt diesen mit Zeitstempel in ein zusätzliches Logfile. Der Zeitstempel bildet allerdings die Uhrzeit ab – und nicht die Zeit seit Start des Streams.

Beispiel für die Marker zum Stream vom 9. April 2026.

20:20:57 die entscheidung ist gefallen, tüten auf
20:21:37 Tüte 1 und 5
20:34:38 florian tüte 2
20:45:06 Sandra Tüte 6
20:53:52 florian tüte 3
20:57:33 wir hatten 3 themen
20:59:27 irgendwas mit Spitzohr tv
21:20:07 sandra tüte 7
21:22:07 Florian tüte 4
21:22:15 47
21:50:42 fertig und Johnny5
21:55:05 Noppensammler
21:59:46 Abmod und Ende

Die Aufzeichnung des Streams haben wir um 19:54:09 begonnen. Den Stream haben wir um 19:54:15 gestartet. In meinem Stream-Layout wird neben der aktuellen Sternzeit auch Datum und Uhrzeit angezeigt. Damit lässt sich das leicht überprüfen.

Das heißt, der erste Marker, der um 20:20:57 kam, war 26 Minuten und 48 Sekunden nach Start der Aufzeichnung bzw. 26 Minuten und 42 Sekunden nach Start des Streams.

Wenn ich jetzt das Intro (kein Ton, Kamerabild verschwommen, Diashow mit Zufallsbilder im Vordergrund) wegschneide, dann ändert sich natürlich auch wieder die Berechnung für den Marker. Deswegen ist es auch tatsächlich sinnvoll, dass ich die aktuelle Uhrzeit speichere und nicht dem Zeitpunkt vom Start der Aufzeichnung oder des Streams.

Diese Marker kann ich in PeerTube auch einfach für die Kapitel verwenden. Wenn ich also die Zeitstempel passend zum Video umgerechnet habe, so kann ich diese direkt in die Beschreibung kopieren. PeerTube macht diese anklickbar und fügt auch im Player entsprechende Markierungen hinzu.

Screenshot vom Video-Player. Oben ist das Video zu sehen. Auf der Fortschrittsanzeige sind weiße Kügelchen, wovon die ersten drei rot markiert sind. Unter dem Video ist der Titel und die Beschreibung. Dort sind dann auch noch drei Zeilen mit Zeitstempeln zu sehen, die ebenfalls rot markiert sind. Von dort geht ein roter Pfeil nach oben auf den Fortschrittsbalken

Begrifflichkeiten

Ich kenne mich mit Videos noch nicht so gut aus und muss daher mir auch erstmal die Begriffe raus suchen.

  • Container: Ist eine Dateihülle, in der die Inhalte (Video, Audio, Untertitel, Metadaten) zusammengefasst sind. Das kann z.b. MP4, MKV, etc. sein.
    • MP4 ist ein sehr verbreiteter Container, der Codecs wie H.264 unterstützt, hat eine hohe Kompatibilität
    • MKV bietet mehr Features, ist aber weniger kompatibel
  • Ein Codec bestimmt, wie ein Video komprimiert wird. H.264 bietet eine gute Balance zwischen Qualität und Dateigröße.
  • Beim Transkodieren wird ein Video neu encodiert (z.B. von H.264 -> H.265) oder die Auflösung geändert (1080p -> 720p). Bei PeerTube wird das Video durch transkodieren in mehreren Auflösungen erzeugt und es kann dann je nach Endgerät eine geeignetere Auflösung angezeigt werden.
  • HLS steht für HTTP Live Streaming. Das Video wird in Chunks (kleine Häppchen) zerlegt, wodurch diese schneller abspielbar sind.
  • Remux: Es wird nur der Container geändert. Der Inhalt (Video / Audio) bleibt dabei gleich. Also z.B. von MKV nach MP4
Fediverse-Reaktionen