Como @dstob mencionado, você pode usar ffprobe
para obter os quadros-I e suas informações associadas. ffprobe
vem com algumas das compilações estáticas na página de download e também podem ser criadas a partir da origem.
Isto supõe que você esteja no Linux / Unix:
Extrair quadros e tipos de quadros
ffprobe -select_streams v -show_frames \
-show_entries frame=pict_type \
-of csv bbb480.avi \
| grep -n I | cut -d ':' -f 1
O comando grep
filtra linhas com I
e conta seu índice (usando a opção -n
). O comando cut
seleciona apenas a primeira coluna da saída (o índice). Observe que esse índice é baseado em 1, não em 0.
Renomeie os arquivos de saída com base no índice
Você pode, na verdade, canalizar esses índices para uma lista:
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
Em seguida, faça uma lista de todas as miniaturas também:
ls -1 thumbnails*.jpeg > thumbnails.txt
Depois cole os dois juntos:
paste thumbnails.txt frame_indices.txt > combined.txt
A lista agora contém o nome da miniatura e do índice. Execute uma renomeação com base nisso:
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
As opções acima renomearão thumbnail-01.jpeg
para thumbnail-0.jpeg
. Observe que não há preenchimento com zero no índice de saída. Se você quiser zerar para, digamos, 5 dígitos, use printf
:
newIndex=$(printf '%05d' $(echo $index - 1 | bc))
No Windows, você faria exatamente o mesmo com ffprobe
, mas analisaria a saída de maneira diferente. Não tenho ideia de como renomear lá.