FFMPEG für Frame-Interpolation ala Twixtor

FFMPEG für Frame-Interpolation ala Twixtor

Kann mir ein FFMPEG-Experte sagen, ob FFMPEG eine anspruchsvolle Frame-Interpolation ähnlich dem Twixtor-Plugin in After Effects durchführen kann? Wenn ja, welche Einstellungen könnte ich ausprobieren? Ich versuche, Ultra-Slow-Motion-HD-Filmmaterial aus einer 60-fps-Quelle zu erstellen. Konvertieren Sie also in 120 fps und interpolieren Sie die Frames.

Antwort1

FFmpeg kann dies nicht.

Es gabeinige Diskussionenüber die Implementierung einer solchen Funktion vor ein paar Jahren nachgedacht, aber bisher haben sie im Projekt noch nichts veröffentlicht, das der Frame-Interpolation ähnelt.

Sie können natürlich ein ähnliches kostenloses Tool verwenden wieslowmoVideodie auch gehostet wirdauf GitHubwenn Sie einen Blick auf die Quelle werfen möchten.

Antwort2

Die libavfilter-Bibliothek hat einen Filter namensmininterpolieren, das seit November 2016 verfügbar ist. Laut der Beschreibung des Filters besteht sein Zweck darin:

„Konvertieren Sie das Video mithilfe der Bewegungsinterpolation in die angegebene Bildrate.“

Anwendungsbeispiel:

ffmpeg -i input.60fps.hevc -filter "minterpolate='fps=120'" output.120fps.hevc

Ich weiß nicht, welche Einstellungen ich verwenden soll, um das bestmögliche Ergebnis zu erzielen. Meiner Erfahrung nach bieten die Standardeinstellungen eine akzeptable Qualität der Bewegungsinterpolation selbst. Es treten jedoch gelegentlich einige sehr auffällige visuelle Artefakte auf. Ich konnte keine Kombination von Einstellungen finden, mit der diese vollständig beseitigt werden könnten.

Der Filter ist im Moment sehr langsam. Er kann auf einer modernen High-End-x86-CPU etwa 2 bewegungsinterpolierte Frames eines 1080p-Videos pro Sekunde ausgeben. Mir ist aufgefallen, dass die Interpolation nur einen einzigen CPU-Thread nutzt, was wahrscheinlich der Hauptgrund für die langsame Geschwindigkeit ist.

Um den Filter auf einer Multi-Core-CPU zu beschleunigen, kann es ratsam sein, das Eingangsvideo in mehrere gleich lange Abschnitte aufzuteilen und die Bewegungsinterpolation auf alle parallel anzuwenden.

Antwort3

Monate nach dem Update:

ffmpeg -i input.mp4 -movflags +faststart -filter_complex "[0:v]minterpolate='fps=60:mi_mode=mci:me_mode=bidir:mc_mode=obmc:me=ds:vsbmc=1'" -preset ultraschnelle Ausgabe.mp4

Ursprünglicher Beitrag:

Ich kann solche Effekte erzielen (wenn auch nicht perfekt), mit tblendFilter

ffmpeg -i Quelle.mp4 -filter:v tblend -r 120 Ergebnis.mp4

verwandte Informationen