Come stabilizzare un video usando FFmpeg e vid.stab
Recentemente ho ripreso ad usare la mia HTC Re Camera, una vecchia fotocamera istantanea, perché volevo provare a fare alcuni video. I risultati sono stati molto deprimenti, ma soprattutto sono venuti dei filmati molto mossi. Fortunatamente ci sono FFmpeg e vid.stab che mi hanno aiutato a stabilizzarli. In questo post spiego come installare questo plugin e usarlo, mostrando poi i risultati in due video di confronto.
HTC Re Camera è stata un'eccellente fotocamera istantanea (prodotta dal 2014 e ora fuori produzione) con la portabilità come carta vincente. Inoltre ha una stabilizzazione video ma non aiuta più di tanto quando corro o cammino, i video risultano quasi sempre tremolanti.
Come sempre Internet ha già la risposta pronta e mi ha suggerito vidstab, una libreria opzionale per FFmpeg
- Video Stabilization Using VidStab and FFmpeg on Linux
- Stabilizing GoPro Video with FFmpeg and vid.stab
Installazione
In Ubuntu 18.04, FFmpeg non ha abilitato vidstab, quindi lo puoi compilare da zero o come nel mio caso usare una build statica di FFmpeg che ha già abilitato vid.stab e la puoi scaricare da qui: FFmpeg Static Builds. Lo scarico secondo il mio sistema, l'ho estratto in una directory e collegato in uno script bash che ha tutte le impostazioni necessarie.
Comandi da linea di comando
Ci sono molte combinazioni possibili, ti riporto quelle che uso di solito, le ho suddivise in un passo e due passi. Nel primo FFmpeg non analizza il flusso video, è più veloce ma la qualità è migliore nel secondo.
Un passo
ffmpeg -i input.mp4 -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 output.mp4
Due passi
ffmpeg -i input.mp4 -vf vidstabdetect=stepsize=32:shakiness=10:accuracy=10:result=transforms.trf -f null - ffmpeg -y -i input.mp4 -vf vidstabtransform=input=transforms.trf:zoom=0:smoothing=10,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -tune film -acodec copy -preset slow output.mp4
Infine questo è lo script che di solito lancio nella directory dove ho i file video
#!/bin/bash # Sources: # https://trac.ffmpeg.org/wiki/Create%20a%20mosaic%20out%20of%20several%20input%20videos # https://stackoverflow.com/questions/11552565/vertically-or-horizontally-stack-several-videos-using-ffmpeg # https://ffmpeg.org/pipermail/ffmpeg-user/2017-August/037057.html path="/absolute_path_of_the_downloaded_FFmpeg" if [ -z "$1" ] then echo "Usage:" echo "stabilizator.sh filename.mp4" exit 0 fi # one step $path/ffmpeg -y -i $1 \ -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 ${1%.*}_oneStep.mp4 # two steps $path/ffmpeg -y -i $1 \ -vf vidstabdetect=stepsize=32:shakiness=10:accuracy=10:result=transforms.trf -f null - $path/ffmpeg -y -i $1 \ -vf vidstabtransform=input=transforms.trf:zoom=0:smoothing=10,unsharp=5:5:0.8:3:3:0.4 \ -vcodec libx264 -tune film -acodec copy -preset slow \ ${1%.*}_twoSteps.mp4
Esempi
Il primo esempio è una vista panoramica di una rosa:
Il secondo una corsa:
Aggiungi un commento