Saya menggunakan ffmpeg untuk mengekstraksi bingkai kunci dari video. Ini perintahnya:
ffmpeg -i test2.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg
Bagaimana saya bisa mendapatkan indeks dari setiap frame kunci yang diekstrak dalam video? Sebagai contoh, untuk frame-I pertama, indeks akan menjadi 0, untuk yang kedua, akan menjadi 24, dll.
Jawaban:
Seperti @dstob yang disebutkan, Anda dapat menggunakan
ffprobe
untuk mendapatkan frame-I dan informasi terkaitnya.ffprobe
hadir dengan beberapa build statis pada halaman unduhan dan dapat dibangun dari sumber juga.Ini dengan asumsi Anda menggunakan Linux / Unix:
Ekstrak bingkai dan jenis bingkai
The
grep
perintah filter baris denganI
di dalamnya, dan menghitung indeks mereka (menggunakan-n
opsi). Thecut
perintah memilih kolom pertama dari output saja (indeks). Perhatikan bahwa indeks ini berbasis 1, bukan berbasis 0.Ganti nama file output berdasarkan indeks
Anda sebenarnya dapat mengirim indeks ini ke daftar:
Kemudian buat daftar semua gambar mini juga:
Lalu tempelkan keduanya bersama-sama:
Daftar sekarang berisi nama thumbnail dan indeks. Lakukan penggantian nama berdasarkan itu:
Di atas akan berganti nama
thumbnail-01.jpeg
menjadithumbnail-0.jpeg
. Perhatikan bahwa tidak ada bantalan nol pada indeks output. Jika Anda ingin menambahkan nol pada, katakanlah, 5 digit, gunakanprintf
:Di Windows, Anda akan melakukan hal yang persis sama dengan
ffprobe
tetapi mengurai output berbeda. Tidak tahu bagaimana melakukan penggantian nama di sana.sumber
[FRAME]
garis dan[/FRAME]
garis untuk setiappict_type
baris.-of csv
opsi untukffprobe
. Apa yang Anda gambarkan adalah format output default.Jika Anda ingin menggunakan FFMPEG seperti yang dinyatakan sebelumnya, Anda dapat mendaftar semua atau sebagian listing serta membuat jpg dengan yang berikut ini:
Hapus
-t 15
tanpa batas waktu atau ubah sesuai. Hapus-s 160x90 -f image2 thumbnail-%02d.jpeg
atau ubah sesuai dengan penghapusan thumbnail.sumber