Doppelter Deinterlace mit voller Bewegung - ffmpeg + yadif 50i-50p 60i-60p

19982
moot

Ich versuche herauszufinden, wie man mit yadif/ yadif-2xmit ffmpeg 50i-Quellmaterial in eine 50p-Ausgabe konvertiert, die die Bewegung aller fünfzig Felder pro Sekunde aufrechterhält. Im Moment verwende ich den folgenden Befehl, der eine Frame-verdoppelte Version erstellt, die im Wesentlichen der 25p-Ausgabe entspricht.

ffmpeg -i input.m2t -f:v yadif=1 -c:v prores output.mov 

Mit yadif=0wird eine 25er-Deinterlaced-Datei erstellt. Die Verwendung yadif=1macht eine deinterlaced 50p-Datei mit doppelten 25p-Bildern. Ich muss eine Deinterlaced-Datei mit 50 eindeutigen Bildern pro Sekunde erstellen, und ich bin mir ziemlich sicher, dass dies möglich ist. Ist es das, was yadif (2x) tun soll?

5
Bitte zeigen Sie Ihre vollständige ffmpeg-Konsolenausgabe. LordNeckbeard vor 10 Jahren 1
Verfügbar hier: http://pastebin.com/CqsD5D8L moot vor 10 Jahren 0
Nach langem Suchen habe ich vielleicht einen anderen Weg gefunden, um diese Konvertierung durchzuführen. Ich werde diese Methode morgen versuchen und Ergebnisse berichten. http://hddv.net/showthread.php?2876-Format-conversion-%2850i-50p-24p-25p%29-tests moot vor 10 Jahren 0
"yadif = 1" funktioniert für mich: doppelt so viele Frames und jeder ist anders mark4o vor 10 Jahren 0
Ich habe das heute noch einmal versucht und leider produziert es definitiv eine 50p-Ausgabe, aber nur verdoppelte Frames für mich. Ich verwende die MacPorts-Installation unter MacOS X unter anderem mit mencoder_extras. moot vor 10 Jahren 0
Sind Sie sicher, dass Ihre Eingabe interlaced ist? Sie können `ffmpeg -i input.m2t -filter: v idet -f null -` verwenden, um es auf Frames zu analysieren, die als oberste Frame zuerst oder als untergeordnete Ebene erscheinen. mark4o vor 10 Jahren 2
Sieht aus, als hätten Sie Ihr Problem gelöst, so dass Sie Ihre eigene Antwort erstellen und akzeptieren können. LordNeckbeard vor 9 Jahren 0
Ja, ich habe nicht gleich gemerkt, dass Sie die Antwort in die Frage eingearbeitet haben, da ich nur überflogen habe. Am besten wäre das eine Antwort. Peter Cordes vor 9 Jahren 0

4 Antworten auf die Frage

2
moot

Es stellte sich heraus, dass das Video, das ich doppelt zu demontieren versuchte, tatsächlich 25p war, das in eine 50i-Videodatei codiert wurde, um einem älteren AVCHD-Standard zu entsprechen. Offenbar ist dies eine übliche Praxis für bandlose Kameras ab Mitte der 2000er Jahre. Wenn ich also versuche, deinterlace zu sein, bekomme ich natürlich nur 25 Frames pro Sekunde, da zwischen den Feldern keine Bewegung stattfindet.

f: v yadif = 1 macht genau das, was beschrieben wird. Es verwendet echtes Interlaced-50i-Filmmaterial und verwandelt es mit einem Motion-Weight-Bob-Algorithmus in eine erstaunlich hochwertige 50p-Ausgabe, genau wie der Echtzeitfilter "yadif 2x" in VLC . Die Ausgabe ist nahezu doppelt so hoch wie die effektive vertikale Auflösung bei Deinterlace mit verworfenem Frame. Es ist jetzt einer meiner Lieblings-Videofilter, da praktisch nichts anderes diese Fähigkeit zu bieten scheint.

1
ecchphoto

Ich habe diesen Befehl verwendet:

ffmpeg -i source_50i.MTS -aspect 1920:1080 -vf yadif=1,scale=1920:1080 -c:v libx264 -preset fast -profile:v high -crf 23 -ac 2 -strict experimental -c:a aac -b:a 96k -movflags +faststart -y result_50p.mp4 

und es hat gut funktioniert!

Ich habe nicht überprüft, ob die Yadif-Methode gut oder nicht von guter Qualität ist, sondern wirklich aus 50i MTS bis 50p mp4 aus einer Camcorder-Quelldatei erstellt. Die Quelldatei hatte 19 MB und das Ergebnis 21 MB.

Ich habe diese Antwort erfolgreich verwendet, um ein Video aus einem GoPro-Zeitraffer mit 60 Bildern pro Sekunde zu erstellen, in der Hoffnung, dass andere es nützlich finden: `ffmpeg -i 'G% *. JPG' -r 60 -vf" scale = 1920: ih * 1920 / iw, crop = 1920: 1080, yadif = 1 "-c: v libx264 -preset slow -crf 18 -c: aac -b: ein 192k -pix_fmt yuv420p output.mkv` Graham P Heath vor 6 Jahren 0
0
Rajib

Bitte haben Sie Verständnis dafür - 50i bedeutet 50 Felder = 25 Frames von 50 verschachtelten Feldern. Sie können KEINE einzigartigen 50 Frames erhalten. Wenn überhaupt möglich, würden diese Frames im Video-Frame keine alternativen Zeilen aufweisen. Also 25p ist 50i oben + 50i unten kombiniert. So sollte es sein, und hoffentlich wird es immer so sein. Andernfalls könnte es zu doppelten Frames kommen (schrecklich).

Das ist falsch. Yadif kann fehlende Zeilen interpolieren und aus 50i echtes 50fps-Video erstellen, wenn dies tatsächlich echtes 50i-Video ist (keine duplizierten Felder - dh 2 Felder aus einem Frame). Sarge Borsch vor 9 Jahren 1
@SargeBorsch Bitte geben Sie die Antwort an - ich lösche gerne meine. Danke für die Information. Leider kann ich nicht testen, da ich keinen Zugriff auf Interlaced-Videos mehr habe. Rajib vor 9 Jahren 0
Ich habe keine Zeit zu suchen, wie (richtig) es mit ffmpeg geschehen soll - aber es hat eindeutig den Effekt im VLC-Player (während der Wiedergabe von 60i-Videos und der Aktivierung von Yadif x2). Es sieht so aus, als hätte ffmpeg einen Fehler - es werden immer Frames dupliziert, also bekomme ich entweder 120fps oder 60fps und in jedem Fall muss ich jeden zweiten Frame löschen, was irgendwie "hacky" ist, und ffmpeg hat keine klare Möglichkeit, jeden zweiten Frame zu löschen Sarge Borsch vor 9 Jahren 0
Wenn Sie einen kurzen interlaced Clip teilen möchten, probiere ich ihn aus. Rajib vor 9 Jahren 0
Momentan habe ich nur ein solches Video, das nicht zum Teilen vorgesehen ist. Ich kann jedoch früher oder später ein anderes Video aufnehmen (meine DSLR-Kamera hat die Option, in 60i aufzunehmen), und Beispiel sowohl des ursprünglichen (interlaced) Videos als auch des bearbeiteten Videos senden. Sarge Borsch vor 9 Jahren 0
@SargeBorsch Sie suchen nach "-vf yadif = 1", um die Ausgabe mit einem interpolierten progressiven Frame pro Eingangsfeld zu erzeugen. "-vf yadif = 0" verliert die zusätzliche zeitliche Auflösung der interlaced-Eingabe, indem für jedes andere interlaced-Feld ein progressiver Frame ausgegeben wird. Dies hält die Framerate in Bezug auf Interlacing-Unbekanntes konstant. Peter Cordes vor 9 Jahren 0
@ PeterCordes ja, soweit ich mich erinnern kann, ist das so. Obwohl in meinem Fall ffmpeg auch doppelte Frames hatte, was zu einer 4x-Framerate führte, musste ich nach dem Deinterlacing jeden zweiten Frame fallen lassen (da ich einen 120fps-Stream erhielt, der eigentlich nur 60fps mit Duplikaten ist). Sarge Borsch vor 9 Jahren 0
Ich frage mich, ob Sie aufgrund von ffmpeg eine niedrigste Bildrate für einen Container wie mp4 mit 120 Bildern pro Sekunde erreicht haben, bei der standardmäßig keine variable Bildrate unterstützt wird. B. mit einer variablen fps-Eingabe von einer Telefonkamera kann ffmpeg eine 90k fps-Ausgabedatei erstellen. Mit mkv als Ausgabe-Container-Format füttert ffmpeg nicht wirklich doppelte Frames an den Videocodec. Sie erhalten also eine korrekte VFR. Möglicherweise gibt es eine Option zum Mux-VFR-mp4-Ausgang von ffmpeg, aber IDK, was es ist. Peter Cordes vor 9 Jahren 0
Für alle, die es wissen müssen, fügen Sie "-vsync vfr" hinzu, um VFR MP4s zu muxen. Gyan vor 7 Jahren 0
0
John Henry Wheeler

I think many don't understand that 29.97 only referred to how frequently the cathode ray tube returned to scan the same 'pixel'. It had been at the adjacent (above or below) 'pixel' only 1/60th of a second earlier.

Each raster scan was a 1/60th sec. exposure. The next scan was the next 1/60th. They were not held; they were sent out 60x per second as half-resolution rasters stretched vertically to fill the screen. Through alternating odd-line and even-line scans, the appearance of full resolution was achieved with only half the 'bandwidth'.

It was always 60 distinct rasters per second, never 30.