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
ffprobe -select_streams v -show_frames \
-show_entries frame=pict_type \
-of csv bbb480.avi \
| grep -n I | cut -d ':' -f 1
The grep
perintah filter baris dengan I
di dalamnya, dan menghitung indeks mereka (menggunakan -n
opsi). The cut
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:
ffprobe -select_streams v -show_frames \
-show_entries frame=pict_type \
-of csv bbb480.avi \
| grep -n I | cut -d ':' -f 1 > frame_indices.txt
Kemudian buat daftar semua gambar mini juga:
ls -1 thumbnails*.jpeg > thumbnails.txt
Lalu tempelkan keduanya bersama-sama:
paste thumbnails.txt frame_indices.txt > combined.txt
Daftar sekarang berisi nama thumbnail dan indeks. Lakukan penggantian nama berdasarkan itu:
while read -r thumbnail index; do
newIndex=$(echo $index - 1 | bc) # subtract 1 from the index
mv -- "$thumbnail" "thumbnail-$newIndex.jpeg" # rename file
done < combined.txt
Di atas akan berganti nama thumbnail-01.jpeg
menjadi thumbnail-0.jpeg
. Perhatikan bahwa tidak ada bantalan nol pada indeks output. Jika Anda ingin menambahkan nol pada, katakanlah, 5 digit, gunakan printf
:
newIndex=$(printf '%05d' $(echo $index - 1 | bc))
Di Windows, Anda akan melakukan hal yang persis sama dengan ffprobe
tetapi mengurai output berbeda. Tidak tahu bagaimana melakukan penggantian nama di sana.