ffmpegの出力ファイル名に入力ファイル名を含める方法

ffmpegの出力ファイル名に入力ファイル名を含める方法

ビデオからフレームを画像に抽出し、各画像に名前を付けたいです。どうすればいいですか?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が指摘したように、変数参照が修正されました。

関連情報