Wie extrahiere ich Bilder aus einer Videodatei?

Antworten:

18

Versuche es mit ffmpeg

ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg

Sie können die Dokumentation hier lesen

YoMismo
quelle
1
Ihre Verbindung scheint unterbrochen zu sein
Nolwennig
@Nolwennig. Behoben, nicht so spezifisch wie die vorherige, aber zumindest ist die offizielle Dokumentation kaum zu knacken.
YoMismo
2
-r 1ist 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].
Sandburg
Danke, arbeite gut an Xubuntu
Indacochea Wachín
2

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.

Florence Taylor
quelle
0

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
Tom
quelle
0

In VLC können Sie mit der rechten Maustaste klicken, Video, Schnappschuss machen

user375835
quelle
Das klingt etwas arbeitsintensiv, wenn man Bilder für z. B. jedes Bild in der Szene benötigt.
Kusalananda