Das Gerät war da, die VA-Anzeige dahinter nicht

ffmpeg endete mit 234. No VA display found for device
    /dev/dri/renderD128. Device creation failed: -22.

Hier stand `File.Exists("/dev/dri/renderD128")`, und das war keine
Prüfung, sondern eine Vermutung. Auf dem NAS liegt das Gerät
durchgereicht da — eine VA-Anzeige steht nicht dahinter. ffmpeg bricht
dann schon an der globalen Option ab, vor dem ersten Bild, und für den
Zuschauer sieht das aus wie ein kaputter Server: HTTP 500 auf die
Abspielliste, „Die Wiedergabe wurde unterbrochen".

Jetzt wird ffmpeg einmal je Lauf wirklich gefragt: ein Bild aus dem
Nichts, nirgendwohin, mit Frist. Geht die Zeile vor dem ersten Bild nicht
durch, läuft es in Software weiter — langsamer, aber es läuft.
FLARO_HWACCEL=vaapi überspringt die Probe für den, der es ausdrücklich
verlangt.

Dazu, aus derselben Gegend: in der Hauptliste stehen nur Untertitelspuren,
die jetzt sofort abholbar sind. Sie werden beim ersten Bedarf aus der
Datei gezogen, und bei einem Dreistünder dauert das Minuten. Der Browser
verträgt das — er fragt die Spur einzeln an und wartet. AVPlayer bricht
daran die ganze Wiedergabe ab, nicht bloss den Untertitel. Das Füllen
läuft beim Anlegen der Sitzung schon an; beim nächsten Abspielen stehen
sie drin.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-10 19:59:49 +02:00
co-authored by Claude Opus 5
parent 34ade18ed6
commit b88e58d5eb
4 changed files with 122 additions and 8 deletions
@@ -463,6 +463,14 @@ public class StreamTests
var strom = await Strom(client, datei.Id, Browser());
var spur = strom.SubtitleStreams.Single();
// **Erst holen, dann fragen.** In der Hauptliste steht nur, was
// sofort abholbar ist; der Abruf der Spur wartet, bis sie aus der
// Datei gezogen ist. Ohne diesen Schritt hinge die Prüfung daran,
// wie schnell der Rechner gerade ist.
(await client.GetAsync(
$"/api/v1/files/{datei.Id}/subtitles/{spur.Index}.vtt")).EnsureSuccessStatusCode();
var liste = await client.GetStringAsync(strom.MasterUrl!);
Assert.Multiple(() =>