このパターンに従う画像がたくさんあります。
0001.png
0004.png
0007.png
0010.png
0013.png
0016.png
0019.png
...
それらは正しい順序ですが、FFMPEGは最初のファイル以降を無視します0002.png
。これらのファイルを結合するにはどうすればよいですか?
私は試した
ffmpeg -i %04d.png out.avi
このパターンに従う画像がたくさんあります。
0001.png
0004.png
0007.png
0010.png
0013.png
0016.png
0019.png
...
それらは正しい順序ですが、FFMPEGは最初のファイル以降を無視します0002.png
。これらのファイルを結合するにはどうすればよいですか?
私は試した
ffmpeg -i %04d.png out.avi
回答:
ffmpeg 0.11.1では、次のように簡単です。
ffmpeg -f image2 -i %*.png out.avi
man
「ビデオおよびオーディオファイルフォーマット変換」の下の例でページ:
イメージシーケンスをインポートする場合、
-i
シェルのようなワイルドカードパターン(グロビング)を内部で展開することもサポートしています。あなたの実際のファイル名とシェルのグロブ展開に干渉の可能性を下げるためには、単一でそれらを付けることによって、アクティベートグロブメタ文字に必要とされている%
のように、文字foo-%*.jpeg
、foo-%?%?%?.jpeg
またはfoo-00%[234%]%*.jpeg
。
コメントごとに更新:最近のバージョンでは、-i '*.png'
構文を使用する必要があります。
glob_sequence
パターンタイプが推奨されていませんが、glob
パターンタイプではありません。MulvyaとPeter Cordesの答えは機能します。
Pattern type 'glob_sequence' is deprecated: use pattern_type 'glob' instead
Pattern type 'glob_sequence' is deprecated
...)に対するGoogleの上位の結果であるため、上記のrymoによって指定されたコマンド(具体的には-i %*.png
)が警告を引き起こします。これをなくすには、Peter Cordesの回答(-i '*.png'
)でわずかに異なる構文を使用します。
私のコメントの回避策に加えて、ffmpeg ドキュメントからこの構文を使用できるはずです:
ffmpeg -f image2 -pattern_type glob -i '*.png' out.avi
引用符は重要です*
。シェルを展開せずにを表示するにはffmpegが必要です。
*.png
、単一引用符で(そう'*.png'
)それはUnixスタイルのシェル(そう、OSXとLinuxなど)によって展開されないように。
http://www.ffmpeg.org/faq.htmlから:名前を変更する写真が多数ある場合は、次のコマンドを使用して負担を軽減できます。このコマンドは、bourneシェル構文を使用して、* jpgに一致する現在のディレクトリ内のすべてのファイルを、 'img001.jpg'、 'img002.jpg'の順序で '/ tmp'ディレクトリにシンボリックにリンクします。
x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done
seqA-[0001-n].png
、seqB-[0001-n].png
などを組み合わせました。image2グロビングと連結フィルターをいじるよりもはるかに簡単です。
for i in *jpg
しfor i in /full/path/*jpg
、すべてのシンボリックリンクが壊れていたので、