
0 から任意の番号までの画像がいっぱい入ったフォルダーがあり、これらの画像をビデオに変換する必要があります。これらはすべて .PNG ファイルです。私が使用しているコマンドは次のとおりです。
ffmpeg.exe -f image2 -framerate 30 -pattern_type sequence -start_number 1 -r 30 -i "img%%04d.jpg" -s 1280x720 test.avi
これを実行すると、次のエラーが発生します:
[image2 @ 002be580] Could find no file with path 'img%04d.jpg' and index in the range 1-5
img%04d.jpg: No such file or directory
これを機能させるには何を変更すればよいでしょうか?
答え1
シーケンスパターン
デフォルトのパターン タイプ。、などがimg%d.jpg
想定されます。 を使用すると、、 などが想定されます。img1.jpg
img2.jpg
img%04d.jpg
img0001.jpg
img0002.jpg
ffmpeg -framerate 30 -i img%d.jpg -vf scale=1280:-1,format=yuv420p output.mp4
グロブパターン
glob ワイルドカード パターン タイプは柔軟です。このパターン タイプは、libavformat が glob サポート付きでコンパイルされている場合に使用できます。
ffmpeg -framerate 30 -pattern_type glob -i "*.png" -vf scale=1280:-1,format=yuv420p output.mp4
ノート
を参照してくださいFFmpeg image2 デマルチプレクサのドキュメント詳細については。
の
scale
フィルターこの例では、幅が 1280 に変更され、アスペクト比を維持するために高さが自動的に計算されます。バージョン、入力タイプ(PNGなど)、エンコーダ(特にlibx264)、エンコードオプションによっては、
ffmpeg
クロマサブサンプリングを回避または最小限に抑えようとする場合がありますが、FFmpegベースではないほとんどのプレーヤーでは出力を適切にデコードできません。format
フィルター出力では、これらのプレーヤーと互換性のあるクロマ サブサンプリング スキームが使用されるようになります。
答え2
私の場合は、同じディレクトリで cmd を実行して次のようにするとうまくいきました。
ffmpeg -framerate 20 -i Animation%3d.jpg -r 5 -y fileout.mp4
Animation000~999.jpg という名前のファイルの場合。
これは私にはうまくいきませんでした:
ffmpeg -framerate 20 -pattern_type glob -i "*.jpg" -vcodec libx264 out.mp4
次のエラーが発生しました:
パターン タイプ 'glob' が選択されましたが、この libavformat ビルドでは globbing はサポートされていません *.jpg: 関数は実装されていません