SAR, DAR wird bei Hevc-Neukodierung unerwünschter Weise geändert

Started by Gloster, March 19, 2024, 07:47:47 PM

Previous topic - Next topic

Gloster

Ubuntu 22.04
Avidemuv Vers.: 2.8.2

Video mit :
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt470bg, top first), 720x576 [SAR 16:11 DAR 20:11], 25 fps, 50 tbr, 90k tbn, 50 tbc
wird mit Avidemux nach Auswahl Video -> IntelHevc, crf = 18, sonst keine weiteren Eimstellungen zu :
Stream #0:0: Video: hevc (Main), yuv420p(tv), 720x576, SAR 1:1 DAR 5:4, 25 fps, 25 tbr, 1k tbn, 25 tbc

Eine ähnliche Neukodierung mit ffmpeg : ...-vcodec libx265 -crf 18 -preset slow...
führt zu dem erwarteten Ergebnis :

Stream #0:0: Video: hevc (Main), yuv420p(tv, bt470bg, top coded first (swapped)), 720x576 [SAR 16:11 DAR 20:11], 25 fps, 25 tbr, 1k tbn, 25 tbc (default)

SAR, DAR ist nach der ffmpeg-Kodierung identisch mit dem h.264 Video.

Weiß jemand wie man die überflüssigen Änderungen, vorgenommen von Avidemux neutralisieren kann ?

eumagga0x2a

In Avidemux gibt es derzeit keine Infrastruktur, um Infos zu SAR / DAR oder zum Interlacing über die Filterkette zu einem Video Encoder zu transportieren. Entsprechende Einstellungen sind direkt in den Einstellungen des jeweiligen Encoders, falls unterstützt, vorzunehmen.

Dass Video Encoder Plugins "Intel H264" und "Intel HEVC", die den libavcodec-Wrapper für VA-API in Avidemux verfügbar machen, derartige Konfigurationsmöglichkeiten nicht bieten, stellt das kleinste Problem dar. Viel schwerwiegender ist, dass sie nur progressives Material erwarten, d.h. wenn das Video wie hier interlaced ist, ein Deinterlacer zwingend zur Filterkette hinzugefügt werden muss (i.d.R. an der ersten Stelle).

Quote from: Gloster on March 19, 2024, 07:47:47 PMWeiß jemand wie man die überflüssigen Änderungen, vorgenommen von Avidemux neutralisieren kann ?

Mir sind keine Tools bekannt, die in den HEVC-Extradaten nur VUI (video usability information) verändern und den Videostream entsprechend modifizieren, wenn er für MPEG-TS bestimmt ist (dann müssten zumindest alle Keyframes umgeschrieben werden).

Praktisch geben fast alle Player den Infos zu SAR / DAR vom Container Vorrang gegenüber denen vom Codec, deswegen sollte es genügen, das entsprechende Seitenverhältnis in der Konfiguration des jeweiligen Muxers (MP4 / MOV oder MKV) zu erzwingen. Viel wichtiger als SAR / DAR ist es, Video zu deinterlacen, sonst riskiert man nach dem Neukodieren nicht mehr behebbare Kammartefakte.

Gloster

#2
Merkwürdig, in einem ähnlichen Fall ging es um die Darstellung mit sofortigem Lösungsansatz, s.https://github.com/vivictorg/vivictpp/issues/51, respektive der sofortigen Lösung.

Das kodierte Ergebnis von Avidemux ist 4:3, ist das so schwer zu verstehen, dass das unerwünscht ist.

@eumagga0x2a, in dem angegebenem vivictpp-Bsp. Bild 3+4 sieht man die Verzerrung des Bildes, wenn man in 4:3 umwandelt.
So sieht auch das Ergebnis nach der Kodierung mit Avidemux aus. Für dich scheint das unwichtigzu sein, für mich nicht.

Also noch einmal : Mit ffmpeg kann man SAR, DAR erhalten, bzw. wird es nicht geändert, wenn man es mit Avidemux macht (gleichgültig welcher Container) geht es nicht.

Sei es IntelHevc, H.265 usw., zumindest habe ich diese Einstellung nicht gefunden.

Und es geht auch nicht um irgendwelche Filter usw., SAR[16:11] ist ein Video mit nicht quadratischen Pixeln, das ist das Problem.

Ich habe nicht danach gefragt, ob eine Verzerrung des Bildes wichtig, respektive unwichtig ist !
Ich habe danach gefragt wie ich eine Verzerrung des Bildes verhindern kann!

Zur Verdeutlichung, die beiden Bilder :
Keine Verzerrung : ursprüngliches Material, SAR[16:11], DAR[20:11]
Verzerrung : SAR[1:1], DAR[4:3]




eumagga0x2a

Quote from: Gloster on March 20, 2024, 01:20:24 AMIch habe danach gefragt wie ich eine Verzerrung des Bildes verhindern kann!

Diese Frage wurde auch beantwortet:

Quote from: eumagga0x2a on March 19, 2024, 10:44:29 PMPraktisch geben fast alle Player den Infos zu SAR / DAR vom Container Vorrang gegenüber denen vom Codec, deswegen sollte es genügen, das entsprechende Seitenverhältnis in der Konfiguration des jeweiligen Muxers (MP4 / MOV oder MKV) zu erzwingen.

Für MPEG-TS gibt es diese Möglichkeit nicht, für diesen Container muss tatsächlich SAR in VUI stimmen (andere Container kommen für HEVC nicht in Betracht).

Quote from: Gloster on March 20, 2024, 01:20:24 AMSei es IntelHevc, H.265 usw., zumindest habe ich diese Einstellung nicht gefunden.

Bei VA-API-basierten Encodern wie "Intel HEVC" gibt es auch keine. Im Konfigurationsdialog des Plugins für den libx265-basierten HEVC-Encoder "HEVC (x265)" findet man sie auf der Registerkarte "Display" unter "Pixel-Seitenverhältnis [SAR]".

Eine Erweiterung der Datenstrukturen in Avidemux, die Video-Eigenschaften über die Filterkette transportieren, um SAR könnte nach der Freigabe von 2.8.2 in Angriff genommen werden, aber, natürlich, ohne Garantie. Danach könnten bestimmte Automatiken wie das Beibehalten von SAR darauf aufbauen. Sie würden visuelle Kontrolle mit Möglichkeit manueller Eingriffe trotzdem nicht überflüssig machen.

Gloster

Filterketten sind nötig ?

Ich habe via ffmpeg das Avidemux Resultat geändert :

ffmpeg -i "Input.ts" -c copy -aspect 16/9 "Output.ts"

ffmpeg warnt mich, ohne Neukodierung, das zu tun.

Das Ergebnis ist allerdings einwandfrei.

Offen sichtlich zeigt das Ergebnis, dass die unnötige Änderung von Avidemux, die DAR-Änderung, einfach von ffmpeg zurück genommmen werden kann, ohne "Filterketten".

Der Ausführungs-speed von ffmpeg zeigt mir, speed >1200x, dass ich richtig liege.

ffmpeg hat für die Änderung bei einem 90 min Film, etwa 90min/1200 gebraucht.




eumagga0x2a

Quote from: Gloster on June 28, 2024, 06:29:14 PMffmpeg -i "Input.ts" -c copy -aspect 16/9 "Output.ts"

ffmpeg warnt mich, ohne Neukodierung, das zu tun.

Das Ergebnis ist allerdings einwandfrei.

Was heißt einwandfrei? Wie die Warnung sagt, hat die Angabe von abweichendem Seitenverhältnis für die Ausgabedatei im Fall von MPEG-TS ohne Neukodierung des Videostreams keinerlei Effekt.