Blog

Der BC-250 hat keinen Video-Encoder. Streamen kann er trotzdem.

Der BC-250 ist ein günstiger kleiner Gaming-PC auf Basis eines aussortierten PS5-Boards. Fürs Streaming gibt's einen Haken: Video-Encoder und -Decoder funktionieren nicht. Bei den meisten Streaming-Hosts ist da Schluss. punktfunk bringt PyroWave mit, einen Codec, der stattdessen auf den Shader-Kernen der GPU läuft. So streamt ein BC-250 per Kabel trotzdem auf dein Sofa.

Der BC-250 ist gerade eines der besten Angebote im PC-Gaming. Im Grunde ist er ein PS5-Board, das durch die Qualitätskontrolle gefallen ist: sechs Zen-2-Kerne, Grafik auf PS5-Niveau und 16 GB schneller GDDR6-Speicher, für sehr wenig Geld. Leute bauen ihn in ein kleines Gehäuse, installieren Linux und haben plötzlich eine richtig brauchbare Gaming-Kiste.

Dann wollen sie davon streamen und laufen gegen eine Wand.

Das fehlende Teil

Eine normale GPU hat zwei Jobs. Sie zeichnet dein Spiel, und sie hat einen kleinen, separaten Block nur für Video. Der macht aus Bildern H.264, HEVC oder AV1 und auf der anderen Seite wieder Bilder daraus. Bei NVIDIA heißt er NVENC, bei AMD VCN. Jeder bekannte Streaming-Host verlässt sich darauf, weil er schnell ist und den Rest des Chips kaum anfasst.

Beim BC-250 fällt dieser Block weg. Nichts zum Encodieren, nichts zum Decodieren. Die Decoder-Hälfte ist für einen Host weniger wichtig, denn decodiert wird auf dem Client. Die Encoder-Hälfte ist das Problem.

Der übliche Ausweg ist ein Software-Encoder auf der CPU. Auf sechs Kernen, die schon dein Spiel stemmen, ist das ein schlechter Tausch. Das Spiel verliert CPU-Zeit, und der Stream hängt trotzdem hinterher.

Ein Codec, der keinen Video-Block braucht

punktfunk bringt eine andere Art Codec mit: PyroWave. Geschrieben hat ihn Hans-Kristian Arntzen, und er ist Open Source. Statt des Video-Blocks läuft er als ganz normale Vulkan-Compute-Shader, also dieselbe Art GPU-Arbeit, die auch ein Spiel macht. Davon hat die GPU im BC-250 reichlich.

Stell ihn dir vor wie JPEG 2000 im Schnelldurchlauf. Jedes Bild wird für sich mit einer Wavelet-Transformation komprimiert, ohne Bezug auf frühere Bilder. Das bringt zwei schöne Dinge mit sich:

  • Er ist schnell. Auf einer Desktop-RTX-5070-Ti braucht ein 1080p-Bild etwa 0,15 ms zum Encodieren und etwa 0,07 ms zum Decodieren. Auf einem BC-250 haben wir noch nicht gemessen, aber selbst eine GPU, die nur einen Bruchteil davon leistet, ist lange fertig, bevor das nächste Bild fällig ist.
  • Jedes Bild ist ein Keyframe. Geht ein Paket verloren, fehlt genau ein Bild. Kein verschmiertes Bild, kein halbsekündiges Ruckeln, während der Stream auf einen frischen Keyframe wartet.

punktfunk-Clients unter Linux, Windows, auf Apple-Geräten und auf 64-Bit-Android decodieren ihn alle.

Der Haken: Er will ein Kabel

PyroWave tauscht Bandbreite gegen Tempo, und der Tausch ist deutlich. Grob:

  • 1080p mit 60 fps: etwa 200 Mbit/s
  • 1080p mit 120 fps: etwa 400 Mbit/s
  • 1440p mit 60 fps: etwa 355 Mbit/s
  • 1440p mit 120 fps: etwa 710 Mbit/s

Gigabit-Ethernet trägt etwa 940 Mbit/s echte Nutzdaten. Ein Kabel schafft also alles bis 1440p mit 120 fps. 4K mit 60 fps will 2,5-Gbit-Netzwerk. Und über WLAN solltest du es gar nicht erst versuchen. Deshalb heißt die Einstellung auch wörtlich „PyroWave (wired LAN)“.

Zwei kleinere Dinge solltest du noch wissen:

  • Er teilt sich die GPU mit deinem Spiel. PyroWave encodiert auf denselben Shader-Kernen, die auch das Spiel nutzt. punktfunk gibt dem Encoder Echtzeit-Priorität auf der GPU, damit er sich nicht hinter dem Spiel anstellt (die Pakete richten das für dich ein). Ein Spiel, das die GPU komplett auslastet, zahlt trotzdem eine kleine Steuer. Über diesen Kampf haben wir in Streaming mit niedriger Latenz unter GPU-Last geschrieben.
  • Unter Linux gibt's nur SDR. PyroWave mit HDR braucht heute einen Windows-Host, und ein BC-250 ist eine Linux-Kiste. Scharfe 4:4:4-Farben gehen, für etwa das 1,6-Fache an Bitrate.

So richtest du es ein

  1. Installiere den punktfunk-Host auf dem BC-250. Auf der Download-Seite findest du den Einzeiler.
  2. Häng den BC-250 und deinen Client per Kabel ans Netzwerk.
  3. Öffne auf dem Client Settings → Video codec und wähle PyroWave (wired LAN). Die Clients sind bisher nur auf Englisch.
  4. Fang mit 1080p oder 1440p bei 60 fps an und schau, wie es sich anfühlt.

Schritt 3 ist der wichtige. punktfunk wählt PyroWave nie von selbst. Lässt du den Codec auf Automatic, versucht der Host einen Hardware-Codec, den der BC-250 nicht hat. Stell es einmal pro Client ein, und fertig. Auf dem Host musst du gar nichts einrichten.

Und, taugt der BC-250 als Streaming-Host?

Mit einem Netzwerkkabel: ja. Er schafft kein 4K, kein HDR und streamt nicht über WLAN. Aber für 1080p oder 1440p auf ein gedocktes Steam Deck, einen Laptop oder den Fernseher im Wohnzimmer bekommst du verdammt viel Streaming-Kiste fürs Geld. PyroWave auf dem Client wählen, Kabel stecken, spielen.

Alle Details, inklusive jedes unterstützten Clients, stehen in der PyroWave-Doku.