Welches ffmpeg-Flag korrigiert MP4-fehlende Frames in Premiere?

2087
d3vid

Wir konvertieren eine Folge von DPX-Bildern in ein MP4-Video:

ffmpeg -start_number 101 -i dpx/example.%04d.dpx ./example.mp4 # minimal conversion 

ffmpeg -y -start_number 101 -i dpx/example.%04d.dpx -b12100k -minrate 12100k -maxrate 12100k -bufsize 12100k -vf colormatrix=bt601:bt709 -pix_fmt yuv420 ./example.mp4 # conversion with colour correction 

Wenn Sie diese MP4 in Adobe Premiere Pro öffnen, fehlen jedoch die ersten beiden Frames (die ersten beiden Frames sind nicht zugänglich, der dritte Frame ist zugänglich, die Gesamtanzahl der Frames ist 2). In derselben Datei fehlen keine Frames, wenn sie in anderen Anwendungen (Quicktime Player und VLC) geöffnet werden. Bei anderen Videodateien fehlen beim Öffnen in Premiere keine Frames.

Die folgenden Konvertierungen lösen das Problem nicht (Ref. 1) (Ref. 2) (Ref. 3 "- Zeitcode") :

ffmpeg -start_number 101 -i dpx/example.%04d.dpx -filter_complex "[0] fps=fps=25" ./example.mp4 # force fps with filter_complex 

ffmpeg -start_number 101 -i dpx/example.%%04d.dpx -timecode 00:00:00:01 ./example.mp4 # force timecode (tried drop and non-drop format) 

Die folgende Konvertierung (geerbter Großhandel) funktioniert. Warum? Welches Argument löst das Problem?

ffmpeg -start_number 101 -i dpx/example.%%04d.dpx -crf 15.0 -y -vcodec libx264 -b:a 128k -b:v 4000 -intra -s 1280x720 -r 25 -ar 48000 -ab 192000 -coder 1 -flags +loop -me_method hex -subq 6 -me_range 16 -g 1 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 1 -threads 0 ./example.mp4 # mystery meat 

(Offensichtlich optimieren wir das Arbeitsmodell an unsere anderen Anforderungen.)

2

1 Antwort auf die Frage

3
Gyan

Nachdem einige Szenarien getestet wurden, scheint das Vorhandensein mehrerer B-Frames verantwortlich zu sein. Es ist die Reihenfolge der Speicherung außerhalb der Präsentation und ein neuer Fehler im H264-Bitstream-Parser von Adobe, der dieses Problem verursacht.

Das Hinzufügen -x264opts bframes=1(oder 0) löst es also. Dies ist kein Problem mit FFmpeg, AFAICT, da andere Apps, einschließlich NLEs wie Vegas, MP4s ohne diese Option korrekt lesen können. Auch ältere Versionen von Adobe CC funktionieren entsprechend Ihren Links.

Bearbeiten : -x264opts b_pyramid=0scheint die direkte Lösung zu sein.

Bei einigen Experimenten stellte sich heraus, dass `-g 1` auch das Problem behoben hat. Ihr 'bframes'-Argument führt jedoch zu einer kleineren Datei, die gestartet werden muss. Danke! d3vid vor 8 Jahren 0
"-g 1" bedeutet keine B-Frames und keine P-Frames, aber P-Frames verursachen das Problem nicht. Gyan vor 8 Jahren 0