H.264-MKVs: PAR ändern im Batch?

  • Hallo!

    Habe leider sehr vielen MKV's mit H.264-Videospur während dem Encoding eine falsche PAR verliehen. Lässt sich das per Batch ändern?

    Ich gehe davon aus, dass MPEG4/H.264 nur eine PAR-Information tragen? Wie wird diese eigentlich gespeichert/hinterlegt?
    Sind das die bekannten 2 Integer-Werte als Bruch (Zähler / Nenner), oder wird es "ausdividiert" als Float hinterlegt (wenn ja, wie viele Stellen)?

    Und wird/werden der/die PAR-Wert(e) im Videostream (z.B. H.264) oder im Containter (MP4, MKV) gespeichert?

    Danke!

    Gruß Alex

  • Und wird/werden der/die PAR-Wert(e) im Videostream (z.B. H.264) oder im Containter (MP4, MKV) gespeichert?

    Ja. :ja:

    Rohe H.264-Elementarstreams könnte man mit h264info patchen (wenn sie dabei nicht völlig zerstört werden); ansonsten patcht man den Header des Containers beim Remultiplexen (MP4Box / mkvmerge) und hofft, dass der Player das Container-Flag bevorzugt.

    Alle drei (H.264, MP4, MKV) sollten Integer-Brüche unterstützen. Glaube ich. Hoffen wir, dass die Programme es gut dokumentieren.

  • Zitat

    Rohe H.264-Elementarstreams könnte man mit h264info patchen (wenn sie dabei nicht völlig zerstört werden)


    Aha! Das heißt, mit h264info könnte man die beiden Integer-Werte in H.264-Streams verändern/neu belegen, *falls* diese dabei nicht "völlig zerstört werden". Also sowas ähnliches wie ReStream für MPEG2? *Wenn* sie dabei aber völlig zerstört werden, kann kein König dieser Welt mehr die PAR direkt im Stream ändern, es sei den man würde ihn re-encodieren?
    Und h264info kann das auch wirklich *NUR* mit rohen Streams, und nicht aus einer MKV heraus?!?

    Das heißt also:
    MKV demuxen, inkl. aller Tonspuren (manchmal sind es 3!) das H.264 "durchorgeln", dann wieder zum MKV muxen (Sprachen der Tonspuren neu definieren), PAR im Container neu setzen...

    Neeeeeeeee !!! :zz: :rolleyes:

    Zitat

    ansonsten patcht man den Header des Containers beim Remultiplexen (MP4Box / mkvmerge) und hofft, dass der Player das Container-Flag bevorzugt


    Okay und wo wird die PAR "üblicherweise" als erstes abgefragt? Ich hatte mal die PAR einer *.mp4 mit YAMB (GUI für MP4Box) korrigiert, also "nur" im Container. Da war es offensichtlich, und sowohl ffdshow, VLC, als auch der MX-Player auf Android machten es korrekt! (Soviel zur Statistik)
    ...und wenn ich den H.264 dann wieder "demuxen" würde, hätte er wieder die ursprüngliche (falsche) PAR?

    In meinem aktuellen Fall mit MKVs geht es um konvertierte Film-DVDs, denen ich allen eine ITU-16:9-PAR (16:11) gegeben habe, obwohl Generic-16:9-PAR (64:45) korrekt wäre.
    Wenn ich das jetzt nur im "Header" des Containers ändere, dann hätte ich *ausgerechnet* in diesem Spezialfall "beide zur Auswahl" - auch nicht gut...:hm:

    Zitat

    Alle drei (H.264, MP4, MKV) sollten Integer-Brüche unterstützen. Glaube ich.


    Okay. Also sind die zwei Integer-Werte die "gängigste" Art der Speicherung - bei Streams und Containern. Was gibt's sonst noch? DivX/Xvid...da ist es auch so angegeben...
    An sonsten noch das "berühmte" MPEG2 (da sind wir ja gerade alles am auseinandernehmen ;)), und DV mit seinen einfachen 4:3-/16:9-Flags...
    Alle älteren Codecs haben ja gar keine PAR-/DAR-Information...

    Zitat

    Hoffen wir, dass die Programme es gut dokumentieren.


    Äh...ja...
    Hier nochmal zu meinem "geliebten" XMedia Recode:

    Hier kann man nur eine DAR (Seitenverhältnis) angeben, das muss ich immer erst händisch berechnen, weil das automatisch oft nicht richtig klappt...
    Also:
    Finale SAR(H/V) * [ITU- oder Generic-PAR] * [1,333... 16:9-Faktor, falls 16:9] = DAR
    Bei Square-Material (z.B. HD, BlueRay) natürlich DAR = SAR(H/V)

    ...und intern wird diese DAR dann wieder in eine PAR "rückgerechnet", um sie im Codec abzulegen. :nein:
    Aber was, wenn die Dezimalzahl der Rückrechnung, die dann wiederum in einen Bruch umgewandelt wird, nicht exakt "aufgeht"?
    Wird dann um jeden Preis ein Ganzzahl-Bruch gesucht, und da steht dann am Ende "12567 / 11137" oder so ähnlich als PAR im Codec?
    Ich kanns nicht rausfinden was am Ende als PAR-Werte hinterlegt wird, denn MediaInfo wandelt das ganze WIEDER in ein Seitenverhältnis (DAR, dezimal) zurück...:nein:

    Au Backe...!

  • Bei MPEG-1-Video und MPEG-2-Video sind es Bitflags, die ein paar diskrete AR aus einer Tabelle in den jeweiligen Specs definieren. Freie Wahl hat man bei denen nicht. Das wird wohl erst ab MPEG-4 bei den MPEG-Video-Formaten möglich.

    Falsche Stream-Flags "übertrumpfen" kann man aber wohl zum Teil auch schon auf DVD Video in den IFO-Dateien. Aber das nur am Rande.

  • Zitat

    Das heißt also:
    MKV demuxen, inkl. aller Tonspuren (manchmal sind es 3!) das H.264 "durchorgeln", dann wieder zum MKV muxen (Sprachen der Tonspuren neu definieren), PAR im Container neu setzen...

    ev.gibts eine neuere Version als die im Screen Gezeigte
    Quelle lag im Beispiel als MKV vor...Demuxen und "Stream" auswählen.
    [mp4 im Avi Kontainer hat man ja nie gemacht und oder so abgespeichert]

    Magazin-4_2014-12-16_10-42-50.png

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Zitat

    Sollte es nicht, wenn man sich die vollen Details anzeigen lässt.


    Naja, MediaInfo schiebt da auch das totale Chaos! Im "erweiterten Modus" tauchen da alle Werte doppelt und dreifach auf, und unterscheiden sich leicht.
    Teilweise wird's als Bruch, teilweise dezimal angezeigt. Außerdem weiß ich nicht, woher die Abweichungen kommen, und was der Unterschied zwischen "Bildseitenverhältnis" und "Ursprüngliches Bildseitenverhältnis" sein soll? :rolleyes_:

    Hier 2 Beispiele:

    A)
    Eigenes H.264-Encoding (MKV) mit XMedia Recode von der "Harry Potter 1"-DVD. Gecroppt habe ich auf 720x424. Danach habe ich (wohl fälschlicher Weise) ITU-PAR angenommen (gerundet auf 1,094). Da man in XMedia Recode das SEITENverhältnis angeben muss, habe ich das immer manuell ausgerechnet, weil's automatisch immer schief geht:
    In dem Fall: DAR= 720 / 424 [SAR] * 1,094 [ITU-PAR] * 1,333... [16:9-Faktor]

    Das zeigt MediaInfo nun an:
    [Blockierte Grafik: http://fs1.directupload.net/images/141217/7ankmm65.png]


    B)
    Ein MP4-H.264-Encoding "aus anderer Quelle" :D:
    [Blockierte Grafik: http://fs2.directupload.net/images/141217/wnubjzbo.png]


    Was sollen die ganzen Werte, und woher kommen die?

    ==================

    Zitat

    Bei MPEG-1-Video und MPEG-2-Video sind es Bitflags, die ein paar diskrete AR aus einer Tabelle in den jeweiligen Specs definieren. Freie Wahl hat man bei denen nicht. Das wird wohl erst ab MPEG-4 bei den MPEG-Video-Formaten möglich.


    Das wissen wir ja nun Gott sei Dank alle EINDEUTIG...

    Zitat

    Falsche Stream-Flags "übertrumpfen" kann man aber wohl zum Teil auch schon auf DVD Video in den IFO-Dateien. Aber das nur am Rande.


    Auch in so einem Fall müsste, wenn man den "rohen" MPEG2-Stream daraus entpackt (demuxed) und abspielt, wieder das ursprüngliche Flag des Streams "zum Tragen kommen", wenn ich das richtig verstehe?

    Zitat


    Na da nehme ich dann doch lieber "h264info" um die Werte zu ändern, weil man es ja anscheinend sowieso erst wieder "entpacken" muss...schade dass das nicht direkt aus den Container heraus (MKV, MP4) geht...

    Wie gesagt hatte ich ja mal eine falsche H.264-PAR in einer MP4-Datei mit YAMB im MP4-Header "übertrumpft" (läuft zumindest in ffshow, VLC und MX-Player/Android korrekt). Mit was kann ich die PAR im MKV-Header anpassen/neu vergeben?

    In beiden Fällen (also ohne den direkten H.264-Stream zu patchen) wäre die PAR aber wieder "die alte", wenn ich den H.264-Stream aus den alten Files (die nur im Header korrigiert sind), in ein anderes File "umtopfen" würde?

  • Dass leicht verschiedene Werte den gleichen Namen haben, ist in der Tat unglücklich, aber durchaus ein Hinweis darauf, dass hier einmal ein Wert nummerisch berechnet wird und im anderen Fall der nächstähnliche Wert aus einer Reihe von Vorgaben zugeordnet wird, soweit die Differenz minimal ist (gut erkennbar am Fall "2,40:1").

    Und ja, wenn man den elementaren MPEG2-Videostream hat, ohne die IFO dazu, dann kann man da auslesen, welches AR das Encoding-Studio eingestellt hatte. Außer einem russischen Distributor hab ich aber keine konkreten Beispiele bisher gefunden, wo mal einem DVD-Produzenten öfter eine Verwechslung passiert sei...

    Standard-Programm-Paket für die Erstellung von MKV-Dateien wäre mkvtoolnix. Mit mkvpropedit soll man den Header auch direkt patchen können, aber ich würde in Allgemeinen eher das Remultiplexen mit mkvmerge / MMG empfehlen, da mkvpropedit wohl nicht immer ganz zuverlässig war, glaube ich... ohne Gewähr.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!