Eu tenho feito algumas experiências com ffmpeg
e o filtro mpdecimate
.
A saída é um vídeo com apenas as partes "ativas" e eu usei alguns truques com o FPS.
A saída será de 25fps para o player, mas será de 5fps no reallity (ajuste o número 5 nos filtros setpts
e first fps
para ajustar a velocidade. Se 25fps for bom para você (meu vídeo de teste mostrou alterações rápido demais para mim), elimine o último filtro e use -map [c]
.
Se você precisar ajustar o limite, veja aqui : (fe: mpdecimate=hi=64*12:lo=64*8:frac=0.33
)
mpdecimate
derrubaria os quadros, mas o comprimento é mantido. Com setpts
, você o força a calcular uma duração fixa para cada quadro e o primeiro fps
faz com que ele corresponda à velocidade "atual" definida por setpts
. O último fps
torna "jogável" (insere quadros duplicados para preencher o vídeo de 25 fps), (o vídeo de 5 fps no meu VLC não funciona muito bem, congelando de vez em quando)
ffmpeg -y -i input.mp4 -filter_complex "[0:v] mpdecimate [a] ; [a] setpts='N/(5*TB)' [b] ; [b] fps=5 [c] ; [c] fps=25 [d]" -map "[d]" -c:v libx264 ouput.mp4