x264 encodierte Videos ruckeln bei Schwenks

  • Hallo zusammen!

    Seit Tagen durchsuche ich das Internet und finde keine Antwort, nun seid Ihr meine letzte Hoffnung! :)

    Ich zeichne DVB-t Videos auf, bearbeite meine MPEG2-Dateien mit VideoReDo und encodiere anschließend mit MeGUI in x264 (mkv). Dabei fällt mir auf, dass gleichmäßige Bewegungen (ab einer gewissen Geschwindigkeit) in den encodierten Videos von starkem "Ruckeln" oder "Zittern" verunstaltet werden. Zum Beispiel bei Abspann und Laufschriften oder bei etwas zügigeren Kameraschwenks. Ich frage mich, ob der Fehler in den Encodierungseinstellungen oder bei der Wiedergabe liegt.

    Ich habe zwei Dateien als Beispiel hochgeladen. Die Encodierung erfolgte mit MeGUI und x264 (jeweils neueste Versionen), Standardeinstellungen, automatischer 2pass (erster Turbo), 800kbit/s, Ton ist Vorbis (4,0). Ihr könnt sie euch hier herunterladen:
    - die Mpeg-Version: http://www.fileuploadx.de/595121 (1,3 MB)
    - die x264-Version: http://www.fileuploadx.de/347574 (0,4 MB)

    Könnt Ihr meinen Fehler reproduzieren und habt vielleicht sogar eine Idee, woran es liegt?

    Vielen Dank schonmal und schöne Grüße,
    Chris

  • :welcome:

    1) "HILFE!" brüllen hilft nicht. ;)

    2) Ohne die Dateien überhaupt herunterzuladen, tippe ich schon mal auf "Interlacing". Viele MPEG2-Decoder deinterlacen beim Abspielen automatisch (nicht schön, aber schnell), MPEG4-AVC-Decoder dagegen nicht grundsätzlich. Lies dich mal in das Thema ein und teste, ob in diesem Fall das Deinterlacing (z.B. mit TDeint) während der Konvertierung das Problem beseitigt.

  • Hallo LigH!

    1) Sorry - war wirklich kein Kalkül, sondern nur Ausdruck meiner Verzweifelung.

    2) Hm, also ich habe beim encodieren natürlich deinterlaced (sorry hatte ich vergessen, zu sagen), dabei habe ich verschiedene Einstellungen mit TDeint und Yadif ausprobiert (normalerweise nutze ich TDeint). Auch verschiedene Field Order Einstellungen habe ich ausprobiert - kein Unterschied. Wenn ich es richtig verstehe, müsste ich nach dem encodieren doch progressives Material haben, dass mit MPC ohne weiteres wiedergegeben werden können sollte?!

    Grüße,
    Chris

  • Hmm, richtig ... dann könnte es vielleicht noch "Tearing" sein: Dein Video läuft vielleicht mit 25 fps, dein Monitor aber mit 60 fps. Und wenn das Video nicht auf den Bildwechsel des Monitors wartet (Synchronisierung mit dem vertikalen Strahlrücklauf), dann wechselt der Inhalt des Videos eben, während der Bildschirm mitten in der Darstellung ist.

  • Stimmt - davon habe ich auch schon was gelesen - aber irgendwie brachte ich es nicht mit meinem Problem in Einklang. Ich habe einen LCD, der mit 60 Hz angesteuert wird (ich kann keinen anderen Modus einstellen). Doch bei der Encodierung habe ich nirgendwo eingestellt, dass sich die Framerate ändern soll (wenn ich im MPC die "Eigenschaften aufrufe, heißt es bei beiden 25,00 fps) - das mpeg-Video kann dagegen jedoch vollkommen flüssig wiedergegeben werden.

    Wird das Ruckeln bei Dir überhaupt reproduziert?

  • Hm, okay... also ich nutze ffdshow mit MPC... in MPC selbst könnte es doch nur unter den "Playback" Einstellungen zu finden sein - dort habe ich aber auch schon Verschiedenstes ausprobiert... Bei ffdshow habe ich es mit den Default-Einstellungen und ein paar eigenen probiert... könntest Du mir da vielleicht Dein Profil zukommen lassen?

    Also was das "Ruckeln" betrifft: Es ist kein Ruckeln in dem Sinne, dass die CPU nicht mehr hinterherkommt oder ähnliches. Es scheint vielmehr so, als wäre es eine Framerate von 10fps oder so... bei langsamen Schwenks. Im Video zeigt es sich besonders gut an den Dioden, am besten im Vergleich zum MPEG2-File, bei dem das Bild sichtlich "flüssiger" ist...

  • Nix besonderes, völlig normal. Genau das bekommt man, wenn man ein interlactes Format deinterlaced.

    Auf gut Fachchinesisch ist das "strobing" (deutsch: Stroboskop-Effekt).

    Quelle war 50 Bilder/Sekunde. Verschlusszeit war so gewählt, dass ein Bild den Zeitraum von 1/50 Sekunde abdeckt.

    Dann kommt der Deinterlacer, und schmeisst die Hälfte aller Bilder weg. Jedes Bild zeigt immer noch 1/50 Sekunde, aber es sind ja nur noch 25 Bilder pro Sekunde da. Es fehlt also die Hälfte der "zeitlichen Information", und für das empfängliche Auge wirkt das eben wie Ruckeln.

    Bei Filmen, die mit 24 oder 25 fps aufgenommen wurden, ist's eine andere Geschichte: da war die Verschlusszeit von vornherein so eingestellt, dass jeder Frame den Zeitraum von 1/24 bzw. 1/25 Sekunde abdeckt. Stichwort: "Motion Blur". Deswegen wirkt "originales" 25p viel flüssiger, als wenn man 25i zu 25p deinterlaced.

    Einmal editiert, zuletzt von Didée (19. Oktober 2009 um 21:09) aus folgendem Grund: Ein Komma, ein Königreich für ein Komma!

  • Didée, Du bist mein Held!!!

    Das ist genau die Antwort, die ich in meinem tiefsten Innern irgendwie erwartet habe: Bei meinem Problem handelt es sich garnicht um einen Fehler, sondern es ist praktisch systemimmanent. Und die Erklärung dazu ist genial einfach und auch absolut logisch!!! Ich danke Dir vielmals dafür!!

    Ich wundere mich nur, dass ich dazu nichts im Internet gefunden habe, aber vielleicht fehlten mir die Fachbegriffe, wie z.B. strobe-effekt (wobei auch hier: einen besseren Begriff, um den Effekt zu beschreiben, gibt es wohl nicht!).

    Dann bleibt mir jetzt noch die abschließende Frage: Kann ich das Material irgendwie komprimieren, OHNE es zu deinterlacen - bzw. kann man beim deinterlacen den motion blur hinzufügen?
    Oder muss ich mich grundsätzlich entscheiden zwischen 1) dem flüssigen, aber schlecht komprimierten mpeg2-stream und 2) dem "strobigen", aber gut komprimierten H264-stream?

    Vielen Dank schonmal und nochmal Danke für die tolle Erklärung, Didée!!!
    Grüße, Chris

  • x264 unterstützt kan auch interlaced encoden,...

    Zitat

    --interlaced Enable pure-interlaced mode (tff)
    --tff Alias for --interlaced
    --bff Enable pure-interlaced mode (bff)
    --pulldown <integer> Use 3:2 pulldown
    - 32: TBT,BT,BTB,TB pattern
    - 64: triple,double *recommended for 720p

    Quelle: x264 --longhelp

    Cu Selur

  • Hallo!

    Und danke Selur für den Tipp - ich bin aber immer noch nicht am Ziel. Ich habe jetzt in den advanced Settings eingestellt, dass er "interlaced encoden" soll... hier mein script:

    program --preset fast --pass 2 --bitrate 800 --stats ".stats" --thread-input --deblock 0:0 --bframes 3 --b-bias 0 --interlaced --scenecut 40 --ref 3 --rc-lookahead 40 --no-mbtree --aq-mode 1 --aq-strength 1.0 --merange 16 --subme 7 --trellis 1 --psy-rd 1.0:0 --output "output" "input"

    Doch das Ergebnis ist nicht besser: Ich habe alle möglichen deinterlacing-Einstellungen in ffdshow ausprobiert, bei allen sehe ich weiterhin den Stroboskopeffekt...

    Viele Grüße, Chris

    Einmal editiert, zuletzt von user1982 (20. Oktober 2009 um 10:01)

  • Ob du nun mit Avisynth oder mit ffdshow Deinterlacing durchführst - Deinterlacing führt zum Strobing, wenn ein Halbbild völlig ignoriert wird, oder zu "Geisterbildern", wenn beide Halbbilder nur überblendet werden, oder zu einem leichten Flimmern beim Bobben auf doppelte Framerate... Ein PC-Monitor arbeitet nun mal nicht wie ein Röhrenfernseher.

Jetzt mitmachen!

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