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.
YoMismo
sumber
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.

Florence Taylor
sumber
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
Tom
sumber
0

Di VLC Anda dapat mengklik kanan, Video, Ambil Foto

pengguna375835
sumber
Ini terdengar agak padat karya jika seseorang membutuhkan gambar untuk misalnya setiap frame dalam adegan.
Kusalananda