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 😉