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


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.


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

0

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


Das klingt etwas arbeitsintensiv, wenn man Bilder für z. B. jedes Bild in der Szene benötigt.
Kusalananda
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.