FFmpeg 5.0.3
Since* 4.3
#

Apply cross fade from one input video stream to another input video stream. The cross fade is applied for specified duration.

Both inputs must be constant frame-rate and have the same resolution, pixel format, frame rate and timebase.

The filter accepts the following options:

transition

Set one of available transition effects:

  • custom
  • fade
  • wipeleft
  • wiperight
  • wipeup
  • wipedown
  • slideleft
  • slideright
  • slideup
  • slidedown
  • circlecrop
  • rectcrop
  • distance
  • fadeblack
  • fadewhite
  • radial
  • smoothleft
  • smoothright
  • smoothup
  • smoothdown
  • circleopen
  • circleclose
  • vertopen
  • vertclose
  • horzopen
  • horzclose
  • dissolve
  • pixelize
  • diagtl
  • diagtr
  • diagbl
  • diagbr
  • hlslice
  • hrslice
  • vuslice
  • vdslice
  • hblur
  • fadegrays
  • wipetl
  • wipetr
  • wipebl
  • wipebr
  • squeezeh
  • squeezev
  • zoomin

Default transition effect is fade.

duration

Set cross fade duration in seconds. Range is 0 to 60 seconds. Default duration is 1 second.

offset

Set cross fade start relative to first input stream in seconds. Default offset is 0.

expr

Set expression for custom transition effect.

The expressions can use the following variables and functions:

X, Y

The coordinates of the current sample.

W, H

The width and height of the image.

P

Progress of transition effect.

PLANE

Currently processed plane.

A

Return value of first input at current location and plane.

B

Return value of second input at current location and plane.

a0(x, y), a1(x, y), a2(x, y), a3(x, y)

Return the value of the pixel at location (x,y) of the first/second/third/fourth component of first input.

b0(x, y), b1(x, y), b2(x, y), b3(x, y)

Return the value of the pixel at location (x,y) of the first/second/third/fourth component of second input.

#

Examples

  • Cross fade from one input video to another input video, with fade transition and duration of transition of 2 seconds starting at offset of 5 seconds:

    ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4