Bagaimana cara mengekstrak gambar dari file video?


Jawaban:


20

Coba dengan ffmpeg

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

Anda dapat membaca dokumentasinya di sini

  • -i inputfile.avi File input video adalah inputfile.avi
  • -r 1ekstrak 1 gambar per detik video. Ganti nomor itu dengan jumlah gambar yang ingin Anda dapatkan per detik.
  • -f image2 memaksa format output gambar, Anda mungkin dapat menghilangkan ini karena program mencoba untuk memilih format gambar output dari ekstensi file.
  • image-%3d.jpeg nama gambar output,% 3d menunjukkan bahwa gambar yang dihasilkan output akan memiliki nomor urut ada 3 desimal, jika Anda ingin nomor yang diisi dengan nol Anda hanya perlu menggunakan% 03d.

1
tautan Anda tampaknya rusak
Nolwennig

@Nolwennig. Diperbaiki, tidak sespesifik yang sebelumnya tetapi setidaknya adalah dokumentasi resmi dan sulit untuk dilanggar.
YoMismo

3
-r 1adalah untuk jumlah gambar per detik. Jadi untuk 60ips, atau 24, itu -r 24. Dan untuk membatasi ekstrak, itu -ss [start] -t [duration].
Sandburg

Terima kasih, bekerja dengan baik di Xubuntu
Indacochea Wachín

3

Saya baru saja mengunduh versi terbaru VLC untuk Windows 32 - 2.1.2 Rincewind dan berfungsi baik untuk melakukan ini.

Langkah:

1 - Klik Alat> Preferensi dan klik tombol radio Semua

2 - Gulir ke bawah dan klik tanda + di sebelah Video untuk membuka

3 - Gulir ke bawah dan klik Scene Filter dan isi info untuk awalan Direktori Path (tempat Anda ingin menyimpan bingkai). Jangan klik Simpan.

4 - Gulir ke atas dan klik pada kata Video di bawah Filter

5 - Klik kotak centang untuk filter video Suasana dan klik Simpan.

6 - Buka dan jalankan video dan itu akan menyimpan .png

7 - Untuk berhenti menyimpan bingkai, kembali ke langkah 5 dan hapus centang filter video Pemandangan. Mudah sekali setelah Anda tahu di mana menemukan pengaturan.


0

Semoga bantuan ini

#!/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

Di VLC Anda dapat mengklik kanan, Video, Ambil Foto


Ini terdengar agak padat karya jika seseorang membutuhkan gambar untuk misalnya setiap frame dalam adegan.
Kusalananda
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.