ビデオからフレームを画像に抽出し、各画像に名前を付けたいです。どうすればいいですか?InputFileName_number.bmp
次のコマンドを試しました。
ffmpeg -i clip.mp4 fr1/$filename%d.jpg -hide_banner
しかし、私が望むように動作しません。たとえば、私は取得したいが、clip_1.bmp
私が得るものです1.bmp
。
複数のビデオから画像を抽出するためにGNU Parallelと一緒に使用しようとしていますが、どちらも初めてなので、動的ファイルの名前を付ける王input
- >を望んでいますinput_number.bmp
。
答え1
$filename
シェル変数として扱われます。
何について
ffmpeg -i clip.mp4 fr1/clip_%d.jpg -hide_banner
または
$mp4filename=clip
ffmpeg -i ${mp4filename}.mp4 fr1/${mp4filename}_%d.jpg -hide_banner
?
修正する:Gnu並列で使用するには、並列-i
オプションを使用できます。
-i
通常、コマンドはコマンドラインの末尾に引数を渡します。このオプションを使用すると、コマンドの「{}」インスタンスが引数に置き換えられます。
結果のコマンドラインは次のように簡単にできます。
parallel -i ffmpeg -i {} fr1/{}_%d.jpg -hide_banner -- *.mp4
出力ファイルで拡張子を許可できる場合。
同時 I/O により速度が遅くなるため、実際には既存のハードドライブで並列に実行したくない場合があります。
編集する:@DonHolgoが指摘したように、変数参照が修正されました。