FFmpeg / avidemux: Fixierte gepackte B-Frames

4757
4ae1e1

Ich transcodiere einige meiner alten mpeg4-Videos (in avi-Containern) nach h.264 mit FFmpeg. Grundsätzlich gilt

ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4 

In diesem Fall wird mpeg4die folgende Warnung ausgegeben

Video verwendet eine nicht standardmäßige und verschwenderische Methode zum Speichern von B-Frames ('gepackte B-Frames'). Verwenden Sie ein Tool wie VirtualDub oder Avidemux, um dieses Problem zu beheben.

Ich weiß, dass ich immer noch erfolgreich transcodieren kann, aber aus der Warnung ist mir nicht klar, ob die Qualität des resultierenden h.264-Videos beeinträchtigt wird .

So,

  • Bedenkt man, dass mir nur die Qualität (und die Größe veryslowwichtig ist, ich möchte die Größe für meine mobilen Geräte minimieren, weshalb ich auch die Voreinstellung verwende) der Ausgabe von h.264-Videos, sollte ich mich um die gepackten B- Frames?

  • Wenn ja, wie kann ich sie mit Avidemux beheben? (Ich habe schon versucht, das Handbuch durchzugehen.)

9

1 Antwort auf die Frage

11
xiii1408

B-Frames sind ein Frame-Typ, der bei der Videokomprimierung zur Darstellung von Frames eines Videos verwendet wird. B-Frames können Informationen aus vorherigen und zukünftigen Frames verwenden, um jeden Videoframe darzustellen.

Ältere DivX-kodierte Videos verwenden im Allgemeinen eine hässliche Methode namens gepackter Bitstream, bei der mehrere Videoframes in einem einzigen AVI-Block zusammengefasst werden. Der gepackte Bitstream ist kein Standard-MPEG-4, benötigt mehr Speicherplatz, erfordert mehr CPU-Leistung zum Kodieren / Dekodieren und (am wichtigsten) kann Probleme verursachen, wenn er in einen anderen Containertyp kopiert wird. Dies ist der Hauptgrund für die Warnung.

Da Sie das Video neu codieren, anstatt es nur zu kopieren, sollte es Ihnen gut gehen. Wenn Sie das Originalvideo behalten und in einen anderen Containertyp (z. B. MP4 oder MKV) kopieren möchten, sollten Sie die B-Frames am besten mit dem FFmpeg-Filter entpacken mpeg4_unpack_bframes.

Sie könnten die B-Frames mit etwas einfachem auspacken

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi