Aus "DEU EAC3 6.0" wird "Deutsch · Dolby Digital Plus · 5.1"
Die Werte gingen roh von ffprobe in die Anzeige. Jedes Stück war richtig und keines verständlich: EAC3 heisst Dolby Digital Plus, MOV_TEXT heisst schlicht Text, und sechs Kanäle sind 5.1 — "6.0" ist eine Schreibweise, die es nicht gibt. Die Auflösung stand als gemessene Höhe da, also "1040p" für ein beschnittenes Breitbild, was aussieht wie ein Fehler. Benennung macht daraus Sätze, und zwar im Kern: die Apps brauchen dieselben, und zweimal formuliert heisst dieselbe Tonspur am Fernseher anders als im Browser. CultureInfo taugte dafür nicht, zweimal gemessen: sein NativeName liefert den Namen in der Sprache selbst — "English", "français" —, und für ein erfundenes Kürzel wie "xyz" erfindet es stillschweigend eine Kultur, statt zu scheitern. Also eine eigene Liste, über das zwei- und das dreibuchstabige Kürzel, weil beide in Mediendateien vorkommen und ISO 639-2 für manche Sprachen zwei kennt. Unbekanntes bleibt stehen statt zu "Unbekannt" zu werden — die rohe Angabe ist immer noch eine Auskunft. Und "und" verschwindet ganz: ffmpeg schreibt das für unbekannt, und als Sprache angezeigt sieht es aus wie eine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
921533050b
commit
0cd88acf70
@@ -13,6 +13,8 @@ export type Spur = {
|
||||
codec: string | null; language: string | null; title: string | null;
|
||||
isDefault: boolean; isForced: boolean;
|
||||
channels: number | null; width: number | null; height: number | null;
|
||||
/** Die fertige Zeile vom Server, etwa Deutsch · Dolby Digital Plus · 5.1. */
|
||||
display: string | null;
|
||||
};
|
||||
export type Datei = {
|
||||
id: string; fileName: string; sizeBytes: number;
|
||||
|
||||
@@ -273,11 +273,16 @@ export function detailseite(art: Art, id: string, zurueck: () => void): HTMLElem
|
||||
return liste;
|
||||
}
|
||||
|
||||
/** Der Name einer Spur — vom Server, nicht hier zusammengesetzt.
|
||||
*
|
||||
* **Vorher stand hier „DEU EAC3 6.0".** Jedes Stück davon war richtig und
|
||||
* keines verständlich: EAC3 heisst Dolby Digital Plus, und sechs Kanäle
|
||||
* sind 5.1, nicht 6.0. Der Server formuliert das jetzt, weil die Apps
|
||||
* denselben Satz brauchen — zweimal formuliert driftet er auseinander. */
|
||||
function spurname(s: Datei['streams'][number]): string {
|
||||
const teile = [s.title, s.language?.toUpperCase(), s.codec?.toUpperCase()]
|
||||
.filter(Boolean);
|
||||
const kanaele = s.channels ? `${s.channels}.0` : null;
|
||||
return [teile.join(' '), kanaele].filter(Boolean).join(' ');
|
||||
if (s.display) return s.display;
|
||||
// Rückfall für einen älteren Server, der das Feld noch nicht schickt.
|
||||
return [s.language?.toUpperCase(), s.codec?.toUpperCase()].filter(Boolean).join(' ');
|
||||
}
|
||||
|
||||
/* ---------- Besetzung ---------- */
|
||||
|
||||
Reference in New Issue
Block a user