Ich meine, wie man aus einem Video wie Screenshots Bilddateien erzeugt.
Ich meine, wie man aus einem Video wie Screenshots Bilddateien erzeugt.
Antworten:
Versuche es mit ffmpeg
ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg
Sie können die Dokumentation hier lesen
-r 1
ist für die Anzahl der Bilder pro Sekunde. Also für 60ips oder 24 ist es -r 24
. Und um den Extrakt zu begrenzen, ist es -ss [start] -t [duration]
.
Ich habe gerade die neueste Version von VLC für Windows 32 - 2.1.2 Rincewind heruntergeladen und es funktioniert einwandfrei, um dies zu tun.
Schritte:
1 - Klicken Sie auf Extras> Einstellungen und dann auf das Optionsfeld Alle
2 - Scrollen Sie nach unten und klicken Sie auf das + -Zeichen neben Video, um es zu erweitern
3 - Scrollen Sie nach unten und klicken Sie auf Szenenfilter und geben Sie die Informationen für das Verzeichnispfad-Präfix ein (wo Sie Bilder speichern möchten). Klicken Sie nicht auf Speichern.
4 - Scrollen Sie nach oben und klicken Sie unter Filter auf das Wort Video
5 - Aktivieren Sie das Kontrollkästchen für den Szenenvideofilter und klicken Sie auf Speichern.
6 - Öffne und starte ein Video und es speichert .png's
7 - Um das Speichern von Bildern zu beenden, kehren Sie zu Schritt 5 zurück und deaktivieren Sie den Szenenvideofilter. Einfach wirklich, wenn Sie wissen, wo Sie die Einstellungen finden.
Ich hoffe das hilft
#!/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
In VLC können Sie mit der rechten Maustaste klicken, Video, Schnappschuss machen