私は、画像の中央に5秒間ズームパンする基本的な動画を作成しようとしています(ffmpeg.org ウェブサイト)。以下のコマンドは機能しますが、コーヒーを 5 杯飲んだ後の手よりも震えます。
ffmpeg -framerate 25 -loop 1 -i island.jpg -filter_complex "[0:v]scale=-2:480,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[v]" -map "[v]" -y out.mp4
私はffmpeg バグ #4298。 提案されている回避策は、scale
の前にフィルターを使用することですzoompan
。 しかし、私の例で示されているように、これでもまだ効果がないようです。
任意の x 値または y 値が揺れ/ぎくしゃく/不安定な効果を引き起こすようです。
効果的な回避策を提案してくれる人はいますか? よろしくお願いします!
バージョン情報:
ffmpeg version 3.1.2-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (Debian 5.4.0-6) 20160609
答え1
避ける下事前にスケーリングします。x および y 式に trunc 関数を適用します。または、事前にアップスケールします。後者をお勧めします。これでほとんどのジッターが解消されます。
ffmpeg -framerate 25 -loop 1 -i island.jpg -filter_complex "[0:v]scale=8000x4000,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[v]" -map "[v]" -y out.mp4
基本的に、フィルターは とx
式の値を丸めますy
が、切り上げまたは切り捨てが可能です。これにより、パンの方向の変化による不均一な動きが生じます。事前に解像度を上げると、丸めを小さくすることができます。