====== Ubuntu - Video - Rotate Videos with FFmpeg ====== ===== Software Encoding ===== ffmpeg -i in.mov -vf "transpose=1" out.mov **NOTE:** This will re-encode the audio and video parts. * You can usually copy the audio without touching it, by using **-c:a copy**. * To change the video quality, set the bitrate (for example with **-b:v 1M**) or have a look at the H.264 encoding guide if you want VBR options. For the transpose parameter you can pass: * 0 = 90CounterCLockwise and Vertical Flip (default) * 1 = 90Clockwise * 2 = 90CounterClockwise * 3 = 90Clockwise and Vertical Flip Use **-vf "transpose=2,transpose=2"** for 180 degrees. ---- If you don't want to re-encode your video AND your player can handle rotation metadata you can just change the rotation in the metadata using ffmpeg: ffmpeg -i input.m4v -metadata:s:v rotate="90" -codec copy output.m4v Check the rotate metadata first with: ffmpeg -i input.m4v 2>&1 | grep rotate ---- To rotate the picture clockwise you can use the rotate filter, indicating a positive angle in radians. With 90 degrees equating with PI/2, you can do it like so: ffmpeg -i in.mp4 -vf "rotate=PI/2" out.mp4 for counter-clockwise the angle must be negative ffmpeg -i in.mp4 -vf "rotate=-PI/2" out.mp4 It is possible to get finer-grained resolution of radians, because * behaves as multiplication: ffmpeg -i in.avi -vf "rotate=-8*PI/40" -q 1 out.avi (slightly less rotation than -PI/4 = -10*PI/40 ---- ===== Determine filters supported by ffmpeg ===== Other filters that can be used. ffmpeg -filters returns: ... Filters: T.. = Timeline support .S. = Slice threading ..C = Command support A = Audio input/output V = Video input/output N = Dynamic number and/or type of input/output | = Source or sink filter ... abench A->A Benchmark part of a filtergraph. ... acompressor A->A Audio compressor. ... acontrast A->A Simple audio dynamic range compression/expansion filter. ... acopy A->A Copy the input audio unchanged to the output. ... acue A->A Delay filtering to match a cue. ... acrossfade AA->A Cross fade two input audio streams. ... acrossover A->N Split audio into per-bands streams. ... acrusher A->A Reduce audio bit resolution. .S. adeclick A->A Remove impulsive noise from input audio. .S. adeclip A->A Remove clipping from input audio. T.. adelay A->A Delay one or more audio channels. ... aderivative A->A Compute derivative of input audio. ... aecho A->A Add echoing to the audio. ... aemphasis A->A Audio emphasis. ... aeval A->A Filter audio signal according to a specified expression. T.. afade A->A Fade in/out input audio. TSC afftdn A->A Denoise audio samples using FFT. ... afftfilt A->A Apply arbitrary expressions to samples in frequency domain. .S. afir AA->N Apply Finite Impulse Response filter with supplied coefficients in 2nd stream. ... aformat A->A Convert the input audio to one of the specified formats. ... agate A->A Audio gate. .S. aiir A->N Apply Infinite Impulse Response filter with supplied coefficients. ... aintegral A->A Compute integral of input audio. ... ainterleave N->A Temporally interleave audio inputs. ... alimiter A->A Audio lookahead limiter. TSC allpass A->A Apply a two-pole all-pass filter. ... aloop A->A Loop audio samples. ... amerge N->A Merge two or more audio streams into a single multi-channel stream. T.. ametadata A->A Manipulate audio frame metadata. ... amix N->A Audio mixing. ... amultiply AA->A Multiply two audio streams. ..C anequalizer A->N Apply high-order audio parametric multi band equalizer. TSC anlmdn A->A Reduce broadband noise from stream using Non-Local Means. ... anull A->A Pass the source unchanged to the output. T.. apad A->A Pad audio with silence. ... aperms A->A Set permissions for the output audio frame. ... aphaser A->A Add a phasing effect to the audio. ... apulsator A->A Audio pulsator. ... arealtime A->A Slow down filtering to match realtime. ... aresample A->A Resample audio data. ... areverse A->A Reverse an audio clip. ... aselect A->N Select audio frames to pass in output. ... asendcmd A->A Send commands to filters. ... asetnsamples A->A Set the number of samples for each output audio frames. ... asetpts A->A Set PTS for the output audio frame. ... asetrate A->A Change the sample rate without altering the data. ... asettb A->A Set timebase for the audio output link. ... ashowinfo A->A Show textual information for each audio frame. T.. asidedata A->A Manipulate audio frame side data. T.. asoftclip A->A Audio Soft Clipper. ... asplit A->N Pass on the audio input to N audio outputs. ... astats A->A Show time domain statistics about audio frames. ..C astreamselect N->N Select audio streams ..C atempo A->A Adjust audio tempo. ... atrim A->A Pick one continuous section from the input, drop the rest. ... azmq A->A Receive commands through ZMQ and broker them to filters. TSC bandpass A->A Apply a two-pole Butterworth band-pass filter. TSC bandreject A->A Apply a two-pole Butterworth band-reject filter. TSC bass A->A Boost or cut lower frequencies. TSC biquad A->A Apply a biquad IIR filter with the given coefficients. ... bs2b A->A Bauer stereo-to-binaural filter. ... channelmap A->A Remap audio channels. ... channelsplit A->N Split audio into per-channel streams. ... chorus A->A Add a chorus effect to the audio. ... compand A->A Compress or expand audio dynamic range. ... compensationdelay A->A Audio Compensation Delay Line. T.. crossfeed A->A Apply headphone crossfeed filter. ... crystalizer A->A Simple expand audio dynamic range filter. T.. dcshift A->A Apply a DC shift to the audio. T.. deesser A->A Apply de-essing to the audio. ... drmeter A->A Measure audio dynamic range. T.. dynaudnorm A->A Dynamic Audio Normalizer. ... earwax A->A Widen the stereo image. ... ebur128 A->N EBU R128 scanner. TSC equalizer A->A Apply two-pole peaking equalization (EQ) filter. T.. extrastereo A->A Increase difference between stereo audio channels. ..C firequalizer A->A Finite Impulse Response Equalizer. ... flanger A->A Apply a flanging effect to the audio. ... haas A->A Apply Haas Stereo Enhancer. ... hdcd A->A Apply High Definition Compatible Digital (HDCD) decoding. .S. headphone N->A Apply headphone binaural spatialization with HRTFs in additional streams. TSC highpass A->A Apply a high-pass filter with 3dB point frequency. TSC highshelf A->A Apply a high shelf filter. ... join N->A Join multiple audio streams into multi-channel output. ..C ladspa N->A Apply LADSPA effect. ... loudnorm A->A EBU R128 loudness normalization TSC lowpass A->A Apply a low-pass filter with 3dB point frequency. TSC lowshelf A->A Apply a low shelf filter. ... lv2 N->A Apply LV2 effect. ... mcompand A->A Multiband Compress or expand audio dynamic range. ... pan A->A Remix channels with coefficients (panning). ... replaygain A->A ReplayGain scanner. ..C rubberband A->A Apply time-stretching and pitch-shifting. ... sidechaincompress AA->A Sidechain compressor. ... sidechaingate AA->A Audio sidechain gate. ... silencedetect A->A Detect silence. ... silenceremove A->A Remove silence. .S. sofalizer A->A SOFAlizer (Spatially Oriented Format for Acoustics). ... stereotools A->A Apply various stereo tools. T.. stereowiden A->A Apply stereo widening effect. ... superequalizer A->A Apply 18 band equalization filter. .S. surround A->A Apply audio surround upmix filter. TSC treble A->A Boost or cut upper frequencies. ... tremolo A->A Apply tremolo effect. ... vibrato A->A Apply vibrato effect. T.C volume A->A Change input volume. ... volumedetect A->A Detect audio volume. ... aevalsrc |->A Generate an audio signal generated by an expression. ... anoisesrc |->A Generate a noise audio signal. ... anullsrc |->A Null audio source, return empty audio frames. ... flite |->A Synthesize voice from text using libflite. ... hilbert |->A Generate a Hilbert transform FIR coefficients. ... sinc |->A Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients. ... sine |->A Generate sine wave audio signal. ... anullsink A->| Do absolutely nothing with the input audio. ... alphaextract V->N Extract an alpha channel as a grayscale image component. ... alphamerge VV->V Copy the luma value of the second input into the alpha channel of the first input. .S. amplify V->V Amplify changes between successive video frames. ... ass V->V Render ASS subtitles onto input video using the libass library. TS. atadenoise V->V Apply an Adaptive Temporal Averaging Denoiser. TS. avgblur V->V Apply Average Blur filter. T.. bbox V->V Compute bounding box for each frame. ... bench V->V Benchmark part of a filtergraph. T.. bitplanenoise V->V Measure bit plane noise. ... blackdetect V->V Detect video intervals that are (almost) black. ... blackframe V->V Detect frames that are (almost) black. TS. blend VV->V Blend two video frames into each other. TS. bm3d N->V Block-Matching 3D denoiser. T.. boxblur V->V Blur the input. TS. bwdif V->V Deinterlace the input image. TS. chromahold V->V Turns a certain color range into gray. TS. chromakey V->V Turns a certain color into transparency. Operates on YUV colors. TS. chromashift V->V Shift chroma. ... ciescope V->V Video CIE scope. T.. codecview V->V Visualize information about some codecs. TS. colorbalance V->V Adjust the color balance. TS. colorchannelmixer V->V Adjust colors by mixing color channels. TS. colorkey V->V Turns a certain color into transparency. Operates on RGB colors. TS. colorhold V->V Turns a certain color range into gray. Operates on RGB colors. TS. colorlevels V->V Adjust the color levels. TS. colormatrix V->V Convert color matrix. TS. colorspace V->V Convert between colorspaces. TS. convolution V->V Apply convolution filter. TS. convolve VV->V Convolve first video stream with second video stream. ... copy V->V Copy the input video unchanged to the output. ... cover_rect V->V Find and cover a user specified object. ..C crop V->V Crop the input video. T.. cropdetect V->V Auto-detect crop size. ... cue V->V Delay filtering to match a cue. TS. curves V->V Adjust components curves. .S. datascope V->V Video data analysis. TS. dctdnoiz V->V Denoise frames using 2D DCT. TS. deband V->V Debands video. T.. deblock V->V Deblock video. ... decimate N->V Decimate frames (post field matching filter). TS. deconvolve VV->V Deconvolve first video stream with second video stream. TS. dedot V->V Reduce cross-luminance and cross-color. TS. deflate V->V Apply deflate effect. ... deflicker V->V Remove temporal frame luminance variations. ... deinterlace_vaapi V->V Deinterlacing of VAAPI surfaces ... dejudder V->V Remove judder produced by pullup. T.. delogo V->V Remove logo from input video. ... denoise_vaapi V->V VAAPI VPP for de-noise T.. derain V->V Apply derain filter to the input. ... deshake V->V Stabilize shaky video. TS. despill V->V Despill video. ... detelecine V->V Apply an inverse telecine pattern. TS. dilation V->V Apply dilation effect. T.. displace VVV->V Displace pixels. ... doubleweave V->V Weave input video fields into double number of frames. T.. drawbox V->V Draw a colored box on the input video. ... drawgraph V->V Draw a graph using input video metadata. T.. drawgrid V->V Draw a colored grid on the input video. T.C drawtext V->V Draw text on top of video frames using libfreetype library. T.. edgedetect V->V Detect and draw edge. ... elbg V->V Apply posterize effect, using the ELBG algorithm. T.. entropy V->V Measure video frames entropy. T.C eq V->V Adjust brightness, contrast, gamma, and saturation. TS. erosion V->V Apply erosion effect. ... extractplanes V->N Extract planes as grayscale frames. .S. fade V->V Fade in/out input video. T.. fftdnoiz V->V Denoise frames using 3D FFT. T.. fftfilt V->V Apply arbitrary expressions to pixels in frequency domain. ... field V->V Extract a field from the input video. ... fieldhint V->V Field matching using hints. ... fieldmatch N->V Field matching for inverse telecine. T.. fieldorder V->V Set the field order. T.. fillborders V->V Fill borders of the input video. ... find_rect V->V Find a user specified object. T.. floodfill V->V Fill area with same color with another color. ... format V->V Convert the input video to one of the specified pixel formats. ... fps V->V Force constant framerate. ... framepack VV->V Generate a frame packed stereoscopic video. .S. framerate V->V Upsamples or downsamples progressive source between specified frame rates. T.. framestep V->V Select one frame every N frames. ... freezedetect V->V Detects frozen video input. ... frei0r V->V Apply a frei0r effect. T.. fspp V->V Apply Fast Simple Post-processing filter. TS. gblur V->V Apply Gaussian Blur filter. TS. geq V->V Apply generic equation to each pixel. T.. gradfun V->V Debands video quickly using gradients. ... graphmonitor V->V Show various filtergraph stats. TS. greyedge V->V Estimates scene illumination by grey edge assumption. TS. haldclut VV->V Adjust colors using a Hald CLUT. TS. hflip V->V Horizontally flip the input video. T.. histeq V->V Apply global color histogram equalization. ... histogram V->V Compute and draw a histogram. T.. hqdn3d V->V Apply a High Quality 3D Denoiser. .S. hqx V->V Scale the input by 2, 3 or 4 using the hq*x magnification algorithm. ... hstack N->V Stack video inputs horizontally. T.C hue V->V Adjust the hue and saturation of the input video. ... hwdownload V->V Download a hardware frame to a normal frame ... hwmap V->V Map hardware frames ... hwupload V->V Upload a normal frame to a hardware frame T.. hysteresis VV->V Grow first stream into second stream by connecting components. ... idet V->V Interlace detect Filter. T.. il V->V Deinterleave or interleave fields. TS. inflate V->V Apply inflate effect. ... interlace V->V Convert progressive video into interlaced. ... interleave N->V Temporally interleave video inputs. ... kerndeint V->V Apply kernel deinterlacing to the input. .S. lagfun V->V Slowly update darker pixels. .S. lenscorrection V->V Rectify the image by correcting for lens distortion. TS. limiter V->V Limit pixels components to the specified range. ... loop V->V Loop video frames. TS. lumakey V->V Turns a certain luma into transparency. TS. lut V->V Compute and apply a lookup table to the RGB/YUV input video. TS. lut1d V->V Adjust colors using a 1D LUT. TS. lut2 VV->V Compute and apply a lookup table from two video inputs. TS. lut3d V->V Adjust colors using a 3D LUT. TS. lutrgb V->V Compute and apply a lookup table to the RGB input video. TS. lutyuv V->V Compute and apply a lookup table to the YUV input video. TS. maskedclamp VVV->V Clamp first stream with second stream and third stream. TS. maskedmerge VVV->V Merge first stream with second stream using third stream as mask. TS. maskfun V->V Create Mask. ... mcdeint V->V Apply motion compensating deinterlacing. ... mergeplanes N->V Merge planes. ... mestimate V->V Generate motion vectors. T.. metadata V->V Manipulate video frame metadata. T.. midequalizer VV->V Apply Midway Equalization. ... minterpolate V->V Frame rate conversion using Motion Interpolation. .S. mix N->V Mix video inputs. ... mpdecimate V->V Remove near-duplicate frames. TS. negate V->V Negate input video. TS. nlmeans V->V Non-local means denoiser. T.. nnedi V->V Apply neural network edge directed interpolation intra-only deinterlacer. ... noformat V->V Force libavfilter not to use any of the specified pixel formats for the input to the next filter. TS. noise V->V Add noise. T.. normalize V->V Normalize RGB video. ... null V->V Pass the source unchanged to the output. T.. oscilloscope V->V 2D Video Oscilloscope. TSC overlay VV->V Overlay a video source on top of the input. T.. owdenoise V->V Denoise using wavelets. ... pad V->V Pad the input video. ... palettegen V->V Find the optimal palette for a given stream. ... paletteuse VV->V Use a palette to downsample an input video stream. ... perms V->V Set permissions for the output video frame. TS. perspective V->V Correct the perspective of video. T.. phase V->V Phase shift fields. ... pixdesctest V->V Test pixel format definitions. T.. pixscope V->V Pixel data analysis. T.C pp V->V Filter video using libpostproc. T.. pp7 V->V Apply Postprocessing 7 filter. TS. premultiply N->V PreMultiply first stream with first plane of second stream. TS. prewitt V->V Apply prewitt operator. ... procamp_vaapi V->V ProcAmp (color balance) adjustments for hue, saturation, brightness, contrast T.. pseudocolor V->V Make pseudocolored video frames. ... psnr VV->V Calculate the PSNR between two video streams. ... pullup V->V Pullup from field sequence to frames. T.. qp V->V Change video quantization parameters. ... random V->V Return random frames. T.. readeia608 V->V Read EIA-608 Closed Caption codes from input video and write them to frame metadata. ... readvitc V->V Read vertical interval timecode and write it to frame metadata. ... realtime V->V Slow down filtering to match realtime. TS. remap VVV->V Remap pixels. TS. removegrain V->V Remove grain. T.. removelogo V->V Remove a TV logo based on a mask image. ... repeatfields V->V Hard repeat fields based on MPEG repeat field flag. ... reverse V->V Reverse a clip. TS. rgbashift V->V Shift RGBA. TS. roberts V->V Apply roberts cross operator. TSC rotate V->V Rotate the input image. T.. sab V->V Apply shape adaptive blur. ..C scale V->V Scale the input video size and/or convert the image format. ... scale_vaapi V->V Scale to/from VAAPI surfaces. ..C scale2ref VV->VV Scale the input video size and/or convert the image format to the given reference. ... select V->N Select video frames to pass in output. TS. selectivecolor V->V Apply CMYK adjustments to specific color ranges. ... sendcmd V->V Send commands to filters. ... separatefields V->V Split input video frames into fields. ... setdar V->V Set the frame display aspect ratio. ... setfield V->V Force field for the output video frame. ... setparams V->V Force field, or color property for the output video frame. ... setpts V->V Set PTS for the output video frame. ... setrange V->V Force color range for the output video frame. ... setsar V->V Set the pixel sample aspect ratio. ... settb V->V Set timebase for the video output link. ... sharpness_vaapi V->V VAAPI VPP for sharpness ... showinfo V->V Show textual information for each video frame. T.. showpalette V->V Display frame palette. T.. shuffleframes V->V Shuffle video frames. T.. shuffleplanes V->V Shuffle video planes. T.. sidedata V->V Manipulate video frame side data. .S. signalstats V->V Generate statistics from video analysis. ... signature N->V Calculate the MPEG-7 video signature T.. smartblur V->V Blur the input video without impacting the outlines. TS. sobel V->V Apply sobel operator. ... split V->N Pass on the input to N video outputs. T.C spp V->V Apply a simple post processing filter. T.. sr V->V Apply DNN-based image super resolution to the input. ... ssim VV->V Calculate the SSIM between two video streams. .S. stereo3d V->V Convert video stereoscopic 3D view. ..C streamselect N->N Select video streams ... subtitles V->V Render text subtitles onto input video using the libass library. ... super2xsai V->V Scale the input by 2x using the Super2xSaI pixel art algorithm. T.. swaprect V->V Swap 2 rectangular objects in video. T.. swapuv V->V Swap U and V components. TS. tblend V->V Blend successive frames. ... telecine V->V Apply a telecine pattern. TS. threshold VVVV->V Threshold first video stream using other video streams. ... thumbnail V->V Select the most representative frame in a given sequence of consecutive frames. ... tile V->V Tile several successive frames together. ... tinterlace V->V Perform temporal field interlacing. TS. tlut2 V->V Compute and apply a lookup table from two successive frames. TS. tmix V->V Mix successive video frames. .S. tonemap V->V Conversion to/from different dynamic ranges. ... tpad V->V Temporarily pad video frames. .S. transpose V->V Transpose input video. ... transpose_vaapi V->V VAAPI VPP for transpose ... trim V->V Pick one continuous section from the input, drop the rest. TS. unpremultiply N->V UnPreMultiply first stream with first plane of second stream. TS. unsharp V->V Sharpen or blur the input video. T.. uspp V->V Apply Ultra Simple / Slow Post-processing filter. T.. vaguedenoiser V->V Apply a Wavelet based Denoiser. ... vectorscope V->V Video vectorscope. T.. vflip V->V Flip the input video vertically. ... vfrdet V->V Variable frame rate detect filter. TS. vibrance V->V Boost or alter saturation. ... vidstabdetect V->V Extract relative transformations, pass 1 of 2 for stabilization (see vidstabtransform for pass 2). ... vidstabtransform V->V Transform the frames, pass 2 of 2 for stabilization (see vidstabdetect for pass 1). T.. vignette V->V Make or reverse a vignette effect. ... vmafmotion V->V Calculate the VMAF Motion score. ... vstack N->V Stack video inputs vertically. TS. w3fdif V->V Apply Martin Weston three field deinterlace. .S. waveform V->V Video waveform monitor. ... weave V->V Weave input video fields into frames. .S. xbr V->V Scale the input using xBR algorithm. .S. xmedian N->V Pick median pixels from several video inputs. ... xstack N->V Stack video inputs into custom layout. TS. yadif V->V Deinterlace the input image. ... zmq V->V Receive commands through ZMQ and broker them to filters. ... zoompan V->V Apply Zoom & Pan effect. ... allrgb |->V Generate all RGB colors. ... allyuv |->V Generate all yuv colors. ... cellauto |->V Create pattern generated by an elementary cellular automaton. ..C color |->V Provide an uniformly colored input. ... frei0r_src |->V Generate a frei0r source. ... haldclutsrc |->V Provide an identity Hald CLUT. ... life |->V Create life. ... mandelbrot |->V Render a Mandelbrot fractal. ... mptestsrc |->V Generate various test pattern. ... nullsrc |->V Null video source, return unprocessed video frames. ... pal75bars |->V Generate PAL 75% color bars. ... pal100bars |->V Generate PAL 100% color bars. ... rgbtestsrc |->V Generate RGB test pattern. ... smptebars |->V Generate SMPTE color bars. ... smptehdbars |->V Generate SMPTE HD color bars. ... testsrc |->V Generate test pattern. ... testsrc2 |->V Generate another test pattern. ... yuvtestsrc |->V Generate YUV test pattern. ... nullsink V->| Do absolutely nothing with the input video. ... abitscope A->V Convert input audio to audio bit scope video output. ... adrawgraph A->V Draw a graph using input audio metadata. ... agraphmonitor A->V Show various filtergraph stats. ... ahistogram A->V Convert input audio to histogram video output. ... aphasemeter A->N Convert input audio to phase meter video output. ... avectorscope A->V Convert input audio to vectorscope video output. ..C concat N->N Concatenate audio and video streams. ... showcqt A->V Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output. ... showfreqs A->V Convert input audio to a frequencies video output. .S. showspatial A->V Convert input audio to a spatial video output. .S. showspectrum A->V Convert input audio to a spectrum video output. .S. showspectrumpic A->V Convert input audio to a spectrum video output single picture. ... showvolume A->V Convert input audio volume to video output. ... showwaves A->V Convert input audio to a video output. ... showwavespic A->V Convert input audio to a video output single picture. ... spectrumsynth VV->A Convert input spectrum videos to audio output. ..C amovie |->N Read audio from a movie source. ..C movie |->N Read from a movie source. ... afifo A->A Buffer input frames and send them when they are requested. ... fifo V->V Buffer input images and send them when they are requested. ... abuffer |->A Buffer audio frames, and make them accessible to the filterchain. ... buffer |->V Buffer video frames, and make them accessible to the filterchain. ... abuffersink A->| Buffer audio frames, and make them available to the end of the filter graph. ... buffersink V->| Buffer video frames, and make them available to the end of the filter graph.