**Questa è una serie di articoli legati a FFmpeg, semplici comandi per fare editing video da riga di comando, che è più cool**
Cambiare la velocità di un video con FFmpeg è piuttosto semplice e funziona indipendentemente dal suo formato: possiamo sia velocizzarlo che rallentarlo, aumentando o diminuendo, appunto, la velocità. Prima che ve lo chiediate: sì, verrà modificata anche la velocità dell’audio, quindi è consigliabile rimuovere l’audio con FFmpeg prima di procedere.
Cominciamo. Il filtro da utilizzare è setpts e dovremmo utilizzarlo mettendolo tra double quotes, come in questo esempio per aumentare la velocità:
ffmpeg -i prova.mov -filter:v "setpts=0.5*PTS" veloce_il_doppio.mov
Cosa abbiamo fatto? In sostanza ogni frame video ha un timestamp (PTS), che è numerico e sequenziale. Tutto quello che facciamo è modificare il timestamp per ciascun frame del video, moltiplicandolo per un numero. Se vogliamo velocizzare il video dobbiamo quindi usare un numero minore di zero: moltiplicando, ad esempio, i frame con timestamp 1 e timestamp 2 per 0.5, li porteremo a timestamp 0.5 e timestamp 1. Saranno quindi visualizzati più velocemente, a parità di frame al secondo (FPS).
Se invece volessimo rallentare la velocità, dovremmo usare un numero maggiore di 1 come moltiplicatore:
ffmpeg -i prova.mov -filter:v "setpts=2*PTS" veloce_la_meta.mov
In questo caso, il video in output sarà lungo il doppio.
Come ci accennavo, ci potrebbe essere il problema dell’audio: modificando la velocità del video ne modifichiamo anche l’audio! Consulta il mio post su come togliere l’audio da un video per utilizzare il filter:v descritto qui assieme al flag -an che rimuoverà l’audio.