Se você deseja procurar com precisão de quadros, tente colocar seu sinal -ss após o arquivo de entrada.
Então, algo assim:
ffmpeg -i original.mp4 -ss 00:00:04 -vframes 1 -f image2 0.png .
Colocar o sinalizador ss antes do arquivo de entrada será uma "estimativa aproximada" em termos de PTS, mas tem que se ajustar a um quadro I para funcionar. Isso acontece muito mais rapidamente do que colocar o ss após seu arquivo de entrada, mas com um custo menor.
Quando você colocar o sinalizador ss após o arquivo de entrada, o FFmpeg decodificará desde o início do arquivo até o início do tempo -ss . Em seguida, ele despeja todas as informações antes do tempo de ss ... Por isso, leva muito mais tempo, mas deve ser preciso.