Estou usando o ffmpeg para extrair quadros-chave de um vídeo. Este é o comando:
ffmpeg -i test2.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg
Como posso obter o índice de cada quadro-chave extraído no vídeo? Por exemplo, para o primeiro quadro I, o índice seria 0, para o segundo, 24, etc.
Respostas:
Como o @dstob mencionado, você pode usar
ffprobe
para obter os quadros I e as informações associadas.ffprobe
vem com algumas das compilações estáticas na página de download e também pode ser criada a partir da fonte.Isso pressupõe que você esteja no Linux / Unix:
Extrair quadros e tipos de quadros
O
grep
comando filtra as linhas comI
elas e conta seu índice (usando a-n
opção). Ocut
comando seleciona apenas a primeira coluna da saída (o índice). Observe que esse índice é baseado em 1, não em 0.Renomear arquivos de saída com base no índice
Na verdade, você pode canalizar esses índices para uma lista:
Em seguida, faça uma lista de todas as miniaturas:
Em seguida, cole os dois juntos:
A lista agora contém o nome da miniatura e o índice. Execute uma renomeação com base nisso:
O acima será renomeado
thumbnail-01.jpeg
parathumbnail-0.jpeg
. Observe que não há preenchimento zero no índice de saída. Se você deseja zerar com, digamos, 5 dígitos, useprintf
:No Windows, você faria exatamente o mesmo com,
ffprobe
mas analisará a saída de maneira diferente. No entanto, não faço ideia de como renomear lá.fonte
[FRAME]
linha e uma[/FRAME]
linha para cadapict_type
linha.-of csv
opçãoffprobe
. O que você está descrevendo é o formato de saída padrão.Se você deseja usar o FFMPEG como indicado originalmente, é possível listar a listagem total ou parcial, além de criar jpg com o seguinte:
Remova
-t 15
sem limite de tempo ou mude para se adequar. Remova-s 160x90 -f image2 thumbnail-%02d.jpeg
ou altere para se adequar à remoção de miniaturas.fonte