ffmpeg mpeg2 bis MP4 H264 erzeugt horizontale Linienartefakte in Bewegungsszenen

2297
Fit Nerd

Mein Videoeingang ist wie folgt eine MPEG2-Videodatei:

Video: MPEG2 Video 720x576 (4:3) 25fps [V: mpeg2 main, yuv420p, 720x576] Audio: MPEG Audio 48000Hz stereo 224kbps [A: mp2, 48000 Hz, stereo, 224 kb/s] 

Dann benutze ich:

ffmpeg.exe -i in.mpg -b:v 3000k -preset superfast out.mp4 

Um MP4 zu erhalten:

Video: MPEG4 Video (H264) 720x576 (4:3) 25fps 2967kbps [V: h264 high L3.0, yuv420p, 720x576, 2967 kb/s] Audio: AAC 48000Hz stereo 128kbps [A: SoundHandler (aac lc, 48000 Hz, stereo, 128 kb/s)] 

Alles ist gut, außer ich bekomme so etwas in Bewegungsszenen:

enter image description here

In der tatsächlichen Quelle gibt es so etwas nicht. In der Quelle gibt es keine Zwischenbilder oder Geisterbilder - nur "diskrete" Schritte.

Ich habe andere Presets sowie andere Codecs wie libxvid ausprobiert, aber alle hatten das gleiche Ergebnis.

Wie soll ich das beheben? Welche Parameter sollte ich hinzufügen oder welche Einstellungen müssen angepasst werden?

3
Können Sie eine kurze Beispiel-Eingabedatei bereitstellen, die eine Aktionsszene enthält? Sie können es wie folgt erstellen: `ffmpeg -ss 600 -i Eingabe -c Kopie -t 5 Ausgabe.mpg` LordNeckbeard vor 8 Jahren 0
Versuchen Sie, die Bitrate zu erhöhen. Es ist jedoch üblicher, mit der crf-Option zu kodieren, um konstante Qualität zu erhalten. jiggunjer vor 8 Jahren 1

1 Antwort auf die Frage

7
szatmary

Ihre Eingabequelle ist interlaced. Ihre beste Wette ist das Deinterlace mit einem ffmpeg-Filter wie -vf yadif=1. Weitere Informationen finden Sie in der Yadif-Dokumentation .

Beachten Sie, dass yadif = 1 nur verwendet werden sollte, wenn tatsächlich 1 Feld pro Frame vorhanden ist. Andernfalls erhalten Sie dup-Frames. In diesem Fall ist die Verwendung von `` -vf yadif``` effizienter. Ely vor 8 Jahren 1