FFMPEG (libx264) 「高さが2で割り切れない」 [closed] 質問する

FFMPEG (libx264) 「高さが2で割り切れない」 [closed] 質問する

libx264 コーデックを使用して、FFMPEG でフレームのセットから .mp4 ビデオをエンコードしようとしています。

私が実行しているコマンドは次のとおりです:

/usr/local/bin/ffmpeg -r 24 -i frame_%05d.jpg -vcodec libx264 -y -an video.mp4

時々、次のエラーが発生します。

[libx264 @ 0xa3b85a0] height not divisible by 2 (520x369)

少し調べてみたところ、この問題はスケーリング アルゴリズムに関係しているようで、-vf 引数を追加することで修正できるようです。

しかし、私の場合はスケーリングはしたくありません。理想的には、フレームとまったく同じ寸法を維持したいです。何かアドバイスはありますか? h264 が強制するアスペクト比のようなものはありますか?

ベストアンサー1

元の質問に対する答えは、ビデオを拡大縮小するのではなく、エラーを修正することですheight not divisible by 2。これは、次のフィルターを使用して実現できます。

-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"

フルコマンド:

ffmpeg -i frame_%05d.jpg -vcodec libx264 \
 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -r 24 \
 -y -an video.mp4 

基本的に、.h264 には偶数次元が必要なので、このフィルターは次のようになります。

  1. 元の高さと幅を2で割る
  2. 最も近いピクセルに切り上げます
  3. それをもう一度2倍にして偶数にします
  4. この数まで黒のパディングピクセルを追加します

フィルターパラメータを追加することでパディングの色を変更できます:color=whiteパッドのドキュメント

おすすめ記事