(FFmpeg) DAR und PAR festlegen mit libavfilter (-vf aspect=4:3)

  • Hi zusammen,

    in den neueren FFmpeg Builds wird zum Padden nur noch die Nutzung über eine libavfilter Kette akzeptiert, ich habe nun Probleme darüber auch das PAR und den DAR festzulegen.

    Nutze bspw. folgende CMD:

    Code
    ffmpeg -y -i /Users/tobias/Desktop/livn/Cam_Samples/SD/01.MPG -vframes 50 -vf "pixelaspect=1:1,aspect=4:3,scale=480:360,pad=480:360:0:0:black" -r 25 -threads 0 -vcodec libx264 -level 30 -b 570k -minrate 400k -maxrate 600k -bf 3 -cmp +chroma -flags +loop -flags2 +bpyramid+wpred+fastpskip -me_method hex -subq 6 -trellis 1 -refs 2 -coder 1 -me_range 16 -g 25 -keyint_min 25 -qcomp 0.6 -qmin 20 -qmax 51 -qdiff 4 -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -directpred 1 -acodec libfaac -ac 2 -ar 44100 -ab 128k test1-nopad.mp4

    In diesem Fall kann man das Padding ignorieren da nix gepaddet wird, brauche eine universale Commandline für unterschiedlichen Input.

    Wenn ich jetzt mit "ffmpeg -i" die Videoinfos auslese, bekomme ich folgendes Ergebnis:

    Stream #0.0(und): Video: h264, yuv420p, 480x360 [PAR 12:11 DAR 16:11], 597 kb/s, PAR 523:480 DAR 523:360, 25 fps, 25 tbr, 25 tbn, 50 tbc

    Ich erwarte aber DAR 4:3 und PAR 1:1

    Jemand eine Idee wie man die Infos korrekt setzt? Auf der libavfilter Dokuseite sind die Parameter "aspect" und "pixelaspect" auch noch nicht dokumentiert, evtl. funktionieren diese noch nicht richtig.

    Gruß zwiebel

  • Ich erinnere mich, dass bestimmte Kombinationen von ffmpeg-Revision und Videocodec merkwürdige Fehlermeldungen bringen -- beispielsweise verlangt libxvid unbedingt ein PAR, und wenn das aus dem Originalvideo nicht ausgelesen wurde (und eben leider nicht mit 1:1 als Standard angenommen wird), dann beendet sich ffmpeg.

    Eine allgemeingültige Kommandozeile, mit der ich ffmpeg anweisen könnte, Videos beliebiger Größe mit korrektem Seitenverhältnis "von innen berührend" in eine vorgegebene Fläche zu skalieren, ist mir bisher noch nicht geglückt. Aber nach meiner Erfahrung sind die ffmpeg-Autobuilds zumindest in der Lage, mit [ -vf pixelaspect=1:1 ] erst mal überhaupt Xvid-Videos ohne Abbruch zu erzeugen, auch wenn das Quellvideo dazu keine Header-Daten in sich hat.

    Ich glaube, das ganze Thema "AR-abhängiges Skalieren" interessiert die ffmpeg-Entwickler kein bisschen. Es steht zwar was darüber im Bugtracker, aber von Enthusiasmus bezüglich einer brauchbaren Lösung ist nichts zu lesen.

  • Sorry, k.A. würde mich aber auch interessieren da ich wenig mit ffmpeg alleine mache. (decode nur mit ffmpeg und pipe den raw stream dann zu x264 wo ich dann das Aspect Ratio setze.)
    Es erscheint aber irgendwie merkwürdig, dass man pixelaspect und aspect angeben soll,...

  • Ja, beides gleichzeitig anzugeben ist nicht so ohne, weil beides ja von den Werten des Originals abhängt. Da muss man ja zwangsläufig nachhaken, was denn bevorzugt wird. Und was eigentlich der Zweck der Angelegenheit ist: Deine Zielgröße hat DAR 480:360 = 4:3. Aber eine Anweisungskette wie "Skalieren auf maximal 480 Pixel Breite oder maximal 360 Pixel Höhe, aber mit PAR 1:1 als Nebenbedingung und Padding auf 480x360" ... das scheint ffmpeg bisher nicht zu beherrschen. Oder es ist einfach zu kompliziert, das richtig zu formulieren...

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    Einmal editiert, zuletzt von LigH (19. November 2010 um 17:02)

Jetzt mitmachen!

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