fix(v5): 5.6.1 — Untertitel-Spuren wieder erkannt: Stream-Typ per Code (6203), nicht per lokalisiertem Wort
Commander-Fund 03.09.2026 (Digimon Adventure: Last Evolution Kizuna): im
Auswahl-Dialog fehlten die UNTERTITEL-Chips. Gemessen mit makemkvcon64 -r
info auf diesem PC: MakeMKV schreibt den Stream-Typ in seiner Anzeigesprache
("Untertitel"), der Parser prüfte auf "Subtitles" (Messung vom 26.07. an
einem englischen MakeMKV). "Audio" heißt zufällig gleich, deshalb fiel nur
der Untertitel-Weg aus. Jetzt entscheidet der Typ-Code im vierten Feld
(6201 Video, 6202 Audio, 6203 Untertitel); das Wort bleibt Notnagel.
Test rip-parser-561 mit den gemessenen Zeilen (deu×2/jpn×2 Ton, deu×3
Untertitel, darunter "PGS German (nur erzwungene)"); die volle Messung
liegt unter beweise/messungen/2026-09-03-makemkvcon-info-kizuna.txt.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 340 KiB After Width: | Height: | Size: 341 KiB |
|
Before Width: | Height: | Size: 711 KiB After Width: | Height: | Size: 711 KiB |
|
Before Width: | Height: | Size: 712 KiB After Width: | Height: | Size: 712 KiB |
|
Before Width: | Height: | Size: 749 KiB After Width: | Height: | Size: 750 KiB |
|
Before Width: | Height: | Size: 341 KiB After Width: | Height: | Size: 342 KiB |
|
Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 465 KiB |
|
Before Width: | Height: | Size: 458 KiB After Width: | Height: | Size: 456 KiB |
|
Before Width: | Height: | Size: 447 KiB After Width: | Height: | Size: 438 KiB |
@@ -0,0 +1,375 @@
|
||||
MSG:1005,0,1,"MakeMKV v1.18.4 win(x64-release) gestartet","%1 gestartet","MakeMKV v1.18.4 win(x64-release)"
|
||||
DRV:0,2,999,12,"BD-RE HL-DT-ST BD-RE BU40N 1.03 MOBPBDF1840","DA_LAST EVOLUTION KIZUNA","G:"
|
||||
DRV:1,256,999,0,"","",""
|
||||
DRV:2,256,999,0,"","",""
|
||||
DRV:3,256,999,0,"","",""
|
||||
DRV:4,256,999,0,"","",""
|
||||
DRV:5,256,999,0,"","",""
|
||||
DRV:6,256,999,0,"","",""
|
||||
DRV:7,256,999,0,"","",""
|
||||
DRV:8,256,999,0,"","",""
|
||||
DRV:9,256,999,0,"","",""
|
||||
DRV:10,256,999,0,"","",""
|
||||
DRV:11,256,999,0,"","",""
|
||||
DRV:12,256,999,0,"","",""
|
||||
DRV:13,256,999,0,"","",""
|
||||
DRV:14,256,999,0,"","",""
|
||||
DRV:15,256,999,0,"","",""
|
||||
MSG:1011,0,1,"Using LibreDrive mode (v06.3 id=866A98CB9C4E)","%1","Using LibreDrive mode (v06.3 id=866A98CB9C4E)"
|
||||
MSG:3007,0,0,"Direkter Zugriffsmodus wird verwendet","Direkter Zugriffsmodus wird verwendet"
|
||||
MSG:5054,0,1,"Evaluierungsversion. Der Testzeitraum lief vor 10 Tagen ab.","Evaluierungsversion. Der Testzeitraum lief vor %1 Tagen ab.","10"
|
||||
MSG:5051,1028,0,"Der Testzeitraum ist abgelaufen. Erwerben Sie bitte einen Aktivierungsschlüssel, wenn Sie das Programm nützlich fanden. Sie können den vollen Funktionsumfang noch einige Tage nutzen.","Der Testzeitraum ist abgelaufen. Erwerben Sie bitte einen Aktivierungsschlüssel, wenn Sie das Programm nützlich fanden. Sie können den vollen Funktionsumfang noch einige Tage nutzen."
|
||||
MSG:5085,0,0,"Inhalte-Hashtabelle geladen, überprüfe Integrität der M2TS-Dateien.","Inhalte-Hashtabelle geladen, überprüfe Integrität der M2TS-Dateien."
|
||||
MSG:3307,16777216,2,"Datei 00011.mpls wurde als Titel 0 hinzugefügt ","Datei %1 wurde als Titel %2 hinzugefügt ","00011.mpls","0"
|
||||
MSG:3025,0,3,"Titel #00000.mpls hat eine Länge von 41 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00000.mpls","41","120"
|
||||
MSG:3307,16777216,2,"Datei 00003.mpls wurde als Titel 1 hinzugefügt ","Datei %1 wurde als Titel %2 hinzugefügt ","00003.mpls","1"
|
||||
MSG:3025,16777216,3,"Titel #00005.m2ts hat eine Länge von 93 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00005.m2ts","93","120"
|
||||
MSG:3025,16777216,3,"Titel #00004.m2ts hat eine Länge von 98 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00004.m2ts","98","120"
|
||||
MSG:3025,16777216,3,"Titel #00015.m2ts hat eine Länge von 10 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00015.m2ts","10","120"
|
||||
MSG:3025,16777216,3,"Titel #00003.m2ts hat eine Länge von 7 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00003.m2ts","7","120"
|
||||
MSG:3025,16777216,3,"Titel #00002.m2ts hat eine Länge von 18 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00002.m2ts","18","120"
|
||||
MSG:3025,16777216,3,"Titel #00001.m2ts hat eine Länge von 7 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00001.m2ts","7","120"
|
||||
MSG:3025,16777216,3,"Titel #00000.m2ts hat eine Länge von 8 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00000.m2ts","8","120"
|
||||
MSG:3025,16777216,3,"Titel #00014.m2ts hat eine Länge von 107 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00014.m2ts","107","120"
|
||||
MSG:3025,16777216,3,"Titel #00013.m2ts hat eine Länge von 63 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00013.m2ts","63","120"
|
||||
MSG:3025,16777216,3,"Titel #00012.m2ts hat eine Länge von 93 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00012.m2ts","93","120"
|
||||
MSG:3025,16777216,3,"Titel #00011.m2ts hat eine Länge von 78 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00011.m2ts","78","120"
|
||||
MSG:3025,16777216,3,"Titel #00010.m2ts hat eine Länge von 89 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00010.m2ts","89","120"
|
||||
MSG:3025,16777216,3,"Titel #00009.m2ts hat eine Länge von 98 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00009.m2ts","98","120"
|
||||
MSG:3025,0,3,"Titel #00008.m2ts hat eine Länge von 95 Sekunden und wurde übersprungen, da die minimale Titellänge 120 Sekunden beträgt","Titel #%1 hat eine Länge von %2 Sekunden und wurde übersprungen, da die minimale Titellänge %3 Sekunden beträgt","00008.m2ts","95","120"
|
||||
MSG:5011,0,0,"Die Aufgabe wurde erfolgreich abgeschlossen","Die Aufgabe wurde erfolgreich abgeschlossen"
|
||||
TCOUNT:2
|
||||
CINFO:1,6209,"Blu-ray-Disk"
|
||||
CINFO:2,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
CINFO:28,0,"eng"
|
||||
CINFO:29,0,"English"
|
||||
CINFO:30,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
CINFO:31,6119,"<b>Quelleninformationen</b><br>"
|
||||
CINFO:32,0,"DA_LAST EVOLUTION KIZUNA"
|
||||
CINFO:33,0,"0"
|
||||
TINFO:0,2,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
TINFO:0,8,0,"6"
|
||||
TINFO:0,9,0,"0:08:51"
|
||||
TINFO:0,10,0,"1.1 GB"
|
||||
TINFO:0,11,0,"1219086336"
|
||||
TINFO:0,16,0,"00011.mpls"
|
||||
TINFO:0,25,0,"6"
|
||||
TINFO:0,26,0,"9,10,11,12,13,14"
|
||||
TINFO:0,27,0,"Digimon Adventure- Last Evolution Kizuna_t00.mkv"
|
||||
TINFO:0,28,0,"eng"
|
||||
TINFO:0,29,0,"English"
|
||||
TINFO:0,30,0,"Digimon Adventure: Last Evolution Kizuna - 6 Kapitel , 1.1 GB"
|
||||
TINFO:0,31,6120,"<b>Titelinformationen</b><br>"
|
||||
TINFO:0,33,0,"0"
|
||||
SINFO:0,0,1,6201,"Video"
|
||||
SINFO:0,0,5,0,"V_MPEG4/ISO/AVC"
|
||||
SINFO:0,0,6,0,"Mpeg4"
|
||||
SINFO:0,0,7,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:0,0,19,0,"1920x1080"
|
||||
SINFO:0,0,20,0,"16:9"
|
||||
SINFO:0,0,21,0,"23.976 (24000/1001)"
|
||||
SINFO:0,0,22,0,"0"
|
||||
SINFO:0,0,28,0,"eng"
|
||||
SINFO:0,0,29,0,"English"
|
||||
SINFO:0,0,30,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:0,0,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,0,33,0,"0"
|
||||
SINFO:0,0,38,0,""
|
||||
SINFO:0,0,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,1,1,6202,"Audio"
|
||||
SINFO:0,1,2,5091,"Stereo"
|
||||
SINFO:0,1,3,0,"deu"
|
||||
SINFO:0,1,4,0,"German"
|
||||
SINFO:0,1,5,0,"A_DTS"
|
||||
SINFO:0,1,6,0,"DTS-HD MA"
|
||||
SINFO:0,1,7,0,"DTS-HD Master Audio"
|
||||
SINFO:0,1,14,0,"2"
|
||||
SINFO:0,1,17,0,"48000"
|
||||
SINFO:0,1,18,0,"16"
|
||||
SINFO:0,1,22,0,"1024"
|
||||
SINFO:0,1,28,0,"eng"
|
||||
SINFO:0,1,29,0,"English"
|
||||
SINFO:0,1,30,0,"DTS-HD MA Stereo German"
|
||||
SINFO:0,1,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,1,33,0,"100"
|
||||
SINFO:0,1,38,0,""
|
||||
SINFO:0,1,40,0,"stereo"
|
||||
SINFO:0,1,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,2,1,6202,"Audio"
|
||||
SINFO:0,2,2,5091,"Stereo"
|
||||
SINFO:0,2,3,0,"deu"
|
||||
SINFO:0,2,4,0,"German"
|
||||
SINFO:0,2,5,0,"A_DTS"
|
||||
SINFO:0,2,6,0,"DTS"
|
||||
SINFO:0,2,7,0,"DTS"
|
||||
SINFO:0,2,13,0,"768 Kb/s"
|
||||
SINFO:0,2,14,0,"2"
|
||||
SINFO:0,2,17,0,"48000"
|
||||
SINFO:0,2,22,0,"2304"
|
||||
SINFO:0,2,28,0,"eng"
|
||||
SINFO:0,2,29,0,"English"
|
||||
SINFO:0,2,30,0,"DTS Stereo German"
|
||||
SINFO:0,2,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,2,33,0,"100"
|
||||
SINFO:0,2,38,0,"d"
|
||||
SINFO:0,2,39,0,"Default"
|
||||
SINFO:0,2,40,0,"stereo"
|
||||
SINFO:0,2,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,3,1,6202,"Audio"
|
||||
SINFO:0,3,2,5091,"Stereo"
|
||||
SINFO:0,3,3,0,"deu"
|
||||
SINFO:0,3,4,0,"German"
|
||||
SINFO:0,3,5,0,"A_DTS"
|
||||
SINFO:0,3,6,0,"DTS-HD MA"
|
||||
SINFO:0,3,7,0,"DTS-HD Master Audio"
|
||||
SINFO:0,3,14,0,"2"
|
||||
SINFO:0,3,17,0,"48000"
|
||||
SINFO:0,3,18,0,"16"
|
||||
SINFO:0,3,22,0,"1024"
|
||||
SINFO:0,3,28,0,"eng"
|
||||
SINFO:0,3,29,0,"English"
|
||||
SINFO:0,3,30,0,"DTS-HD MA Stereo German"
|
||||
SINFO:0,3,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,3,33,0,"100"
|
||||
SINFO:0,3,38,0,""
|
||||
SINFO:0,3,40,0,"stereo"
|
||||
SINFO:0,3,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,4,1,6202,"Audio"
|
||||
SINFO:0,4,2,5091,"Stereo"
|
||||
SINFO:0,4,3,0,"deu"
|
||||
SINFO:0,4,4,0,"German"
|
||||
SINFO:0,4,5,0,"A_DTS"
|
||||
SINFO:0,4,6,0,"DTS"
|
||||
SINFO:0,4,7,0,"DTS"
|
||||
SINFO:0,4,13,0,"768 Kb/s"
|
||||
SINFO:0,4,14,0,"2"
|
||||
SINFO:0,4,17,0,"48000"
|
||||
SINFO:0,4,22,0,"2304"
|
||||
SINFO:0,4,28,0,"eng"
|
||||
SINFO:0,4,29,0,"English"
|
||||
SINFO:0,4,30,0,"DTS Stereo German"
|
||||
SINFO:0,4,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,4,33,0,"100"
|
||||
SINFO:0,4,38,0,""
|
||||
SINFO:0,4,40,0,"stereo"
|
||||
SINFO:0,4,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,5,1,6203,"Untertitel"
|
||||
SINFO:0,5,3,0,"deu"
|
||||
SINFO:0,5,4,0,"German"
|
||||
SINFO:0,5,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,5,6,0,"PGS"
|
||||
SINFO:0,5,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,5,22,0,"0"
|
||||
SINFO:0,5,28,0,"eng"
|
||||
SINFO:0,5,29,0,"English"
|
||||
SINFO:0,5,30,0,"PGS German"
|
||||
SINFO:0,5,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,5,33,0,"100"
|
||||
SINFO:0,5,38,0,""
|
||||
SINFO:0,5,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,6,1,6203,"Untertitel"
|
||||
SINFO:0,6,3,0,"deu"
|
||||
SINFO:0,6,4,0,"German"
|
||||
SINFO:0,6,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,6,6,0,"PGS"
|
||||
SINFO:0,6,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,6,22,0,"6144"
|
||||
SINFO:0,6,28,0,"eng"
|
||||
SINFO:0,6,29,0,"English"
|
||||
SINFO:0,6,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:0,6,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,6,33,0,"100"
|
||||
SINFO:0,6,38,0,"d"
|
||||
SINFO:0,6,39,0,"Default"
|
||||
SINFO:0,6,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,7,1,6203,"Untertitel"
|
||||
SINFO:0,7,3,0,"deu"
|
||||
SINFO:0,7,4,0,"German"
|
||||
SINFO:0,7,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,7,6,0,"PGS"
|
||||
SINFO:0,7,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,7,22,0,"0"
|
||||
SINFO:0,7,28,0,"eng"
|
||||
SINFO:0,7,29,0,"English"
|
||||
SINFO:0,7,30,0,"PGS German"
|
||||
SINFO:0,7,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,7,33,0,"100"
|
||||
SINFO:0,7,38,0,""
|
||||
SINFO:0,7,42,5088,"( Lossless conversion )"
|
||||
SINFO:0,8,1,6203,"Untertitel"
|
||||
SINFO:0,8,3,0,"deu"
|
||||
SINFO:0,8,4,0,"German"
|
||||
SINFO:0,8,5,0,"S_HDMV/PGS"
|
||||
SINFO:0,8,6,0,"PGS"
|
||||
SINFO:0,8,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:0,8,22,0,"6144"
|
||||
SINFO:0,8,28,0,"eng"
|
||||
SINFO:0,8,29,0,"English"
|
||||
SINFO:0,8,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:0,8,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:0,8,33,0,"100"
|
||||
SINFO:0,8,38,0,""
|
||||
SINFO:0,8,42,5088,"( Lossless conversion )"
|
||||
TINFO:1,2,0,"Digimon Adventure: Last Evolution Kizuna"
|
||||
TINFO:1,8,0,"13"
|
||||
TINFO:1,9,0,"1:34:45"
|
||||
TINFO:1,10,0,"16.4 GB"
|
||||
TINFO:1,11,0,"17668571136"
|
||||
TINFO:1,16,0,"00003.mpls"
|
||||
TINFO:1,25,0,"1"
|
||||
TINFO:1,26,0,"7"
|
||||
TINFO:1,27,0,"Digimon Adventure- Last Evolution Kizuna_t01.mkv"
|
||||
TINFO:1,28,0,"eng"
|
||||
TINFO:1,29,0,"English"
|
||||
TINFO:1,30,0,"Digimon Adventure: Last Evolution Kizuna - 13 Kapitel , 16.4 GB"
|
||||
TINFO:1,31,6120,"<b>Titelinformationen</b><br>"
|
||||
TINFO:1,33,0,"0"
|
||||
SINFO:1,0,1,6201,"Video"
|
||||
SINFO:1,0,5,0,"V_MPEG4/ISO/AVC"
|
||||
SINFO:1,0,6,0,"Mpeg4"
|
||||
SINFO:1,0,7,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:1,0,19,0,"1920x1080"
|
||||
SINFO:1,0,20,0,"16:9"
|
||||
SINFO:1,0,21,0,"23.976 (24000/1001)"
|
||||
SINFO:1,0,22,0,"0"
|
||||
SINFO:1,0,28,0,"eng"
|
||||
SINFO:1,0,29,0,"English"
|
||||
SINFO:1,0,30,0,"Mpeg4 AVC High@L4.1"
|
||||
SINFO:1,0,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,0,33,0,"0"
|
||||
SINFO:1,0,38,0,""
|
||||
SINFO:1,0,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,1,1,6202,"Audio"
|
||||
SINFO:1,1,2,0,"Surround 5.1"
|
||||
SINFO:1,1,3,0,"deu"
|
||||
SINFO:1,1,4,0,"German"
|
||||
SINFO:1,1,5,0,"A_DTS"
|
||||
SINFO:1,1,6,0,"DTS-HD MA"
|
||||
SINFO:1,1,7,0,"DTS-HD Master Audio"
|
||||
SINFO:1,1,14,0,"6"
|
||||
SINFO:1,1,17,0,"48000"
|
||||
SINFO:1,1,18,0,"16"
|
||||
SINFO:1,1,22,0,"1024"
|
||||
SINFO:1,1,28,0,"eng"
|
||||
SINFO:1,1,29,0,"English"
|
||||
SINFO:1,1,30,0,"DTS-HD MA Surround 5.1 German"
|
||||
SINFO:1,1,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,1,33,0,"100"
|
||||
SINFO:1,1,38,0,""
|
||||
SINFO:1,1,40,0,"5.1(side)"
|
||||
SINFO:1,1,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,2,1,6202,"Audio"
|
||||
SINFO:1,2,2,0,"Surround 5.1"
|
||||
SINFO:1,2,3,0,"deu"
|
||||
SINFO:1,2,4,0,"German"
|
||||
SINFO:1,2,5,0,"A_DTS"
|
||||
SINFO:1,2,6,0,"DTS"
|
||||
SINFO:1,2,7,0,"DTS"
|
||||
SINFO:1,2,13,0,"1.5 Mb/s"
|
||||
SINFO:1,2,14,0,"6"
|
||||
SINFO:1,2,17,0,"48000"
|
||||
SINFO:1,2,22,0,"2304"
|
||||
SINFO:1,2,28,0,"eng"
|
||||
SINFO:1,2,29,0,"English"
|
||||
SINFO:1,2,30,0,"DTS Surround 5.1 German"
|
||||
SINFO:1,2,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,2,33,0,"100"
|
||||
SINFO:1,2,38,0,"d"
|
||||
SINFO:1,2,39,0,"Default"
|
||||
SINFO:1,2,40,0,"5.1(side)"
|
||||
SINFO:1,2,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,3,1,6202,"Audio"
|
||||
SINFO:1,3,2,5091,"Stereo"
|
||||
SINFO:1,3,3,0,"jpn"
|
||||
SINFO:1,3,4,0,"Japanese"
|
||||
SINFO:1,3,5,0,"A_DTS"
|
||||
SINFO:1,3,6,0,"DTS-HD MA"
|
||||
SINFO:1,3,7,0,"DTS-HD Master Audio"
|
||||
SINFO:1,3,14,0,"2"
|
||||
SINFO:1,3,17,0,"48000"
|
||||
SINFO:1,3,18,0,"16"
|
||||
SINFO:1,3,22,0,"1024"
|
||||
SINFO:1,3,28,0,"eng"
|
||||
SINFO:1,3,29,0,"English"
|
||||
SINFO:1,3,30,0,"DTS-HD MA Stereo Japanese"
|
||||
SINFO:1,3,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,3,33,0,"100"
|
||||
SINFO:1,3,38,0,""
|
||||
SINFO:1,3,40,0,"stereo"
|
||||
SINFO:1,3,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,4,1,6202,"Audio"
|
||||
SINFO:1,4,2,5091,"Stereo"
|
||||
SINFO:1,4,3,0,"jpn"
|
||||
SINFO:1,4,4,0,"Japanese"
|
||||
SINFO:1,4,5,0,"A_DTS"
|
||||
SINFO:1,4,6,0,"DTS"
|
||||
SINFO:1,4,7,0,"DTS"
|
||||
SINFO:1,4,13,0,"768 Kb/s"
|
||||
SINFO:1,4,14,0,"2"
|
||||
SINFO:1,4,17,0,"48000"
|
||||
SINFO:1,4,22,0,"2304"
|
||||
SINFO:1,4,28,0,"eng"
|
||||
SINFO:1,4,29,0,"English"
|
||||
SINFO:1,4,30,0,"DTS Stereo Japanese"
|
||||
SINFO:1,4,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,4,33,0,"100"
|
||||
SINFO:1,4,38,0,""
|
||||
SINFO:1,4,40,0,"stereo"
|
||||
SINFO:1,4,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,5,1,6203,"Untertitel"
|
||||
SINFO:1,5,3,0,"deu"
|
||||
SINFO:1,5,4,0,"German"
|
||||
SINFO:1,5,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,5,6,0,"PGS"
|
||||
SINFO:1,5,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,5,22,0,"0"
|
||||
SINFO:1,5,28,0,"eng"
|
||||
SINFO:1,5,29,0,"English"
|
||||
SINFO:1,5,30,0,"PGS German"
|
||||
SINFO:1,5,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,5,33,0,"100"
|
||||
SINFO:1,5,38,0,""
|
||||
SINFO:1,5,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,6,1,6203,"Untertitel"
|
||||
SINFO:1,6,3,0,"deu"
|
||||
SINFO:1,6,4,0,"German"
|
||||
SINFO:1,6,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,6,6,0,"PGS"
|
||||
SINFO:1,6,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,6,22,0,"6144"
|
||||
SINFO:1,6,28,0,"eng"
|
||||
SINFO:1,6,29,0,"English"
|
||||
SINFO:1,6,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:1,6,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,6,33,0,"100"
|
||||
SINFO:1,6,38,0,"d"
|
||||
SINFO:1,6,39,0,"Default"
|
||||
SINFO:1,6,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,7,1,6203,"Untertitel"
|
||||
SINFO:1,7,3,0,"deu"
|
||||
SINFO:1,7,4,0,"German"
|
||||
SINFO:1,7,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,7,6,0,"PGS"
|
||||
SINFO:1,7,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,7,22,0,"0"
|
||||
SINFO:1,7,28,0,"eng"
|
||||
SINFO:1,7,29,0,"English"
|
||||
SINFO:1,7,30,0,"PGS German"
|
||||
SINFO:1,7,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,7,33,0,"100"
|
||||
SINFO:1,7,38,0,""
|
||||
SINFO:1,7,42,5088,"( Lossless conversion )"
|
||||
SINFO:1,8,1,6203,"Untertitel"
|
||||
SINFO:1,8,3,0,"deu"
|
||||
SINFO:1,8,4,0,"German"
|
||||
SINFO:1,8,5,0,"S_HDMV/PGS"
|
||||
SINFO:1,8,6,0,"PGS"
|
||||
SINFO:1,8,7,0,"HDMV PGS Subtitles"
|
||||
SINFO:1,8,22,0,"6144"
|
||||
SINFO:1,8,28,0,"eng"
|
||||
SINFO:1,8,29,0,"English"
|
||||
SINFO:1,8,30,0,"PGS German (nur erzwungene)"
|
||||
SINFO:1,8,31,6121,"<b>Spurinformationen</b><br>"
|
||||
SINFO:1,8,33,0,"100"
|
||||
SINFO:1,8,38,0,""
|
||||
SINFO:1,8,42,5088,"( Lossless conversion )"
|
||||
@@ -1,3 +1,15 @@
|
||||
Version 5.6.1
|
||||
|
||||
Untertitel-Spuren werden wieder erkannt.
|
||||
MakeMKV schreibt den Typ eines Streams in seiner Anzeigesprache - auf einem
|
||||
deutsch eingestellten MakeMKV "Untertitel" statt "Subtitles". Rippy prueft
|
||||
seit 5.4.0 auf das englische Wort und fand deshalb keine Untertitel mehr
|
||||
(Ton heisst in beiden Sprachen "Audio", darum fiel es dort nicht auf).
|
||||
Jetzt zaehlt der Typ-Code (6202 Ton, 6203 Untertitel), der ist
|
||||
sprachunabhaengig. Gemessen an der Blu-ray "Digimon Adventure: Last
|
||||
Evolution Kizuna": drei deutsche PGS-Spuren, darunter eine nur fuer
|
||||
erzwungene Untertitel.
|
||||
|
||||
Version 5.6.0
|
||||
|
||||
Mehrere Filme auf einer Disc.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "rippy",
|
||||
"version": "5.6.0",
|
||||
"version": "5.6.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "rippy",
|
||||
"version": "5.6.0",
|
||||
"version": "5.6.1",
|
||||
"license": "UNLICENSED",
|
||||
"dependencies": {
|
||||
"electron-updater": "^6.8.9",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "rippy",
|
||||
"productName": "Rippy",
|
||||
"version": "5.6.0",
|
||||
"version": "5.6.1",
|
||||
"description": "Rippy v5 — Disc-Ripping als eigenständiges Windows-Programm (KONZEPT-WINDOWS.md)",
|
||||
"main": "out/haupt/index.js",
|
||||
"author": "KrBrZ",
|
||||
|
||||
@@ -114,9 +114,21 @@ export function parseTitelInfo(ausgabe: string): TitelInfo[] {
|
||||
// ⚠️ Die Sprache steht in 3/4 — NICHT in 28/29: Die tragen auf JEDEM
|
||||
// Stream „eng"/„English" (MakeMKVs Anzeigesprache). Wer 28 nimmt, hält
|
||||
// jede Disc für englisch.
|
||||
// ⚠️ 5.6.1 (Commander-Fund 03.09.2026, Digimon Last Evolution Kizuna): Auch
|
||||
// der TEXT von Attribut 1 ist MakeMKVs Anzeigesprache — deutsch eingestellt
|
||||
// schreibt es `SINFO:1,5,1,6203,"Untertitel"`, nicht „Subtitles". „Audio"
|
||||
// heißt zufällig in beiden Sprachen gleich, deshalb fehlten NUR die
|
||||
// Untertitel. Verlässlich ist der CODE im vierten Feld: 6201 Video,
|
||||
// 6202 Audio, 6203 Untertitel (gemessen an makemkvcon64 auf diesem PC).
|
||||
export const STREAM_CODE_VIDEO = 6201
|
||||
export const STREAM_CODE_AUDIO = 6202
|
||||
export const STREAM_CODE_UNTERTITEL = 6203
|
||||
|
||||
export interface StreamInfo {
|
||||
nr: number
|
||||
typ: string
|
||||
/** Typ-Code aus Attribut 1 (6201/6202/6203), 0 wenn keiner dastand. */
|
||||
typCode: number
|
||||
lang: string
|
||||
sprache: string
|
||||
codec: string
|
||||
@@ -129,7 +141,7 @@ export interface TitelStreams {
|
||||
untertitel: StreamInfo[]
|
||||
}
|
||||
|
||||
const SINFO_ZEILE = /^SINFO:(\d+),(\d+),(\d+),\d+,"(.*)"\s*$/
|
||||
const SINFO_ZEILE = /^SINFO:(\d+),(\d+),(\d+),(\d+),"(.*)"\s*$/
|
||||
|
||||
export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
const titel = new Map<number, Map<number, StreamInfo>>()
|
||||
@@ -139,7 +151,8 @@ export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
const tNr = Number(treffer[1])
|
||||
const sNr = Number(treffer[2])
|
||||
const attr = Number(treffer[3])
|
||||
const wert = treffer[4]
|
||||
const code = Number(treffer[4])
|
||||
const wert = treffer[5]
|
||||
let streams = titel.get(tNr)
|
||||
if (streams === undefined) {
|
||||
streams = new Map()
|
||||
@@ -147,10 +160,13 @@ export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
}
|
||||
let eintrag = streams.get(sNr)
|
||||
if (eintrag === undefined) {
|
||||
eintrag = { nr: sNr, typ: '', lang: '', sprache: '', codec: '', kanaele: '', beschreibung: '' }
|
||||
eintrag = { nr: sNr, typ: '', typCode: 0, lang: '', sprache: '', codec: '', kanaele: '', beschreibung: '' }
|
||||
streams.set(sNr, eintrag)
|
||||
}
|
||||
if (attr === 1) eintrag.typ = wert
|
||||
if (attr === 1) {
|
||||
eintrag.typ = wert
|
||||
eintrag.typCode = code
|
||||
}
|
||||
else if (attr === 3) eintrag.lang = wert
|
||||
else if (attr === 4) eintrag.sprache = wert
|
||||
else if (attr === 6) eintrag.codec = wert
|
||||
@@ -164,9 +180,10 @@ export function parseStreamInfo(ausgabe: string): Map<number, TitelStreams> {
|
||||
const untertitel: StreamInfo[] = []
|
||||
for (const sNr of [...streams.keys()].sort((a, b) => a - b)) {
|
||||
const s = streams.get(sNr)!
|
||||
// MakeMKV schreibt „Subtitles" (englisch, Plural) — gemessen.
|
||||
if (s.typ === 'Audio') audio.push(s)
|
||||
else if (s.typ.startsWith('Subtitle')) untertitel.push(s)
|
||||
// Der Code entscheidet (5.6.1); das Wort nur als Notnagel für Ausgaben
|
||||
// ohne Code („Audio", „Subtitles", „Untertitel").
|
||||
if (s.typCode === STREAM_CODE_AUDIO || (s.typCode === 0 && s.typ === 'Audio')) audio.push(s)
|
||||
else if (s.typCode === STREAM_CODE_UNTERTITEL || (s.typCode === 0 && (s.typ.startsWith('Subtitle') || s.typ.startsWith('Untertitel')))) untertitel.push(s)
|
||||
}
|
||||
ergebnis.set(tNr, { audio, untertitel })
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
// 5.6.1 — Commander-Fund vom 03.09.2026: Bei der Blu-ray „Digimon Adventure:
|
||||
// Last Evolution Kizuna" fehlten im Auswahl-Dialog die Untertitel-Chips,
|
||||
// obwohl die Disc drei deutsche PGS-Spuren hat. Gemessen mit
|
||||
// makemkvcon64 -r info auf diesem PC: MakeMKV (deutsch eingestellt) schreibt
|
||||
// den Stream-Typ als „Untertitel", der Parser prüfte auf „Subtitles". Der
|
||||
// Typ-Code im vierten Feld (6203) ist sprachunabhängig.
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { STREAM_CODE_AUDIO, STREAM_CODE_UNTERTITEL, parseStreamInfo, sprachenFuerTitel } from '../src/kern/rip/parser'
|
||||
|
||||
// Wörtlich aus der Messung (gekürzt auf Typ, Sprache, Name, Beschreibung).
|
||||
const KIZUNA = [
|
||||
'SINFO:1,0,1,6201,"Video"',
|
||||
'SINFO:1,0,6,0,"Mpeg4"',
|
||||
'SINFO:1,1,1,6202,"Audio"',
|
||||
'SINFO:1,1,3,0,"deu"',
|
||||
'SINFO:1,1,4,0,"German"',
|
||||
'SINFO:1,1,30,0,"DTS-HD MA Surround 5.1 German"',
|
||||
'SINFO:1,2,1,6202,"Audio"',
|
||||
'SINFO:1,2,3,0,"deu"',
|
||||
'SINFO:1,2,4,0,"German"',
|
||||
'SINFO:1,3,1,6202,"Audio"',
|
||||
'SINFO:1,3,3,0,"jpn"',
|
||||
'SINFO:1,3,4,0,"Japanese"',
|
||||
'SINFO:1,4,1,6202,"Audio"',
|
||||
'SINFO:1,4,3,0,"jpn"',
|
||||
'SINFO:1,4,4,0,"Japanese"',
|
||||
'SINFO:1,5,1,6203,"Untertitel"',
|
||||
'SINFO:1,5,3,0,"deu"',
|
||||
'SINFO:1,5,4,0,"German"',
|
||||
'SINFO:1,5,30,0,"PGS German"',
|
||||
'SINFO:1,6,1,6203,"Untertitel"',
|
||||
'SINFO:1,6,3,0,"deu"',
|
||||
'SINFO:1,6,4,0,"German"',
|
||||
'SINFO:1,6,22,0,"6144"',
|
||||
'SINFO:1,6,30,0,"PGS German (nur erzwungene)"',
|
||||
'SINFO:1,7,1,6203,"Untertitel"',
|
||||
'SINFO:1,7,3,0,"deu"',
|
||||
'SINFO:1,7,4,0,"German"',
|
||||
].join('\n')
|
||||
|
||||
describe('parseStreamInfo — Stream-Typ per Code, nicht per Wort (5.6.1)', () => {
|
||||
it('deutsches MakeMKV schreibt „Untertitel": die drei PGS-Spuren werden erkannt', () => {
|
||||
const streams = parseStreamInfo(KIZUNA).get(1)!
|
||||
expect(streams.audio.map((s) => s.lang)).toEqual(['deu', 'deu', 'jpn', 'jpn'])
|
||||
expect(streams.untertitel.map((s) => s.lang)).toEqual(['deu', 'deu', 'deu'])
|
||||
expect(streams.untertitel[0].typCode).toBe(STREAM_CODE_UNTERTITEL)
|
||||
expect(streams.audio[0].typCode).toBe(STREAM_CODE_AUDIO)
|
||||
expect(streams.untertitel[1].beschreibung).toBe('PGS German (nur erzwungene)')
|
||||
})
|
||||
it('für den Dialog: deu×2 Ton, jpn×2 Ton, deu×3 Untertitel', () => {
|
||||
const sprachen = sprachenFuerTitel(parseStreamInfo(KIZUNA).get(1))
|
||||
expect(sprachen.audio).toEqual([
|
||||
{ lang: 'deu', sprache: 'German', spuren: 2 },
|
||||
{ lang: 'jpn', sprache: 'Japanese', spuren: 2 },
|
||||
])
|
||||
expect(sprachen.untertitel).toEqual([{ lang: 'deu', sprache: 'German', spuren: 3 }])
|
||||
})
|
||||
it('jede Anzeigesprache: der Code zählt — französisch, englisch, und ohne Code das Wort als Notnagel', () => {
|
||||
expect(parseStreamInfo('SINFO:0,1,1,6203,"Sous-titres"\nSINFO:0,1,3,0,"fra"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,6203,"Subtitles"\nSINFO:0,1,3,0,"eng"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,0,"Subtitles"\nSINFO:0,1,3,0,"eng"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,0,"Untertitel"\nSINFO:0,1,3,0,"deu"').get(0)!.untertitel).toHaveLength(1)
|
||||
expect(parseStreamInfo('SINFO:0,1,1,0,"Audio"\nSINFO:0,1,3,0,"deu"').get(0)!.audio).toHaveLength(1)
|
||||
})
|
||||
it('Video bleibt draußen', () => {
|
||||
const streams = parseStreamInfo('SINFO:0,0,1,6201,"Video"\nSINFO:0,0,3,0,"und"').get(0)!
|
||||
expect(streams.audio).toHaveLength(0)
|
||||
expect(streams.untertitel).toHaveLength(0)
|
||||
})
|
||||
})
|
||||