複数の動画を複数のGIFに変換

複数の動画を複数のGIFに変換

複数のビデオファイルを複数の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コマンドからその部分を削除します。

関連情報