古いmpeg4ビデオ(aviコンテナー内)の一部をFFmpegを使用してh.264にトランスコードしています。基本的に
ffmpeg -i input.avi -c:v libx264 [x264 settings] -c:a libfdk_aac [aac settings] output.mp4
そうするとき、mpeg4
次の警告を発行します
ビデオは、Bフレーム(「パックされたBフレーム」)を格納するために非標準で無駄な方法を使用します。 VirtualDubやavidemuxなどのツールを使用して修正することを検討してください。
トランスコードは引き続き正常に実行できることはわかっていますが、警告結果のh.264ビデオの品質が影響を受けるかどうかはわかりません。
そう、
出力h.264ビデオの品質(およびサイズ、モバイルデバイスのサイズを最小限に抑える必要があるため、veryslow
プリセットも使用している理由)だけを考えると、- パックされたBフレームを気にする必要がありますか?
必要に応じて、avidemuxで修正するにはどうすればよいですか?(すでにマニュアルをざっと読んでみました。)
Bフレームは フレームタイプ ビデオのフレームを表すためにビデオ圧縮で使用されます。 Bフレームは、以前のフレームと将来のフレームの両方からの情報を使用して、各ビデオフレームを表すことができます。
古いDivXでエンコードされたビデオは、通常、 パックされたビットストリーム と呼ばれる醜い方法を使用します。これは、複数のビデオフレームを単一のAVIチャンクに配置します。パックドビットストリームは標準のMPEG-4ではなく、より多くのスペースを使用し、エンコード/デコードに多くのCPUパワーを必要とし、(最も重要なことですが)別のコンテナタイプにコピーすると問題が発生する可能性があります。これが警告の主な理由です。
ビデオを単にコピーするのではなく再エンコードしているので、問題ないはずです。元の動画を保持したいが、別のタイプのコンテナ(MP4またはMKVなど)にコピーしたい場合は、FFmpegフィルターを使用して最初にBフレームをアンパックするのが最善ですmpeg4_unpack_bframes
。
あなたはBフレームを次のような単純なもので開梱することができます
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi