Ruotare video di 90-180-270 gradi con FFmpeg

 

Ultimamente ho avuto la necessità di ruotare un video fatto da me di 180 gradi, per intenderci la visione era sotto-sopra. Per una semplice visione del video non ci sono problemi, basta usare VLC, ed andare in: Strumenti-Effetti_Filtri-Effetti_Video-Geometria-Rotazione, e da qui possiamo ruotare il nostro video a piacimento. Per ruotare e quindi salvare il video, io come sempre mi sono affidato ad FFmpeg. Come prima cosa bisogna verifica se si hanno i filtri abilitati:

 

$ ffmpeg -filters

 

nel mio caso l'output restituisce:


Filters:
anull            Pass the source unchanged to the output.
anullsrc         Null audio source, never return audio frames.
anullsink        Do absolutely nothing with the input audio.
blackframe       Detect frames that are (almost) black.
copy             Copy the input video unchanged to the output.
crop             Crop the input video to width:height:x:y.
cropdetect       Auto-detect crop size.
drawbox          Draw a colored box on the input video.
fade             (null)
fifo             Buffer input images and send them when they are requested.
format           Convert the input video to one of the specified pixel formats.
fps              (null)
gradfun          Debands video quickly using gradients.
hflip            Horizontally flip the input video.
hqdn3d           Apply a High Quality 3D Denoiser.
negate           (null)
noformat         Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
null             Pass the source unchanged to the output.
overlay          Overlay a video source on top of the input.
pad              Pad input image to width:height[:x:y[:color]] (default x and y: 0, default color: black).
pixdesctest      Test pixel format definitions.
rotate           (null)
scale            Scale the input video to width:height size and/or convert the image format.
setdar           Set the frame display aspect ratio.
setpts           Set PTS for the output video frame.
setsar           Set the pixel sample aspect ratio.
settb            Set timebase for the output link.
slicify          Pass the images of input video on to next video filter as multiple slices.
split            (null)
transpose        Transpose input video.
unsharp          Sharpen or blur the input video.
vflip            Flip the input video vertically.
yadif            Deinterlace the input image
buffer           Buffer video frames, and make them accessible to the filterchain.
color            Provide an uniformly colored input, syntax is: [color[:size[:rate]]]
movie            (null)
nullsrc          Null video source, never return images.
nullsink         Do absolutely nothing with the input video.

altrimenti bisogna ricompilare FFmpeg come in questa mia guida, oppure usare quello presente nel mio repository. Comunque i comandi sono i seguenti:

 

$ ffmpeg -i input.avi -vf vflip output.avi

 

oppure:



$ ffmpeg -vf "rotate=90" -i input.avi output.avi

$ ffmpeg -vf "rotate=180" -i input.avi output.avi

 

e così via, basta cambiare solo i gradi.

 

enjoy 😉

Autore: Franco Conidi aka edmond

Senior System Integrator, Network Administrator, Sys Admin Linux, Linux User, Consulente Informatico.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *