Ich habe aufgrund meiner Kamera / SD-Karte problematisches Tauchmaterial - etwa jeder vierte Frame ist nur schwarz, und ich möchte alle diese schwarzen Frames entweder durch eine Interpolation zwischen dem vorherigen und dem nächsten Frame ersetzen oder einfach den vorherigen Frame duplizieren.
Ich habe diese Frage "schwarze Frames aus VOB-Dateien mit ffmpeg entfernen" gefunden , aber ich möchte die Frames nicht ausschneiden, sondern zwischen den beiden Frames interpolieren oder den vorherigen Frame duplizieren.
Ich denke, ich könnte alle relevanten Positionen mit den Schwarzbildfiltern usw. erhalten, aber welche Art von Aktionen würde ich verwenden, um diese Bilder vollautomatisch durch eine Interpolation oder ein Duplikat des vorherigen Bildes zu ersetzen (also ich nur meine Filmdatei in das Skript übergeben)?
Alles, was ich bisher gefunden habe, ist die "shuffleframes"-Methode, die ich irgendwie (wie?) mit der Position der schwarzen Frames füttern und dann damit den vorherigen Frame duplizieren könnte.
Demomaterial, das das Problem detailliert beschreibt, finden Sie hier .
Es ist möglich, die schwarzen Frames zu entfernen und frühere Frames zu duplizieren.
ffmpeg -i in.mp4 -vf blackframe=0,metadata=select:key=lavfi.blackframe.pblack:value=50:function=less -vsync cfr -c:a copy out.mp4
Der Blackframe-Filter analysiert und registriert den Anteil der schwarzen Pixel eines Frames. Der Metadatenfilter hält alle Frames, die höchstens 50 % der Pixel schwarz haben. Die entfernten Frames erzeugen eine Lücke im Videostream. Indem Sie also die Videosynchronisierungsmethode auf eine konstante Bildrate einstellen, dupliziert ffmpeg frühere (nicht schwarze) Bilder, um diese Lücken zu füllen.
Sie müssen mit dem Metadatenauswahlwert experimentieren 50
, um den richtigen Schwellenwert zu erhalten.
3 s 532 ms
und für neue Datei3 s 534 ms
1/fps
Sekunden vorhanden sind.
BlueRaja - Danny Pflughoeft