Extraia quadros I para imagens rapidamente

Extraia quadros I para imagens rapidamente

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 que ele pule de I-frame para I-frame e despeje-os em arquivos JPG/PNG. Além disso, preciso saber o carimbo de data/hora do quadro I.

A outra opção era usar o FFprobe para obter carimbos de data e 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 acessar cada quadro I muito rapidamente pressionando apenas as teclas de seta para cima ou para baixo, mas faz isso sem decodificar todos os quadros B/P.

Responder1

Usar

ffmpeg -skip_frame nokey -i file -vsync 0 -frame_pts true out%d.png

skip_framediz ao decodificador para processar apenas quadros-chave. -vsync 0(neste comando) preserva carimbos de data/hora. -frame_ptsdefine a parte numérica do nome do arquivo da 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 carimbo de data / hora de 75/30 = 2,50 segundos. Você pode adicionar -r 1000se quiser que os números representem milissegundos.

informação relacionada