複数のビデオファイルを複数のGIFに変換できるコマンドは何ですか?
次のコマンドを使用して、1つのビデオをGIFに変換しました。
ffmpeg -i input.flv -vf scale=320:-1 output.gif
私はbashスクリプトやループを持ついくつかのコマンドが必要だと仮定します。
このスレッド私の質問とあいまいに関連しています。
答え1
次のコマンドを使用できます
for f in ./*.flv; do
ffmpeg -i "$f" -vf scale=320:-1 "${f%.*}.gif"
done
これは、.で終わる現在のディレクトリ内のすべてのファイルを繰り返し.flv
処理し、拡張子を.gif
.
これを正しく機能させるために、ファイル名にスペースを含めないでください。
あるいは、GNUシステムでは次のものを使用できます。
find . -maxdepth 1 -name "*.flv" -print0 |
sed 's/\.flv\x00/\x00/g' |
xargs -r0 -I FILENAME ffmpeg -i FILENAME.flv -vf scale=320:-1 FILENAME.gif
.flv
これにより、現在のディレクトリで次に終わるすべてのファイル(隠しファイルを含む)が検索され、リストが -\0
で区切られた文字列として標準出力に印刷されます。その後、この文字列はフィルタ処理され、sed
拡張子を削除してコマンドxargs
を実行する文字列に渡され、リストの実際のファイル名にffmpeg -i FILENAME.flv -vf scale=320:-1 FILENAME.gif
置き換えられます。FILENAME
現在のディレクトリとすべてのサブディレクトリ(およびそのサブディレクトリなど)のすべてのファイルを変換するには、-maxdepth 1
コマンドからその部分を削除します。