O vídeo FFMPEG das imagens sai com a mesma duração (ainda que incorreta), independentemente da taxa de quadros

0

Ao criar um vídeo a partir de uma sequência de imagens usando o ffmpeg, descubro que recebo um vídeo de mesmo tamanho, codificando-o como 30 fps ou 60 fps. Dado, no meu caso atual, 6329 arquivos de imagem, os dois comandos a seguir produzem arquivos de vídeo do mesmo tamanho:

1. ffmpeg -pattern_type glob -i '*.png' -r 30 -pix_fmt yuv420p out-30fps.mp4
2. ffmpeg -pattern_type glob -i '*.png' -r 60 -pix_fmt yuv420p out-60fps.mp4

Com o acima, ffprobe mostra o vídeo 1 é 00: 04: 13.17 e codificado a 30fps, enquanto o vídeo 2 é 00: 04: 13.15 e codificado a 60fps. Quando carregado no Quicktime Player, ambos os vídeos têm o mesmo tamanho e velocidade.

Então, duas perguntas:

  1. Estou confuso com a duração total do vídeo, pois 4m13s é um total de 253 segundos. A 30fps, 253 segundos devem exigir 7590 quadros, não 6329.

  2. O que é necessário para usar a sequência de quadros existente como se fosse uma fonte de 60fps em vez de 30? Ou, em outras palavras, como fazer com que o vídeo final tenha o dobro de quadros / segundo durante a reprodução?

por mix 09.05.2018 / 22:23

1 resposta

2

Para sequências de imagens, o ffmpeg assume que o fluxo de entrada tem uma taxa de quadros de 25, se não especificado de outra forma. Então, use

ffmpeg -pattern_type glob -framerate 60 -i '*.png' -r 60 -pix_fmt yuv420p out-60fps.mp4

O que -r 60 como uma opção de saída faz é criar um fluxo de taxa de quadros constante de 60 qps. Se o fluxo de entrada tiver uma taxa diferente, ele duplicará ou descartará quadros para atender a essa taxa.

    
por 10.05.2018 / 07:16

Tags