258

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が強制するある種のアスペクト比はありますか?

4

7 に答える 7

333

高さについて

トリミングフィルターを使用して、幅高さを 2 で割り切れるようにします。

ffmpeg -i input.mp4 -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4

トリミングの代わりにスケーリングする場合は、 に変更cropscaleます。

または高さ

スケールフィルターの使用。これにより、幅が 1280 になります。高さはアスペクト比を維持するために自動的に計算され幅は 2 で割り切れます。

ffmpeg -i input.mp4 -vf scale=1280:-2 output.mp4

上記と同様ですが、高さを 720 にし、幅を自動的に計算します。

ffmpeg -i input.mp4 -vf scale=-2:720 output.mp4

-2高さの両方に使用することはできませんが、既に 1 つのディメンションを指定している場合は、使用-2するのが簡単な解決策です。

于 2015-04-11T19:48:21.207 に答える