4x remuestrean videoframes usando ffmpeg

9

Necesito acelerar el video por un factor de 4x, pero no quiero soltar los cuadros y promediarlos. Es decir, cada 4 cuadros se promedian y producen 1 cuadro de salida. La velocidad de fotogramas objetivo permanece igual, por lo que el video ahora es 4 veces más rápido.

¿Hay alguna manera de hacerlo en ffmpeg?

BarsMonster
fuente
3
¿Puede ser más específico acerca de cómo deben "promediarse"? ¿Qué método quieres usar?
llogan
@LordNeckbeard (f1 + f2 + f3 + f4) / 4: promedio simple. Por lo tanto, cada cuadro resultante tiene rastros débiles del movimiento en todos los subtramas.
BarsMonster
@BarsMonster Dudo que ffmpeg pueda hacer esto. ¿Has visto este efecto hecho de otra manera? ¿Sabes cómo se ve realmente?
Jim Mack
@JimMack Actualmente lo hice manualmente en VirtualDub, tienen filtro de interpolación, con una interpolación de 0.5x que promedia correctamente 2 cuadros. Aquí está el resultado: youtube.com/watch?v=8zrws5CGWsI Se puede ver que cada cuadro tiene un movimiento de 2 subtramas, por lo que es un poco más suave. Pero hacerlo en un cmdline sería mucho más rápido en el futuro.
BarsMonster
Puede valer la pena probar slowmoVideo , pero no sé si tiene un cli. El filtro de velocidad de cuadros FFmpeg parece realizar interpolación, pero no parece ajustarse a sus necesidades.
llogan

Respuestas:

9

ffmpeg con esta cadena de filtros lo hace:

ffmpeg -i input -vf "tblend=average,framestep=2,tblend=average,framestep=2,setpts=0.25*PTS" -r srcfps -{encoding parameters} output

srcfps debe reemplazarse con la velocidad de cuadros de su entrada.

Gyan
fuente
1
También probé para x16 usando "tblend = average, framestep = 2, tblend = average, framestep = 2, tblend = average, framestep = 2, tblend = average, framestep = 2, setpts = 0.0625 * PTS"
BarsMonster