Eu usei o FFmpeg para extrair todos os quadros I de um arquivo MKV/MP4, mas o FFmpeg parece decodificar todos os quadros para fazer isso, então leva muito tempo se o arquivo de vídeo for 1080p e tiver mais de 10 minutos. Eu só quero pular de I-frame para I-frame e despejá-los em arquivos JPG/PNG. Além disso, preciso saber o timestamp do I-frame.
A outra opção era usar o FFprobe para obter carimbos de data/hora para todos os quadros I, mas isso também decodifica o arquivo inteiro.
Estou tentando fazer algo semelhante ao Avidemux. No Avidemux você pode passar para cada I-frame muito rápido apenas pressionando as teclas de seta para cima ou para baixo, mas isso sem decodificar todos os quadros B/P.
Usar
skip_frame
diz ao decodificador para processar apenas quadros-chave.-vsync 0
(neste comando) preserva timestamps.-frame_pts
define a parte numérica do nome do arquivo de imagem de saída para representar o carimbo de data/hora. A interpretação do número requer que você conheça a taxa de quadros, por exemplo, se a taxa de quadros for 30, então um nome de imagem out75 corresponde a um timestamp de 75/30 = 2,50 segundos. Você pode adicionar-r 1000
se quiser que os números representem milissegundos.