Extrair quadros do vídeo usando o ffmpeg - quadro preciso?

0

Eu preciso extrair quadros da mais alta qualidade de um vídeo. Eu vou estar usando ffmpeg deste jeito:

ffmpeg -i source_vid.mp4 -ss 15:10.123 -to 15:11.249 frames/frame_%03d.png

Minhas perguntas:

  1. Vai ffmpeg encontrar automaticamente um quadro 'adequado' w.r.t. a -ss tempo, ou será "interpolar" entre dois quadros se o -ss o tempo não cai com precisão no tempo de um quadro?
  2. Se a resposta para a pergunta acima for 'interpolate', como posso garantir que obtenho o quadro 'correto' exato em vez de um quadro 'interpolado'?

(Peço desculpas se os termos que usei não forem precisos ou corretos; fique à vontade para corrigir minhas terminologias)

Obrigado!

pepoluan
fonte

Respostas:

1

Desde que você especificou ss e to Como opções de saída, o FFmpeg irá gerar todos os quadros desde o início do arquivo, mas descartá-los até que a posição inicial seja atingida. Mova essas opções para antes da entrada.

ffmpeg -ss 15:10.123 -to 15:11.249 -i source_vid.mp4 frames/frame_%03d.png

O FFmpeg não interpola a menos que um filtro seja especificado.

Para uma extração precisa de quadros por índice, use

ffmpeg -i source_vid.mp4 -vf trim=start_frame=n:end_frame=m frames/frame_%03d.png
Gyan
fonte
Eu pensei apenas ss como interruptor de entrada fez decodificar todos os quadros ...
jiggunjer
Ao usar ss como comutador de saída, ele só pode verificar o registro de data e hora após a geração do quadro de saída, de modo que o quadro de entrada foi decodificado e codificado para o formato de saída antes que o ffmpeg possa avaliar se deve mantê-lo ou descartá-lo.
Gyan