つまり、スクリーンショットのようなビデオから画像ファイルを生成する方法です。
ffmpeg
でお試しください
ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg
ドキュメントを読むことができます ここ
-i inputfile.avi
ビデオ入力ファイルはinputfile.aviです。-r 1
ビデオの1秒あたり1つの画像を抽出します。 1秒あたりに取得する画像の数にその数を置き換えます。-f image2
画像出力形式を強制します。プログラムはファイル拡張子から出力画像形式を選択しようとするため、これを省略できる可能性があります。image-%3d.jpeg
出力画像の名前。%3dは、出力に生成された画像のシーケンス番号が3桁の10進数であることを示します。0を埋め込んだ数値が必要な場合は、%03dを使用するだけです。VLC for Windows 32-2.1.2 Rincewindの最新バージョンをダウンロードしましたが、これで問題なく動作します。
手順:
1-[ツール]> [設定]をクリックし、ラジオボタン[すべて]をクリックします。
2-下にスクロールして、[ビデオ]の横にある+記号をクリックして展開します
3-下にスクロールして、シーンフィルターをクリックし、ディレクトリパスプレフィックス(フレームを保存する場所)の情報を入力します。 「保存」をクリックしないでください。
4-上にスクロールして、[フィルター]の下の[Wordビデオ]をクリックします。
5-シーンビデオフィルターのチェックボックスをクリックし、[保存]をクリックします。
6-ビデオを開いて実行すると、.pngが保存されます
7-フレームの保存を停止するには、ステップ5に戻り、シーンビデオフィルターのチェックを外します。設定を見つける場所がわかれば、本当に簡単です。
この助けを願っています
#!/bin/bash
source_dir="."
output_dir="."
input_file_types=(avi wmv flv mkv mpg mp4)
output_file_type="jpg"
convert() {
echo "" | ffmpeg -ss $ss -y -i "$in_file" -an -f image2 -vframes 1 "$output_dir/$out_file"
}
for input_file_types in "${input_file_types[@]}"
do
find "$source_dir" -name "*.$input_file_types" -print0 | while IFS= read -r -d $'\0' in_file
do
echo "Processing…"
echo ">Input "$in_file
# Replace the file type
out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_types/\1$output_file_type/g")
echo ">Output "$out_file
# get video duration
# fulltime=`ffmpeg -i "$in_file" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//`;
# hour=`echo $fulltime | cut -d ':' -f 1`;
# minute=`echo $fulltime | cut -d ':' -f 2`;
# second=`echo $fulltime | cut -d ':' -f 3 | cut -d '.' -f 1`;
# seconds=`expr 3600 \* $hour + 60 \* $minute + $second`;
# ss=`expr $seconds / 2`; # from the middle of video
ss=`expr 10`; # from the 10sec of video
# Convert the file
convert "$in_file" "$out_file"
if [ $? != 0 ]
then
echo "$in_file had problems" >> ffmpeg-errors.log
fi
echo ">Finished "$out_file "\n\n"
done
done
VLCでは、右クリック、ビデオ、スナップショットの作成ができます