4x reamostrar vídeo-quadros usando ffmpeg

8

Preciso acelerar o vídeo com um fator de 4x, mas não quero descartar os quadros e sim calculá-los. Ou seja, cada 4 quadros são calculados em média e produzem 1 quadro de saída. A taxa de quadros alvo permanece a mesma, então o vídeo agora é 4 vezes mais rápido.

Existe uma maneira de fazer isso no ffmpeg?

BarsMonster
fonte
3
Você pode ser mais específico sobre como eles devem ser "calculados em média"? Qual método você deseja usar?
Llogan 5/10
@LordNeckbeard (f1 + f2 + f3 + f4) / 4 - média simples. Portanto, cada quadro resultante tem traços fracos do movimento em todos os sub-quadros.
BarsMonster
@BarsMonster Duvido que o ffmpeg possa fazer isso. Você já viu esse efeito de outra maneira? Você sabe como ele realmente se parece?
Jim Mack
@JimMack No momento, eu fiz isso manualmente no VirtualDub, eles têm filtro de interpolação, com interpolação de 0,5x faz a média correta de 2 quadros. Aqui está o resultado: youtube.com/watch?v=8zrws5CGWsI Pode-se ver que cada quadro possui movimento de 2 sub-quadros, por isso é um pouco mais suave. Mas fazer isso em um cmdline seria muito mais rápido no futuro.
BarsMonster
slowmoVideo pode valer a pena tentar, mas não sei se ele tem um CLI. O filtro de taxa de quadros FFmpeg parece executar interpolação, mas não parece atender às suas necessidades.
Llogan 5/10

Respostas:

8

O ffmpeg com esta cadeia de filtros faz:

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

srcfps deve ser substituído pela taxa de quadros da sua entrada.

Gyan
fonte
11
Também tentei para x16 usando "tblend = média, framestep = 2, tblend = média, framestep = 2, tblend = média, framestep = 2, tblend = média, framestep = 2, setpts = 0,0625 * PTS"
BarsMonster