1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
4 Filtering in FFmpeg is enabled through the libavfilter library.
6 In libavfilter, a filter can have multiple inputs and multiple
8 To illustrate the sorts of things that are possible, we consider the
13 input --> split ---------------------> overlay --> output
16 +-----> crop --> vflip -------+
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
54 @c man end FILTERING INTRODUCTION
57 @c man begin GRAPH2DOT
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
68 to see how to use @file{graph2dot}.
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
74 For example the sequence of commands:
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
87 ffmpeg -i infile -vf scale=640:360 outfile
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
91 nullsrc,scale=640:360,nullsink
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
146 A ':'-separated list of @var{key=value} pairs.
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
190 nullsrc, split[L1], [L2]overlay, nullsink
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
212 Here is a BNF description of the filtergraph syntax:
214 @var{NAME} ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME} ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL} ::= "[" @var{NAME} "]"
217 @var{LINKLABELS} ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER} ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN} ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH} ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
247 this is a 'string': may contain one, or more, special characters
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
253 text=this is a \'string\'\: may contain one, or more, special characters
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
274 @chapter Timeline editing
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
282 The expression accepts the following values:
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
288 sequential number of the input frame, starting from 0
291 the position in the file of the input frame, NAN if unknown
295 width and height of the input frame if video
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
301 Like any other filtering option, the @option{enable} option follows the same
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
307 smartblur = enable='between(t,10,3*60)',
308 curves = enable='gte(t,3)' : preset=cross_process
311 See @code{ffmpeg -filters} to view which filters have timeline support.
313 @c man end FILTERGRAPH DESCRIPTION
316 @chapter Changing options at runtime with a command
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
338 Repeat the last frame (the default).
342 Pass the main input through.
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
365 Below is a description of the currently available audio filters.
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
396 The filter accepts the following options:
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
407 If a signal of stream rises above this level it will affect the gain
409 By default it is 0.125. Range is between 0.00097563 and 1.
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
448 This filter supports the all above options as @ref{commands}.
451 Simple audio dynamic range compression/expansion filter.
453 The filter accepts the following options:
457 Set contrast. Default is 33. Allowed range is between 0 and 100.
462 Copy the input audio source unchanged to the output. This is mainly useful for
467 Apply cross fade from one input audio stream to another input audio stream.
468 The cross fade is applied for specified duration near the end of first stream.
470 The filter accepts the following options:
474 Specify the number of samples for which the cross fade effect has to last.
475 At the end of the cross fade effect the first input audio will be completely
476 silent. Default is 44100.
479 Specify the duration of the cross fade effect. See
480 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
481 for the accepted syntax.
482 By default the duration is determined by @var{nb_samples}.
483 If set this option is used instead of @var{nb_samples}.
486 Should first stream end overlap with second stream start. Default is enabled.
489 Set curve for cross fade transition for first stream.
492 Set curve for cross fade transition for second stream.
494 For description of available curve types see @ref{afade} filter description.
501 Cross fade from one input to another:
503 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
507 Cross fade from one input to another but without overlapping:
509 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
514 Split audio stream into several bands.
516 This filter splits audio stream into two or more frequency ranges.
517 Summing all streams back will give flat output.
519 The filter accepts the following options:
523 Set split frequencies. Those must be positive and increasing.
526 Set filter order for each band split. This controls filter roll-off or steepness
527 of filter transfer function.
528 Available values are:
553 Default is @var{4th}.
556 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
559 Set output gain for each band. Default value is 1 for all bands.
566 Split input audio stream into two bands (low and high) with split frequency of 1500 Hz,
567 each band will be in separate stream:
569 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
573 Same as above, but with higher filter order:
575 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
579 Same as above, but also with additional middle band (frequencies between 1500 and 8000):
581 ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
587 Reduce audio bit resolution.
589 This filter is bit crusher with enhanced functionality. A bit crusher
590 is used to audibly reduce number of bits an audio signal is sampled
591 with. This doesn't change the bit depth at all, it just produces the
592 effect. Material reduced in bit depth sounds more harsh and "digital".
593 This filter is able to even round to continuous values instead of discrete
595 Additionally it has a D/C offset which results in different crushing of
596 the lower and the upper half of the signal.
597 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
599 Another feature of this filter is the logarithmic mode.
600 This setting switches from linear distances between bits to logarithmic ones.
601 The result is a much more "natural" sounding crusher which doesn't gate low
602 signals for example. The human ear has a logarithmic perception,
603 so this kind of crushing is much more pleasant.
604 Logarithmic crushing is also able to get anti-aliased.
606 The filter accepts the following options:
622 Can be linear: @code{lin} or logarithmic: @code{log}.
631 Set sample reduction.
634 Enable LFO. By default disabled.
645 This filter supports the all above options as @ref{commands}.
649 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
653 Remove impulsive noise from input audio.
655 Samples detected as impulsive noise are replaced by interpolated samples using
656 autoregressive modelling.
660 Set window size, in milliseconds. Allowed range is from @code{10} to
661 @code{100}. Default value is @code{55} milliseconds.
662 This sets size of window which will be processed at once.
665 Set window overlap, in percentage of window size. Allowed range is from
666 @code{50} to @code{95}. Default value is @code{75} percent.
667 Setting this to a very high value increases impulsive noise removal but makes
668 whole process much slower.
671 Set autoregression order, in percentage of window size. Allowed range is from
672 @code{0} to @code{25}. Default value is @code{2} percent. This option also
673 controls quality of interpolated samples using neighbour good samples.
676 Set threshold value. Allowed range is from @code{1} to @code{100}.
677 Default value is @code{2}.
678 This controls the strength of impulsive noise which is going to be removed.
679 The lower value, the more samples will be detected as impulsive noise.
682 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
683 @code{10}. Default value is @code{2}.
684 If any two samples detected as noise are spaced less than this value then any
685 sample between those two samples will be also detected as noise.
690 It accepts the following values:
693 Select overlap-add method. Even not interpolated samples are slightly
694 changed with this method.
697 Select overlap-save method. Not interpolated samples remain unchanged.
700 Default value is @code{a}.
704 Remove clipped samples from input audio.
706 Samples detected as clipped are replaced by interpolated samples using
707 autoregressive modelling.
711 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
712 Default value is @code{55} milliseconds.
713 This sets size of window which will be processed at once.
716 Set window overlap, in percentage of window size. Allowed range is from @code{50}
717 to @code{95}. Default value is @code{75} percent.
720 Set autoregression order, in percentage of window size. Allowed range is from
721 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
722 quality of interpolated samples using neighbour good samples.
725 Set threshold value. Allowed range is from @code{1} to @code{100}.
726 Default value is @code{10}. Higher values make clip detection less aggressive.
729 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
730 Default value is @code{1000}. Higher values make clip detection less aggressive.
735 It accepts the following values:
738 Select overlap-add method. Even not interpolated samples are slightly changed
742 Select overlap-save method. Not interpolated samples remain unchanged.
745 Default value is @code{a}.
750 Delay one or more audio channels.
752 Samples in delayed channel are filled with silence.
754 The filter accepts the following option:
758 Set list of delays in milliseconds for each channel separated by '|'.
759 Unused delays will be silently ignored. If number of given delays is
760 smaller than number of channels all remaining channels will not be delayed.
761 If you want to delay exact number of samples, append 'S' to number.
762 If you want instead to delay in seconds, append 's' to number.
765 Use last set delay for all remaining channels. By default is disabled.
766 This option if enabled changes how option @code{delays} is interpreted.
773 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
774 the second channel (and any other channels that may be present) unchanged.
780 Delay second channel by 500 samples, the third channel by 700 samples and leave
781 the first channel (and any other channels that may be present) unchanged.
787 Delay all channels by same number of samples:
789 adelay=delays=64S:all=1
794 Remedy denormals in audio by adding extremely low-level noise.
796 This filter shall be placed before any filter that can produce denormals.
798 A description of the accepted parameters follows.
802 Set level of added noise in dB. Default is @code{-351}.
803 Allowed range is from -451 to -90.
806 Set type of added noise.
819 Default is @code{dc}.
824 This filter supports the all above options as @ref{commands}.
826 @section aderivative, aintegral
828 Compute derivative/integral of audio stream.
830 Applying both filters one after another produces original audio.
834 Apply echoing to the input audio.
836 Echoes are reflected sound and can occur naturally amongst mountains
837 (and sometimes large buildings) when talking or shouting; digital echo
838 effects emulate this behaviour and are often used to help fill out the
839 sound of a single instrument or vocal. The time difference between the
840 original signal and the reflection is the @code{delay}, and the
841 loudness of the reflected signal is the @code{decay}.
842 Multiple echoes can have different delays and decays.
844 A description of the accepted parameters follows.
848 Set input gain of reflected signal. Default is @code{0.6}.
851 Set output gain of reflected signal. Default is @code{0.3}.
854 Set list of time intervals in milliseconds between original signal and reflections
855 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
856 Default is @code{1000}.
859 Set list of loudness of reflected signals separated by '|'.
860 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
861 Default is @code{0.5}.
868 Make it sound as if there are twice as many instruments as are actually playing:
870 aecho=0.8:0.88:60:0.4
874 If delay is very short, then it sounds like a (metallic) robot playing music:
880 A longer delay will sound like an open air concert in the mountains:
882 aecho=0.8:0.9:1000:0.3
886 Same as above but with one more mountain:
888 aecho=0.8:0.9:1000|1800:0.3|0.25
893 Audio emphasis filter creates or restores material directly taken from LPs or
894 emphased CDs with different filter curves. E.g. to store music on vinyl the
895 signal has to be altered by a filter first to even out the disadvantages of
896 this recording medium.
897 Once the material is played back the inverse filter has to be applied to
898 restore the distortion of the frequency response.
900 The filter accepts the following options:
910 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
911 use @code{production} mode. Default is @code{reproduction} mode.
914 Set filter type. Selects medium. Can be one of the following:
926 select Compact Disc (CD).
932 select 50µs (FM-KF).
934 select 75µs (FM-KF).
940 This filter supports the all above options as @ref{commands}.
944 Modify an audio signal according to the specified expressions.
946 This filter accepts one or more expressions (one for each channel),
947 which are evaluated and used to modify a corresponding audio signal.
949 It accepts the following parameters:
953 Set the '|'-separated expressions list for each separate channel. If
954 the number of input channels is greater than the number of
955 expressions, the last specified expression is used for the remaining
958 @item channel_layout, c
959 Set output channel layout. If not specified, the channel layout is
960 specified by the number of expressions. If set to @samp{same}, it will
961 use by default the same input channel layout.
964 Each expression in @var{exprs} can contain the following constants and functions:
968 channel number of the current expression
971 number of the evaluated sample, starting from 0
977 time of the evaluated sample expressed in seconds
980 @item nb_out_channels
981 input and output number of channels
984 the value of input channel with number @var{CH}
987 Note: this filter is slow. For faster processing you should use a
996 aeval=val(ch)/2:c=same
1000 Invert phase of the second channel:
1002 aeval=val(0)|-val(1)
1009 Apply fade-in/out effect to input audio.
1011 A description of the accepted parameters follows.
1015 Specify the effect type, can be either @code{in} for fade-in, or
1016 @code{out} for a fade-out effect. Default is @code{in}.
1018 @item start_sample, ss
1019 Specify the number of the start sample for starting to apply the fade
1020 effect. Default is 0.
1022 @item nb_samples, ns
1023 Specify the number of samples for which the fade effect has to last. At
1024 the end of the fade-in effect the output audio will have the same
1025 volume as the input audio, at the end of the fade-out transition
1026 the output audio will be silence. Default is 44100.
1028 @item start_time, st
1029 Specify the start time of the fade effect. Default is 0.
1030 The value must be specified as a time duration; see
1031 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1032 for the accepted syntax.
1033 If set this option is used instead of @var{start_sample}.
1036 Specify the duration of the fade effect. See
1037 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1038 for the accepted syntax.
1039 At the end of the fade-in effect the output audio will have the same
1040 volume as the input audio, at the end of the fade-out transition
1041 the output audio will be silence.
1042 By default the duration is determined by @var{nb_samples}.
1043 If set this option is used instead of @var{nb_samples}.
1046 Set curve for fade transition.
1048 It accepts the following values:
1051 select triangular, linear slope (default)
1053 select quarter of sine wave
1055 select half of sine wave
1057 select exponential sine wave
1061 select inverted parabola
1075 select inverted quarter of sine wave
1077 select inverted half of sine wave
1079 select double-exponential seat
1081 select double-exponential sigmoid
1083 select logistic sigmoid
1085 select sine cardinal function
1087 select inverted sine cardinal function
1093 @subsection Commands
1095 This filter supports the all above options as @ref{commands}.
1097 @subsection Examples
1101 Fade in first 15 seconds of audio:
1103 afade=t=in:ss=0:d=15
1107 Fade out last 25 seconds of a 900 seconds audio:
1109 afade=t=out:st=875:d=25
1114 Denoise audio samples with FFT.
1116 A description of the accepted parameters follows.
1120 Set the noise reduction in dB, allowed range is 0.01 to 97.
1121 Default value is 12 dB.
1124 Set the noise floor in dB, allowed range is -80 to -20.
1125 Default value is -50 dB.
1130 It accepts the following values:
1139 Select shellac noise.
1142 Select custom noise, defined in @code{bn} option.
1144 Default value is white noise.
1148 Set custom band noise for every one of 15 bands.
1149 Bands are separated by ' ' or '|'.
1152 Set the residual floor in dB, allowed range is -80 to -20.
1153 Default value is -38 dB.
1156 Enable noise tracking. By default is disabled.
1157 With this enabled, noise floor is automatically adjusted.
1160 Enable residual tracking. By default is disabled.
1163 Set the output mode.
1165 It accepts the following values:
1168 Pass input unchanged.
1171 Pass noise filtered out.
1176 Default value is @var{o}.
1180 @subsection Commands
1182 This filter supports the following commands:
1184 @item sample_noise, sn
1185 Start or stop measuring noise profile.
1186 Syntax for the command is : "start" or "stop" string.
1187 After measuring noise profile is stopped it will be
1188 automatically applied in filtering.
1190 @item noise_reduction, nr
1191 Change noise reduction. Argument is single float number.
1192 Syntax for the command is : "@var{noise_reduction}"
1194 @item noise_floor, nf
1195 Change noise floor. Argument is single float number.
1196 Syntax for the command is : "@var{noise_floor}"
1198 @item output_mode, om
1199 Change output mode operation.
1200 Syntax for the command is : "i", "o" or "n" string.
1204 Apply arbitrary expressions to samples in frequency domain.
1208 Set frequency domain real expression for each separate channel separated
1209 by '|'. Default is "re".
1210 If the number of input channels is greater than the number of
1211 expressions, the last specified expression is used for the remaining
1215 Set frequency domain imaginary expression for each separate channel
1216 separated by '|'. Default is "im".
1218 Each expression in @var{real} and @var{imag} can contain the following
1219 constants and functions:
1226 current frequency bin number
1229 number of available bins
1232 channel number of the current expression
1241 current real part of frequency bin of current channel
1244 current imaginary part of frequency bin of current channel
1247 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1250 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1254 Set window size. Allowed range is from 16 to 131072.
1255 Default is @code{4096}
1258 Set window function. Default is @code{hann}.
1261 Set window overlap. If set to 1, the recommended overlap for selected
1262 window function will be picked. Default is @code{0.75}.
1265 @subsection Examples
1269 Leave almost only low frequencies in audio:
1271 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1275 Apply robotize effect:
1277 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1281 Apply whisper effect:
1283 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1290 Apply an arbitrary Finite Impulse Response filter.
1292 This filter is designed for applying long FIR filters,
1293 up to 60 seconds long.
1295 It can be used as component for digital crossover filters,
1296 room equalization, cross talk cancellation, wavefield synthesis,
1297 auralization, ambiophonics, ambisonics and spatialization.
1299 This filter uses the streams higher than first one as FIR coefficients.
1300 If the non-first stream holds a single channel, it will be used
1301 for all input channels in the first stream, otherwise
1302 the number of channels in the non-first stream must be same as
1303 the number of channels in the first stream.
1305 It accepts the following parameters:
1309 Set dry gain. This sets input gain.
1312 Set wet gain. This sets final output gain.
1315 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1318 Enable applying gain measured from power of IR.
1320 Set which approach to use for auto gain measurement.
1324 Do not apply any gain.
1327 select peak gain, very conservative approach. This is default value.
1330 select DC gain, limited application.
1333 select gain to noise approach, this is most popular one.
1337 Set gain to be applied to IR coefficients before filtering.
1338 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1341 Set format of IR stream. Can be @code{mono} or @code{input}.
1342 Default is @code{input}.
1345 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1346 Allowed range is 0.1 to 60 seconds.
1349 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1350 By default it is disabled.
1353 Set for which IR channel to display frequency response. By default is first channel
1354 displayed. This option is used only when @var{response} is enabled.
1357 Set video stream size. This option is used only when @var{response} is enabled.
1360 Set video stream frame rate. This option is used only when @var{response} is enabled.
1363 Set minimal partition size used for convolution. Default is @var{8192}.
1364 Allowed range is from @var{1} to @var{32768}.
1365 Lower values decreases latency at cost of higher CPU usage.
1368 Set maximal partition size used for convolution. Default is @var{8192}.
1369 Allowed range is from @var{8} to @var{32768}.
1370 Lower values may increase CPU usage.
1373 Set number of input impulse responses streams which will be switchable at runtime.
1374 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1377 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1378 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1379 This option can be changed at runtime via @ref{commands}.
1382 @subsection Examples
1386 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1388 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1395 Set output format constraints for the input audio. The framework will
1396 negotiate the most appropriate format to minimize conversions.
1398 It accepts the following parameters:
1401 @item sample_fmts, f
1402 A '|'-separated list of requested sample formats.
1404 @item sample_rates, r
1405 A '|'-separated list of requested sample rates.
1407 @item channel_layouts, cl
1408 A '|'-separated list of requested channel layouts.
1410 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1411 for the required syntax.
1414 If a parameter is omitted, all values are allowed.
1416 Force the output to either unsigned 8-bit or signed 16-bit stereo
1418 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1422 Apply frequency shift to input audio samples.
1424 The filter accepts the following options:
1428 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1429 Default value is 0.0.
1432 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
1433 Default value is 1.0.
1436 @subsection Commands
1438 This filter supports the all above options as @ref{commands}.
1442 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1443 processing reduces disturbing noise between useful signals.
1445 Gating is done by detecting the volume below a chosen level @var{threshold}
1446 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1447 floor is set via @var{range}. Because an exact manipulation of the signal
1448 would cause distortion of the waveform the reduction can be levelled over
1449 time. This is done by setting @var{attack} and @var{release}.
1451 @var{attack} determines how long the signal has to fall below the threshold
1452 before any reduction will occur and @var{release} sets the time the signal
1453 has to rise above the threshold to reduce the reduction again.
1454 Shorter signals than the chosen attack time will be left untouched.
1458 Set input level before filtering.
1459 Default is 1. Allowed range is from 0.015625 to 64.
1462 Set the mode of operation. Can be @code{upward} or @code{downward}.
1463 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1464 will be amplified, expanding dynamic range in upward direction.
1465 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1468 Set the level of gain reduction when the signal is below the threshold.
1469 Default is 0.06125. Allowed range is from 0 to 1.
1470 Setting this to 0 disables reduction and then filter behaves like expander.
1473 If a signal rises above this level the gain reduction is released.
1474 Default is 0.125. Allowed range is from 0 to 1.
1477 Set a ratio by which the signal is reduced.
1478 Default is 2. Allowed range is from 1 to 9000.
1481 Amount of milliseconds the signal has to rise above the threshold before gain
1483 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1486 Amount of milliseconds the signal has to fall below the threshold before the
1487 reduction is increased again. Default is 250 milliseconds.
1488 Allowed range is from 0.01 to 9000.
1491 Set amount of amplification of signal after processing.
1492 Default is 1. Allowed range is from 1 to 64.
1495 Curve the sharp knee around the threshold to enter gain reduction more softly.
1496 Default is 2.828427125. Allowed range is from 1 to 8.
1499 Choose if exact signal should be taken for detection or an RMS like one.
1500 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1503 Choose if the average level between all channels or the louder channel affects
1505 Default is @code{average}. Can be @code{average} or @code{maximum}.
1508 @subsection Commands
1510 This filter supports the all above options as @ref{commands}.
1514 Apply an arbitrary Infinite Impulse Response filter.
1516 It accepts the following parameters:
1520 Set B/numerator/zeros/reflection coefficients.
1523 Set A/denominator/poles/ladder coefficients.
1535 Set coefficients format.
1539 lattice-ladder function
1541 analog transfer function
1543 digital transfer function
1545 Z-plane zeros/poles, cartesian (default)
1547 Z-plane zeros/poles, polar radians
1549 Z-plane zeros/poles, polar degrees
1555 Set type of processing.
1567 Set filtering precision.
1571 double-precision floating-point (default)
1573 single-precision floating-point
1581 Normalize filter coefficients, by default is enabled.
1582 Enabling it will normalize magnitude response at DC to 0dB.
1585 How much to use filtered signal in output. Default is 1.
1586 Range is between 0 and 1.
1589 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1590 By default it is disabled.
1593 Set for which IR channel to display frequency response. By default is first channel
1594 displayed. This option is used only when @var{response} is enabled.
1597 Set video stream size. This option is used only when @var{response} is enabled.
1600 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1603 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1604 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1607 Different coefficients and gains can be provided for every channel, in such case
1608 use '|' to separate coefficients or gains. Last provided coefficients will be
1609 used for all remaining channels.
1611 @subsection Examples
1615 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1617 aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
1621 Same as above but in @code{zp} format:
1623 aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
1627 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1629 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1635 The limiter prevents an input signal from rising over a desired threshold.
1636 This limiter uses lookahead technology to prevent your signal from distorting.
1637 It means that there is a small delay after the signal is processed. Keep in mind
1638 that the delay it produces is the attack time you set.
1640 The filter accepts the following options:
1644 Set input gain. Default is 1.
1647 Set output gain. Default is 1.
1650 Don't let signals above this level pass the limiter. Default is 1.
1653 The limiter will reach its attenuation level in this amount of time in
1654 milliseconds. Default is 5 milliseconds.
1657 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1658 Default is 50 milliseconds.
1661 When gain reduction is always needed ASC takes care of releasing to an
1662 average reduction level rather than reaching a reduction of 0 in the release
1666 Select how much the release time is affected by ASC, 0 means nearly no changes
1667 in release time while 1 produces higher release times.
1670 Auto level output signal. Default is enabled.
1671 This normalizes audio back to 0dB if enabled.
1674 Depending on picked setting it is recommended to upsample input 2x or 4x times
1675 with @ref{aresample} before applying this filter.
1679 Apply a two-pole all-pass filter with central frequency (in Hz)
1680 @var{frequency}, and filter-width @var{width}.
1681 An all-pass filter changes the audio's frequency to phase relationship
1682 without changing its frequency to amplitude relationship.
1684 The filter accepts the following options:
1688 Set frequency in Hz.
1691 Set method to specify band-width of filter.
1706 Specify the band-width of a filter in width_type units.
1709 How much to use filtered signal in output. Default is 1.
1710 Range is between 0 and 1.
1713 Specify which channels to filter, by default all available are filtered.
1716 Normalize biquad coefficients, by default is disabled.
1717 Enabling it will normalize magnitude response at DC to 0dB.
1720 Set the filter order, can be 1 or 2. Default is 2.
1723 Set transform type of IIR filter.
1732 Set precison of filtering.
1735 Pick automatic sample format depending on surround filters.
1737 Always use signed 16-bit.
1739 Always use signed 32-bit.
1741 Always use float 32-bit.
1743 Always use float 64-bit.
1747 @subsection Commands
1749 This filter supports the following commands:
1752 Change allpass frequency.
1753 Syntax for the command is : "@var{frequency}"
1756 Change allpass width_type.
1757 Syntax for the command is : "@var{width_type}"
1760 Change allpass width.
1761 Syntax for the command is : "@var{width}"
1765 Syntax for the command is : "@var{mix}"
1772 The filter accepts the following options:
1776 Set the number of loops. Setting this value to -1 will result in infinite loops.
1780 Set maximal number of samples. Default is 0.
1783 Set first sample of loop. Default is 0.
1789 Merge two or more audio streams into a single multi-channel stream.
1791 The filter accepts the following options:
1796 Set the number of inputs. Default is 2.
1800 If the channel layouts of the inputs are disjoint, and therefore compatible,
1801 the channel layout of the output will be set accordingly and the channels
1802 will be reordered as necessary. If the channel layouts of the inputs are not
1803 disjoint, the output will have all the channels of the first input then all
1804 the channels of the second input, in that order, and the channel layout of
1805 the output will be the default value corresponding to the total number of
1808 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1809 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1810 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1811 first input, b1 is the first channel of the second input).
1813 On the other hand, if both input are in stereo, the output channels will be
1814 in the default order: a1, a2, b1, b2, and the channel layout will be
1815 arbitrarily set to 4.0, which may or may not be the expected value.
1817 All inputs must have the same sample rate, and format.
1819 If inputs do not have the same duration, the output will stop with the
1822 @subsection Examples
1826 Merge two mono files into a stereo stream:
1828 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1832 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1834 ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
1840 Mixes multiple audio inputs into a single output.
1842 Note that this filter only supports float samples (the @var{amerge}
1843 and @var{pan} audio filters support many formats). If the @var{amix}
1844 input has integer samples then @ref{aresample} will be automatically
1845 inserted to perform the conversion to float samples.
1849 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1851 will mix 3 input audio streams to a single output with the same duration as the
1852 first input and a dropout transition time of 3 seconds.
1854 It accepts the following parameters:
1858 The number of inputs. If unspecified, it defaults to 2.
1861 How to determine the end-of-stream.
1865 The duration of the longest input. (default)
1868 The duration of the shortest input.
1871 The duration of the first input.
1875 @item dropout_transition
1876 The transition time, in seconds, for volume renormalization when an input
1877 stream ends. The default value is 2 seconds.
1880 Specify weight of each input audio stream as sequence.
1881 Each weight is separated by space. By default all inputs have same weight.
1884 Do not scale inputs but instead do only summation of samples.
1885 Beware of heavy clipping if inputs are not normalized prior of filtering
1886 or output from @var{amix} normalized after filtering. By default is disabled.
1889 @subsection Commands
1891 This filter supports the following commands:
1895 Syntax is same as option with same name.
1900 Multiply first audio stream with second audio stream and store result
1901 in output audio stream. Multiplication is done by multiplying each
1902 sample from first stream with sample at same position from second stream.
1904 With this element-wise multiplication one can create amplitude fades and
1905 amplitude modulations.
1907 @section anequalizer
1909 High-order parametric multiband equalizer for each channel.
1911 It accepts the following parameters:
1915 This option string is in format:
1916 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1917 Each equalizer band is separated by '|'.
1921 Set channel number to which equalization will be applied.
1922 If input doesn't have that channel the entry is ignored.
1925 Set central frequency for band.
1926 If input doesn't have that frequency the entry is ignored.
1929 Set band width in Hertz.
1932 Set band gain in dB.
1935 Set filter type for band, optional, can be:
1939 Butterworth, this is default.
1950 With this option activated frequency response of anequalizer is displayed
1954 Set video stream size. Only useful if curves option is activated.
1957 Set max gain that will be displayed. Only useful if curves option is activated.
1958 Setting this to a reasonable value makes it possible to display gain which is derived from
1959 neighbour bands which are too close to each other and thus produce higher gain
1960 when both are activated.
1963 Set frequency scale used to draw frequency response in video output.
1964 Can be linear or logarithmic. Default is logarithmic.
1967 Set color for each channel curve which is going to be displayed in video stream.
1968 This is list of color names separated by space or by '|'.
1969 Unrecognised or missing colors will be replaced by white color.
1972 @subsection Examples
1976 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1977 for first 2 channels using Chebyshev type 1 filter:
1979 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1983 @subsection Commands
1985 This filter supports the following commands:
1988 Alter existing filter parameters.
1989 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1991 @var{fN} is existing filter number, starting from 0, if no such filter is available
1993 @var{freq} set new frequency parameter.
1994 @var{width} set new width parameter in Hertz.
1995 @var{gain} set new gain parameter in dB.
1997 Full filter invocation with asendcmd may look like this:
1998 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
2003 Reduce broadband noise in audio samples using Non-Local Means algorithm.
2005 Each sample is adjusted by looking for other samples with similar contexts. This
2006 context similarity is defined by comparing their surrounding patches of size
2007 @option{p}. Patches are searched in an area of @option{r} around the sample.
2009 The filter accepts the following options:
2013 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
2016 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
2017 Default value is 2 milliseconds.
2020 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
2021 Default value is 6 milliseconds.
2024 Set the output mode.
2026 It accepts the following values:
2029 Pass input unchanged.
2032 Pass noise filtered out.
2037 Default value is @var{o}.
2041 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
2044 @subsection Commands
2046 This filter supports the all above options as @ref{commands}.
2049 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
2051 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
2052 relate to producing the least mean square of the error signal (difference between the desired,
2053 2nd input audio stream and the actual signal, the 1st input audio stream).
2055 A description of the accepted options follows.
2068 Set the filter leakage.
2071 It accepts the following values:
2080 Pass filtered samples.
2083 Pass difference between desired and filtered samples.
2085 Default value is @var{o}.
2089 @subsection Examples
2093 One of many usages of this filter is noise reduction, input audio is filtered
2094 with same samples that are delayed by fixed amount, one such example for stereo audio is:
2096 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
2100 @subsection Commands
2102 This filter supports the same commands as options, excluding option @code{order}.
2106 Pass the audio source unchanged to the output.
2110 Pad the end of an audio stream with silence.
2112 This can be used together with @command{ffmpeg} @option{-shortest} to
2113 extend audio streams to the same length as the video stream.
2115 A description of the accepted options follows.
2119 Set silence packet size. Default value is 4096.
2122 Set the number of samples of silence to add to the end. After the
2123 value is reached, the stream is terminated. This option is mutually
2124 exclusive with @option{whole_len}.
2127 Set the minimum total number of samples in the output audio stream. If
2128 the value is longer than the input audio length, silence is added to
2129 the end, until the value is reached. This option is mutually exclusive
2130 with @option{pad_len}.
2133 Specify the duration of samples of silence to add. See
2134 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2135 for the accepted syntax. Used only if set to non-zero value.
2138 Specify the minimum total duration in the output audio stream. See
2139 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2140 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2141 the input audio length, silence is added to the end, until the value is reached.
2142 This option is mutually exclusive with @option{pad_dur}
2145 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2146 nor @option{whole_dur} option is set, the filter will add silence to the end of
2147 the input stream indefinitely.
2149 @subsection Examples
2153 Add 1024 samples of silence to the end of the input:
2159 Make sure the audio output will contain at least 10000 samples, pad
2160 the input with silence if required:
2162 apad=whole_len=10000
2166 Use @command{ffmpeg} to pad the audio input with silence, so that the
2167 video stream will always result the shortest and will be converted
2168 until the end in the output file when using the @option{shortest}
2171 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2176 Add a phasing effect to the input audio.
2178 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2179 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2181 A description of the accepted parameters follows.
2185 Set input gain. Default is 0.4.
2188 Set output gain. Default is 0.74
2191 Set delay in milliseconds. Default is 3.0.
2194 Set decay. Default is 0.4.
2197 Set modulation speed in Hz. Default is 0.5.
2200 Set modulation type. Default is triangular.
2202 It accepts the following values:
2209 @section aphaseshift
2210 Apply phase shift to input audio samples.
2212 The filter accepts the following options:
2216 Specify phase shift. Allowed range is from -1.0 to 1.0.
2217 Default value is 0.0.
2220 Set output gain applied to final output. Allowed range is from 0.0 to 1.0.
2221 Default value is 1.0.
2224 @subsection Commands
2226 This filter supports the all above options as @ref{commands}.
2230 Audio pulsator is something between an autopanner and a tremolo.
2231 But it can produce funny stereo effects as well. Pulsator changes the volume
2232 of the left and right channel based on a LFO (low frequency oscillator) with
2233 different waveforms and shifted phases.
2234 This filter have the ability to define an offset between left and right
2235 channel. An offset of 0 means that both LFO shapes match each other.
2236 The left and right channel are altered equally - a conventional tremolo.
2237 An offset of 50% means that the shape of the right channel is exactly shifted
2238 in phase (or moved backwards about half of the frequency) - pulsator acts as
2239 an autopanner. At 1 both curves match again. Every setting in between moves the
2240 phase shift gapless between all stages and produces some "bypassing" sounds with
2241 sine and triangle waveforms. The more you set the offset near 1 (starting from
2242 the 0.5) the faster the signal passes from the left to the right speaker.
2244 The filter accepts the following options:
2248 Set input gain. By default it is 1. Range is [0.015625 - 64].
2251 Set output gain. By default it is 1. Range is [0.015625 - 64].
2254 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2255 sawup or sawdown. Default is sine.
2258 Set modulation. Define how much of original signal is affected by the LFO.
2261 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2264 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2267 Set pulse width. Default is 1. Allowed range is [0 - 2].
2270 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2273 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2277 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2281 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2282 if timing is set to hz.
2288 Resample the input audio to the specified parameters, using the
2289 libswresample library. If none are specified then the filter will
2290 automatically convert between its input and output.
2292 This filter is also able to stretch/squeeze the audio data to make it match
2293 the timestamps or to inject silence / cut out audio to make it match the
2294 timestamps, do a combination of both or do neither.
2296 The filter accepts the syntax
2297 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2298 expresses a sample rate and @var{resampler_options} is a list of
2299 @var{key}=@var{value} pairs, separated by ":". See the
2300 @ref{Resampler Options,,"Resampler Options" section in the
2301 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2302 for the complete list of supported options.
2304 @subsection Examples
2308 Resample the input audio to 44100Hz:
2314 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2315 samples per second compensation:
2317 aresample=async=1000
2323 Reverse an audio clip.
2325 Warning: This filter requires memory to buffer the entire clip, so trimming
2328 @subsection Examples
2332 Take the first 5 seconds of a clip, and reverse it.
2334 atrim=end=5,areverse
2340 Reduce noise from speech using Recurrent Neural Networks.
2342 This filter accepts the following options:
2346 Set train model file to load. This option is always required.
2349 Set how much to mix filtered samples into final output.
2350 Allowed range is from -1 to 1. Default value is 1.
2351 Negative values are special, they set how much to keep filtered noise
2352 in the final filter output. Set this option to -1 to hear actual
2353 noise removed from input signal.
2356 @section asetnsamples
2358 Set the number of samples per each output audio frame.
2360 The last output packet may contain a different number of samples, as
2361 the filter will flush all the remaining samples when the input audio
2364 The filter accepts the following options:
2368 @item nb_out_samples, n
2369 Set the number of frames per each output audio frame. The number is
2370 intended as the number of samples @emph{per each channel}.
2371 Default value is 1024.
2374 If set to 1, the filter will pad the last audio frame with zeroes, so
2375 that the last frame will contain the same number of samples as the
2376 previous ones. Default value is 1.
2379 For example, to set the number of per-frame samples to 1234 and
2380 disable padding for the last frame, use:
2382 asetnsamples=n=1234:p=0
2387 Set the sample rate without altering the PCM data.
2388 This will result in a change of speed and pitch.
2390 The filter accepts the following options:
2393 @item sample_rate, r
2394 Set the output sample rate. Default is 44100 Hz.
2399 Show a line containing various information for each input audio frame.
2400 The input audio is not modified.
2402 The shown line contains a sequence of key/value pairs of the form
2403 @var{key}:@var{value}.
2405 The following values are shown in the output:
2409 The (sequential) number of the input frame, starting from 0.
2412 The presentation timestamp of the input frame, in time base units; the time base
2413 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2416 The presentation timestamp of the input frame in seconds.
2419 position of the frame in the input stream, -1 if this information in
2420 unavailable and/or meaningless (for example in case of synthetic audio)
2429 The sample rate for the audio frame.
2432 The number of samples (per channel) in the frame.
2435 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2436 audio, the data is treated as if all the planes were concatenated.
2438 @item plane_checksums
2439 A list of Adler-32 checksums for each data plane.
2443 Apply audio soft clipping.
2445 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2446 along a smooth curve, rather than the abrupt shape of hard-clipping.
2448 This filter accepts the following options:
2452 Set type of soft-clipping.
2454 It accepts the following values:
2468 Set threshold from where to start clipping. Default value is 0dB or 1.
2471 Set gain applied to output. Default value is 0dB or 1.
2474 Set additional parameter which controls sigmoid function.
2477 Set oversampling factor.
2480 @subsection Commands
2482 This filter supports the all above options as @ref{commands}.
2485 Automatic Speech Recognition
2487 This filter uses PocketSphinx for speech recognition. To enable
2488 compilation of this filter, you need to configure FFmpeg with
2489 @code{--enable-pocketsphinx}.
2491 It accepts the following options:
2495 Set sampling rate of input audio. Defaults is @code{16000}.
2496 This need to match speech models, otherwise one will get poor results.
2499 Set dictionary containing acoustic model files.
2502 Set pronunciation dictionary.
2505 Set language model file.
2508 Set language model set.
2511 Set which language model to use.
2514 Set output for log messages.
2517 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2522 Display time domain statistical information about the audio channels.
2523 Statistics are calculated and displayed for each audio channel and,
2524 where applicable, an overall figure is also given.
2526 It accepts the following option:
2529 Short window length in seconds, used for peak and trough RMS measurement.
2530 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2534 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2535 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2538 Available keys for each channel are:
2584 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2585 this @code{lavfi.astats.Overall.Peak_count}.
2587 For description what each key means read below.
2590 Set number of frame after which stats are going to be recalculated.
2591 Default is disabled.
2593 @item measure_perchannel
2594 Select the entries which need to be measured per channel. The metadata keys can
2595 be used as flags, default is @option{all} which measures everything.
2596 @option{none} disables all per channel measurement.
2598 @item measure_overall
2599 Select the entries which need to be measured overall. The metadata keys can
2600 be used as flags, default is @option{all} which measures everything.
2601 @option{none} disables all overall measurement.
2605 A description of each shown parameter follows:
2609 Mean amplitude displacement from zero.
2612 Minimal sample level.
2615 Maximal sample level.
2617 @item Min difference
2618 Minimal difference between two consecutive samples.
2620 @item Max difference
2621 Maximal difference between two consecutive samples.
2623 @item Mean difference
2624 Mean difference between two consecutive samples.
2625 The average of each difference between two consecutive samples.
2627 @item RMS difference
2628 Root Mean Square difference between two consecutive samples.
2632 Standard peak and RMS level measured in dBFS.
2636 Peak and trough values for RMS level measured over a short window.
2639 Standard ratio of peak to RMS level (note: not in dB).
2642 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2643 (i.e. either @var{Min level} or @var{Max level}).
2646 Number of occasions (not the number of samples) that the signal attained either
2647 @var{Min level} or @var{Max level}.
2649 @item Noise floor dB
2650 Minimum local peak measured in dBFS over a short window.
2652 @item Noise floor count
2653 Number of occasions (not the number of samples) that the signal attained
2657 Overall bit depth of audio. Number of bits used for each sample.
2660 Measured dynamic range of audio in dB.
2662 @item Zero crossings
2663 Number of points where the waveform crosses the zero level axis.
2665 @item Zero crossings rate
2666 Rate of Zero crossings and number of audio samples.
2670 Boost subwoofer frequencies.
2672 The filter accepts the following options:
2676 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2677 Default value is 0.7.
2680 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2681 Default value is 0.7.
2684 Set delay line decay gain value. Allowed range is from 0 to 1.
2685 Default value is 0.7.
2688 Set delay line feedback gain value. Allowed range is from 0 to 1.
2689 Default value is 0.9.
2692 Set cutoff frequency in Hertz. Allowed range is 50 to 900.
2693 Default value is 100.
2696 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2697 Default value is 0.5.
2700 Set delay. Allowed range is from 1 to 100.
2701 Default value is 20.
2704 @subsection Commands
2706 This filter supports the all above options as @ref{commands}.
2709 Cut subwoofer frequencies.
2711 This filter allows to set custom, steeper
2712 roll off than highpass filter, and thus is able to more attenuate
2713 frequency content in stop-band.
2715 The filter accepts the following options:
2719 Set cutoff frequency in Hertz. Allowed range is 2 to 200.
2720 Default value is 20.
2723 Set filter order. Available values are from 3 to 20.
2724 Default value is 10.
2727 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2730 @subsection Commands
2732 This filter supports the all above options as @ref{commands}.
2735 Cut super frequencies.
2737 The filter accepts the following options:
2741 Set cutoff frequency in Hertz. Allowed range is 20000 to 192000.
2742 Default value is 20000.
2745 Set filter order. Available values are from 3 to 20.
2746 Default value is 10.
2749 Set input gain level. Allowed range is from 0 to 1. Default value is 1.
2752 @subsection Commands
2754 This filter supports the all above options as @ref{commands}.
2757 Apply high order Butterworth band-pass filter.
2759 The filter accepts the following options:
2763 Set center frequency in Hertz. Allowed range is 2 to 999999.
2764 Default value is 1000.
2767 Set filter order. Available values are from 4 to 20.
2771 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2774 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2777 @subsection Commands
2779 This filter supports the all above options as @ref{commands}.
2782 Apply high order Butterworth band-stop filter.
2784 The filter accepts the following options:
2788 Set center frequency in Hertz. Allowed range is 2 to 999999.
2789 Default value is 1000.
2792 Set filter order. Available values are from 4 to 20.
2796 Set Q-factor. Allowed range is from 0.01 to 100. Default value is 1.
2799 Set input gain level. Allowed range is from 0 to 2. Default value is 1.
2802 @subsection Commands
2804 This filter supports the all above options as @ref{commands}.
2810 The filter accepts exactly one parameter, the audio tempo. If not
2811 specified then the filter will assume nominal 1.0 tempo. Tempo must
2812 be in the [0.5, 100.0] range.
2814 Note that tempo greater than 2 will skip some samples rather than
2815 blend them in. If for any reason this is a concern it is always
2816 possible to daisy-chain several instances of atempo to achieve the
2817 desired product tempo.
2819 @subsection Examples
2823 Slow down audio to 80% tempo:
2829 To speed up audio to 300% tempo:
2835 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2837 atempo=sqrt(3),atempo=sqrt(3)
2841 @subsection Commands
2843 This filter supports the following commands:
2846 Change filter tempo scale factor.
2847 Syntax for the command is : "@var{tempo}"
2852 Trim the input so that the output contains one continuous subpart of the input.
2854 It accepts the following parameters:
2857 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2858 sample with the timestamp @var{start} will be the first sample in the output.
2861 Specify time of the first audio sample that will be dropped, i.e. the
2862 audio sample immediately preceding the one with the timestamp @var{end} will be
2863 the last sample in the output.
2866 Same as @var{start}, except this option sets the start timestamp in samples
2870 Same as @var{end}, except this option sets the end timestamp in samples instead
2874 The maximum duration of the output in seconds.
2877 The number of the first sample that should be output.
2880 The number of the first sample that should be dropped.
2883 @option{start}, @option{end}, and @option{duration} are expressed as time
2884 duration specifications; see
2885 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2887 Note that the first two sets of the start/end options and the @option{duration}
2888 option look at the frame timestamp, while the _sample options simply count the
2889 samples that pass through the filter. So start/end_pts and start/end_sample will
2890 give different results when the timestamps are wrong, inexact or do not start at
2891 zero. Also note that this filter does not modify the timestamps. If you wish
2892 to have the output timestamps start at zero, insert the asetpts filter after the
2895 If multiple start or end options are set, this filter tries to be greedy and
2896 keep all samples that match at least one of the specified constraints. To keep
2897 only the part that matches all the constraints at once, chain multiple atrim
2900 The defaults are such that all the input is kept. So it is possible to set e.g.
2901 just the end values to keep everything before the specified time.
2906 Drop everything except the second minute of input:
2908 ffmpeg -i INPUT -af atrim=60:120
2912 Keep only the first 1000 samples:
2914 ffmpeg -i INPUT -af atrim=end_sample=1000
2919 @section axcorrelate
2920 Calculate normalized cross-correlation between two input audio streams.
2922 Resulted samples are always between -1 and 1 inclusive.
2923 If result is 1 it means two input samples are highly correlated in that selected segment.
2924 Result 0 means they are not correlated at all.
2925 If result is -1 it means two input samples are out of phase, which means they cancel each
2928 The filter accepts the following options:
2932 Set size of segment over which cross-correlation is calculated.
2933 Default is 256. Allowed range is from 2 to 131072.
2936 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2937 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2938 are always zero and thus need much less calculations to make.
2939 This is generally not true, but is valid for typical audio streams.
2942 @subsection Examples
2946 Calculate correlation between channels in stereo audio stream:
2948 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2954 Apply a two-pole Butterworth band-pass filter with central
2955 frequency @var{frequency}, and (3dB-point) band-width width.
2956 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2957 instead of the default: constant 0dB peak gain.
2958 The filter roll off at 6dB per octave (20dB per decade).
2960 The filter accepts the following options:
2964 Set the filter's central frequency. Default is @code{3000}.
2967 Constant skirt gain if set to 1. Defaults to 0.
2970 Set method to specify band-width of filter.
2985 Specify the band-width of a filter in width_type units.
2988 How much to use filtered signal in output. Default is 1.
2989 Range is between 0 and 1.
2992 Specify which channels to filter, by default all available are filtered.
2995 Normalize biquad coefficients, by default is disabled.
2996 Enabling it will normalize magnitude response at DC to 0dB.
2999 Set transform type of IIR filter.
3008 Set precison of filtering.
3011 Pick automatic sample format depending on surround filters.
3013 Always use signed 16-bit.
3015 Always use signed 32-bit.
3017 Always use float 32-bit.
3019 Always use float 64-bit.
3023 @subsection Commands
3025 This filter supports the following commands:
3028 Change bandpass frequency.
3029 Syntax for the command is : "@var{frequency}"
3032 Change bandpass width_type.
3033 Syntax for the command is : "@var{width_type}"
3036 Change bandpass width.
3037 Syntax for the command is : "@var{width}"
3040 Change bandpass mix.
3041 Syntax for the command is : "@var{mix}"
3046 Apply a two-pole Butterworth band-reject filter with central
3047 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
3048 The filter roll off at 6dB per octave (20dB per decade).
3050 The filter accepts the following options:
3054 Set the filter's central frequency. Default is @code{3000}.
3057 Set method to specify band-width of filter.
3072 Specify the band-width of a filter in width_type units.
3075 How much to use filtered signal in output. Default is 1.
3076 Range is between 0 and 1.
3079 Specify which channels to filter, by default all available are filtered.
3082 Normalize biquad coefficients, by default is disabled.
3083 Enabling it will normalize magnitude response at DC to 0dB.
3086 Set transform type of IIR filter.
3095 Set precison of filtering.
3098 Pick automatic sample format depending on surround filters.
3100 Always use signed 16-bit.
3102 Always use signed 32-bit.
3104 Always use float 32-bit.
3106 Always use float 64-bit.
3110 @subsection Commands
3112 This filter supports the following commands:
3115 Change bandreject frequency.
3116 Syntax for the command is : "@var{frequency}"
3119 Change bandreject width_type.
3120 Syntax for the command is : "@var{width_type}"
3123 Change bandreject width.
3124 Syntax for the command is : "@var{width}"
3127 Change bandreject mix.
3128 Syntax for the command is : "@var{mix}"
3131 @section bass, lowshelf
3133 Boost or cut the bass (lower) frequencies of the audio using a two-pole
3134 shelving filter with a response similar to that of a standard
3135 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
3137 The filter accepts the following options:
3141 Give the gain at 0 Hz. Its useful range is about -20
3142 (for a large cut) to +20 (for a large boost).
3143 Beware of clipping when using a positive gain.
3146 Set the filter's central frequency and so can be used
3147 to extend or reduce the frequency range to be boosted or cut.
3148 The default value is @code{100} Hz.
3151 Set method to specify band-width of filter.
3166 Determine how steep is the filter's shelf transition.
3169 Set number of poles. Default is 2.
3172 How much to use filtered signal in output. Default is 1.
3173 Range is between 0 and 1.
3176 Specify which channels to filter, by default all available are filtered.
3179 Normalize biquad coefficients, by default is disabled.
3180 Enabling it will normalize magnitude response at DC to 0dB.
3183 Set transform type of IIR filter.
3192 Set precison of filtering.
3195 Pick automatic sample format depending on surround filters.
3197 Always use signed 16-bit.
3199 Always use signed 32-bit.
3201 Always use float 32-bit.
3203 Always use float 64-bit.
3207 @subsection Commands
3209 This filter supports the following commands:
3212 Change bass frequency.
3213 Syntax for the command is : "@var{frequency}"
3216 Change bass width_type.
3217 Syntax for the command is : "@var{width_type}"
3221 Syntax for the command is : "@var{width}"
3225 Syntax for the command is : "@var{gain}"
3229 Syntax for the command is : "@var{mix}"
3234 Apply a biquad IIR filter with the given coefficients.
3235 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
3236 are the numerator and denominator coefficients respectively.
3237 and @var{channels}, @var{c} specify which channels to filter, by default all
3238 available are filtered.
3240 @subsection Commands
3242 This filter supports the following commands:
3250 Change biquad parameter.
3251 Syntax for the command is : "@var{value}"
3254 How much to use filtered signal in output. Default is 1.
3255 Range is between 0 and 1.
3258 Specify which channels to filter, by default all available are filtered.
3261 Normalize biquad coefficients, by default is disabled.
3262 Enabling it will normalize magnitude response at DC to 0dB.
3265 Set transform type of IIR filter.
3274 Set precison of filtering.
3277 Pick automatic sample format depending on surround filters.
3279 Always use signed 16-bit.
3281 Always use signed 32-bit.
3283 Always use float 32-bit.
3285 Always use float 64-bit.
3290 Bauer stereo to binaural transformation, which improves headphone listening of
3291 stereo audio records.
3293 To enable compilation of this filter you need to configure FFmpeg with
3294 @code{--enable-libbs2b}.
3296 It accepts the following parameters:
3300 Pre-defined crossfeed level.
3304 Default level (fcut=700, feed=50).
3307 Chu Moy circuit (fcut=700, feed=60).
3310 Jan Meier circuit (fcut=650, feed=95).
3315 Cut frequency (in Hz).
3324 Remap input channels to new locations.
3326 It accepts the following parameters:
3329 Map channels from input to output. The argument is a '|'-separated list of
3330 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3331 @var{in_channel} form. @var{in_channel} can be either the name of the input
3332 channel (e.g. FL for front left) or its index in the input channel layout.
3333 @var{out_channel} is the name of the output channel or its index in the output
3334 channel layout. If @var{out_channel} is not given then it is implicitly an
3335 index, starting with zero and increasing by one for each mapping.
3337 @item channel_layout
3338 The channel layout of the output stream.
3341 If no mapping is present, the filter will implicitly map input channels to
3342 output channels, preserving indices.
3344 @subsection Examples
3348 For example, assuming a 5.1+downmix input MOV file,
3350 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3352 will create an output WAV file tagged as stereo from the downmix channels of
3356 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3358 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3362 @section channelsplit
3364 Split each channel from an input audio stream into a separate output stream.
3366 It accepts the following parameters:
3368 @item channel_layout
3369 The channel layout of the input stream. The default is "stereo".
3371 A channel layout describing the channels to be extracted as separate output streams
3372 or "all" to extract each input channel as a separate stream. The default is "all".
3374 Choosing channels not present in channel layout in the input will result in an error.
3377 @subsection Examples
3381 For example, assuming a stereo input MP3 file,
3383 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3385 will create an output Matroska file with two audio streams, one containing only
3386 the left channel and the other the right channel.
3389 Split a 5.1 WAV file into per-channel files:
3391 ffmpeg -i in.wav -filter_complex
3392 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3393 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3394 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3399 Extract only LFE from a 5.1 WAV file:
3401 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3402 -map '[LFE]' lfe.wav
3407 Add a chorus effect to the audio.
3409 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3411 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3412 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3413 The modulation depth defines the range the modulated delay is played before or after
3414 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3415 sound tuned around the original one, like in a chorus where some vocals are slightly
3418 It accepts the following parameters:
3421 Set input gain. Default is 0.4.
3424 Set output gain. Default is 0.4.
3427 Set delays. A typical delay is around 40ms to 60ms.
3439 @subsection Examples
3445 chorus=0.7:0.9:55:0.4:0.25:2
3451 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3455 Fuller sounding chorus with three delays:
3457 chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
3462 Compress or expand the audio's dynamic range.
3464 It accepts the following parameters:
3470 A list of times in seconds for each channel over which the instantaneous level
3471 of the input signal is averaged to determine its volume. @var{attacks} refers to
3472 increase of volume and @var{decays} refers to decrease of volume. For most
3473 situations, the attack time (response to the audio getting louder) should be
3474 shorter than the decay time, because the human ear is more sensitive to sudden
3475 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3476 a typical value for decay is 0.8 seconds.
3477 If specified number of attacks & decays is lower than number of channels, the last
3478 set attack/decay will be used for all remaining channels.
3481 A list of points for the transfer function, specified in dB relative to the
3482 maximum possible signal amplitude. Each key points list must be defined using
3483 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3484 @code{x0/y0 x1/y1 x2/y2 ....}
3486 The input values must be in strictly increasing order but the transfer function
3487 does not have to be monotonically rising. The point @code{0/0} is assumed but
3488 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3489 function are @code{-70/-70|-60/-20|1/0}.
3492 Set the curve radius in dB for all joints. It defaults to 0.01.
3495 Set the additional gain in dB to be applied at all points on the transfer
3496 function. This allows for easy adjustment of the overall gain.
3500 Set an initial volume, in dB, to be assumed for each channel when filtering
3501 starts. This permits the user to supply a nominal level initially, so that, for
3502 example, a very large gain is not applied to initial signal levels before the
3503 companding has begun to operate. A typical value for audio which is initially
3504 quiet is -90 dB. It defaults to 0.
3507 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3508 delayed before being fed to the volume adjuster. Specifying a delay
3509 approximately equal to the attack/decay times allows the filter to effectively
3510 operate in predictive rather than reactive mode. It defaults to 0.
3514 @subsection Examples
3518 Make music with both quiet and loud passages suitable for listening to in a
3521 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3524 Another example for audio with whisper and explosion parts:
3526 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3530 A noise gate for when the noise is at a lower level than the signal:
3532 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3536 Here is another noise gate, this time for when the noise is at a higher level
3537 than the signal (making it, in some ways, similar to squelch):
3539 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3543 2:1 compression starting at -6dB:
3545 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3549 2:1 compression starting at -9dB:
3551 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3555 2:1 compression starting at -12dB:
3557 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3561 2:1 compression starting at -18dB:
3563 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3567 3:1 compression starting at -15dB:
3569 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3575 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3581 compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
3585 Hard limiter at -6dB:
3587 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3591 Hard limiter at -12dB:
3593 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3597 Hard noise gate at -35 dB:
3599 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3605 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3609 @section compensationdelay
3611 Compensation Delay Line is a metric based delay to compensate differing
3612 positions of microphones or speakers.
3614 For example, you have recorded guitar with two microphones placed in
3615 different locations. Because the front of sound wave has fixed speed in
3616 normal conditions, the phasing of microphones can vary and depends on
3617 their location and interposition. The best sound mix can be achieved when
3618 these microphones are in phase (synchronized). Note that a distance of
3619 ~30 cm between microphones makes one microphone capture the signal in
3620 antiphase to the other microphone. That makes the final mix sound moody.
3621 This filter helps to solve phasing problems by adding different delays
3622 to each microphone track and make them synchronized.
3624 The best result can be reached when you take one track as base and
3625 synchronize other tracks one by one with it.
3626 Remember that synchronization/delay tolerance depends on sample rate, too.
3627 Higher sample rates will give more tolerance.
3629 The filter accepts the following parameters:
3633 Set millimeters distance. This is compensation distance for fine tuning.
3637 Set cm distance. This is compensation distance for tightening distance setup.
3641 Set meters distance. This is compensation distance for hard distance setup.
3645 Set dry amount. Amount of unprocessed (dry) signal.
3649 Set wet amount. Amount of processed (wet) signal.
3653 Set temperature in degrees Celsius. This is the temperature of the environment.
3658 Apply headphone crossfeed filter.
3660 Crossfeed is the process of blending the left and right channels of stereo
3662 It is mainly used to reduce extreme stereo separation of low frequencies.
3664 The intent is to produce more speaker like sound to the listener.
3666 The filter accepts the following options:
3670 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3671 This sets gain of low shelf filter for side part of stereo image.
3672 Default is -6dB. Max allowed is -30db when strength is set to 1.
3675 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3676 This sets cut off frequency of low shelf filter. Default is cut off near
3677 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3680 Set curve slope of low shelf filter. Default is 0.5.
3681 Allowed range is from 0.01 to 1.
3684 Set input gain. Default is 0.9.
3687 Set output gain. Default is 1.
3690 @subsection Commands
3692 This filter supports the all above options as @ref{commands}.
3694 @section crystalizer
3695 Simple algorithm for audio noise sharpening.
3697 This filter linearly increases differences betweeen each audio sample.
3699 The filter accepts the following options:
3703 Sets the intensity of effect (default: 2.0). Must be in range between -10.0 to 0
3704 (unchanged sound) to 10.0 (maximum effect).
3705 To inverse filtering use negative value.
3708 Enable clipping. By default is enabled.
3711 @subsection Commands
3713 This filter supports the all above options as @ref{commands}.
3716 Apply a DC shift to the audio.
3718 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3719 in the recording chain) from the audio. The effect of a DC offset is reduced
3720 headroom and hence volume. The @ref{astats} filter can be used to determine if
3721 a signal has a DC offset.
3725 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3729 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3730 used to prevent clipping.
3735 Apply de-essing to the audio samples.
3739 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3743 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3747 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3751 Set the output mode.
3753 It accepts the following values:
3756 Pass input unchanged.
3759 Pass ess filtered out.
3764 Default value is @var{o}.
3770 Measure audio dynamic range.
3772 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3773 is found in transition material. And anything less that 8 have very poor dynamics
3774 and is very compressed.
3776 The filter accepts the following options:
3780 Set window length in seconds used to split audio into segments of equal length.
3781 Default is 3 seconds.
3785 Dynamic Audio Normalizer.
3787 This filter applies a certain amount of gain to the input audio in order
3788 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3789 contrast to more "simple" normalization algorithms, the Dynamic Audio
3790 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3791 This allows for applying extra gain to the "quiet" sections of the audio
3792 while avoiding distortions or clipping the "loud" sections. In other words:
3793 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3794 sections, in the sense that the volume of each section is brought to the
3795 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3796 this goal *without* applying "dynamic range compressing". It will retain 100%
3797 of the dynamic range *within* each section of the audio file.
3801 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3802 Default is 500 milliseconds.
3803 The Dynamic Audio Normalizer processes the input audio in small chunks,
3804 referred to as frames. This is required, because a peak magnitude has no
3805 meaning for just a single sample value. Instead, we need to determine the
3806 peak magnitude for a contiguous sequence of sample values. While a "standard"
3807 normalizer would simply use the peak magnitude of the complete file, the
3808 Dynamic Audio Normalizer determines the peak magnitude individually for each
3809 frame. The length of a frame is specified in milliseconds. By default, the
3810 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3811 been found to give good results with most files.
3812 Note that the exact frame length, in number of samples, will be determined
3813 automatically, based on the sampling rate of the individual input audio file.
3816 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3817 number. Default is 31.
3818 Probably the most important parameter of the Dynamic Audio Normalizer is the
3819 @code{window size} of the Gaussian smoothing filter. The filter's window size
3820 is specified in frames, centered around the current frame. For the sake of
3821 simplicity, this must be an odd number. Consequently, the default value of 31
3822 takes into account the current frame, as well as the 15 preceding frames and
3823 the 15 subsequent frames. Using a larger window results in a stronger
3824 smoothing effect and thus in less gain variation, i.e. slower gain
3825 adaptation. Conversely, using a smaller window results in a weaker smoothing
3826 effect and thus in more gain variation, i.e. faster gain adaptation.
3827 In other words, the more you increase this value, the more the Dynamic Audio
3828 Normalizer will behave like a "traditional" normalization filter. On the
3829 contrary, the more you decrease this value, the more the Dynamic Audio
3830 Normalizer will behave like a dynamic range compressor.
3833 Set the target peak value. This specifies the highest permissible magnitude
3834 level for the normalized audio input. This filter will try to approach the
3835 target peak magnitude as closely as possible, but at the same time it also
3836 makes sure that the normalized signal will never exceed the peak magnitude.
3837 A frame's maximum local gain factor is imposed directly by the target peak
3838 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3839 It is not recommended to go above this value.
3842 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3843 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3844 factor for each input frame, i.e. the maximum gain factor that does not
3845 result in clipping or distortion. The maximum gain factor is determined by
3846 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3847 additionally bounds the frame's maximum gain factor by a predetermined
3848 (global) maximum gain factor. This is done in order to avoid excessive gain
3849 factors in "silent" or almost silent frames. By default, the maximum gain
3850 factor is 10.0, For most inputs the default value should be sufficient and
3851 it usually is not recommended to increase this value. Though, for input
3852 with an extremely low overall volume level, it may be necessary to allow even
3853 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3854 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3855 Instead, a "sigmoid" threshold function will be applied. This way, the
3856 gain factors will smoothly approach the threshold value, but never exceed that
3860 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3861 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3862 This means that the maximum local gain factor for each frame is defined
3863 (only) by the frame's highest magnitude sample. This way, the samples can
3864 be amplified as much as possible without exceeding the maximum signal
3865 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3866 Normalizer can also take into account the frame's root mean square,
3867 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3868 determine the power of a time-varying signal. It is therefore considered
3869 that the RMS is a better approximation of the "perceived loudness" than
3870 just looking at the signal's peak magnitude. Consequently, by adjusting all
3871 frames to a constant RMS value, a uniform "perceived loudness" can be
3872 established. If a target RMS value has been specified, a frame's local gain
3873 factor is defined as the factor that would result in exactly that RMS value.
3874 Note, however, that the maximum local gain factor is still restricted by the
3875 frame's highest magnitude sample, in order to prevent clipping.
3878 Enable channels coupling. By default is enabled.
3879 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3880 amount. This means the same gain factor will be applied to all channels, i.e.
3881 the maximum possible gain factor is determined by the "loudest" channel.
3882 However, in some recordings, it may happen that the volume of the different
3883 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3884 In this case, this option can be used to disable the channel coupling. This way,
3885 the gain factor will be determined independently for each channel, depending
3886 only on the individual channel's highest magnitude sample. This allows for
3887 harmonizing the volume of the different channels.
3890 Enable DC bias correction. By default is disabled.
3891 An audio signal (in the time domain) is a sequence of sample values.
3892 In the Dynamic Audio Normalizer these sample values are represented in the
3893 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3894 audio signal, or "waveform", should be centered around the zero point.
3895 That means if we calculate the mean value of all samples in a file, or in a
3896 single frame, then the result should be 0.0 or at least very close to that
3897 value. If, however, there is a significant deviation of the mean value from
3898 0.0, in either positive or negative direction, this is referred to as a
3899 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3900 Audio Normalizer provides optional DC bias correction.
3901 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3902 the mean value, or "DC correction" offset, of each input frame and subtract
3903 that value from all of the frame's sample values which ensures those samples
3904 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3905 boundaries, the DC correction offset values will be interpolated smoothly
3906 between neighbouring frames.
3908 @item altboundary, b
3909 Enable alternative boundary mode. By default is disabled.
3910 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3911 around each frame. This includes the preceding frames as well as the
3912 subsequent frames. However, for the "boundary" frames, located at the very
3913 beginning and at the very end of the audio file, not all neighbouring
3914 frames are available. In particular, for the first few frames in the audio
3915 file, the preceding frames are not known. And, similarly, for the last few
3916 frames in the audio file, the subsequent frames are not known. Thus, the
3917 question arises which gain factors should be assumed for the missing frames
3918 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3919 to deal with this situation. The default boundary mode assumes a gain factor
3920 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3921 "fade out" at the beginning and at the end of the input, respectively.
3924 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3925 By default, the Dynamic Audio Normalizer does not apply "traditional"
3926 compression. This means that signal peaks will not be pruned and thus the
3927 full dynamic range will be retained within each local neighbourhood. However,
3928 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3929 normalization algorithm with a more "traditional" compression.
3930 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3931 (thresholding) function. If (and only if) the compression feature is enabled,
3932 all input frames will be processed by a soft knee thresholding function prior
3933 to the actual normalization process. Put simply, the thresholding function is
3934 going to prune all samples whose magnitude exceeds a certain threshold value.
3935 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3936 value. Instead, the threshold value will be adjusted for each individual
3938 In general, smaller parameters result in stronger compression, and vice versa.
3939 Values below 3.0 are not recommended, because audible distortion may appear.
3942 Set the target threshold value. This specifies the lowest permissible
3943 magnitude level for the audio input which will be normalized.
3944 If input frame volume is above this value frame will be normalized.
3945 Otherwise frame may not be normalized at all. The default value is set
3946 to 0, which means all input frames will be normalized.
3947 This option is mostly useful if digital noise is not wanted to be amplified.
3950 @subsection Commands
3952 This filter supports the all above options as @ref{commands}.
3956 Make audio easier to listen to on headphones.
3958 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3959 so that when listened to on headphones the stereo image is moved from
3960 inside your head (standard for headphones) to outside and in front of
3961 the listener (standard for speakers).
3967 Apply a two-pole peaking equalisation (EQ) filter. With this
3968 filter, the signal-level at and around a selected frequency can
3969 be increased or decreased, whilst (unlike bandpass and bandreject
3970 filters) that at all other frequencies is unchanged.
3972 In order to produce complex equalisation curves, this filter can
3973 be given several times, each with a different central frequency.
3975 The filter accepts the following options:
3979 Set the filter's central frequency in Hz.
3982 Set method to specify band-width of filter.
3997 Specify the band-width of a filter in width_type units.
4000 Set the required gain or attenuation in dB.
4001 Beware of clipping when using a positive gain.
4004 How much to use filtered signal in output. Default is 1.
4005 Range is between 0 and 1.
4008 Specify which channels to filter, by default all available are filtered.
4011 Normalize biquad coefficients, by default is disabled.
4012 Enabling it will normalize magnitude response at DC to 0dB.
4015 Set transform type of IIR filter.
4024 Set precison of filtering.
4027 Pick automatic sample format depending on surround filters.
4029 Always use signed 16-bit.
4031 Always use signed 32-bit.
4033 Always use float 32-bit.
4035 Always use float 64-bit.
4039 @subsection Examples
4042 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
4044 equalizer=f=1000:t=h:width=200:g=-10
4048 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
4050 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
4054 @subsection Commands
4056 This filter supports the following commands:
4059 Change equalizer frequency.
4060 Syntax for the command is : "@var{frequency}"
4063 Change equalizer width_type.
4064 Syntax for the command is : "@var{width_type}"
4067 Change equalizer width.
4068 Syntax for the command is : "@var{width}"
4071 Change equalizer gain.
4072 Syntax for the command is : "@var{gain}"
4075 Change equalizer mix.
4076 Syntax for the command is : "@var{mix}"
4079 @section extrastereo
4081 Linearly increases the difference between left and right channels which
4082 adds some sort of "live" effect to playback.
4084 The filter accepts the following options:
4088 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
4089 (average of both channels), with 1.0 sound will be unchanged, with
4090 -1.0 left and right channels will be swapped.
4093 Enable clipping. By default is enabled.
4096 @subsection Commands
4098 This filter supports the all above options as @ref{commands}.
4100 @section firequalizer
4101 Apply FIR Equalization using arbitrary frequency response.
4103 The filter accepts the following option:
4107 Set gain curve equation (in dB). The expression can contain variables:
4110 the evaluated frequency
4114 channel number, set to 0 when multichannels evaluation is disabled
4116 channel id, see libavutil/channel_layout.h, set to the first channel id when
4117 multichannels evaluation is disabled
4121 channel_layout, see libavutil/channel_layout.h
4126 @item gain_interpolate(f)
4127 interpolate gain on frequency f based on gain_entry
4128 @item cubic_interpolate(f)
4129 same as gain_interpolate, but smoother
4131 This option is also available as command. Default is @code{gain_interpolate(f)}.
4134 Set gain entry for gain_interpolate function. The expression can
4138 store gain entry at frequency f with value g
4140 This option is also available as command.
4143 Set filter delay in seconds. Higher value means more accurate.
4144 Default is @code{0.01}.
4147 Set filter accuracy in Hz. Lower value means more accurate.
4148 Default is @code{5}.
4151 Set window function. Acceptable values are:
4154 rectangular window, useful when gain curve is already smooth
4156 hann window (default)
4162 3-terms continuous 1st derivative nuttall window
4164 minimum 3-terms discontinuous nuttall window
4166 4-terms continuous 1st derivative nuttall window
4168 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
4170 blackman-harris window
4176 If enabled, use fixed number of audio samples. This improves speed when
4177 filtering with large delay. Default is disabled.
4180 Enable multichannels evaluation on gain. Default is disabled.
4183 Enable zero phase mode by subtracting timestamp to compensate delay.
4184 Default is disabled.
4187 Set scale used by gain. Acceptable values are:
4190 linear frequency, linear gain
4192 linear frequency, logarithmic (in dB) gain (default)
4194 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
4196 logarithmic frequency, logarithmic gain
4200 Set file for dumping, suitable for gnuplot.
4203 Set scale for dumpfile. Acceptable values are same with scale option.
4207 Enable 2-channel convolution using complex FFT. This improves speed significantly.
4208 Default is disabled.
4211 Enable minimum phase impulse response. Default is disabled.
4214 @subsection Examples
4219 firequalizer=gain='if(lt(f,1000), 0, -INF)'
4222 lowpass at 1000 Hz with gain_entry:
4224 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
4227 custom equalization:
4229 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
4232 higher delay with zero phase to compensate delay:
4234 firequalizer=delay=0.1:fixed=on:zero_phase=on
4237 lowpass on left channel, highpass on right channel:
4239 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
4240 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
4245 Apply a flanging effect to the audio.
4247 The filter accepts the following options:
4251 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
4254 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
4257 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
4261 Set percentage of delayed signal mixed with original. Range from 0 to 100.
4262 Default value is 71.
4265 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
4268 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
4269 Default value is @var{sinusoidal}.
4272 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
4273 Default value is 25.
4276 Set delay-line interpolation, @var{linear} or @var{quadratic}.
4277 Default is @var{linear}.
4281 Apply Haas effect to audio.
4283 Note that this makes most sense to apply on mono signals.
4284 With this filter applied to mono signals it give some directionality and
4285 stretches its stereo image.
4287 The filter accepts the following options:
4291 Set input level. By default is @var{1}, or 0dB
4294 Set output level. By default is @var{1}, or 0dB.
4297 Set gain applied to side part of signal. By default is @var{1}.
4300 Set kind of middle source. Can be one of the following:
4310 Pick middle part signal of stereo image.
4313 Pick side part signal of stereo image.
4317 Change middle phase. By default is disabled.
4320 Set left channel delay. By default is @var{2.05} milliseconds.
4323 Set left channel balance. By default is @var{-1}.
4326 Set left channel gain. By default is @var{1}.
4329 Change left phase. By default is disabled.
4332 Set right channel delay. By defaults is @var{2.12} milliseconds.
4335 Set right channel balance. By default is @var{1}.
4338 Set right channel gain. By default is @var{1}.
4341 Change right phase. By default is enabled.
4346 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4347 embedded HDCD codes is expanded into a 20-bit PCM stream.
4349 The filter supports the Peak Extend and Low-level Gain Adjustment features
4350 of HDCD, and detects the Transient Filter flag.
4353 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4356 When using the filter with wav, note the default encoding for wav is 16-bit,
4357 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4358 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4360 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4361 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4364 The filter accepts the following options:
4367 @item disable_autoconvert
4368 Disable any automatic format conversion or resampling in the filter graph.
4370 @item process_stereo
4371 Process the stereo channels together. If target_gain does not match between
4372 channels, consider it invalid and use the last valid target_gain.
4375 Set the code detect timer period in ms.
4378 Always extend peaks above -3dBFS even if PE isn't signaled.
4381 Replace audio with a solid tone and adjust the amplitude to signal some
4382 specific aspect of the decoding process. The output file can be loaded in
4383 an audio editor alongside the original to aid analysis.
4385 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4392 Gain adjustment level at each sample
4394 Samples where peak extend occurs
4396 Samples where the code detect timer is active
4398 Samples where the target gain does not match between channels
4404 Apply head-related transfer functions (HRTFs) to create virtual
4405 loudspeakers around the user for binaural listening via headphones.
4406 The HRIRs are provided via additional streams, for each channel
4407 one stereo input stream is needed.
4409 The filter accepts the following options:
4413 Set mapping of input streams for convolution.
4414 The argument is a '|'-separated list of channel names in order as they
4415 are given as additional stream inputs for filter.
4416 This also specify number of input streams. Number of input streams
4417 must be not less than number of channels in first stream plus one.
4420 Set gain applied to audio. Value is in dB. Default is 0.
4423 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4424 processing audio in time domain which is slow.
4425 @var{freq} is processing audio in frequency domain which is fast.
4426 Default is @var{freq}.
4429 Set custom gain for LFE channels. Value is in dB. Default is 0.
4432 Set size of frame in number of samples which will be processed at once.
4433 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4436 Set format of hrir stream.
4437 Default value is @var{stereo}. Alternative value is @var{multich}.
4438 If value is set to @var{stereo}, number of additional streams should
4439 be greater or equal to number of input channels in first input stream.
4440 Also each additional stream should have stereo number of channels.
4441 If value is set to @var{multich}, number of additional streams should
4442 be exactly one. Also number of input channels of additional stream
4443 should be equal or greater than twice number of channels of first input
4447 @subsection Examples
4451 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4452 each amovie filter use stereo file with IR coefficients as input.
4453 The files give coefficients for each position of virtual loudspeaker:
4456 -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
4461 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4462 but now in @var{multich} @var{hrir} format.
4464 ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
4471 Apply a high-pass filter with 3dB point frequency.
4472 The filter can be either single-pole, or double-pole (the default).
4473 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4475 The filter accepts the following options:
4479 Set frequency in Hz. Default is 3000.
4482 Set number of poles. Default is 2.
4485 Set method to specify band-width of filter.
4500 Specify the band-width of a filter in width_type units.
4501 Applies only to double-pole filter.
4502 The default is 0.707q and gives a Butterworth response.
4505 How much to use filtered signal in output. Default is 1.
4506 Range is between 0 and 1.
4509 Specify which channels to filter, by default all available are filtered.
4512 Normalize biquad coefficients, by default is disabled.
4513 Enabling it will normalize magnitude response at DC to 0dB.
4516 Set transform type of IIR filter.
4525 Set precison of filtering.
4528 Pick automatic sample format depending on surround filters.
4530 Always use signed 16-bit.
4532 Always use signed 32-bit.
4534 Always use float 32-bit.
4536 Always use float 64-bit.
4540 @subsection Commands
4542 This filter supports the following commands:
4545 Change highpass frequency.
4546 Syntax for the command is : "@var{frequency}"
4549 Change highpass width_type.
4550 Syntax for the command is : "@var{width_type}"
4553 Change highpass width.
4554 Syntax for the command is : "@var{width}"
4557 Change highpass mix.
4558 Syntax for the command is : "@var{mix}"
4563 Join multiple input streams into one multi-channel stream.
4565 It accepts the following parameters:
4569 The number of input streams. It defaults to 2.
4571 @item channel_layout
4572 The desired output channel layout. It defaults to stereo.
4575 Map channels from inputs to output. The argument is a '|'-separated list of
4576 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4577 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4578 can be either the name of the input channel (e.g. FL for front left) or its
4579 index in the specified input stream. @var{out_channel} is the name of the output
4583 The filter will attempt to guess the mappings when they are not specified
4584 explicitly. It does so by first trying to find an unused matching input channel
4585 and if that fails it picks the first unused input channel.
4587 Join 3 inputs (with properly set channel layouts):
4589 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4592 Build a 5.1 output from 6 single-channel streams:
4594 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4595 'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
4601 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4603 To enable compilation of this filter you need to configure FFmpeg with
4604 @code{--enable-ladspa}.
4608 Specifies the name of LADSPA plugin library to load. If the environment
4609 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4610 each one of the directories specified by the colon separated list in
4611 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4612 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4613 @file{/usr/lib/ladspa/}.
4616 Specifies the plugin within the library. Some libraries contain only
4617 one plugin, but others contain many of them. If this is not set filter
4618 will list all available plugins within the specified library.
4621 Set the '|' separated list of controls which are zero or more floating point
4622 values that determine the behavior of the loaded plugin (for example delay,
4624 Controls need to be defined using the following syntax:
4625 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4626 @var{valuei} is the value set on the @var{i}-th control.
4627 Alternatively they can be also defined using the following syntax:
4628 @var{value0}|@var{value1}|@var{value2}|..., where
4629 @var{valuei} is the value set on the @var{i}-th control.
4630 If @option{controls} is set to @code{help}, all available controls and
4631 their valid ranges are printed.
4633 @item sample_rate, s
4634 Specify the sample rate, default to 44100. Only used if plugin have
4638 Set the number of samples per channel per each output frame, default
4639 is 1024. Only used if plugin have zero inputs.
4642 Set the minimum duration of the sourced audio. See
4643 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4644 for the accepted syntax.
4645 Note that the resulting duration may be greater than the specified duration,
4646 as the generated audio is always cut at the end of a complete frame.
4647 If not specified, or the expressed duration is negative, the audio is
4648 supposed to be generated forever.
4649 Only used if plugin have zero inputs.
4652 Enable latency compensation, by default is disabled.
4653 Only used if plugin have inputs.
4656 @subsection Examples
4660 List all available plugins within amp (LADSPA example plugin) library:
4666 List all available controls and their valid ranges for @code{vcf_notch}
4667 plugin from @code{VCF} library:
4669 ladspa=f=vcf:p=vcf_notch:c=help
4673 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4676 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4680 Add reverberation to the audio using TAP-plugins
4681 (Tom's Audio Processing plugins):
4683 ladspa=file=tap_reverb:tap_reverb
4687 Generate white noise, with 0.2 amplitude:
4689 ladspa=file=cmt:noise_source_white:c=c0=.2
4693 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4694 @code{C* Audio Plugin Suite} (CAPS) library:
4696 ladspa=file=caps:Click:c=c1=20'
4700 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4702 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4706 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4707 @code{SWH Plugins} collection:
4709 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4713 Attenuate low frequencies using Multiband EQ from Steve Harris
4714 @code{SWH Plugins} collection:
4716 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4720 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4723 ladspa=caps:Narrower
4727 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4729 ladspa=caps:White:.2
4733 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4735 ladspa=caps:Fractal:c=c1=1
4739 Dynamic volume normalization using @code{VLevel} plugin:
4741 ladspa=vlevel-ladspa:vlevel_mono
4745 @subsection Commands
4747 This filter supports the following commands:
4750 Modify the @var{N}-th control value.
4752 If the specified value is not valid, it is ignored and prior one is kept.
4757 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4758 Support for both single pass (livestreams, files) and double pass (files) modes.
4759 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4760 detect true peaks, the audio stream will be upsampled to 192 kHz.
4761 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4763 The filter accepts the following options:
4767 Set integrated loudness target.
4768 Range is -70.0 - -5.0. Default value is -24.0.
4771 Set loudness range target.
4772 Range is 1.0 - 20.0. Default value is 7.0.
4775 Set maximum true peak.
4776 Range is -9.0 - +0.0. Default value is -2.0.
4778 @item measured_I, measured_i
4779 Measured IL of input file.
4780 Range is -99.0 - +0.0.
4782 @item measured_LRA, measured_lra
4783 Measured LRA of input file.
4784 Range is 0.0 - 99.0.
4786 @item measured_TP, measured_tp
4787 Measured true peak of input file.
4788 Range is -99.0 - +99.0.
4790 @item measured_thresh
4791 Measured threshold of input file.
4792 Range is -99.0 - +0.0.
4795 Set offset gain. Gain is applied before the true-peak limiter.
4796 Range is -99.0 - +99.0. Default is +0.0.
4799 Normalize by linearly scaling the source audio.
4800 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4801 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4802 be lower than source LRA and the change in integrated loudness shouldn't
4803 result in a true peak which exceeds the target TP. If any of these
4804 conditions aren't met, normalization mode will revert to @var{dynamic}.
4805 Options are @code{true} or @code{false}. Default is @code{true}.
4808 Treat mono input files as "dual-mono". If a mono file is intended for playback
4809 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4810 If set to @code{true}, this option will compensate for this effect.
4811 Multi-channel input files are not affected by this option.
4812 Options are true or false. Default is false.
4815 Set print format for stats. Options are summary, json, or none.
4816 Default value is none.
4821 Apply a low-pass filter with 3dB point frequency.
4822 The filter can be either single-pole or double-pole (the default).
4823 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4825 The filter accepts the following options:
4829 Set frequency in Hz. Default is 500.
4832 Set number of poles. Default is 2.
4835 Set method to specify band-width of filter.
4850 Specify the band-width of a filter in width_type units.
4851 Applies only to double-pole filter.
4852 The default is 0.707q and gives a Butterworth response.
4855 How much to use filtered signal in output. Default is 1.
4856 Range is between 0 and 1.
4859 Specify which channels to filter, by default all available are filtered.
4862 Normalize biquad coefficients, by default is disabled.
4863 Enabling it will normalize magnitude response at DC to 0dB.
4866 Set transform type of IIR filter.
4875 Set precison of filtering.
4878 Pick automatic sample format depending on surround filters.
4880 Always use signed 16-bit.
4882 Always use signed 32-bit.
4884 Always use float 32-bit.
4886 Always use float 64-bit.
4890 @subsection Examples
4893 Lowpass only LFE channel, it LFE is not present it does nothing:
4899 @subsection Commands
4901 This filter supports the following commands:
4904 Change lowpass frequency.
4905 Syntax for the command is : "@var{frequency}"
4908 Change lowpass width_type.
4909 Syntax for the command is : "@var{width_type}"
4912 Change lowpass width.
4913 Syntax for the command is : "@var{width}"
4917 Syntax for the command is : "@var{mix}"
4922 Load a LV2 (LADSPA Version 2) plugin.
4924 To enable compilation of this filter you need to configure FFmpeg with
4925 @code{--enable-lv2}.
4929 Specifies the plugin URI. You may need to escape ':'.
4932 Set the '|' separated list of controls which are zero or more floating point
4933 values that determine the behavior of the loaded plugin (for example delay,
4935 If @option{controls} is set to @code{help}, all available controls and
4936 their valid ranges are printed.
4938 @item sample_rate, s
4939 Specify the sample rate, default to 44100. Only used if plugin have
4943 Set the number of samples per channel per each output frame, default
4944 is 1024. Only used if plugin have zero inputs.
4947 Set the minimum duration of the sourced audio. See
4948 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4949 for the accepted syntax.
4950 Note that the resulting duration may be greater than the specified duration,
4951 as the generated audio is always cut at the end of a complete frame.
4952 If not specified, or the expressed duration is negative, the audio is
4953 supposed to be generated forever.
4954 Only used if plugin have zero inputs.
4957 @subsection Examples
4961 Apply bass enhancer plugin from Calf:
4963 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4967 Apply vinyl plugin from Calf:
4969 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4973 Apply bit crusher plugin from ArtyFX:
4975 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4980 Multiband Compress or expand the audio's dynamic range.
4982 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4983 This is akin to the crossover of a loudspeaker, and results in flat frequency
4984 response when absent compander action.
4986 It accepts the following parameters:
4990 This option syntax is:
4991 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4992 For explanation of each item refer to compand filter documentation.
4998 Mix channels with specific gain levels. The filter accepts the output
4999 channel layout followed by a set of channels definitions.
5001 This filter is also designed to efficiently remap the channels of an audio
5004 The filter accepts parameters of the form:
5005 "@var{l}|@var{outdef}|@var{outdef}|..."
5009 output channel layout or number of channels
5012 output channel specification, of the form:
5013 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
5016 output channel to define, either a channel name (FL, FR, etc.) or a channel
5017 number (c0, c1, etc.)
5020 multiplicative coefficient for the channel, 1 leaving the volume unchanged
5023 input channel to use, see out_name for details; it is not possible to mix
5024 named and numbered input channels
5027 If the `=' in a channel specification is replaced by `<', then the gains for
5028 that specification will be renormalized so that the total is 1, thus
5029 avoiding clipping noise.
5031 @subsection Mixing examples
5033 For example, if you want to down-mix from stereo to mono, but with a bigger
5034 factor for the left channel:
5036 pan=1c|c0=0.9*c0+0.1*c1
5039 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
5040 7-channels surround:
5042 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
5045 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
5046 that should be preferred (see "-ac" option) unless you have very specific
5049 @subsection Remapping examples
5051 The channel remapping will be effective if, and only if:
5054 @item gain coefficients are zeroes or ones,
5055 @item only one input per channel output,
5058 If all these conditions are satisfied, the filter will notify the user ("Pure
5059 channel mapping detected"), and use an optimized and lossless method to do the
5062 For example, if you have a 5.1 source and want a stereo audio stream by
5063 dropping the extra channels:
5065 pan="stereo| c0=FL | c1=FR"
5068 Given the same source, you can also switch front left and front right channels
5069 and keep the input channel layout:
5071 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
5074 If the input is a stereo audio stream, you can mute the front left channel (and
5075 still keep the stereo channel layout) with:
5080 Still with a stereo audio stream input, you can copy the right channel in both
5081 front left and right:
5083 pan="stereo| c0=FR | c1=FR"
5088 ReplayGain scanner filter. This filter takes an audio stream as an input and
5089 outputs it unchanged.
5090 At end of filtering it displays @code{track_gain} and @code{track_peak}.
5094 Convert the audio sample format, sample rate and channel layout. It is
5095 not meant to be used directly.
5098 Apply time-stretching and pitch-shifting with librubberband.
5100 To enable compilation of this filter, you need to configure FFmpeg with
5101 @code{--enable-librubberband}.
5103 The filter accepts the following options:
5107 Set tempo scale factor.
5110 Set pitch scale factor.
5113 Set transients detector.
5114 Possible values are:
5123 Possible values are:
5132 Possible values are:
5139 Set processing window size.
5140 Possible values are:
5149 Possible values are:
5156 Enable formant preservation when shift pitching.
5157 Possible values are:
5165 Possible values are:
5174 Possible values are:
5181 @subsection Commands
5183 This filter supports the following commands:
5186 Change filter tempo scale factor.
5187 Syntax for the command is : "@var{tempo}"
5190 Change filter pitch scale factor.
5191 Syntax for the command is : "@var{pitch}"
5194 @section sidechaincompress
5196 This filter acts like normal compressor but has the ability to compress
5197 detected signal using second input signal.
5198 It needs two input streams and returns one output stream.
5199 First input stream will be processed depending on second stream signal.
5200 The filtered signal then can be filtered with other filters in later stages of
5201 processing. See @ref{pan} and @ref{amerge} filter.
5203 The filter accepts the following options:
5207 Set input gain. Default is 1. Range is between 0.015625 and 64.
5210 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
5211 Default is @code{downward}.
5214 If a signal of second stream raises above this level it will affect the gain
5215 reduction of first stream.
5216 By default is 0.125. Range is between 0.00097563 and 1.
5219 Set a ratio about which the signal is reduced. 1:2 means that if the level
5220 raised 4dB above the threshold, it will be only 2dB above after the reduction.
5221 Default is 2. Range is between 1 and 20.
5224 Amount of milliseconds the signal has to rise above the threshold before gain
5225 reduction starts. Default is 20. Range is between 0.01 and 2000.
5228 Amount of milliseconds the signal has to fall below the threshold before
5229 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
5232 Set the amount by how much signal will be amplified after processing.
5233 Default is 1. Range is from 1 to 64.
5236 Curve the sharp knee around the threshold to enter gain reduction more softly.
5237 Default is 2.82843. Range is between 1 and 8.
5240 Choose if the @code{average} level between all channels of side-chain stream
5241 or the louder(@code{maximum}) channel of side-chain stream affects the
5242 reduction. Default is @code{average}.
5245 Should the exact signal be taken in case of @code{peak} or an RMS one in case
5246 of @code{rms}. Default is @code{rms} which is mainly smoother.
5249 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
5252 How much to use compressed signal in output. Default is 1.
5253 Range is between 0 and 1.
5256 @subsection Commands
5258 This filter supports the all above options as @ref{commands}.
5260 @subsection Examples
5264 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
5265 depending on the signal of 2nd input and later compressed signal to be
5266 merged with 2nd input:
5268 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
5272 @section sidechaingate
5274 A sidechain gate acts like a normal (wideband) gate but has the ability to
5275 filter the detected signal before sending it to the gain reduction stage.
5276 Normally a gate uses the full range signal to detect a level above the
5278 For example: If you cut all lower frequencies from your sidechain signal
5279 the gate will decrease the volume of your track only if not enough highs
5280 appear. With this technique you are able to reduce the resonation of a
5281 natural drum or remove "rumbling" of muted strokes from a heavily distorted
5283 It needs two input streams and returns one output stream.
5284 First input stream will be processed depending on second stream signal.
5286 The filter accepts the following options:
5290 Set input level before filtering.
5291 Default is 1. Allowed range is from 0.015625 to 64.
5294 Set the mode of operation. Can be @code{upward} or @code{downward}.
5295 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
5296 will be amplified, expanding dynamic range in upward direction.
5297 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
5300 Set the level of gain reduction when the signal is below the threshold.
5301 Default is 0.06125. Allowed range is from 0 to 1.
5302 Setting this to 0 disables reduction and then filter behaves like expander.
5305 If a signal rises above this level the gain reduction is released.
5306 Default is 0.125. Allowed range is from 0 to 1.
5309 Set a ratio about which the signal is reduced.
5310 Default is 2. Allowed range is from 1 to 9000.
5313 Amount of milliseconds the signal has to rise above the threshold before gain
5315 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
5318 Amount of milliseconds the signal has to fall below the threshold before the
5319 reduction is increased again. Default is 250 milliseconds.
5320 Allowed range is from 0.01 to 9000.
5323 Set amount of amplification of signal after processing.
5324 Default is 1. Allowed range is from 1 to 64.
5327 Curve the sharp knee around the threshold to enter gain reduction more softly.
5328 Default is 2.828427125. Allowed range is from 1 to 8.
5331 Choose if exact signal should be taken for detection or an RMS like one.
5332 Default is rms. Can be peak or rms.
5335 Choose if the average level between all channels or the louder channel affects
5337 Default is average. Can be average or maximum.
5340 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5343 @subsection Commands
5345 This filter supports the all above options as @ref{commands}.
5347 @section silencedetect
5349 Detect silence in an audio stream.
5351 This filter logs a message when it detects that the input audio volume is less
5352 or equal to a noise tolerance value for a duration greater or equal to the
5353 minimum detected noise duration.
5355 The printed times and duration are expressed in seconds. The
5356 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5357 is set on the first frame whose timestamp equals or exceeds the detection
5358 duration and it contains the timestamp of the first frame of the silence.
5360 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5361 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5362 keys are set on the first frame after the silence. If @option{mono} is
5363 enabled, and each channel is evaluated separately, the @code{.X}
5364 suffixed keys are used, and @code{X} corresponds to the channel number.
5366 The filter accepts the following options:
5370 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5371 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5374 Set silence duration until notification (default is 2 seconds). See
5375 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5376 for the accepted syntax.
5379 Process each channel separately, instead of combined. By default is disabled.
5382 @subsection Examples
5386 Detect 5 seconds of silence with -50dB noise tolerance:
5388 silencedetect=n=-50dB:d=5
5392 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5393 tolerance in @file{silence.mp3}:
5395 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5399 @section silenceremove
5401 Remove silence from the beginning, middle or end of the audio.
5403 The filter accepts the following options:
5407 This value is used to indicate if audio should be trimmed at beginning of
5408 the audio. A value of zero indicates no silence should be trimmed from the
5409 beginning. When specifying a non-zero value, it trims audio up until it
5410 finds non-silence. Normally, when trimming silence from beginning of audio
5411 the @var{start_periods} will be @code{1} but it can be increased to higher
5412 values to trim all audio up to specific count of non-silence periods.
5413 Default value is @code{0}.
5415 @item start_duration
5416 Specify the amount of time that non-silence must be detected before it stops
5417 trimming audio. By increasing the duration, bursts of noises can be treated
5418 as silence and trimmed off. Default value is @code{0}.
5420 @item start_threshold
5421 This indicates what sample value should be treated as silence. For digital
5422 audio, a value of @code{0} may be fine but for audio recorded from analog,
5423 you may wish to increase the value to account for background noise.
5424 Can be specified in dB (in case "dB" is appended to the specified value)
5425 or amplitude ratio. Default value is @code{0}.
5428 Specify max duration of silence at beginning that will be kept after
5429 trimming. Default is 0, which is equal to trimming all samples detected
5433 Specify mode of detection of silence end in start of multi-channel audio.
5434 Can be @var{any} or @var{all}. Default is @var{any}.
5435 With @var{any}, any sample that is detected as non-silence will cause
5436 stopped trimming of silence.
5437 With @var{all}, only if all channels are detected as non-silence will cause
5438 stopped trimming of silence.
5441 Set the count for trimming silence from the end of audio.
5442 To remove silence from the middle of a file, specify a @var{stop_periods}
5443 that is negative. This value is then treated as a positive value and is
5444 used to indicate the effect should restart processing as specified by
5445 @var{start_periods}, making it suitable for removing periods of silence
5446 in the middle of the audio.
5447 Default value is @code{0}.
5450 Specify a duration of silence that must exist before audio is not copied any
5451 more. By specifying a higher duration, silence that is wanted can be left in
5453 Default value is @code{0}.
5455 @item stop_threshold
5456 This is the same as @option{start_threshold} but for trimming silence from
5458 Can be specified in dB (in case "dB" is appended to the specified value)
5459 or amplitude ratio. Default value is @code{0}.
5462 Specify max duration of silence at end that will be kept after
5463 trimming. Default is 0, which is equal to trimming all samples detected
5467 Specify mode of detection of silence start in end of multi-channel audio.
5468 Can be @var{any} or @var{all}. Default is @var{any}.
5469 With @var{any}, any sample that is detected as non-silence will cause
5470 stopped trimming of silence.
5471 With @var{all}, only if all channels are detected as non-silence will cause
5472 stopped trimming of silence.
5475 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5476 and works better with digital silence which is exactly 0.
5477 Default value is @code{rms}.
5480 Set duration in number of seconds used to calculate size of window in number
5481 of samples for detecting silence.
5482 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5485 @subsection Examples
5489 The following example shows how this filter can be used to start a recording
5490 that does not contain the delay at the start which usually occurs between
5491 pressing the record button and the start of the performance:
5493 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5497 Trim all silence encountered from beginning to end where there is more than 1
5498 second of silence in audio:
5500 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5504 Trim all digital silence samples, using peak detection, from beginning to end
5505 where there is more than 0 samples of digital silence in audio and digital
5506 silence is detected in all channels at same positions in stream:
5508 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5514 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5515 loudspeakers around the user for binaural listening via headphones (audio
5516 formats up to 9 channels supported).
5517 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5518 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5519 Austrian Academy of Sciences.
5521 To enable compilation of this filter you need to configure FFmpeg with
5522 @code{--enable-libmysofa}.
5524 The filter accepts the following options:
5528 Set the SOFA file used for rendering.
5531 Set gain applied to audio. Value is in dB. Default is 0.
5534 Set rotation of virtual loudspeakers in deg. Default is 0.
5537 Set elevation of virtual speakers in deg. Default is 0.
5540 Set distance in meters between loudspeakers and the listener with near-field
5541 HRTFs. Default is 1.
5544 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5545 processing audio in time domain which is slow.
5546 @var{freq} is processing audio in frequency domain which is fast.
5547 Default is @var{freq}.
5550 Set custom positions of virtual loudspeakers. Syntax for this option is:
5551 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5552 Each virtual loudspeaker is described with short channel name following with
5553 azimuth and elevation in degrees.
5554 Each virtual loudspeaker description is separated by '|'.
5555 For example to override front left and front right channel positions use:
5556 'speakers=FL 45 15|FR 345 15'.
5557 Descriptions with unrecognised channel names are ignored.
5560 Set custom gain for LFE channels. Value is in dB. Default is 0.
5563 Set custom frame size in number of samples. Default is 1024.
5564 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5565 is set to @var{freq}.
5568 Should all IRs be normalized upon importing SOFA file.
5569 By default is enabled.
5572 Should nearest IRs be interpolated with neighbor IRs if exact position
5573 does not match. By default is disabled.
5576 Minphase all IRs upon loading of SOFA file. By default is disabled.
5579 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5582 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5585 @subsection Examples
5589 Using ClubFritz6 sofa file:
5591 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5595 Using ClubFritz12 sofa file and bigger radius with small rotation:
5597 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5601 Similar as above but with custom speaker positions for front left, front right, back left and back right
5602 and also with custom gain:
5604 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5611 This filter expands or compresses each half-cycle of audio samples
5612 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5613 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5615 The filter accepts the following options:
5619 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5620 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5623 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5624 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5625 would be such that local peak value reaches target peak value but never to surpass it and that
5626 ratio between new and previous peak value does not surpass this option value.
5628 @item compression, c
5629 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5630 This option controls maximum local half-cycle of samples compression. This option is used
5631 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5632 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5633 that peak's half-cycle will be compressed by current compression factor.
5636 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5637 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5638 Any half-cycle samples with their local peak value below or same as this option value will be
5639 compressed by current compression factor, otherwise, if greater than threshold value they will be
5640 expanded with expansion factor so that it could reach peak target value but never surpass it.
5643 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5644 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5645 each new half-cycle until it reaches @option{expansion} value.
5646 Setting this options too high may lead to distortions.
5649 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5650 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5651 each new half-cycle until it reaches @option{compression} value.
5654 Specify which channels to filter, by default all available channels are filtered.
5657 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5658 option. When enabled any half-cycle of samples with their local peak value below or same as
5659 @option{threshold} option will be expanded otherwise it will be compressed.
5662 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5663 When disabled each filtered channel gain calculation is independent, otherwise when this option
5664 is enabled the minimum of all possible gains for each filtered channel is used.
5667 @subsection Commands
5669 This filter supports the all above options as @ref{commands}.
5671 @section stereotools
5673 This filter has some handy utilities to manage stereo signals, for converting
5674 M/S stereo recordings to L/R signal while having control over the parameters
5675 or spreading the stereo image of master track.
5677 The filter accepts the following options:
5681 Set input level before filtering for both channels. Defaults is 1.
5682 Allowed range is from 0.015625 to 64.
5685 Set output level after filtering for both channels. Defaults is 1.
5686 Allowed range is from 0.015625 to 64.
5689 Set input balance between both channels. Default is 0.
5690 Allowed range is from -1 to 1.
5693 Set output balance between both channels. Default is 0.
5694 Allowed range is from -1 to 1.
5697 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5698 clipping. Disabled by default.
5701 Mute the left channel. Disabled by default.
5704 Mute the right channel. Disabled by default.
5707 Change the phase of the left channel. Disabled by default.
5710 Change the phase of the right channel. Disabled by default.
5713 Set stereo mode. Available values are:
5717 Left/Right to Left/Right, this is default.
5720 Left/Right to Mid/Side.
5723 Mid/Side to Left/Right.
5726 Left/Right to Left/Left.
5729 Left/Right to Right/Right.
5732 Left/Right to Left + Right.
5735 Left/Right to Right/Left.
5738 Mid/Side to Left/Left.
5741 Mid/Side to Right/Right.
5744 Mid/Side to Right/Left.
5747 Left/Right to Left - Right.
5751 Set level of side signal. Default is 1.
5752 Allowed range is from 0.015625 to 64.
5755 Set balance of side signal. Default is 0.
5756 Allowed range is from -1 to 1.
5759 Set level of the middle signal. Default is 1.
5760 Allowed range is from 0.015625 to 64.
5763 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5766 Set stereo base between mono and inversed channels. Default is 0.
5767 Allowed range is from -1 to 1.
5770 Set delay in milliseconds how much to delay left from right channel and
5771 vice versa. Default is 0. Allowed range is from -20 to 20.
5774 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5777 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5779 @item bmode_in, bmode_out
5780 Set balance mode for balance_in/balance_out option.
5782 Can be one of the following:
5786 Classic balance mode. Attenuate one channel at time.
5787 Gain is raised up to 1.
5790 Similar as classic mode above but gain is raised up to 2.
5793 Equal power distribution, from -6dB to +6dB range.
5797 @subsection Commands
5799 This filter supports the all above options as @ref{commands}.
5801 @subsection Examples
5805 Apply karaoke like effect:
5807 stereotools=mlev=0.015625
5811 Convert M/S signal to L/R:
5813 "stereotools=mode=ms>lr"
5817 @section stereowiden
5819 This filter enhance the stereo effect by suppressing signal common to both
5820 channels and by delaying the signal of left into right and vice versa,
5821 thereby widening the stereo effect.
5823 The filter accepts the following options:
5827 Time in milliseconds of the delay of left signal into right and vice versa.
5828 Default is 20 milliseconds.
5831 Amount of gain in delayed signal into right and vice versa. Gives a delay
5832 effect of left signal in right output and vice versa which gives widening
5833 effect. Default is 0.3.
5836 Cross feed of left into right with inverted phase. This helps in suppressing
5837 the mono. If the value is 1 it will cancel all the signal common to both
5838 channels. Default is 0.3.
5841 Set level of input signal of original channel. Default is 0.8.
5844 @subsection Commands
5846 This filter supports the all above options except @code{delay} as @ref{commands}.
5848 @section superequalizer
5849 Apply 18 band equalizer.
5851 The filter accepts the following options:
5858 Set 131Hz band gain.
5860 Set 185Hz band gain.
5862 Set 262Hz band gain.
5864 Set 370Hz band gain.
5866 Set 523Hz band gain.
5868 Set 740Hz band gain.
5870 Set 1047Hz band gain.
5872 Set 1480Hz band gain.
5874 Set 2093Hz band gain.
5876 Set 2960Hz band gain.
5878 Set 4186Hz band gain.
5880 Set 5920Hz band gain.
5882 Set 8372Hz band gain.
5884 Set 11840Hz band gain.
5886 Set 16744Hz band gain.
5888 Set 20000Hz band gain.
5892 Apply audio surround upmix filter.
5894 This filter allows to produce multichannel output from audio stream.
5896 The filter accepts the following options:
5900 Set output channel layout. By default, this is @var{5.1}.
5902 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5903 for the required syntax.
5906 Set input channel layout. By default, this is @var{stereo}.
5908 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5909 for the required syntax.
5912 Set input volume level. By default, this is @var{1}.
5915 Set output volume level. By default, this is @var{1}.
5918 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5921 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5924 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5927 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5928 In @var{add} mode, LFE channel is created from input audio and added to output.
5929 In @var{sub} mode, LFE channel is created from input audio and added to output but
5930 also all non-LFE output channels are subtracted with output LFE channel.
5933 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5934 Default is @var{90}.
5937 Set front center input volume. By default, this is @var{1}.
5940 Set front center output volume. By default, this is @var{1}.
5943 Set front left input volume. By default, this is @var{1}.
5946 Set front left output volume. By default, this is @var{1}.
5949 Set front right input volume. By default, this is @var{1}.
5952 Set front right output volume. By default, this is @var{1}.
5955 Set side left input volume. By default, this is @var{1}.
5958 Set side left output volume. By default, this is @var{1}.
5961 Set side right input volume. By default, this is @var{1}.
5964 Set side right output volume. By default, this is @var{1}.
5967 Set back left input volume. By default, this is @var{1}.
5970 Set back left output volume. By default, this is @var{1}.
5973 Set back right input volume. By default, this is @var{1}.
5976 Set back right output volume. By default, this is @var{1}.
5979 Set back center input volume. By default, this is @var{1}.
5982 Set back center output volume. By default, this is @var{1}.
5985 Set LFE input volume. By default, this is @var{1}.
5988 Set LFE output volume. By default, this is @var{1}.
5991 Set spread usage of stereo image across X axis for all channels.
5994 Set spread usage of stereo image across Y axis for all channels.
5996 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5997 Set spread usage of stereo image across X axis for each channel.
5999 @item fcy, fly, fry, bly, bry, sly, sry, bcy
6000 Set spread usage of stereo image across Y axis for each channel.
6003 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
6006 Set window function.
6008 It accepts the following values:
6031 Default is @code{hann}.
6034 Set window overlap. If set to 1, the recommended overlap for selected
6035 window function will be picked. Default is @code{0.5}.
6038 @section treble, highshelf
6040 Boost or cut treble (upper) frequencies of the audio using a two-pole
6041 shelving filter with a response similar to that of a standard
6042 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
6044 The filter accepts the following options:
6048 Give the gain at whichever is the lower of ~22 kHz and the
6049 Nyquist frequency. Its useful range is about -20 (for a large cut)
6050 to +20 (for a large boost). Beware of clipping when using a positive gain.
6053 Set the filter's central frequency and so can be used
6054 to extend or reduce the frequency range to be boosted or cut.
6055 The default value is @code{3000} Hz.
6058 Set method to specify band-width of filter.
6073 Determine how steep is the filter's shelf transition.
6076 Set number of poles. Default is 2.
6079 How much to use filtered signal in output. Default is 1.
6080 Range is between 0 and 1.
6083 Specify which channels to filter, by default all available are filtered.
6086 Normalize biquad coefficients, by default is disabled.
6087 Enabling it will normalize magnitude response at DC to 0dB.
6090 Set transform type of IIR filter.
6099 Set precison of filtering.
6102 Pick automatic sample format depending on surround filters.
6104 Always use signed 16-bit.
6106 Always use signed 32-bit.
6108 Always use float 32-bit.
6110 Always use float 64-bit.
6114 @subsection Commands
6116 This filter supports the following commands:
6119 Change treble frequency.
6120 Syntax for the command is : "@var{frequency}"
6123 Change treble width_type.
6124 Syntax for the command is : "@var{width_type}"
6127 Change treble width.
6128 Syntax for the command is : "@var{width}"
6132 Syntax for the command is : "@var{gain}"
6136 Syntax for the command is : "@var{mix}"
6141 Sinusoidal amplitude modulation.
6143 The filter accepts the following options:
6147 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
6148 (20 Hz or lower) will result in a tremolo effect.
6149 This filter may also be used as a ring modulator by specifying
6150 a modulation frequency higher than 20 Hz.
6151 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6154 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6155 Default value is 0.5.
6160 Sinusoidal phase modulation.
6162 The filter accepts the following options:
6166 Modulation frequency in Hertz.
6167 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
6170 Depth of modulation as a percentage. Range is 0.0 - 1.0.
6171 Default value is 0.5.
6176 Adjust the input audio volume.
6178 It accepts the following parameters:
6182 Set audio volume expression.
6184 Output values are clipped to the maximum value.
6186 The output audio volume is given by the relation:
6188 @var{output_volume} = @var{volume} * @var{input_volume}
6191 The default value for @var{volume} is "1.0".
6194 This parameter represents the mathematical precision.
6196 It determines which input sample formats will be allowed, which affects the
6197 precision of the volume scaling.
6201 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
6203 32-bit floating-point; this limits input sample format to FLT. (default)
6205 64-bit floating-point; this limits input sample format to DBL.
6209 Choose the behaviour on encountering ReplayGain side data in input frames.
6213 Remove ReplayGain side data, ignoring its contents (the default).
6216 Ignore ReplayGain side data, but leave it in the frame.
6219 Prefer the track gain, if present.
6222 Prefer the album gain, if present.
6225 @item replaygain_preamp
6226 Pre-amplification gain in dB to apply to the selected replaygain gain.
6228 Default value for @var{replaygain_preamp} is 0.0.
6230 @item replaygain_noclip
6231 Prevent clipping by limiting the gain applied.
6233 Default value for @var{replaygain_noclip} is 1.
6236 Set when the volume expression is evaluated.
6238 It accepts the following values:
6241 only evaluate expression once during the filter initialization, or
6242 when the @samp{volume} command is sent
6245 evaluate expression for each incoming frame
6248 Default value is @samp{once}.
6251 The volume expression can contain the following parameters.
6255 frame number (starting at zero)
6258 @item nb_consumed_samples
6259 number of samples consumed by the filter
6261 number of samples in the current frame
6263 original frame position in the file
6269 PTS at start of stream
6271 time at start of stream
6277 last set volume value
6280 Note that when @option{eval} is set to @samp{once} only the
6281 @var{sample_rate} and @var{tb} variables are available, all other
6282 variables will evaluate to NAN.
6284 @subsection Commands
6286 This filter supports the following commands:
6289 Modify the volume expression.
6290 The command accepts the same syntax of the corresponding option.
6292 If the specified expression is not valid, it is kept at its current
6296 @subsection Examples
6300 Halve the input audio volume:
6304 volume=volume=-6.0206dB
6307 In all the above example the named key for @option{volume} can be
6308 omitted, for example like in:
6314 Increase input audio power by 6 decibels using fixed-point precision:
6316 volume=volume=6dB:precision=fixed
6320 Fade volume after time 10 with an annihilation period of 5 seconds:
6322 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
6326 @section volumedetect
6328 Detect the volume of the input video.
6330 The filter has no parameters. The input is not modified. Statistics about
6331 the volume will be printed in the log when the input stream end is reached.
6333 In particular it will show the mean volume (root mean square), maximum
6334 volume (on a per-sample basis), and the beginning of a histogram of the
6335 registered volume values (from the maximum value to a cumulated 1/1000 of
6338 All volumes are in decibels relative to the maximum PCM value.
6340 @subsection Examples
6342 Here is an excerpt of the output:
6344 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
6345 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
6346 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
6347 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
6348 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
6349 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
6350 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
6351 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
6352 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
6358 The mean square energy is approximately -27 dB, or 10^-2.7.
6360 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6362 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6365 In other words, raising the volume by +4 dB does not cause any clipping,
6366 raising it by +5 dB causes clipping for 6 samples, etc.
6368 @c man end AUDIO FILTERS
6370 @chapter Audio Sources
6371 @c man begin AUDIO SOURCES
6373 Below is a description of the currently available audio sources.
6377 Buffer audio frames, and make them available to the filter chain.
6379 This source is mainly intended for a programmatic use, in particular
6380 through the interface defined in @file{libavfilter/buffersrc.h}.
6382 It accepts the following parameters:
6386 The timebase which will be used for timestamps of submitted frames. It must be
6387 either a floating-point number or in @var{numerator}/@var{denominator} form.
6390 The sample rate of the incoming audio buffers.
6393 The sample format of the incoming audio buffers.
6394 Either a sample format name or its corresponding integer representation from
6395 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6397 @item channel_layout
6398 The channel layout of the incoming audio buffers.
6399 Either a channel layout name from channel_layout_map in
6400 @file{libavutil/channel_layout.c} or its corresponding integer representation
6401 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6404 The number of channels of the incoming audio buffers.
6405 If both @var{channels} and @var{channel_layout} are specified, then they
6410 @subsection Examples
6413 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6416 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6417 Since the sample format with name "s16p" corresponds to the number
6418 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6421 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6426 Generate an audio signal specified by an expression.
6428 This source accepts in input one or more expressions (one for each
6429 channel), which are evaluated and used to generate a corresponding
6432 This source accepts the following options:
6436 Set the '|'-separated expressions list for each separate channel. In case the
6437 @option{channel_layout} option is not specified, the selected channel layout
6438 depends on the number of provided expressions. Otherwise the last
6439 specified expression is applied to the remaining output channels.
6441 @item channel_layout, c
6442 Set the channel layout. The number of channels in the specified layout
6443 must be equal to the number of specified expressions.
6446 Set the minimum duration of the sourced audio. See
6447 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6448 for the accepted syntax.
6449 Note that the resulting duration may be greater than the specified
6450 duration, as the generated audio is always cut at the end of a
6453 If not specified, or the expressed duration is negative, the audio is
6454 supposed to be generated forever.
6457 Set the number of samples per channel per each output frame,
6460 @item sample_rate, s
6461 Specify the sample rate, default to 44100.
6464 Each expression in @var{exprs} can contain the following constants:
6468 number of the evaluated sample, starting from 0
6471 time of the evaluated sample expressed in seconds, starting from 0
6478 @subsection Examples
6488 Generate a sin signal with frequency of 440 Hz, set sample rate to
6491 aevalsrc="sin(440*2*PI*t):s=8000"
6495 Generate a two channels signal, specify the channel layout (Front
6496 Center + Back Center) explicitly:
6498 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6502 Generate white noise:
6504 aevalsrc="-2+random(0)"
6508 Generate an amplitude modulated signal:
6510 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6514 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6516 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6523 Generate a FIR coefficients using frequency sampling method.
6525 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6527 The filter accepts the following options:
6531 Set number of filter coefficents in output audio stream.
6532 Default value is 1025.
6535 Set frequency points from where magnitude and phase are set.
6536 This must be in non decreasing order, and first element must be 0, while last element
6537 must be 1. Elements are separated by white spaces.
6540 Set magnitude value for every frequency point set by @option{frequency}.
6541 Number of values must be same as number of frequency points.
6542 Values are separated by white spaces.
6545 Set phase value for every frequency point set by @option{frequency}.
6546 Number of values must be same as number of frequency points.
6547 Values are separated by white spaces.
6549 @item sample_rate, r
6550 Set sample rate, default is 44100.
6553 Set number of samples per each frame. Default is 1024.
6556 Set window function. Default is blackman.
6561 The null audio source, return unprocessed audio frames. It is mainly useful
6562 as a template and to be employed in analysis / debugging tools, or as
6563 the source for filters which ignore the input data (for example the sox
6566 This source accepts the following options:
6570 @item channel_layout, cl
6572 Specifies the channel layout, and can be either an integer or a string
6573 representing a channel layout. The default value of @var{channel_layout}
6576 Check the channel_layout_map definition in
6577 @file{libavutil/channel_layout.c} for the mapping between strings and
6578 channel layout values.
6580 @item sample_rate, r
6581 Specifies the sample rate, and defaults to 44100.
6584 Set the number of samples per requested frames.
6587 Set the duration of the sourced audio. See
6588 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6589 for the accepted syntax.
6591 If not specified, or the expressed duration is negative, the audio is
6592 supposed to be generated forever.
6595 @subsection Examples
6599 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6601 anullsrc=r=48000:cl=4
6605 Do the same operation with a more obvious syntax:
6607 anullsrc=r=48000:cl=mono
6611 All the parameters need to be explicitly defined.
6615 Synthesize a voice utterance using the libflite library.
6617 To enable compilation of this filter you need to configure FFmpeg with
6618 @code{--enable-libflite}.
6620 Note that versions of the flite library prior to 2.0 are not thread-safe.
6622 The filter accepts the following options:
6627 If set to 1, list the names of the available voices and exit
6628 immediately. Default value is 0.
6631 Set the maximum number of samples per frame. Default value is 512.
6634 Set the filename containing the text to speak.
6637 Set the text to speak.
6640 Set the voice to use for the speech synthesis. Default value is
6641 @code{kal}. See also the @var{list_voices} option.
6644 @subsection Examples
6648 Read from file @file{speech.txt}, and synthesize the text using the
6649 standard flite voice:
6651 flite=textfile=speech.txt
6655 Read the specified text selecting the @code{slt} voice:
6657 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6661 Input text to ffmpeg:
6663 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6667 Make @file{ffplay} speak the specified text, using @code{flite} and
6668 the @code{lavfi} device:
6670 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6674 For more information about libflite, check:
6675 @url{http://www.festvox.org/flite/}
6679 Generate a noise audio signal.
6681 The filter accepts the following options:
6684 @item sample_rate, r
6685 Specify the sample rate. Default value is 48000 Hz.
6688 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6692 Specify the duration of the generated audio stream. Not specifying this option
6693 results in noise with an infinite length.
6695 @item color, colour, c
6696 Specify the color of noise. Available noise colors are white, pink, brown,
6697 blue, violet and velvet. Default color is white.
6700 Specify a value used to seed the PRNG.
6703 Set the number of samples per each output frame, default is 1024.
6706 @subsection Examples
6711 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6713 anoisesrc=d=60:c=pink:r=44100:a=0.5
6719 Generate odd-tap Hilbert transform FIR coefficients.
6721 The resulting stream can be used with @ref{afir} filter for phase-shifting
6722 the signal by 90 degrees.
6724 This is used in many matrix coding schemes and for analytic signal generation.
6725 The process is often written as a multiplication by i (or j), the imaginary unit.
6727 The filter accepts the following options:
6731 @item sample_rate, s
6732 Set sample rate, default is 44100.
6735 Set length of FIR filter, default is 22051.
6738 Set number of samples per each frame.
6741 Set window function to be used when generating FIR coefficients.
6746 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6748 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6750 The filter accepts the following options:
6753 @item sample_rate, r
6754 Set sample rate, default is 44100.
6757 Set number of samples per each frame. Default is 1024.
6760 Set high-pass frequency. Default is 0.
6763 Set low-pass frequency. Default is 0.
6764 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6765 is higher than 0 then filter will create band-pass filter coefficients,
6766 otherwise band-reject filter coefficients.
6769 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6772 Set Kaiser window beta.
6775 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6778 Enable rounding, by default is disabled.
6781 Set number of taps for high-pass filter.
6784 Set number of taps for low-pass filter.
6789 Generate an audio signal made of a sine wave with amplitude 1/8.
6791 The audio signal is bit-exact.
6793 The filter accepts the following options:
6798 Set the carrier frequency. Default is 440 Hz.
6800 @item beep_factor, b
6801 Enable a periodic beep every second with frequency @var{beep_factor} times
6802 the carrier frequency. Default is 0, meaning the beep is disabled.
6804 @item sample_rate, r
6805 Specify the sample rate, default is 44100.
6808 Specify the duration of the generated audio stream.
6810 @item samples_per_frame
6811 Set the number of samples per output frame.
6813 The expression can contain the following constants:
6817 The (sequential) number of the output audio frame, starting from 0.
6820 The PTS (Presentation TimeStamp) of the output audio frame,
6821 expressed in @var{TB} units.
6824 The PTS of the output audio frame, expressed in seconds.
6827 The timebase of the output audio frames.
6830 Default is @code{1024}.
6833 @subsection Examples
6838 Generate a simple 440 Hz sine wave:
6844 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6848 sine=frequency=220:beep_factor=4:duration=5
6852 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6855 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6859 @c man end AUDIO SOURCES
6861 @chapter Audio Sinks
6862 @c man begin AUDIO SINKS
6864 Below is a description of the currently available audio sinks.
6866 @section abuffersink
6868 Buffer audio frames, and make them available to the end of filter chain.
6870 This sink is mainly intended for programmatic use, in particular
6871 through the interface defined in @file{libavfilter/buffersink.h}
6872 or the options system.
6874 It accepts a pointer to an AVABufferSinkContext structure, which
6875 defines the incoming buffers' formats, to be passed as the opaque
6876 parameter to @code{avfilter_init_filter} for initialization.
6879 Null audio sink; do absolutely nothing with the input audio. It is
6880 mainly useful as a template and for use in analysis / debugging
6883 @c man end AUDIO SINKS
6885 @chapter Video Filters
6886 @c man begin VIDEO FILTERS
6888 When you configure your FFmpeg build, you can disable any of the
6889 existing filters using @code{--disable-filters}.
6890 The configure output will show the video filters included in your
6893 Below is a description of the currently available video filters.
6897 Mark a region of interest in a video frame.
6899 The frame data is passed through unchanged, but metadata is attached
6900 to the frame indicating regions of interest which can affect the
6901 behaviour of later encoding. Multiple regions can be marked by
6902 applying the filter multiple times.
6906 Region distance in pixels from the left edge of the frame.
6908 Region distance in pixels from the top edge of the frame.
6910 Region width in pixels.
6912 Region height in pixels.
6914 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6915 and may contain the following variables:
6918 Width of the input frame.
6920 Height of the input frame.
6924 Quantisation offset to apply within the region.
6926 This must be a real value in the range -1 to +1. A value of zero
6927 indicates no quality change. A negative value asks for better quality
6928 (less quantisation), while a positive value asks for worse quality
6929 (greater quantisation).
6931 The range is calibrated so that the extreme values indicate the
6932 largest possible offset - if the rest of the frame is encoded with the
6933 worst possible quality, an offset of -1 indicates that this region
6934 should be encoded with the best possible quality anyway. Intermediate
6935 values are then interpolated in some codec-dependent way.
6937 For example, in 10-bit H.264 the quantisation parameter varies between
6938 -12 and 51. A typical qoffset value of -1/10 therefore indicates that
6939 this region should be encoded with a QP around one-tenth of the full
6940 range better than the rest of the frame. So, if most of the frame
6941 were to be encoded with a QP of around 30, this region would get a QP
6942 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6943 An extreme value of -1 would indicate that this region should be
6944 encoded with the best possible quality regardless of the treatment of
6945 the rest of the frame - that is, should be encoded at a QP of -12.
6947 If set to true, remove any existing regions of interest marked on the
6948 frame before adding the new one.
6951 @subsection Examples
6955 Mark the centre quarter of the frame as interesting.
6957 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6960 Mark the 100-pixel-wide region on the left edge of the frame as very
6961 uninteresting (to be encoded at much lower quality than the rest of
6964 addroi=0:0:100:ih:+1/5
6968 @section alphaextract
6970 Extract the alpha component from the input as a grayscale video. This
6971 is especially useful with the @var{alphamerge} filter.
6975 Add or replace the alpha component of the primary input with the
6976 grayscale value of a second input. This is intended for use with
6977 @var{alphaextract} to allow the transmission or storage of frame
6978 sequences that have alpha in a format that doesn't support an alpha
6981 For example, to reconstruct full frames from a normal YUV-encoded video
6982 and a separate video created with @var{alphaextract}, you might use:
6984 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6989 Amplify differences between current pixel and pixels of adjacent frames in
6990 same pixel location.
6992 This filter accepts the following options:
6996 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6997 For example radius of 3 will instruct filter to calculate average of 7 frames.
7000 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
7003 Set threshold for difference amplification. Any difference greater or equal to
7004 this value will not alter source pixel. Default is 10.
7005 Allowed range is from 0 to 65535.
7008 Set tolerance for difference amplification. Any difference lower to
7009 this value will not alter source pixel. Default is 0.
7010 Allowed range is from 0 to 65535.
7013 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
7014 This option controls maximum possible value that will decrease source pixel value.
7017 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
7018 This option controls maximum possible value that will increase source pixel value.
7021 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
7024 @subsection Commands
7026 This filter supports the following @ref{commands} that corresponds to option of same name:
7038 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
7039 and libavformat to work. On the other hand, it is limited to ASS (Advanced
7040 Substation Alpha) subtitles files.
7042 This filter accepts the following option in addition to the common options from
7043 the @ref{subtitles} filter:
7047 Set the shaping engine
7049 Available values are:
7052 The default libass shaping engine, which is the best available.
7054 Fast, font-agnostic shaper that can do only substitutions
7056 Slower shaper using OpenType for substitutions and positioning
7059 The default is @code{auto}.
7063 Apply an Adaptive Temporal Averaging Denoiser to the video input.
7065 The filter accepts the following options:
7069 Set threshold A for 1st plane. Default is 0.02.
7070 Valid range is 0 to 0.3.
7073 Set threshold B for 1st plane. Default is 0.04.
7074 Valid range is 0 to 5.
7077 Set threshold A for 2nd plane. Default is 0.02.
7078 Valid range is 0 to 0.3.
7081 Set threshold B for 2nd plane. Default is 0.04.
7082 Valid range is 0 to 5.
7085 Set threshold A for 3rd plane. Default is 0.02.
7086 Valid range is 0 to 0.3.
7089 Set threshold B for 3rd plane. Default is 0.04.
7090 Valid range is 0 to 5.
7092 Threshold A is designed to react on abrupt changes in the input signal and
7093 threshold B is designed to react on continuous changes in the input signal.
7096 Set number of frames filter will use for averaging. Default is 9. Must be odd
7097 number in range [5, 129].
7100 Set what planes of frame filter will use for averaging. Default is all.
7103 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
7104 Alternatively can be set to @code{s} serial.
7106 Parallel can be faster then serial, while other way around is never true.
7107 Parallel will abort early on first change being greater then thresholds, while serial
7108 will continue processing other side of frames if they are equal or below thresholds.
7113 Set sigma for 1st plane, 2nd plane or 3rd plane. Default is 32767.
7114 Valid range is from 0 to 32767.
7115 This options controls weight for each pixel in radius defined by size.
7116 Default value means every pixel have same weight.
7117 Setting this option to 0 effectively disables filtering.
7120 @subsection Commands
7121 This filter supports same @ref{commands} as options except option @code{s}.
7122 The command accepts the same syntax of the corresponding option.
7126 Apply average blur filter.
7128 The filter accepts the following options:
7132 Set horizontal radius size.
7135 Set which planes to filter. By default all planes are filtered.
7138 Set vertical radius size, if zero it will be same as @code{sizeX}.
7139 Default is @code{0}.
7142 @subsection Commands
7143 This filter supports same commands as options.
7144 The command accepts the same syntax of the corresponding option.
7146 If the specified expression is not valid, it is kept at its current
7151 Compute the bounding box for the non-black pixels in the input frame
7154 This filter computes the bounding box containing all the pixels with a
7155 luminance value greater than the minimum allowed value.
7156 The parameters describing the bounding box are printed on the filter
7159 The filter accepts the following option:
7163 Set the minimal luminance value. Default is @code{16}.
7166 @subsection Commands
7168 This filter supports the all above options as @ref{commands}.
7171 Apply bilateral filter, spatial smoothing while preserving edges.
7173 The filter accepts the following options:
7176 Set sigma of gaussian function to calculate spatial weight.
7177 Allowed range is 0 to 512. Default is 0.1.
7180 Set sigma of gaussian function to calculate range weight.
7181 Allowed range is 0 to 1. Default is 0.1.
7184 Set planes to filter. Default is first only.
7187 @subsection Commands
7189 This filter supports the all above options as @ref{commands}.
7191 @section bitplanenoise
7193 Show and measure bit plane noise.
7195 The filter accepts the following options:
7199 Set which plane to analyze. Default is @code{1}.
7202 Filter out noisy pixels from @code{bitplane} set above.
7203 Default is disabled.
7206 @section blackdetect
7208 Detect video intervals that are (almost) completely black. Can be
7209 useful to detect chapter transitions, commercials, or invalid
7212 The filter outputs its detection analysis to both the log as well as
7213 frame metadata. If a black segment of at least the specified minimum
7214 duration is found, a line with the start and end timestamps as well
7215 as duration is printed to the log with level @code{info}. In addition,
7216 a log line with level @code{debug} is printed per frame showing the
7217 black amount detected for that frame.
7219 The filter also attaches metadata to the first frame of a black
7220 segment with key @code{lavfi.black_start} and to the first frame
7221 after the black segment ends with key @code{lavfi.black_end}. The
7222 value is the frame's timestamp. This metadata is added regardless
7223 of the minimum duration specified.
7225 The filter accepts the following options:
7228 @item black_min_duration, d
7229 Set the minimum detected black duration expressed in seconds. It must
7230 be a non-negative floating point number.
7232 Default value is 2.0.
7234 @item picture_black_ratio_th, pic_th
7235 Set the threshold for considering a picture "black".
7236 Express the minimum value for the ratio:
7238 @var{nb_black_pixels} / @var{nb_pixels}
7241 for which a picture is considered black.
7242 Default value is 0.98.
7244 @item pixel_black_th, pix_th
7245 Set the threshold for considering a pixel "black".
7247 The threshold expresses the maximum pixel luminance value for which a
7248 pixel is considered "black". The provided value is scaled according to
7249 the following equation:
7251 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
7254 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
7255 the input video format, the range is [0-255] for YUV full-range
7256 formats and [16-235] for YUV non full-range formats.
7258 Default value is 0.10.
7261 The following example sets the maximum pixel threshold to the minimum
7262 value, and detects only black intervals of 2 or more seconds:
7264 blackdetect=d=2:pix_th=0.00
7269 Detect frames that are (almost) completely black. Can be useful to
7270 detect chapter transitions or commercials. Output lines consist of
7271 the frame number of the detected frame, the percentage of blackness,
7272 the position in the file if known or -1 and the timestamp in seconds.
7274 In order to display the output lines, you need to set the loglevel at
7275 least to the AV_LOG_INFO value.
7277 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
7278 The value represents the percentage of pixels in the picture that
7279 are below the threshold value.
7281 It accepts the following parameters:
7286 The percentage of the pixels that have to be below the threshold; it defaults to
7289 @item threshold, thresh
7290 The threshold below which a pixel value is considered black; it defaults to
7298 Blend two video frames into each other.
7300 The @code{blend} filter takes two input streams and outputs one
7301 stream, the first input is the "top" layer and second input is
7302 "bottom" layer. By default, the output terminates when the longest input terminates.
7304 The @code{tblend} (time blend) filter takes two consecutive frames
7305 from one single stream, and outputs the result obtained by blending
7306 the new frame on top of the old frame.
7308 A description of the accepted options follows.
7316 Set blend mode for specific pixel component or all pixel components in case
7317 of @var{all_mode}. Default value is @code{normal}.
7319 Available values for component modes are:
7361 Set blend opacity for specific pixel component or all pixel components in case
7362 of @var{all_opacity}. Only used in combination with pixel component blend modes.
7369 Set blend expression for specific pixel component or all pixel components in case
7370 of @var{all_expr}. Note that related mode options will be ignored if those are set.
7372 The expressions can use the following variables:
7376 The sequential number of the filtered frame, starting from @code{0}.
7380 the coordinates of the current sample
7384 the width and height of currently filtered plane
7388 Width and height scale for the plane being filtered. It is the
7389 ratio between the dimensions of the current plane to the luma plane,
7390 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7391 the luma plane and @code{0.5,0.5} for the chroma planes.
7394 Time of the current frame, expressed in seconds.
7397 Value of pixel component at current location for first video frame (top layer).
7400 Value of pixel component at current location for second video frame (bottom layer).
7404 The @code{blend} filter also supports the @ref{framesync} options.
7406 @subsection Examples
7410 Apply transition from bottom layer to top layer in first 10 seconds:
7412 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7416 Apply linear horizontal transition from top layer to bottom layer:
7418 blend=all_expr='A*(X/W)+B*(1-X/W)'
7422 Apply 1x1 checkerboard effect:
7424 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7428 Apply uncover left effect:
7430 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7434 Apply uncover down effect:
7436 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7440 Apply uncover up-left effect:
7442 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7446 Split diagonally video and shows top and bottom layer on each side:
7448 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7452 Display differences between the current and the previous frame:
7454 tblend=all_mode=grainextract
7460 Denoise frames using Block-Matching 3D algorithm.
7462 The filter accepts the following options.
7466 Set denoising strength. Default value is 1.
7467 Allowed range is from 0 to 999.9.
7468 The denoising algorithm is very sensitive to sigma, so adjust it
7469 according to the source.
7472 Set local patch size. This sets dimensions in 2D.
7475 Set sliding step for processing blocks. Default value is 4.
7476 Allowed range is from 1 to 64.
7477 Smaller values allows processing more reference blocks and is slower.
7480 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7481 When set to 1, no block matching is done. Larger values allows more blocks
7483 Allowed range is from 1 to 256.
7486 Set radius for search block matching. Default is 9.
7487 Allowed range is from 1 to INT32_MAX.
7490 Set step between two search locations for block matching. Default is 1.
7491 Allowed range is from 1 to 64. Smaller is slower.
7494 Set threshold of mean square error for block matching. Valid range is 0 to
7498 Set thresholding parameter for hard thresholding in 3D transformed domain.
7499 Larger values results in stronger hard-thresholding filtering in frequency
7503 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7504 Default is @code{basic}.
7507 If enabled, filter will use 2nd stream for block matching.
7508 Default is disabled for @code{basic} value of @var{estim} option,
7509 and always enabled if value of @var{estim} is @code{final}.
7512 Set planes to filter. Default is all available except alpha.
7515 @subsection Examples
7519 Basic filtering with bm3d:
7521 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7525 Same as above, but filtering only luma:
7527 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7531 Same as above, but with both estimation modes:
7533 split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
7537 Same as above, but prefilter with @ref{nlmeans} filter instead:
7539 split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
7545 Apply a boxblur algorithm to the input video.
7547 It accepts the following parameters:
7551 @item luma_radius, lr
7552 @item luma_power, lp
7553 @item chroma_radius, cr
7554 @item chroma_power, cp
7555 @item alpha_radius, ar
7556 @item alpha_power, ap
7560 A description of the accepted options follows.
7563 @item luma_radius, lr
7564 @item chroma_radius, cr
7565 @item alpha_radius, ar
7566 Set an expression for the box radius in pixels used for blurring the
7567 corresponding input plane.
7569 The radius value must be a non-negative number, and must not be
7570 greater than the value of the expression @code{min(w,h)/2} for the
7571 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7574 Default value for @option{luma_radius} is "2". If not specified,
7575 @option{chroma_radius} and @option{alpha_radius} default to the
7576 corresponding value set for @option{luma_radius}.
7578 The expressions can contain the following constants:
7582 The input width and height in pixels.
7586 The input chroma image width and height in pixels.
7590 The horizontal and vertical chroma subsample values. For example, for the
7591 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7594 @item luma_power, lp
7595 @item chroma_power, cp
7596 @item alpha_power, ap
7597 Specify how many times the boxblur filter is applied to the
7598 corresponding plane.
7600 Default value for @option{luma_power} is 2. If not specified,
7601 @option{chroma_power} and @option{alpha_power} default to the
7602 corresponding value set for @option{luma_power}.
7604 A value of 0 will disable the effect.
7607 @subsection Examples
7611 Apply a boxblur filter with the luma, chroma, and alpha radii
7614 boxblur=luma_radius=2:luma_power=1
7619 Set the luma radius to 2, and alpha and chroma radius to 0:
7621 boxblur=2:1:cr=0:ar=0
7625 Set the luma and chroma radii to a fraction of the video dimension:
7627 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7633 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7634 Deinterlacing Filter").
7636 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7637 interpolation algorithms.
7638 It accepts the following parameters:
7642 The interlacing mode to adopt. It accepts one of the following values:
7646 Output one frame for each frame.
7648 Output one frame for each field.
7651 The default value is @code{send_field}.
7654 The picture field parity assumed for the input interlaced video. It accepts one
7655 of the following values:
7659 Assume the top field is first.
7661 Assume the bottom field is first.
7663 Enable automatic detection of field parity.
7666 The default value is @code{auto}.
7667 If the interlacing is unknown or the decoder does not export this information,
7668 top field first will be assumed.
7671 Specify which frames to deinterlace. Accepts one of the following
7676 Deinterlace all frames.
7678 Only deinterlace frames marked as interlaced.
7681 The default value is @code{all}.
7686 Apply Contrast Adaptive Sharpen filter to video stream.
7688 The filter accepts the following options:
7692 Set the sharpening strength. Default value is 0.
7695 Set planes to filter. Default value is to filter all
7696 planes except alpha plane.
7699 @subsection Commands
7700 This filter supports same @ref{commands} as options.
7703 Remove all color information for all colors except for certain one.
7705 The filter accepts the following options:
7709 The color which will not be replaced with neutral chroma.
7712 Similarity percentage with the above color.
7713 0.01 matches only the exact key color, while 1.0 matches everything.
7717 0.0 makes pixels either fully gray, or not gray at all.
7718 Higher values result in more preserved color.
7721 Signals that the color passed is already in YUV instead of RGB.
7723 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7724 This can be used to pass exact YUV values as hexadecimal numbers.
7727 @subsection Commands
7728 This filter supports same @ref{commands} as options.
7729 The command accepts the same syntax of the corresponding option.
7731 If the specified expression is not valid, it is kept at its current
7735 YUV colorspace color/chroma keying.
7737 The filter accepts the following options:
7741 The color which will be replaced with transparency.
7744 Similarity percentage with the key color.
7746 0.01 matches only the exact key color, while 1.0 matches everything.
7751 0.0 makes pixels either fully transparent, or not transparent at all.
7753 Higher values result in semi-transparent pixels, with a higher transparency
7754 the more similar the pixels color is to the key color.
7757 Signals that the color passed is already in YUV instead of RGB.
7759 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7760 This can be used to pass exact YUV values as hexadecimal numbers.
7763 @subsection Commands
7764 This filter supports same @ref{commands} as options.
7765 The command accepts the same syntax of the corresponding option.
7767 If the specified expression is not valid, it is kept at its current
7770 @subsection Examples
7774 Make every green pixel in the input image transparent:
7776 ffmpeg -i input.png -vf chromakey=green out.png
7780 Overlay a greenscreen-video on top of a static black background.
7782 ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
7787 Reduce chrominance noise.
7789 The filter accepts the following options:
7793 Set threshold for averaging chrominance values.
7794 Sum of absolute difference of Y, U and V pixel components of current
7795 pixel and neighbour pixels lower than this threshold will be used in
7796 averaging. Luma component is left unchanged and is copied to output.
7797 Default value is 30. Allowed range is from 1 to 200.
7800 Set horizontal radius of rectangle used for averaging.
7801 Allowed range is from 1 to 100. Default value is 5.
7804 Set vertical radius of rectangle used for averaging.
7805 Allowed range is from 1 to 100. Default value is 5.
7808 Set horizontal step when averaging. Default value is 1.
7809 Allowed range is from 1 to 50.
7810 Mostly useful to speed-up filtering.
7813 Set vertical step when averaging. Default value is 1.
7814 Allowed range is from 1 to 50.
7815 Mostly useful to speed-up filtering.
7818 Set Y threshold for averaging chrominance values.
7819 Set finer control for max allowed difference between Y components
7820 of current pixel and neigbour pixels.
7821 Default value is 200. Allowed range is from 1 to 200.
7824 Set U threshold for averaging chrominance values.
7825 Set finer control for max allowed difference between U components
7826 of current pixel and neigbour pixels.
7827 Default value is 200. Allowed range is from 1 to 200.
7830 Set V threshold for averaging chrominance values.
7831 Set finer control for max allowed difference between V components
7832 of current pixel and neigbour pixels.
7833 Default value is 200. Allowed range is from 1 to 200.
7836 @subsection Commands
7837 This filter supports same @ref{commands} as options.
7838 The command accepts the same syntax of the corresponding option.
7840 @section chromashift
7841 Shift chroma pixels horizontally and/or vertically.
7843 The filter accepts the following options:
7846 Set amount to shift chroma-blue horizontally.
7848 Set amount to shift chroma-blue vertically.
7850 Set amount to shift chroma-red horizontally.
7852 Set amount to shift chroma-red vertically.
7854 Set edge mode, can be @var{smear}, default, or @var{warp}.
7857 @subsection Commands
7859 This filter supports the all above options as @ref{commands}.
7863 Display CIE color diagram with pixels overlaid onto it.
7865 The filter accepts the following options:
7880 @item uhdtv, rec2020
7894 Set what gamuts to draw.
7896 See @code{system} option for available values.
7899 Set ciescope size, by default set to 512.
7902 Set intensity used to map input pixel values to CIE diagram.
7905 Set contrast used to draw tongue colors that are out of active color system gamut.
7908 Correct gamma displayed on scope, by default enabled.
7911 Show white point on CIE diagram, by default disabled.
7914 Set input gamma. Used only with XYZ input color space.
7919 Visualize information exported by some codecs.
7921 Some codecs can export information through frames using side-data or other
7922 means. For example, some MPEG based codecs export motion vectors through the
7923 @var{export_mvs} flag in the codec @option{flags2} option.
7925 The filter accepts the following option:
7929 Set motion vectors to visualize.
7931 Available flags for @var{mv} are:
7935 forward predicted MVs of P-frames
7937 forward predicted MVs of B-frames
7939 backward predicted MVs of B-frames
7943 Display quantization parameters using the chroma planes.
7946 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7948 Available flags for @var{mv_type} are:
7952 forward predicted MVs
7954 backward predicted MVs
7957 @item frame_type, ft
7958 Set frame type to visualize motion vectors of.
7960 Available flags for @var{frame_type} are:
7964 intra-coded frames (I-frames)
7966 predicted frames (P-frames)
7968 bi-directionally predicted frames (B-frames)
7972 @subsection Examples
7976 Visualize forward predicted MVs of all frames using @command{ffplay}:
7978 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7982 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7984 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7988 @section colorbalance
7989 Modify intensity of primary colors (red, green and blue) of input frames.
7991 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7992 regions for the red-cyan, green-magenta or blue-yellow balance.
7994 A positive adjustment value shifts the balance towards the primary color, a negative
7995 value towards the complementary color.
7997 The filter accepts the following options:
8003 Adjust red, green and blue shadows (darkest pixels).
8008 Adjust red, green and blue midtones (medium pixels).
8013 Adjust red, green and blue highlights (brightest pixels).
8015 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8018 Preserve lightness when changing color balance. Default is disabled.
8021 @subsection Examples
8025 Add red color cast to shadows:
8031 @subsection Commands
8033 This filter supports the all above options as @ref{commands}.
8035 @section colorcontrast
8037 Adjust color contrast between RGB components.
8039 The filter accepts the following options:
8043 Set the red-cyan contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
8046 Set the green-magenta contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
8049 Set the blue-yellow contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
8054 Set the weight of each @code{rc}, @code{gm}, @code{by} option value. Default value is 0.0.
8055 Allowed range is from 0.0 to 1.0. If all weights are 0.0 filtering is disabled.
8058 Set the amount of preserving lightness. Default value is 0.0. Allowed range is from 0.0 to 1.0.
8061 @subsection Commands
8063 This filter supports the all above options as @ref{commands}.
8065 @section colorcorrect
8067 Adjust color white balance selectively for blacks and whites.
8068 This filter operates in YUV colorspace.
8070 The filter accepts the following options:
8074 Set the red shadow spot. Allowed range is from -1.0 to 1.0.
8078 Set the blue shadow spot. Allowed range is from -1.0 to 1.0.
8082 Set the red highlight spot. Allowed range is from -1.0 to 1.0.
8086 Set the red highlight spot. Allowed range is from -1.0 to 1.0.
8090 Set the amount of saturation. Allowed range is from -3.0 to 3.0.
8094 @subsection Commands
8096 This filter supports the all above options as @ref{commands}.
8098 @section colorchannelmixer
8100 Adjust video input frames by re-mixing color channels.
8102 This filter modifies a color channel by adding the values associated to
8103 the other channels of the same pixels. For example if the value to
8104 modify is red, the output value will be:
8106 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
8109 The filter accepts the following options:
8116 Adjust contribution of input red, green, blue and alpha channels for output red channel.
8117 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
8123 Adjust contribution of input red, green, blue and alpha channels for output green channel.
8124 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
8130 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
8131 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
8137 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
8138 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
8140 Allowed ranges for options are @code{[-2.0, 2.0]}.
8143 Preserve lightness when changing colors. Allowed range is from @code{[0.0, 1.0]}.
8144 Default is @code{0.0}, thus disabled.
8147 @subsection Examples
8151 Convert source to grayscale:
8153 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
8156 Simulate sepia tones:
8158 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
8162 @subsection Commands
8164 This filter supports the all above options as @ref{commands}.
8167 RGB colorspace color keying.
8169 The filter accepts the following options:
8173 The color which will be replaced with transparency.
8176 Similarity percentage with the key color.
8178 0.01 matches only the exact key color, while 1.0 matches everything.
8183 0.0 makes pixels either fully transparent, or not transparent at all.
8185 Higher values result in semi-transparent pixels, with a higher transparency
8186 the more similar the pixels color is to the key color.
8189 @subsection Examples
8193 Make every green pixel in the input image transparent:
8195 ffmpeg -i input.png -vf colorkey=green out.png
8199 Overlay a greenscreen-video on top of a static background image.
8201 ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
8205 @subsection Commands
8206 This filter supports same @ref{commands} as options.
8207 The command accepts the same syntax of the corresponding option.
8209 If the specified expression is not valid, it is kept at its current
8213 Remove all color information for all RGB colors except for certain one.
8215 The filter accepts the following options:
8219 The color which will not be replaced with neutral gray.
8222 Similarity percentage with the above color.
8223 0.01 matches only the exact key color, while 1.0 matches everything.
8226 Blend percentage. 0.0 makes pixels fully gray.
8227 Higher values result in more preserved color.
8230 @subsection Commands
8231 This filter supports same @ref{commands} as options.
8232 The command accepts the same syntax of the corresponding option.
8234 If the specified expression is not valid, it is kept at its current
8237 @section colorlevels
8239 Adjust video input frames using levels.
8241 The filter accepts the following options:
8248 Adjust red, green, blue and alpha input black point.
8249 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
8255 Adjust red, green, blue and alpha input white point.
8256 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
8258 Input levels are used to lighten highlights (bright tones), darken shadows
8259 (dark tones), change the balance of bright and dark tones.
8265 Adjust red, green, blue and alpha output black point.
8266 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
8272 Adjust red, green, blue and alpha output white point.
8273 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
8275 Output levels allows manual selection of a constrained output level range.
8278 @subsection Examples
8282 Make video output darker:
8284 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
8290 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
8294 Make video output lighter:
8296 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
8300 Increase brightness:
8302 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
8306 @subsection Commands
8308 This filter supports the all above options as @ref{commands}.
8310 @section colormatrix
8312 Convert color matrix.
8314 The filter accepts the following options:
8319 Specify the source and destination color matrix. Both values must be
8322 The accepted values are:
8350 For example to convert from BT.601 to SMPTE-240M, use the command:
8352 colormatrix=bt601:smpte240m
8357 Convert colorspace, transfer characteristics or color primaries.
8358 Input video needs to have an even size.
8360 The filter accepts the following options:
8365 Specify all color properties at once.
8367 The accepted values are:
8397 Specify output colorspace.
8399 The accepted values are:
8408 BT.470BG or BT.601-6 625
8411 SMPTE-170M or BT.601-6 525
8420 BT.2020 with non-constant luminance
8426 Specify output transfer characteristics.
8428 The accepted values are:
8440 Constant gamma of 2.2
8443 Constant gamma of 2.8
8446 SMPTE-170M, BT.601-6 625 or BT.601-6 525
8464 BT.2020 for 10-bits content
8467 BT.2020 for 12-bits content
8473 Specify output color primaries.
8475 The accepted values are:
8484 BT.470BG or BT.601-6 625
8487 SMPTE-170M or BT.601-6 525
8511 Specify output color range.
8513 The accepted values are:
8516 TV (restricted) range
8519 MPEG (restricted) range
8530 Specify output color format.
8532 The accepted values are:
8535 YUV 4:2:0 planar 8-bits
8538 YUV 4:2:0 planar 10-bits
8541 YUV 4:2:0 planar 12-bits
8544 YUV 4:2:2 planar 8-bits
8547 YUV 4:2:2 planar 10-bits
8550 YUV 4:2:2 planar 12-bits
8553 YUV 4:4:4 planar 8-bits
8556 YUV 4:4:4 planar 10-bits
8559 YUV 4:4:4 planar 12-bits
8564 Do a fast conversion, which skips gamma/primary correction. This will take
8565 significantly less CPU, but will be mathematically incorrect. To get output
8566 compatible with that produced by the colormatrix filter, use fast=1.
8569 Specify dithering mode.
8571 The accepted values are:
8577 Floyd-Steinberg dithering
8581 Whitepoint adaptation mode.
8583 The accepted values are:
8586 Bradford whitepoint adaptation
8589 von Kries whitepoint adaptation
8592 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8596 Override all input properties at once. Same accepted values as @ref{all}.
8599 Override input colorspace. Same accepted values as @ref{space}.
8602 Override input color primaries. Same accepted values as @ref{primaries}.
8605 Override input transfer characteristics. Same accepted values as @ref{trc}.
8608 Override input color range. Same accepted values as @ref{range}.
8612 The filter converts the transfer characteristics, color space and color
8613 primaries to the specified user values. The output value, if not specified,
8614 is set to a default value based on the "all" property. If that property is
8615 also not specified, the filter will log an error. The output color range and
8616 format default to the same value as the input color range and format. The
8617 input transfer characteristics, color space, color primaries and color range
8618 should be set on the input data. If any of these are missing, the filter will
8619 log an error and no conversion will take place.
8621 For example to convert the input to SMPTE-240M, use the command:
8623 colorspace=smpte240m
8626 @section colortemperature
8627 Adjust color temperature in video to simulate variations in ambient color temperature.
8629 The filter accepts the following options:
8633 Set the temperature in Kelvin. Allowed range is from 1000 to 40000.
8634 Default value is 6500 K.
8637 Set mixing with filtered output. Allowed range is from 0 to 1.
8641 Set the amount of preserving lightness. Allowed range is from 0 to 1.
8645 @subsection Commands
8646 This filter supports same @ref{commands} as options.
8648 @section convolution
8650 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8652 The filter accepts the following options:
8659 Set matrix for each plane.
8660 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8661 and from 1 to 49 odd number of signed integers in @var{row} mode.
8667 Set multiplier for calculated value for each plane.
8668 If unset or 0, it will be sum of all matrix elements.
8674 Set bias for each plane. This value is added to the result of the multiplication.
8675 Useful for making the overall image brighter or darker. Default is 0.0.
8681 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8682 Default is @var{square}.
8685 @subsection Commands
8687 This filter supports the all above options as @ref{commands}.
8689 @subsection Examples
8695 convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
8701 convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
8707 convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
8713 convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
8717 Apply laplacian edge detector which includes diagonals:
8719 convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
8725 convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
8731 Apply 2D convolution of video stream in frequency domain using second stream
8734 The filter accepts the following options:
8738 Set which planes to process.
8741 Set which impulse video frames will be processed, can be @var{first}
8742 or @var{all}. Default is @var{all}.
8745 The @code{convolve} filter also supports the @ref{framesync} options.
8749 Copy the input video source unchanged to the output. This is mainly useful for
8754 Video filtering on GPU using Apple's CoreImage API on OSX.
8756 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8757 processed by video hardware. However, software-based OpenGL implementations
8758 exist which means there is no guarantee for hardware processing. It depends on
8761 There are many filters and image generators provided by Apple that come with a
8762 large variety of options. The filter has to be referenced by its name along
8765 The coreimage filter accepts the following options:
8768 List all available filters and generators along with all their respective
8769 options as well as possible minimum and maximum values along with the default
8776 Specify all filters by their respective name and options.
8777 Use @var{list_filters} to determine all valid filter names and options.
8778 Numerical options are specified by a float value and are automatically clamped
8779 to their respective value range. Vector and color options have to be specified
8780 by a list of space separated float values. Character escaping has to be done.
8781 A special option name @code{default} is available to use default options for a
8784 It is required to specify either @code{default} or at least one of the filter options.
8785 All omitted options are used with their default values.
8786 The syntax of the filter string is as follows:
8788 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8792 Specify a rectangle where the output of the filter chain is copied into the
8793 input image. It is given by a list of space separated float values:
8795 output_rect=x\ y\ width\ height
8797 If not given, the output rectangle equals the dimensions of the input image.
8798 The output rectangle is automatically cropped at the borders of the input
8799 image. Negative values are valid for each component.
8801 output_rect=25\ 25\ 100\ 100
8805 Several filters can be chained for successive processing without GPU-HOST
8806 transfers allowing for fast processing of complex filter chains.
8807 Currently, only filters with zero (generators) or exactly one (filters) input
8808 image and one output image are supported. Also, transition filters are not yet
8811 Some filters generate output images with additional padding depending on the
8812 respective filter kernel. The padding is automatically removed to ensure the
8813 filter output has the same size as the input image.
8815 For image generators, the size of the output image is determined by the
8816 previous output image of the filter chain or the input image of the whole
8817 filterchain, respectively. The generators do not use the pixel information of
8818 this image to generate their output. However, the generated output is
8819 blended onto this image, resulting in partial or complete coverage of the
8822 The @ref{coreimagesrc} video source can be used for generating input images
8823 which are directly fed into the filter chain. By using it, providing input
8824 images by another video source or an input video is not required.
8826 @subsection Examples
8831 List all filters available:
8833 coreimage=list_filters=true
8837 Use the CIBoxBlur filter with default options to blur an image:
8839 coreimage=filter=CIBoxBlur@@default
8843 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8844 its center at 100x100 and a radius of 50 pixels:
8846 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8850 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8851 given as complete and escaped command-line for Apple's standard bash shell:
8853 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8859 Cover a rectangular object
8861 It accepts the following options:
8865 Filepath of the optional cover image, needs to be in yuv420.
8870 It accepts the following values:
8873 cover it by the supplied image
8875 cover it by interpolating the surrounding pixels
8878 Default value is @var{blur}.
8881 @subsection Examples
8885 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8887 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8893 Crop the input video to given dimensions.
8895 It accepts the following parameters:
8899 The width of the output video. It defaults to @code{iw}.
8900 This expression is evaluated only once during the filter
8901 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8904 The height of the output video. It defaults to @code{ih}.
8905 This expression is evaluated only once during the filter
8906 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8909 The horizontal position, in the input video, of the left edge of the output
8910 video. It defaults to @code{(in_w-out_w)/2}.
8911 This expression is evaluated per-frame.
8914 The vertical position, in the input video, of the top edge of the output video.
8915 It defaults to @code{(in_h-out_h)/2}.
8916 This expression is evaluated per-frame.
8919 If set to 1 will force the output display aspect ratio
8920 to be the same of the input, by changing the output sample aspect
8921 ratio. It defaults to 0.
8924 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8925 width/height/x/y as specified and will not be rounded to nearest smaller value.
8929 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8930 expressions containing the following constants:
8935 The computed values for @var{x} and @var{y}. They are evaluated for
8940 The input width and height.
8944 These are the same as @var{in_w} and @var{in_h}.
8948 The output (cropped) width and height.
8952 These are the same as @var{out_w} and @var{out_h}.
8955 same as @var{iw} / @var{ih}
8958 input sample aspect ratio
8961 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8965 horizontal and vertical chroma subsample values. For example for the
8966 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8969 The number of the input frame, starting from 0.
8972 the position in the file of the input frame, NAN if unknown
8975 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8979 The expression for @var{out_w} may depend on the value of @var{out_h},
8980 and the expression for @var{out_h} may depend on @var{out_w}, but they
8981 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8982 evaluated after @var{out_w} and @var{out_h}.
8984 The @var{x} and @var{y} parameters specify the expressions for the
8985 position of the top-left corner of the output (non-cropped) area. They
8986 are evaluated for each frame. If the evaluated value is not valid, it
8987 is approximated to the nearest valid value.
8989 The expression for @var{x} may depend on @var{y}, and the expression
8990 for @var{y} may depend on @var{x}.
8992 @subsection Examples
8996 Crop area with size 100x100 at position (12,34).
9001 Using named options, the example above becomes:
9003 crop=w=100:h=100:x=12:y=34
9007 Crop the central input area with size 100x100:
9013 Crop the central input area with size 2/3 of the input video:
9015 crop=2/3*in_w:2/3*in_h
9019 Crop the input video central square:
9026 Delimit the rectangle with the top-left corner placed at position
9027 100:100 and the right-bottom corner corresponding to the right-bottom
9028 corner of the input image.
9030 crop=in_w-100:in_h-100:100:100
9034 Crop 10 pixels from the left and right borders, and 20 pixels from
9035 the top and bottom borders
9037 crop=in_w-2*10:in_h-2*20
9041 Keep only the bottom right quarter of the input image:
9043 crop=in_w/2:in_h/2:in_w/2:in_h/2
9047 Crop height for getting Greek harmony:
9049 crop=in_w:1/PHI*in_w
9053 Apply trembling effect:
9055 crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
9059 Apply erratic camera effect depending on timestamp:
9061 crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)"
9065 Set x depending on the value of y:
9067 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
9071 @subsection Commands
9073 This filter supports the following commands:
9079 Set width/height of the output video and the horizontal/vertical position
9081 The command accepts the same syntax of the corresponding option.
9083 If the specified expression is not valid, it is kept at its current
9089 Auto-detect the crop size.
9091 It calculates the necessary cropping parameters and prints the
9092 recommended parameters via the logging system. The detected dimensions
9093 correspond to the non-black area of the input video.
9095 It accepts the following parameters:
9100 Set higher black value threshold, which can be optionally specified
9101 from nothing (0) to everything (255 for 8-bit based formats). An intensity
9102 value greater to the set value is considered non-black. It defaults to 24.
9103 You can also specify a value between 0.0 and 1.0 which will be scaled depending
9104 on the bitdepth of the pixel format.
9107 The value which the width/height should be divisible by. It defaults to
9108 16. The offset is automatically adjusted to center the video. Use 2 to
9109 get only even dimensions (needed for 4:2:2 video). 16 is best when
9110 encoding to most video codecs.
9113 Set the number of initial frames for which evaluation is skipped.
9114 Default is 2. Range is 0 to INT_MAX.
9116 @item reset_count, reset
9117 Set the counter that determines after how many frames cropdetect will
9118 reset the previously detected largest video area and start over to
9119 detect the current optimal crop area. Default value is 0.
9121 This can be useful when channel logos distort the video area. 0
9122 indicates 'never reset', and returns the largest area encountered during
9129 Delay video filtering until a given wallclock timestamp. The filter first
9130 passes on @option{preroll} amount of frames, then it buffers at most
9131 @option{buffer} amount of frames and waits for the cue. After reaching the cue
9132 it forwards the buffered frames and also any subsequent frames coming in its
9135 The filter can be used synchronize the output of multiple ffmpeg processes for
9136 realtime output devices like decklink. By putting the delay in the filtering
9137 chain and pre-buffering frames the process can pass on data to output almost
9138 immediately after the target wallclock timestamp is reached.
9140 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
9146 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
9149 The duration of content to pass on as preroll expressed in seconds. Default is 0.
9152 The maximum duration of content to buffer before waiting for the cue expressed
9153 in seconds. Default is 0.
9160 Apply color adjustments using curves.
9162 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
9163 component (red, green and blue) has its values defined by @var{N} key points
9164 tied from each other using a smooth curve. The x-axis represents the pixel
9165 values from the input frame, and the y-axis the new pixel values to be set for
9168 By default, a component curve is defined by the two points @var{(0;0)} and
9169 @var{(1;1)}. This creates a straight line where each original pixel value is
9170 "adjusted" to its own value, which means no change to the image.
9172 The filter allows you to redefine these two points and add some more. A new
9173 curve (using a natural cubic spline interpolation) will be define to pass
9174 smoothly through all these new coordinates. The new defined points needs to be
9175 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
9176 be in the @var{[0;1]} interval. If the computed curves happened to go outside
9177 the vector spaces, the values will be clipped accordingly.
9179 The filter accepts the following options:
9183 Select one of the available color presets. This option can be used in addition
9184 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
9185 options takes priority on the preset values.
9186 Available presets are:
9189 @item color_negative
9192 @item increase_contrast
9194 @item linear_contrast
9195 @item medium_contrast
9197 @item strong_contrast
9200 Default is @code{none}.
9202 Set the master key points. These points will define a second pass mapping. It
9203 is sometimes called a "luminance" or "value" mapping. It can be used with
9204 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
9205 post-processing LUT.
9207 Set the key points for the red component.
9209 Set the key points for the green component.
9211 Set the key points for the blue component.
9213 Set the key points for all components (not including master).
9214 Can be used in addition to the other key points component
9215 options. In this case, the unset component(s) will fallback on this
9216 @option{all} setting.
9218 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
9220 Save Gnuplot script of the curves in specified file.
9223 To avoid some filtergraph syntax conflicts, each key points list need to be
9224 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
9226 @subsection Examples
9230 Increase slightly the middle level of blue:
9232 curves=blue='0/0 0.5/0.58 1/1'
9238 curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
9240 Here we obtain the following coordinates for each components:
9243 @code{(0;0.11) (0.42;0.51) (1;0.95)}
9245 @code{(0;0) (0.50;0.48) (1;1)}
9247 @code{(0;0.22) (0.49;0.44) (1;0.80)}
9251 The previous example can also be achieved with the associated built-in preset:
9253 curves=preset=vintage
9263 Use a Photoshop preset and redefine the points of the green component:
9265 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
9269 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
9270 and @command{gnuplot}:
9272 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
9273 gnuplot -p /tmp/curves.plt
9279 Video data analysis filter.
9281 This filter shows hexadecimal pixel values of part of video.
9283 The filter accepts the following options:
9287 Set output video size.
9290 Set x offset from where to pick pixels.
9293 Set y offset from where to pick pixels.
9296 Set scope mode, can be one of the following:
9299 Draw hexadecimal pixel values with white color on black background.
9302 Draw hexadecimal pixel values with input video pixel color on black
9306 Draw hexadecimal pixel values on color background picked from input video,
9307 the text color is picked in such way so its always visible.
9311 Draw rows and columns numbers on left and top of video.
9314 Set background opacity.
9317 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
9320 Set pixel components to display. By default all pixel components are displayed.
9324 Apply Directional blur filter.
9326 The filter accepts the following options:
9330 Set angle of directional blur. Default is @code{45}.
9333 Set radius of directional blur. Default is @code{5}.
9336 Set which planes to filter. By default all planes are filtered.
9339 @subsection Commands
9340 This filter supports same @ref{commands} as options.
9341 The command accepts the same syntax of the corresponding option.
9343 If the specified expression is not valid, it is kept at its current
9348 Denoise frames using 2D DCT (frequency domain filtering).
9350 This filter is not designed for real time.
9352 The filter accepts the following options:
9356 Set the noise sigma constant.
9358 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
9359 coefficient (absolute value) below this threshold with be dropped.
9361 If you need a more advanced filtering, see @option{expr}.
9363 Default is @code{0}.
9366 Set number overlapping pixels for each block. Since the filter can be slow, you
9367 may want to reduce this value, at the cost of a less effective filter and the
9368 risk of various artefacts.
9370 If the overlapping value doesn't permit processing the whole input width or
9371 height, a warning will be displayed and according borders won't be denoised.
9373 Default value is @var{blocksize}-1, which is the best possible setting.
9376 Set the coefficient factor expression.
9378 For each coefficient of a DCT block, this expression will be evaluated as a
9379 multiplier value for the coefficient.
9381 If this is option is set, the @option{sigma} option will be ignored.
9383 The absolute value of the coefficient can be accessed through the @var{c}
9387 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
9388 @var{blocksize}, which is the width and height of the processed blocks.
9390 The default value is @var{3} (8x8) and can be raised to @var{4} for a
9391 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
9392 on the speed processing. Also, a larger block size does not necessarily means a
9396 @subsection Examples
9398 Apply a denoise with a @option{sigma} of @code{4.5}:
9403 The same operation can be achieved using the expression system:
9405 dctdnoiz=e='gte(c, 4.5*3)'
9408 Violent denoise using a block size of @code{16x16}:
9415 Remove banding artifacts from input video.
9416 It works by replacing banded pixels with average value of referenced pixels.
9418 The filter accepts the following options:
9425 Set banding detection threshold for each plane. Default is 0.02.
9426 Valid range is 0.00003 to 0.5.
9427 If difference between current pixel and reference pixel is less than threshold,
9428 it will be considered as banded.
9431 Banding detection range in pixels. Default is 16. If positive, random number
9432 in range 0 to set value will be used. If negative, exact absolute value
9434 The range defines square of four pixels around current pixel.
9437 Set direction in radians from which four pixel will be compared. If positive,
9438 random direction from 0 to set direction will be picked. If negative, exact of
9439 absolute value will be picked. For example direction 0, -PI or -2*PI radians
9440 will pick only pixels on same row and -PI/2 will pick only pixels on same
9444 If enabled, current pixel is compared with average value of all four
9445 surrounding pixels. The default is enabled. If disabled current pixel is
9446 compared with all four surrounding pixels. The pixel is considered banded
9447 if only all four differences with surrounding pixels are less than threshold.
9450 If enabled, current pixel is changed if and only if all pixel components are banded,
9451 e.g. banding detection threshold is triggered for all color components.
9452 The default is disabled.
9457 Remove blocking artifacts from input video.
9459 The filter accepts the following options:
9463 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
9464 This controls what kind of deblocking is applied.
9467 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
9473 Set blocking detection thresholds. Allowed range is 0 to 1.
9474 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
9475 Using higher threshold gives more deblocking strength.
9476 Setting @var{alpha} controls threshold detection at exact edge of block.
9477 Remaining options controls threshold detection near the edge. Each one for
9478 below/above or left/right. Setting any of those to @var{0} disables
9482 Set planes to filter. Default is to filter all available planes.
9485 @subsection Examples
9489 Deblock using weak filter and block size of 4 pixels.
9491 deblock=filter=weak:block=4
9495 Deblock using strong filter, block size of 4 pixels and custom thresholds for
9496 deblocking more edges.
9498 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9502 Similar as above, but filter only first plane.
9504 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9508 Similar as above, but filter only second and third plane.
9510 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9517 Drop duplicated frames at regular intervals.
9519 The filter accepts the following options:
9523 Set the number of frames from which one will be dropped. Setting this to
9524 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9525 Default is @code{5}.
9528 Set the threshold for duplicate detection. If the difference metric for a frame
9529 is less than or equal to this value, then it is declared as duplicate. Default
9533 Set scene change threshold. Default is @code{15}.
9537 Set the size of the x and y-axis blocks used during metric calculations.
9538 Larger blocks give better noise suppression, but also give worse detection of
9539 small movements. Must be a power of two. Default is @code{32}.
9542 Mark main input as a pre-processed input and activate clean source input
9543 stream. This allows the input to be pre-processed with various filters to help
9544 the metrics calculation while keeping the frame selection lossless. When set to
9545 @code{1}, the first stream is for the pre-processed input, and the second
9546 stream is the clean source from where the kept frames are chosen. Default is
9550 Set whether or not chroma is considered in the metric calculations. Default is
9556 Apply 2D deconvolution of video stream in frequency domain using second stream
9559 The filter accepts the following options:
9563 Set which planes to process.
9566 Set which impulse video frames will be processed, can be @var{first}
9567 or @var{all}. Default is @var{all}.
9570 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9571 and height are not same and not power of 2 or if stream prior to convolving
9575 The @code{deconvolve} filter also supports the @ref{framesync} options.
9579 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9581 It accepts the following options:
9585 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9586 @var{rainbows} for cross-color reduction.
9589 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9592 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9595 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9598 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9603 Apply deflate effect to the video.
9605 This filter replaces the pixel by the local(3x3) average by taking into account
9606 only values lower than the pixel.
9608 It accepts the following options:
9615 Limit the maximum change for each plane, default is 65535.
9616 If 0, plane will remain unchanged.
9619 @subsection Commands
9621 This filter supports the all above options as @ref{commands}.
9625 Remove temporal frame luminance variations.
9627 It accepts the following options:
9631 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9634 Set averaging mode to smooth temporal luminance variations.
9636 Available values are:
9661 Do not actually modify frame. Useful when one only wants metadata.
9666 Remove judder produced by partially interlaced telecined content.
9668 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9669 source was partially telecined content then the output of @code{pullup,dejudder}
9670 will have a variable frame rate. May change the recorded frame rate of the
9671 container. Aside from that change, this filter will not affect constant frame
9674 The option available in this filter is:
9678 Specify the length of the window over which the judder repeats.
9680 Accepts any integer greater than 1. Useful values are:
9684 If the original was telecined from 24 to 30 fps (Film to NTSC).
9687 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9690 If a mixture of the two.
9693 The default is @samp{4}.
9698 Suppress a TV station logo by a simple interpolation of the surrounding
9699 pixels. Just set a rectangle covering the logo and watch it disappear
9700 (and sometimes something even uglier appear - your mileage may vary).
9702 It accepts the following parameters:
9707 Specify the top left corner coordinates of the logo. They must be
9712 Specify the width and height of the logo to clear. They must be
9716 Specify the thickness of the fuzzy edge of the rectangle (added to
9717 @var{w} and @var{h}). The default value is 1. This option is
9718 deprecated, setting higher values should no longer be necessary and
9722 When set to 1, a green rectangle is drawn on the screen to simplify
9723 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9724 The default value is 0.
9726 The rectangle is drawn on the outermost pixels which will be (partly)
9727 replaced with interpolated values. The values of the next pixels
9728 immediately outside this rectangle in each direction will be used to
9729 compute the interpolated pixel values inside the rectangle.
9733 @subsection Examples
9737 Set a rectangle covering the area with top left corner coordinates 0,0
9738 and size 100x77, and a band of size 10:
9740 delogo=x=0:y=0:w=100:h=77:band=10
9748 Remove the rain in the input image/video by applying the derain methods based on
9749 convolutional neural networks. Supported models:
9753 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9754 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9757 Training as well as model generation scripts are provided in
9758 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9760 Native model files (.model) can be generated from TensorFlow model
9761 files (.pb) by using tools/python/convert.py
9763 The filter accepts the following options:
9767 Specify which filter to use. This option accepts the following values:
9771 Derain filter. To conduct derain filter, you need to use a derain model.
9774 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9776 Default value is @samp{derain}.
9779 Specify which DNN backend to use for model loading and execution. This option accepts
9780 the following values:
9784 Native implementation of DNN loading and execution.
9787 TensorFlow backend. To enable this backend you
9788 need to install the TensorFlow for C library (see
9789 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9790 @code{--enable-libtensorflow}
9792 Default value is @samp{native}.
9795 Set path to model file specifying network architecture and its parameters.
9796 Note that different backends use different file formats. TensorFlow and native
9797 backend can load files for only its format.
9800 It can also be finished with @ref{dnn_processing} filter.
9804 Attempt to fix small changes in horizontal and/or vertical shift. This
9805 filter helps remove camera shake from hand-holding a camera, bumping a
9806 tripod, moving on a vehicle, etc.
9808 The filter accepts the following options:
9816 Specify a rectangular area where to limit the search for motion
9818 If desired the search for motion vectors can be limited to a
9819 rectangular area of the frame defined by its top left corner, width
9820 and height. These parameters have the same meaning as the drawbox
9821 filter which can be used to visualise the position of the bounding
9824 This is useful when simultaneous movement of subjects within the frame
9825 might be confused for camera motion by the motion vector search.
9827 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9828 then the full frame is used. This allows later options to be set
9829 without specifying the bounding box for the motion vector search.
9831 Default - search the whole frame.
9835 Specify the maximum extent of movement in x and y directions in the
9836 range 0-64 pixels. Default 16.
9839 Specify how to generate pixels to fill blanks at the edge of the
9840 frame. Available values are:
9843 Fill zeroes at blank locations
9845 Original image at blank locations
9847 Extruded edge value at blank locations
9849 Mirrored edge at blank locations
9851 Default value is @samp{mirror}.
9854 Specify the blocksize to use for motion search. Range 4-128 pixels,
9858 Specify the contrast threshold for blocks. Only blocks with more than
9859 the specified contrast (difference between darkest and lightest
9860 pixels) will be considered. Range 1-255, default 125.
9863 Specify the search strategy. Available values are:
9866 Set exhaustive search
9868 Set less exhaustive search.
9870 Default value is @samp{exhaustive}.
9873 If set then a detailed log of the motion search is written to the
9880 Remove unwanted contamination of foreground colors, caused by reflected color of
9881 greenscreen or bluescreen.
9883 This filter accepts the following options:
9887 Set what type of despill to use.
9890 Set how spillmap will be generated.
9893 Set how much to get rid of still remaining spill.
9896 Controls amount of red in spill area.
9899 Controls amount of green in spill area.
9900 Should be -1 for greenscreen.
9903 Controls amount of blue in spill area.
9904 Should be -1 for bluescreen.
9907 Controls brightness of spill area, preserving colors.
9910 Modify alpha from generated spillmap.
9913 @subsection Commands
9915 This filter supports the all above options as @ref{commands}.
9919 Apply an exact inverse of the telecine operation. It requires a predefined
9920 pattern specified using the pattern option which must be the same as that passed
9921 to the telecine filter.
9923 This filter accepts the following options:
9932 The default value is @code{top}.
9936 A string of numbers representing the pulldown pattern you wish to apply.
9937 The default value is @code{23}.
9940 A number representing position of the first frame with respect to the telecine
9941 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9946 Apply dilation effect to the video.
9948 This filter replaces the pixel by the local(3x3) maximum.
9950 It accepts the following options:
9957 Limit the maximum change for each plane, default is 65535.
9958 If 0, plane will remain unchanged.
9961 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9964 Flags to local 3x3 coordinates maps like this:
9971 @subsection Commands
9973 This filter supports the all above options as @ref{commands}.
9977 Displace pixels as indicated by second and third input stream.
9979 It takes three input streams and outputs one stream, the first input is the
9980 source, and second and third input are displacement maps.
9982 The second input specifies how much to displace pixels along the
9983 x-axis, while the third input specifies how much to displace pixels
9985 If one of displacement map streams terminates, last frame from that
9986 displacement map will be used.
9988 Note that once generated, displacements maps can be reused over and over again.
9990 A description of the accepted options follows.
9994 Set displace behavior for pixels that are out of range.
9996 Available values are:
9999 Missing pixels are replaced by black pixels.
10002 Adjacent pixels will spread out to replace missing pixels.
10005 Out of range pixels are wrapped so they point to pixels of other side.
10008 Out of range pixels will be replaced with mirrored pixels.
10010 Default is @samp{smear}.
10014 @subsection Examples
10018 Add ripple effect to rgb input of video size hd720:
10020 ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
10024 Add wave effect to rgb input of video size hd720:
10026 ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
10030 @anchor{dnn_processing}
10031 @section dnn_processing
10033 Do image processing with deep neural networks. It works together with another filter
10034 which converts the pixel format of the Frame to what the dnn network requires.
10036 The filter accepts the following options:
10040 Specify which DNN backend to use for model loading and execution. This option accepts
10041 the following values:
10045 Native implementation of DNN loading and execution.
10048 TensorFlow backend. To enable this backend you
10049 need to install the TensorFlow for C library (see
10050 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
10051 @code{--enable-libtensorflow}
10054 OpenVINO backend. To enable this backend you
10055 need to build and install the OpenVINO for C library (see
10056 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
10057 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
10058 be needed if the header files and libraries are not installed into system path)
10062 Default value is @samp{native}.
10065 Set path to model file specifying network architecture and its parameters.
10066 Note that different backends use different file formats. TensorFlow, OpenVINO and native
10067 backend can load files for only its format.
10069 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
10072 Set the input name of the dnn network.
10075 Set the output name of the dnn network.
10078 use DNN async execution if set (default: set),
10079 roll back to sync execution if the backend does not support async.
10083 @subsection Examples
10087 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
10089 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
10093 Halve the pixel value of the frame with format gray32f:
10095 ffmpeg -i input.jpg -vf format=grayf32,dnn_processing=model=halve_gray_float.model:input=dnn_in:output=dnn_out:dnn_backend=native -y out.native.png
10099 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
10101 ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
10105 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
10107 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
10114 Draw a colored box on the input image.
10116 It accepts the following parameters:
10121 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
10125 The expressions which specify the width and height of the box; if 0 they are interpreted as
10126 the input width and height. It defaults to 0.
10129 Specify the color of the box to write. For the general syntax of this option,
10130 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10131 value @code{invert} is used, the box edge color is the same as the
10132 video with inverted luma.
10135 The expression which sets the thickness of the box edge.
10136 A value of @code{fill} will create a filled box. Default value is @code{3}.
10138 See below for the list of accepted constants.
10141 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
10142 will overwrite the video's color and alpha pixels.
10143 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
10146 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10147 following constants:
10151 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10155 horizontal and vertical chroma subsample values. For example for the
10156 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10160 The input width and height.
10163 The input sample aspect ratio.
10167 The x and y offset coordinates where the box is drawn.
10171 The width and height of the drawn box.
10174 The thickness of the drawn box.
10176 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10177 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10181 @subsection Examples
10185 Draw a black box around the edge of the input image:
10191 Draw a box with color red and an opacity of 50%:
10193 drawbox=10:20:200:60:red@@0.5
10196 The previous example can be specified as:
10198 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
10202 Fill the box with pink color:
10204 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
10208 Draw a 2-pixel red 2.40:1 mask:
10210 drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
10214 @subsection Commands
10215 This filter supports same commands as options.
10216 The command accepts the same syntax of the corresponding option.
10218 If the specified expression is not valid, it is kept at its current
10223 Draw a graph using input video metadata.
10225 It accepts the following parameters:
10229 Set 1st frame metadata key from which metadata values will be used to draw a graph.
10232 Set 1st foreground color expression.
10235 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
10238 Set 2nd foreground color expression.
10241 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
10244 Set 3rd foreground color expression.
10247 Set 4th frame metadata key from which metadata values will be used to draw a graph.
10250 Set 4th foreground color expression.
10253 Set minimal value of metadata value.
10256 Set maximal value of metadata value.
10259 Set graph background color. Default is white.
10264 Available values for mode is:
10271 Default is @code{line}.
10276 Available values for slide is:
10279 Draw new frame when right border is reached.
10282 Replace old columns with new ones.
10285 Scroll from right to left.
10288 Scroll from left to right.
10291 Draw single picture.
10294 Default is @code{frame}.
10297 Set size of graph video. For the syntax of this option, check the
10298 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
10299 The default value is @code{900x256}.
10302 Set the output frame rate. Default value is @code{25}.
10304 The foreground color expressions can use the following variables:
10307 Minimal value of metadata value.
10310 Maximal value of metadata value.
10313 Current metadata key value.
10316 The color is defined as 0xAABBGGRR.
10319 Example using metadata from @ref{signalstats} filter:
10321 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
10324 Example using metadata from @ref{ebur128} filter:
10326 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
10331 Draw a grid on the input image.
10333 It accepts the following parameters:
10338 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
10342 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
10343 input width and height, respectively, minus @code{thickness}, so image gets
10344 framed. Default to 0.
10347 Specify the color of the grid. For the general syntax of this option,
10348 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
10349 value @code{invert} is used, the grid color is the same as the
10350 video with inverted luma.
10353 The expression which sets the thickness of the grid line. Default value is @code{1}.
10355 See below for the list of accepted constants.
10358 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
10359 will overwrite the video's color and alpha pixels.
10360 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
10363 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
10364 following constants:
10368 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
10372 horizontal and vertical chroma subsample values. For example for the
10373 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10377 The input grid cell width and height.
10380 The input sample aspect ratio.
10384 The x and y coordinates of some point of grid intersection (meant to configure offset).
10388 The width and height of the drawn cell.
10391 The thickness of the drawn cell.
10393 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
10394 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
10398 @subsection Examples
10402 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
10404 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
10408 Draw a white 3x3 grid with an opacity of 50%:
10410 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
10414 @subsection Commands
10415 This filter supports same commands as options.
10416 The command accepts the same syntax of the corresponding option.
10418 If the specified expression is not valid, it is kept at its current
10424 Draw a text string or text from a specified file on top of a video, using the
10425 libfreetype library.
10427 To enable compilation of this filter, you need to configure FFmpeg with
10428 @code{--enable-libfreetype}.
10429 To enable default font fallback and the @var{font} option you need to
10430 configure FFmpeg with @code{--enable-libfontconfig}.
10431 To enable the @var{text_shaping} option, you need to configure FFmpeg with
10432 @code{--enable-libfribidi}.
10436 It accepts the following parameters:
10441 Used to draw a box around text using the background color.
10442 The value must be either 1 (enable) or 0 (disable).
10443 The default value of @var{box} is 0.
10446 Set the width of the border to be drawn around the box using @var{boxcolor}.
10447 The default value of @var{boxborderw} is 0.
10450 The color to be used for drawing box around text. For the syntax of this
10451 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10453 The default value of @var{boxcolor} is "white".
10456 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
10457 The default value of @var{line_spacing} is 0.
10460 Set the width of the border to be drawn around the text using @var{bordercolor}.
10461 The default value of @var{borderw} is 0.
10464 Set the color to be used for drawing border around text. For the syntax of this
10465 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10467 The default value of @var{bordercolor} is "black".
10470 Select how the @var{text} is expanded. Can be either @code{none},
10471 @code{strftime} (deprecated) or
10472 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
10476 Set a start time for the count. Value is in microseconds. Only applied
10477 in the deprecated strftime expansion mode. To emulate in normal expansion
10478 mode use the @code{pts} function, supplying the start time (in seconds)
10479 as the second argument.
10482 If true, check and fix text coords to avoid clipping.
10485 The color to be used for drawing fonts. For the syntax of this option, check
10486 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
10488 The default value of @var{fontcolor} is "black".
10490 @item fontcolor_expr
10491 String which is expanded the same way as @var{text} to obtain dynamic
10492 @var{fontcolor} value. By default this option has empty value and is not
10493 processed. When this option is set, it overrides @var{fontcolor} option.
10496 The font family to be used for drawing text. By default Sans.
10499 The font file to be used for drawing text. The path must be included.
10500 This parameter is mandatory if the fontconfig support is disabled.
10503 Draw the text applying alpha blending. The value can
10504 be a number between 0.0 and 1.0.
10505 The expression accepts the same variables @var{x, y} as well.
10506 The default value is 1.
10507 Please see @var{fontcolor_expr}.
10510 The font size to be used for drawing text.
10511 The default value of @var{fontsize} is 16.
10514 If set to 1, attempt to shape the text (for example, reverse the order of
10515 right-to-left text and join Arabic characters) before drawing it.
10516 Otherwise, just draw the text exactly as given.
10517 By default 1 (if supported).
10519 @item ft_load_flags
10520 The flags to be used for loading the fonts.
10522 The flags map the corresponding flags supported by libfreetype, and are
10523 a combination of the following values:
10530 @item vertical_layout
10531 @item force_autohint
10534 @item ignore_global_advance_width
10536 @item ignore_transform
10538 @item linear_design
10542 Default value is "default".
10544 For more information consult the documentation for the FT_LOAD_*
10548 The color to be used for drawing a shadow behind the drawn text. For the
10549 syntax of this option, check the @ref{color syntax,,"Color" section in the
10550 ffmpeg-utils manual,ffmpeg-utils}.
10552 The default value of @var{shadowcolor} is "black".
10556 The x and y offsets for the text shadow position with respect to the
10557 position of the text. They can be either positive or negative
10558 values. The default value for both is "0".
10561 The starting frame number for the n/frame_num variable. The default value
10565 The size in number of spaces to use for rendering the tab.
10566 Default value is 4.
10569 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10570 format. It can be used with or without text parameter. @var{timecode_rate}
10571 option must be specified.
10573 @item timecode_rate, rate, r
10574 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10575 integer. Minimum value is "1".
10576 Drop-frame timecode is supported for frame rates 30 & 60.
10579 If set to 1, the output of the timecode option will wrap around at 24 hours.
10580 Default is 0 (disabled).
10583 The text string to be drawn. The text must be a sequence of UTF-8
10584 encoded characters.
10585 This parameter is mandatory if no file is specified with the parameter
10589 A text file containing text to be drawn. The text must be a sequence
10590 of UTF-8 encoded characters.
10592 This parameter is mandatory if no text string is specified with the
10593 parameter @var{text}.
10595 If both @var{text} and @var{textfile} are specified, an error is thrown.
10598 If set to 1, the @var{textfile} will be reloaded before each frame.
10599 Be sure to update it atomically, or it may be read partially, or even fail.
10603 The expressions which specify the offsets where text will be drawn
10604 within the video frame. They are relative to the top/left border of the
10607 The default value of @var{x} and @var{y} is "0".
10609 See below for the list of accepted constants and functions.
10612 The parameters for @var{x} and @var{y} are expressions containing the
10613 following constants and functions:
10617 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10621 horizontal and vertical chroma subsample values. For example for the
10622 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10625 the height of each text line
10633 @item max_glyph_a, ascent
10634 the maximum distance from the baseline to the highest/upper grid
10635 coordinate used to place a glyph outline point, for all the rendered
10637 It is a positive value, due to the grid's orientation with the Y axis
10640 @item max_glyph_d, descent
10641 the maximum distance from the baseline to the lowest grid coordinate
10642 used to place a glyph outline point, for all the rendered glyphs.
10643 This is a negative value, due to the grid's orientation, with the Y axis
10647 maximum glyph height, that is the maximum height for all the glyphs
10648 contained in the rendered text, it is equivalent to @var{ascent} -
10652 maximum glyph width, that is the maximum width for all the glyphs
10653 contained in the rendered text
10656 the number of input frame, starting from 0
10658 @item rand(min, max)
10659 return a random number included between @var{min} and @var{max}
10662 The input sample aspect ratio.
10665 timestamp expressed in seconds, NAN if the input timestamp is unknown
10668 the height of the rendered text
10671 the width of the rendered text
10675 the x and y offset coordinates where the text is drawn.
10677 These parameters allow the @var{x} and @var{y} expressions to refer
10678 to each other, so you can for example specify @code{y=x/dar}.
10681 A one character description of the current frame's picture type.
10684 The current packet's position in the input file or stream
10685 (in bytes, from the start of the input). A value of -1 indicates
10686 this info is not available.
10689 The current packet's duration, in seconds.
10692 The current packet's size (in bytes).
10695 @anchor{drawtext_expansion}
10696 @subsection Text expansion
10698 If @option{expansion} is set to @code{strftime},
10699 the filter recognizes strftime() sequences in the provided text and
10700 expands them accordingly. Check the documentation of strftime(). This
10701 feature is deprecated.
10703 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10705 If @option{expansion} is set to @code{normal} (which is the default),
10706 the following expansion mechanism is used.
10708 The backslash character @samp{\}, followed by any character, always expands to
10709 the second character.
10711 Sequences of the form @code{%@{...@}} are expanded. The text between the
10712 braces is a function name, possibly followed by arguments separated by ':'.
10713 If the arguments contain special characters or delimiters (':' or '@}'),
10714 they should be escaped.
10716 Note that they probably must also be escaped as the value for the
10717 @option{text} option in the filter argument string and as the filter
10718 argument in the filtergraph description, and possibly also for the shell,
10719 that makes up to four levels of escaping; using a text file avoids these
10722 The following functions are available:
10727 The expression evaluation result.
10729 It must take one argument specifying the expression to be evaluated,
10730 which accepts the same constants and functions as the @var{x} and
10731 @var{y} values. Note that not all constants should be used, for
10732 example the text size is not known when evaluating the expression, so
10733 the constants @var{text_w} and @var{text_h} will have an undefined
10736 @item expr_int_format, eif
10737 Evaluate the expression's value and output as formatted integer.
10739 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10740 The second argument specifies the output format. Allowed values are @samp{x},
10741 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10742 @code{printf} function.
10743 The third parameter is optional and sets the number of positions taken by the output.
10744 It can be used to add padding with zeros from the left.
10747 The time at which the filter is running, expressed in UTC.
10748 It can accept an argument: a strftime() format string.
10751 The time at which the filter is running, expressed in the local time zone.
10752 It can accept an argument: a strftime() format string.
10755 Frame metadata. Takes one or two arguments.
10757 The first argument is mandatory and specifies the metadata key.
10759 The second argument is optional and specifies a default value, used when the
10760 metadata key is not found or empty.
10762 Available metadata can be identified by inspecting entries
10763 starting with TAG included within each frame section
10764 printed by running @code{ffprobe -show_frames}.
10766 String metadata generated in filters leading to
10767 the drawtext filter are also available.
10770 The frame number, starting from 0.
10773 A one character description of the current picture type.
10776 The timestamp of the current frame.
10777 It can take up to three arguments.
10779 The first argument is the format of the timestamp; it defaults to @code{flt}
10780 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10781 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10782 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10783 @code{localtime} stands for the timestamp of the frame formatted as
10784 local time zone time.
10786 The second argument is an offset added to the timestamp.
10788 If the format is set to @code{hms}, a third argument @code{24HH} may be
10789 supplied to present the hour part of the formatted timestamp in 24h format
10792 If the format is set to @code{localtime} or @code{gmtime},
10793 a third argument may be supplied: a strftime() format string.
10794 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10797 @subsection Commands
10799 This filter supports altering parameters via commands:
10802 Alter existing filter parameters.
10804 Syntax for the argument is the same as for filter invocation, e.g.
10807 fontsize=56:fontcolor=green:text='Hello World'
10810 Full filter invocation with sendcmd would look like this:
10813 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10817 If the entire argument can't be parsed or applied as valid values then the filter will
10818 continue with its existing parameters.
10820 @subsection Examples
10824 Draw "Test Text" with font FreeSerif, using the default values for the
10825 optional parameters.
10828 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10832 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10833 and y=50 (counting from the top-left corner of the screen), text is
10834 yellow with a red box around it. Both the text and the box have an
10838 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10839 x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10842 Note that the double quotes are not necessary if spaces are not used
10843 within the parameter list.
10846 Show the text at the center of the video frame:
10848 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10852 Show the text at a random position, switching to a new position every 30 seconds:
10854 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
10858 Show a text line sliding from right to left in the last row of the video
10859 frame. The file @file{LONG_LINE} is assumed to contain a single line
10862 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10866 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10868 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10872 Draw a single green letter "g", at the center of the input video.
10873 The glyph baseline is placed at half screen height.
10875 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10879 Show text for 1 second every 3 seconds:
10881 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10885 Use fontconfig to set the font. Note that the colons need to be escaped.
10887 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10891 Draw "Test Text" with font size dependent on height of the video.
10893 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10897 Print the date of a real-time encoding (see strftime(3)):
10899 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10903 Show text fading in and out (appearing/disappearing):
10906 DS=1.0 # display start
10907 DE=10.0 # display end
10908 FID=1.5 # fade in duration
10909 FOD=5 # fade out duration
10910 ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%@{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 @}"
10914 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10915 and the @option{fontsize} value are included in the @option{y} offset.
10917 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10918 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10922 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10923 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10924 must have option @option{-export_path_metadata 1} for the special metadata fields
10925 to be available for filters.
10927 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10932 For more information about libfreetype, check:
10933 @url{http://www.freetype.org/}.
10935 For more information about fontconfig, check:
10936 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10938 For more information about libfribidi, check:
10939 @url{http://fribidi.org/}.
10941 @section edgedetect
10943 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10945 The filter accepts the following options:
10950 Set low and high threshold values used by the Canny thresholding
10953 The high threshold selects the "strong" edge pixels, which are then
10954 connected through 8-connectivity with the "weak" edge pixels selected
10955 by the low threshold.
10957 @var{low} and @var{high} threshold values must be chosen in the range
10958 [0,1], and @var{low} should be lesser or equal to @var{high}.
10960 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10964 Define the drawing mode.
10968 Draw white/gray wires on black background.
10971 Mix the colors to create a paint/cartoon effect.
10974 Apply Canny edge detector on all selected planes.
10976 Default value is @var{wires}.
10979 Select planes for filtering. By default all available planes are filtered.
10982 @subsection Examples
10986 Standard edge detection with custom values for the hysteresis thresholding:
10988 edgedetect=low=0.1:high=0.4
10992 Painting effect without thresholding:
10994 edgedetect=mode=colormix:high=0
11000 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
11002 For each input image, the filter will compute the optimal mapping from
11003 the input to the output given the codebook length, that is the number
11004 of distinct output colors.
11006 This filter accepts the following options.
11009 @item codebook_length, l
11010 Set codebook length. The value must be a positive integer, and
11011 represents the number of distinct output colors. Default value is 256.
11014 Set the maximum number of iterations to apply for computing the optimal
11015 mapping. The higher the value the better the result and the higher the
11016 computation time. Default value is 1.
11019 Set a random seed, must be an integer included between 0 and
11020 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
11021 will try to use a good random seed on a best effort basis.
11024 Set pal8 output pixel format. This option does not work with codebook
11025 length greater than 256.
11030 Measure graylevel entropy in histogram of color channels of video frames.
11032 It accepts the following parameters:
11036 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
11038 @var{diff} mode measures entropy of histogram delta values, absolute differences
11039 between neighbour histogram values.
11043 Apply the EPX magnification filter which is designed for pixel art.
11045 It accepts the following option:
11049 Set the scaling dimension: @code{2} for @code{2xEPX}, @code{3} for
11051 Default is @code{3}.
11055 Set brightness, contrast, saturation and approximate gamma adjustment.
11057 The filter accepts the following options:
11061 Set the contrast expression. The value must be a float value in range
11062 @code{-1000.0} to @code{1000.0}. The default value is "1".
11065 Set the brightness expression. The value must be a float value in
11066 range @code{-1.0} to @code{1.0}. The default value is "0".
11069 Set the saturation expression. The value must be a float in
11070 range @code{0.0} to @code{3.0}. The default value is "1".
11073 Set the gamma expression. The value must be a float in range
11074 @code{0.1} to @code{10.0}. The default value is "1".
11077 Set the gamma expression for red. The value must be a float in
11078 range @code{0.1} to @code{10.0}. The default value is "1".
11081 Set the gamma expression for green. The value must be a float in range
11082 @code{0.1} to @code{10.0}. The default value is "1".
11085 Set the gamma expression for blue. The value must be a float in range
11086 @code{0.1} to @code{10.0}. The default value is "1".
11089 Set the gamma weight expression. It can be used to reduce the effect
11090 of a high gamma value on bright image areas, e.g. keep them from
11091 getting overamplified and just plain white. The value must be a float
11092 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
11093 gamma correction all the way down while @code{1.0} leaves it at its
11094 full strength. Default is "1".
11097 Set when the expressions for brightness, contrast, saturation and
11098 gamma expressions are evaluated.
11100 It accepts the following values:
11103 only evaluate expressions once during the filter initialization or
11104 when a command is processed
11107 evaluate expressions for each incoming frame
11110 Default value is @samp{init}.
11113 The expressions accept the following parameters:
11116 frame count of the input frame starting from 0
11119 byte position of the corresponding packet in the input file, NAN if
11123 frame rate of the input video, NAN if the input frame rate is unknown
11126 timestamp expressed in seconds, NAN if the input timestamp is unknown
11129 @subsection Commands
11130 The filter supports the following commands:
11134 Set the contrast expression.
11137 Set the brightness expression.
11140 Set the saturation expression.
11143 Set the gamma expression.
11146 Set the gamma_r expression.
11149 Set gamma_g expression.
11152 Set gamma_b expression.
11155 Set gamma_weight expression.
11157 The command accepts the same syntax of the corresponding option.
11159 If the specified expression is not valid, it is kept at its current
11166 Apply erosion effect to the video.
11168 This filter replaces the pixel by the local(3x3) minimum.
11170 It accepts the following options:
11177 Limit the maximum change for each plane, default is 65535.
11178 If 0, plane will remain unchanged.
11181 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
11184 Flags to local 3x3 coordinates maps like this:
11191 @subsection Commands
11193 This filter supports the all above options as @ref{commands}.
11197 Deinterlace the input video ("estdif" stands for "Edge Slope
11198 Tracing Deinterlacing Filter").
11200 Spatial only filter that uses edge slope tracing algorithm
11201 to interpolate missing lines.
11202 It accepts the following parameters:
11206 The interlacing mode to adopt. It accepts one of the following values:
11210 Output one frame for each frame.
11212 Output one frame for each field.
11215 The default value is @code{field}.
11218 The picture field parity assumed for the input interlaced video. It accepts one
11219 of the following values:
11223 Assume the top field is first.
11225 Assume the bottom field is first.
11227 Enable automatic detection of field parity.
11230 The default value is @code{auto}.
11231 If the interlacing is unknown or the decoder does not export this information,
11232 top field first will be assumed.
11235 Specify which frames to deinterlace. Accepts one of the following
11240 Deinterlace all frames.
11242 Only deinterlace frames marked as interlaced.
11245 The default value is @code{all}.
11248 Specify the search radius for edge slope tracing. Default value is 1.
11249 Allowed range is from 1 to 15.
11252 Specify the search radius for best edge matching. Default value is 2.
11253 Allowed range is from 0 to 15.
11256 Specify the interpolation used. Default is 4-point interpolation. It accepts one
11257 of the following values:
11261 Two-point interpolation.
11263 Four-point interpolation.
11265 Six-point interpolation.
11269 @subsection Commands
11270 This filter supports same @ref{commands} as options.
11272 @section extractplanes
11274 Extract color channel components from input video stream into
11275 separate grayscale video streams.
11277 The filter accepts the following option:
11281 Set plane(s) to extract.
11283 Available values for planes are:
11294 Choosing planes not available in the input will result in an error.
11295 That means you cannot select @code{r}, @code{g}, @code{b} planes
11296 with @code{y}, @code{u}, @code{v} planes at same time.
11299 @subsection Examples
11303 Extract luma, u and v color channel component from input video frame
11304 into 3 grayscale outputs:
11306 ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
11312 Apply a fade-in/out effect to the input video.
11314 It accepts the following parameters:
11318 The effect type can be either "in" for a fade-in, or "out" for a fade-out
11320 Default is @code{in}.
11322 @item start_frame, s
11323 Specify the number of the frame to start applying the fade
11324 effect at. Default is 0.
11327 The number of frames that the fade effect lasts. At the end of the
11328 fade-in effect, the output video will have the same intensity as the input video.
11329 At the end of the fade-out transition, the output video will be filled with the
11330 selected @option{color}.
11334 If set to 1, fade only alpha channel, if one exists on the input.
11335 Default value is 0.
11337 @item start_time, st
11338 Specify the timestamp (in seconds) of the frame to start to apply the fade
11339 effect. If both start_frame and start_time are specified, the fade will start at
11340 whichever comes last. Default is 0.
11343 The number of seconds for which the fade effect has to last. At the end of the
11344 fade-in effect the output video will have the same intensity as the input video,
11345 at the end of the fade-out transition the output video will be filled with the
11346 selected @option{color}.
11347 If both duration and nb_frames are specified, duration is used. Default is 0
11348 (nb_frames is used by default).
11351 Specify the color of the fade. Default is "black".
11354 @subsection Examples
11358 Fade in the first 30 frames of video:
11363 The command above is equivalent to:
11369 Fade out the last 45 frames of a 200-frame video:
11372 fade=type=out:start_frame=155:nb_frames=45
11376 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
11378 fade=in:0:25, fade=out:975:25
11382 Make the first 5 frames yellow, then fade in from frame 5-24:
11384 fade=in:5:20:color=yellow
11388 Fade in alpha over first 25 frames of video:
11390 fade=in:0:25:alpha=1
11394 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
11396 fade=t=in:st=5.5:d=0.5
11402 Denoise frames using 3D FFT (frequency domain filtering).
11404 The filter accepts the following options:
11408 Set the noise sigma constant. This sets denoising strength.
11409 Default value is 1. Allowed range is from 0 to 30.
11410 Using very high sigma with low overlap may give blocking artifacts.
11413 Set amount of denoising. By default all detected noise is reduced.
11414 Default value is 1. Allowed range is from 0 to 1.
11417 Set size of block, Default is 4, can be 3, 4, 5 or 6.
11418 Actual size of block in pixels is 2 to power of @var{block}, so by default
11419 block size in pixels is 2^4 which is 16.
11422 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
11425 Set number of previous frames to use for denoising. By default is set to 0.
11428 Set number of next frames to to use for denoising. By default is set to 0.
11431 Set planes which will be filtered, by default are all available filtered
11436 Apply arbitrary expressions to samples in frequency domain
11440 Adjust the dc value (gain) of the luma plane of the image. The filter
11441 accepts an integer value in range @code{0} to @code{1000}. The default
11442 value is set to @code{0}.
11445 Adjust the dc value (gain) of the 1st chroma plane of the image. The
11446 filter accepts an integer value in range @code{0} to @code{1000}. The
11447 default value is set to @code{0}.
11450 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
11451 filter accepts an integer value in range @code{0} to @code{1000}. The
11452 default value is set to @code{0}.
11455 Set the frequency domain weight expression for the luma plane.
11458 Set the frequency domain weight expression for the 1st chroma plane.
11461 Set the frequency domain weight expression for the 2nd chroma plane.
11464 Set when the expressions are evaluated.
11466 It accepts the following values:
11469 Only evaluate expressions once during the filter initialization.
11472 Evaluate expressions for each incoming frame.
11475 Default value is @samp{init}.
11477 The filter accepts the following variables:
11480 The coordinates of the current sample.
11484 The width and height of the image.
11487 The number of input frame, starting from 0.
11490 @subsection Examples
11496 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
11502 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
11508 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
11514 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
11521 Extract a single field from an interlaced image using stride
11522 arithmetic to avoid wasting CPU time. The output frames are marked as
11525 The filter accepts the following options:
11529 Specify whether to extract the top (if the value is @code{0} or
11530 @code{top}) or the bottom field (if the value is @code{1} or
11536 Create new frames by copying the top and bottom fields from surrounding frames
11537 supplied as numbers by the hint file.
11541 Set file containing hints: absolute/relative frame numbers.
11543 There must be one line for each frame in a clip. Each line must contain two
11544 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
11545 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
11546 is current frame number for @code{absolute} mode or out of [-1, 1] range
11547 for @code{relative} mode. First number tells from which frame to pick up top
11548 field and second number tells from which frame to pick up bottom field.
11550 If optionally followed by @code{+} output frame will be marked as interlaced,
11551 else if followed by @code{-} output frame will be marked as progressive, else
11552 it will be marked same as input frame.
11553 If optionally followed by @code{t} output frame will use only top field, or in
11554 case of @code{b} it will use only bottom field.
11555 If line starts with @code{#} or @code{;} that line is skipped.
11558 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
11561 Example of first several lines of @code{hint} file for @code{relative} mode:
11563 0,0 - # first frame
11564 1,0 - # second frame, use third's frame top field and second's frame bottom field
11565 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
11580 @section fieldmatch
11582 Field matching filter for inverse telecine. It is meant to reconstruct the
11583 progressive frames from a telecined stream. The filter does not drop duplicated
11584 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
11585 followed by a decimation filter such as @ref{decimate} in the filtergraph.
11587 The separation of the field matching and the decimation is notably motivated by
11588 the possibility of inserting a de-interlacing filter fallback between the two.
11589 If the source has mixed telecined and real interlaced content,
11590 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11591 But these remaining combed frames will be marked as interlaced, and thus can be
11592 de-interlaced by a later filter such as @ref{yadif} before decimation.
11594 In addition to the various configuration options, @code{fieldmatch} can take an
11595 optional second stream, activated through the @option{ppsrc} option. If
11596 enabled, the frames reconstruction will be based on the fields and frames from
11597 this second stream. This allows the first input to be pre-processed in order to
11598 help the various algorithms of the filter, while keeping the output lossless
11599 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11600 or brightness/contrast adjustments can help.
11602 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11603 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11604 which @code{fieldmatch} is based on. While the semantic and usage are very
11605 close, some behaviour and options names can differ.
11607 The @ref{decimate} filter currently only works for constant frame rate input.
11608 If your input has mixed telecined (30fps) and progressive content with a lower
11609 framerate like 24fps use the following filterchain to produce the necessary cfr
11610 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11612 The filter accepts the following options:
11616 Specify the assumed field order of the input stream. Available values are:
11620 Auto detect parity (use FFmpeg's internal parity value).
11622 Assume bottom field first.
11624 Assume top field first.
11627 Note that it is sometimes recommended not to trust the parity announced by the
11630 Default value is @var{auto}.
11633 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11634 sense that it won't risk creating jerkiness due to duplicate frames when
11635 possible, but if there are bad edits or blended fields it will end up
11636 outputting combed frames when a good match might actually exist. On the other
11637 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11638 but will almost always find a good frame if there is one. The other values are
11639 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11640 jerkiness and creating duplicate frames versus finding good matches in sections
11641 with bad edits, orphaned fields, blended fields, etc.
11643 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11645 Available values are:
11649 2-way matching (p/c)
11651 2-way matching, and trying 3rd match if still combed (p/c + n)
11653 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11655 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11656 still combed (p/c + n + u/b)
11658 3-way matching (p/c/n)
11660 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11661 detected as combed (p/c/n + u/b)
11664 The parenthesis at the end indicate the matches that would be used for that
11665 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11668 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11671 Default value is @var{pc_n}.
11674 Mark the main input stream as a pre-processed input, and enable the secondary
11675 input stream as the clean source to pick the fields from. See the filter
11676 introduction for more details. It is similar to the @option{clip2} feature from
11679 Default value is @code{0} (disabled).
11682 Set the field to match from. It is recommended to set this to the same value as
11683 @option{order} unless you experience matching failures with that setting. In
11684 certain circumstances changing the field that is used to match from can have a
11685 large impact on matching performance. Available values are:
11689 Automatic (same value as @option{order}).
11691 Match from the bottom field.
11693 Match from the top field.
11696 Default value is @var{auto}.
11699 Set whether or not chroma is included during the match comparisons. In most
11700 cases it is recommended to leave this enabled. You should set this to @code{0}
11701 only if your clip has bad chroma problems such as heavy rainbowing or other
11702 artifacts. Setting this to @code{0} could also be used to speed things up at
11703 the cost of some accuracy.
11705 Default value is @code{1}.
11709 These define an exclusion band which excludes the lines between @option{y0} and
11710 @option{y1} from being included in the field matching decision. An exclusion
11711 band can be used to ignore subtitles, a logo, or other things that may
11712 interfere with the matching. @option{y0} sets the starting scan line and
11713 @option{y1} sets the ending line; all lines in between @option{y0} and
11714 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11715 @option{y0} and @option{y1} to the same value will disable the feature.
11716 @option{y0} and @option{y1} defaults to @code{0}.
11719 Set the scene change detection threshold as a percentage of maximum change on
11720 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11721 detection is only relevant in case @option{combmatch}=@var{sc}. The range for
11722 @option{scthresh} is @code{[0.0, 100.0]}.
11724 Default value is @code{12.0}.
11727 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11728 account the combed scores of matches when deciding what match to use as the
11729 final match. Available values are:
11733 No final matching based on combed scores.
11735 Combed scores are only used when a scene change is detected.
11737 Use combed scores all the time.
11740 Default is @var{sc}.
11743 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11744 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11745 Available values are:
11749 No forced calculation.
11751 Force p/c/n calculations.
11753 Force p/c/n/u/b calculations.
11756 Default value is @var{none}.
11759 This is the area combing threshold used for combed frame detection. This
11760 essentially controls how "strong" or "visible" combing must be to be detected.
11761 Larger values mean combing must be more visible and smaller values mean combing
11762 can be less visible or strong and still be detected. Valid settings are from
11763 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11764 be detected as combed). This is basically a pixel difference value. A good
11765 range is @code{[8, 12]}.
11767 Default value is @code{9}.
11770 Sets whether or not chroma is considered in the combed frame decision. Only
11771 disable this if your source has chroma problems (rainbowing, etc.) that are
11772 causing problems for the combed frame detection with chroma enabled. Actually,
11773 using @option{chroma}=@var{0} is usually more reliable, except for the case
11774 where there is chroma only combing in the source.
11776 Default value is @code{0}.
11780 Respectively set the x-axis and y-axis size of the window used during combed
11781 frame detection. This has to do with the size of the area in which
11782 @option{combpel} pixels are required to be detected as combed for a frame to be
11783 declared combed. See the @option{combpel} parameter description for more info.
11784 Possible values are any number that is a power of 2 starting at 4 and going up
11787 Default value is @code{16}.
11790 The number of combed pixels inside any of the @option{blocky} by
11791 @option{blockx} size blocks on the frame for the frame to be detected as
11792 combed. While @option{cthresh} controls how "visible" the combing must be, this
11793 setting controls "how much" combing there must be in any localized area (a
11794 window defined by the @option{blockx} and @option{blocky} settings) on the
11795 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11796 which point no frames will ever be detected as combed). This setting is known
11797 as @option{MI} in TFM/VFM vocabulary.
11799 Default value is @code{80}.
11802 @anchor{p/c/n/u/b meaning}
11803 @subsection p/c/n/u/b meaning
11805 @subsubsection p/c/n
11807 We assume the following telecined stream:
11810 Top fields: 1 2 2 3 4
11811 Bottom fields: 1 2 3 4 4
11814 The numbers correspond to the progressive frame the fields relate to. Here, the
11815 first two frames are progressive, the 3rd and 4th are combed, and so on.
11817 When @code{fieldmatch} is configured to run a matching from bottom
11818 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11823 B 1 2 3 4 4 <-- matching reference
11832 As a result of the field matching, we can see that some frames get duplicated.
11833 To perform a complete inverse telecine, you need to rely on a decimation filter
11834 after this operation. See for instance the @ref{decimate} filter.
11836 The same operation now matching from top fields (@option{field}=@var{top})
11841 T 1 2 2 3 4 <-- matching reference
11851 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11852 basically, they refer to the frame and field of the opposite parity:
11855 @item @var{p} matches the field of the opposite parity in the previous frame
11856 @item @var{c} matches the field of the opposite parity in the current frame
11857 @item @var{n} matches the field of the opposite parity in the next frame
11862 The @var{u} and @var{b} matching are a bit special in the sense that they match
11863 from the opposite parity flag. In the following examples, we assume that we are
11864 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11865 'x' is placed above and below each matched fields.
11867 With bottom matching (@option{field}=@var{bottom}):
11872 Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
11873 Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
11881 With top matching (@option{field}=@var{top}):
11886 Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
11887 Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
11895 @subsection Examples
11897 Simple IVTC of a top field first telecined stream:
11899 fieldmatch=order=tff:combmatch=none, decimate
11902 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11904 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11907 @section fieldorder
11909 Transform the field order of the input video.
11911 It accepts the following parameters:
11916 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11917 for bottom field first.
11920 The default value is @samp{tff}.
11922 The transformation is done by shifting the picture content up or down
11923 by one line, and filling the remaining line with appropriate picture content.
11924 This method is consistent with most broadcast field order converters.
11926 If the input video is not flagged as being interlaced, or it is already
11927 flagged as being of the required output field order, then this filter does
11928 not alter the incoming video.
11930 It is very useful when converting to or from PAL DV material,
11931 which is bottom field first.
11935 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11938 @section fifo, afifo
11940 Buffer input images and send them when they are requested.
11942 It is mainly useful when auto-inserted by the libavfilter
11945 It does not take parameters.
11947 @section fillborders
11949 Fill borders of the input video, without changing video stream dimensions.
11950 Sometimes video can have garbage at the four edges and you may not want to
11951 crop video input to keep size multiple of some number.
11953 This filter accepts the following options:
11957 Number of pixels to fill from left border.
11960 Number of pixels to fill from right border.
11963 Number of pixels to fill from top border.
11966 Number of pixels to fill from bottom border.
11971 It accepts the following values:
11974 fill pixels using outermost pixels
11977 fill pixels using mirroring (half sample symmetric)
11980 fill pixels with constant value
11983 fill pixels using reflecting (whole sample symmetric)
11986 fill pixels using wrapping
11989 fade pixels to constant value
11992 Default is @var{smear}.
11995 Set color for pixels in fixed or fade mode. Default is @var{black}.
11998 @subsection Commands
11999 This filter supports same @ref{commands} as options.
12000 The command accepts the same syntax of the corresponding option.
12002 If the specified expression is not valid, it is kept at its current
12007 Find a rectangular object
12009 It accepts the following options:
12013 Filepath of the object image, needs to be in gray8.
12016 Detection threshold, default is 0.5.
12019 Number of mipmaps, default is 3.
12021 @item xmin, ymin, xmax, ymax
12022 Specifies the rectangle in which to search.
12025 @subsection Examples
12029 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
12031 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
12037 Flood area with values of same pixel components with another values.
12039 It accepts the following options:
12042 Set pixel x coordinate.
12045 Set pixel y coordinate.
12048 Set source #0 component value.
12051 Set source #1 component value.
12054 Set source #2 component value.
12057 Set source #3 component value.
12060 Set destination #0 component value.
12063 Set destination #1 component value.
12066 Set destination #2 component value.
12069 Set destination #3 component value.
12075 Convert the input video to one of the specified pixel formats.
12076 Libavfilter will try to pick one that is suitable as input to
12079 It accepts the following parameters:
12083 A '|'-separated list of pixel format names, such as
12084 "pix_fmts=yuv420p|monow|rgb24".
12088 @subsection Examples
12092 Convert the input video to the @var{yuv420p} format
12094 format=pix_fmts=yuv420p
12097 Convert the input video to any of the formats in the list
12099 format=pix_fmts=yuv420p|yuv444p|yuv410p
12106 Convert the video to specified constant frame rate by duplicating or dropping
12107 frames as necessary.
12109 It accepts the following parameters:
12113 The desired output frame rate. The default is @code{25}.
12116 Assume the first PTS should be the given value, in seconds. This allows for
12117 padding/trimming at the start of stream. By default, no assumption is made
12118 about the first frame's expected PTS, so no padding or trimming is done.
12119 For example, this could be set to 0 to pad the beginning with duplicates of
12120 the first frame if a video stream starts after the audio stream or to trim any
12121 frames with a negative PTS.
12124 Timestamp (PTS) rounding method.
12126 Possible values are:
12133 round towards -infinity
12135 round towards +infinity
12139 The default is @code{near}.
12142 Action performed when reading the last frame.
12144 Possible values are:
12147 Use same timestamp rounding method as used for other frames.
12149 Pass through last frame if input duration has not been reached yet.
12151 The default is @code{round}.
12155 Alternatively, the options can be specified as a flat string:
12156 @var{fps}[:@var{start_time}[:@var{round}]].
12158 See also the @ref{setpts} filter.
12160 @subsection Examples
12164 A typical usage in order to set the fps to 25:
12170 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
12172 fps=fps=film:round=near
12178 Pack two different video streams into a stereoscopic video, setting proper
12179 metadata on supported codecs. The two views should have the same size and
12180 framerate and processing will stop when the shorter video ends. Please note
12181 that you may conveniently adjust view properties with the @ref{scale} and
12184 It accepts the following parameters:
12188 The desired packing format. Supported values are:
12193 The views are next to each other (default).
12196 The views are on top of each other.
12199 The views are packed by line.
12202 The views are packed by column.
12205 The views are temporally interleaved.
12214 # Convert left and right views into a frame-sequential video
12215 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
12217 # Convert views into a side-by-side video with the same output resolution as the input
12218 ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
12223 Change the frame rate by interpolating new video output frames from the source
12226 This filter is not designed to function correctly with interlaced media. If
12227 you wish to change the frame rate of interlaced media then you are required
12228 to deinterlace before this filter and re-interlace after this filter.
12230 A description of the accepted options follows.
12234 Specify the output frames per second. This option can also be specified
12235 as a value alone. The default is @code{50}.
12238 Specify the start of a range where the output frame will be created as a
12239 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12240 the default is @code{15}.
12243 Specify the end of a range where the output frame will be created as a
12244 linear interpolation of two frames. The range is [@code{0}-@code{255}],
12245 the default is @code{240}.
12248 Specify the level at which a scene change is detected as a value between
12249 0 and 100 to indicate a new scene; a low value reflects a low
12250 probability for the current frame to introduce a new scene, while a higher
12251 value means the current frame is more likely to be one.
12252 The default is @code{8.2}.
12255 Specify flags influencing the filter process.
12257 Available value for @var{flags} is:
12260 @item scene_change_detect, scd
12261 Enable scene change detection using the value of the option @var{scene}.
12262 This flag is enabled by default.
12268 Select one frame every N-th frame.
12270 This filter accepts the following option:
12273 Select frame after every @code{step} frames.
12274 Allowed values are positive integers higher than 0. Default value is @code{1}.
12277 @section freezedetect
12279 Detect frozen video.
12281 This filter logs a message and sets frame metadata when it detects that the
12282 input video has no significant change in content during a specified duration.
12283 Video freeze detection calculates the mean average absolute difference of all
12284 the components of video frames and compares it to a noise floor.
12286 The printed times and duration are expressed in seconds. The
12287 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
12288 whose timestamp equals or exceeds the detection duration and it contains the
12289 timestamp of the first frame of the freeze. The
12290 @code{lavfi.freezedetect.freeze_duration} and
12291 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
12294 The filter accepts the following options:
12298 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
12299 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
12303 Set freeze duration until notification (default is 2 seconds).
12306 @section freezeframes
12308 Freeze video frames.
12310 This filter freezes video frames using frame from 2nd input.
12312 The filter accepts the following options:
12316 Set number of first frame from which to start freeze.
12319 Set number of last frame from which to end freeze.
12322 Set number of frame from 2nd input which will be used instead of replaced frames.
12328 Apply a frei0r effect to the input video.
12330 To enable the compilation of this filter, you need to install the frei0r
12331 header and configure FFmpeg with @code{--enable-frei0r}.
12333 It accepts the following parameters:
12338 The name of the frei0r effect to load. If the environment variable
12339 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
12340 directories specified by the colon-separated list in @env{FREI0R_PATH}.
12341 Otherwise, the standard frei0r paths are searched, in this order:
12342 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
12343 @file{/usr/lib/frei0r-1/}.
12345 @item filter_params
12346 A '|'-separated list of parameters to pass to the frei0r effect.
12350 A frei0r effect parameter can be a boolean (its value is either
12351 "y" or "n"), a double, a color (specified as
12352 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
12353 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
12354 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
12355 a position (specified as @var{X}/@var{Y}, where
12356 @var{X} and @var{Y} are floating point numbers) and/or a string.
12358 The number and types of parameters depend on the loaded effect. If an
12359 effect parameter is not specified, the default value is set.
12361 @subsection Examples
12365 Apply the distort0r effect, setting the first two double parameters:
12367 frei0r=filter_name=distort0r:filter_params=0.5|0.01
12371 Apply the colordistance effect, taking a color as the first parameter:
12373 frei0r=colordistance:0.2/0.3/0.4
12374 frei0r=colordistance:violet
12375 frei0r=colordistance:0x112233
12379 Apply the perspective effect, specifying the top left and top right image
12382 frei0r=perspective:0.2/0.2|0.8/0.2
12386 For more information, see
12387 @url{http://frei0r.dyne.org}
12389 @subsection Commands
12391 This filter supports the @option{filter_params} option as @ref{commands}.
12395 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
12397 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
12398 processing filter, one of them is performed once per block, not per pixel.
12399 This allows for much higher speed.
12401 The filter accepts the following options:
12405 Set quality. This option defines the number of levels for averaging. It accepts
12406 an integer in the range 4-5. Default value is @code{4}.
12409 Force a constant quantization parameter. It accepts an integer in range 0-63.
12410 If not set, the filter will use the QP from the video stream (if available).
12413 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
12414 more details but also more artifacts, while higher values make the image smoother
12415 but also blurrier. Default value is @code{0} − PSNR optimal.
12417 @item use_bframe_qp
12418 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
12419 option may cause flicker since the B-Frames have often larger QP. Default is
12420 @code{0} (not enabled).
12426 Apply Gaussian blur filter.
12428 The filter accepts the following options:
12432 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
12435 Set number of steps for Gaussian approximation. Default is @code{1}.
12438 Set which planes to filter. By default all planes are filtered.
12441 Set vertical sigma, if negative it will be same as @code{sigma}.
12442 Default is @code{-1}.
12445 @subsection Commands
12446 This filter supports same commands as options.
12447 The command accepts the same syntax of the corresponding option.
12449 If the specified expression is not valid, it is kept at its current
12454 Apply generic equation to each pixel.
12456 The filter accepts the following options:
12459 @item lum_expr, lum
12460 Set the luminance expression.
12462 Set the chrominance blue expression.
12464 Set the chrominance red expression.
12465 @item alpha_expr, a
12466 Set the alpha expression.
12468 Set the red expression.
12469 @item green_expr, g
12470 Set the green expression.
12472 Set the blue expression.
12475 The colorspace is selected according to the specified options. If one
12476 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
12477 options is specified, the filter will automatically select a YCbCr
12478 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
12479 @option{blue_expr} options is specified, it will select an RGB
12482 If one of the chrominance expression is not defined, it falls back on the other
12483 one. If no alpha expression is specified it will evaluate to opaque value.
12484 If none of chrominance expressions are specified, they will evaluate
12485 to the luminance expression.
12487 The expressions can use the following variables and functions:
12491 The sequential number of the filtered frame, starting from @code{0}.
12495 The coordinates of the current sample.
12499 The width and height of the image.
12503 Width and height scale depending on the currently filtered plane. It is the
12504 ratio between the corresponding luma plane number of pixels and the current
12505 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
12506 @code{0.5,0.5} for chroma planes.
12509 Time of the current frame, expressed in seconds.
12512 Return the value of the pixel at location (@var{x},@var{y}) of the current
12516 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
12520 Return the value of the pixel at location (@var{x},@var{y}) of the
12521 blue-difference chroma plane. Return 0 if there is no such plane.
12524 Return the value of the pixel at location (@var{x},@var{y}) of the
12525 red-difference chroma plane. Return 0 if there is no such plane.
12530 Return the value of the pixel at location (@var{x},@var{y}) of the
12531 red/green/blue component. Return 0 if there is no such component.
12534 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
12535 plane. Return 0 if there is no such plane.
12537 @item psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
12538 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
12539 sums of samples within a rectangle. See the functions without the sum postfix.
12541 @item interpolation
12542 Set one of interpolation methods:
12547 Default is bilinear.
12550 For functions, if @var{x} and @var{y} are outside the area, the value will be
12551 automatically clipped to the closer edge.
12553 Please note that this filter can use multiple threads in which case each slice
12554 will have its own expression state. If you want to use only a single expression
12555 state because your expressions depend on previous state then you should limit
12556 the number of filter threads to 1.
12558 @subsection Examples
12562 Flip the image horizontally:
12568 Generate a bidimensional sine wave, with angle @code{PI/3} and a
12569 wavelength of 100 pixels:
12571 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
12575 Generate a fancy enigmatic moving light:
12577 nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
12581 Generate a quick emboss effect:
12583 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
12587 Modify RGB components depending on pixel position:
12589 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
12593 Create a radial gradient that is the same size as the input (also see
12594 the @ref{vignette} filter):
12596 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
12602 Fix the banding artifacts that are sometimes introduced into nearly flat
12603 regions by truncation to 8-bit color depth.
12604 Interpolate the gradients that should go where the bands are, and
12607 It is designed for playback only. Do not use it prior to
12608 lossy compression, because compression tends to lose the dither and
12609 bring back the bands.
12611 It accepts the following parameters:
12616 The maximum amount by which the filter will change any one pixel. This is also
12617 the threshold for detecting nearly flat regions. Acceptable values range from
12618 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12622 The neighborhood to fit the gradient to. A larger radius makes for smoother
12623 gradients, but also prevents the filter from modifying the pixels near detailed
12624 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12625 values will be clipped to the valid range.
12629 Alternatively, the options can be specified as a flat string:
12630 @var{strength}[:@var{radius}]
12632 @subsection Examples
12636 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12642 Specify radius, omitting the strength (which will fall-back to the default
12650 @anchor{graphmonitor}
12651 @section graphmonitor
12652 Show various filtergraph stats.
12654 With this filter one can debug complete filtergraph.
12655 Especially issues with links filling with queued frames.
12657 The filter accepts the following options:
12661 Set video output size. Default is @var{hd720}.
12664 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12667 Set output mode, can be @var{fulll} or @var{compact}.
12668 In @var{compact} mode only filters with some queued frames have displayed stats.
12671 Set flags which enable which stats are shown in video.
12673 Available values for flags are:
12676 Display number of queued frames in each link.
12678 @item frame_count_in
12679 Display number of frames taken from filter.
12681 @item frame_count_out
12682 Display number of frames given out from filter.
12685 Display current filtered frame pts.
12688 Display current filtered frame time.
12691 Display time base for filter link.
12694 Display used format for filter link.
12697 Display video size or number of audio channels in case of audio used by filter link.
12700 Display video frame rate or sample rate in case of audio used by filter link.
12703 Display link output status.
12707 Set upper limit for video rate of output stream, Default value is @var{25}.
12708 This guarantee that output video frame rate will not be higher than this value.
12712 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12713 and corrects the scene colors accordingly.
12715 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12717 The filter accepts the following options:
12721 The order of differentiation to be applied on the scene. Must be chosen in the range
12722 [0,2] and default value is 1.
12725 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12726 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12727 max value instead of calculating Minkowski distance.
12730 The standard deviation of Gaussian blur to be applied on the scene. Must be
12731 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12732 can't be equal to 0 if @var{difford} is greater than 0.
12735 @subsection Examples
12741 greyedge=difford=1:minknorm=5:sigma=2
12747 greyedge=difford=1:minknorm=0:sigma=2
12755 Apply a Hald CLUT to a video stream.
12757 First input is the video stream to process, and second one is the Hald CLUT.
12758 The Hald CLUT input can be a simple picture or a complete video stream.
12760 The filter accepts the following options:
12764 Force termination when the shortest input terminates. Default is @code{0}.
12766 Continue applying the last CLUT after the end of the stream. A value of
12767 @code{0} disable the filter after the last frame of the CLUT is reached.
12768 Default is @code{1}.
12771 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12772 filters share the same internals).
12774 This filter also supports the @ref{framesync} options.
12776 More information about the Hald CLUT can be found on Eskil Steenberg's website
12777 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12779 @subsection Workflow examples
12781 @subsubsection Hald CLUT video stream
12783 Generate an identity Hald CLUT stream altered with various effects:
12785 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
12788 Note: make sure you use a lossless codec.
12790 Then use it with @code{haldclut} to apply it on some random stream:
12792 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12795 The Hald CLUT will be applied to the 10 first seconds (duration of
12796 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12797 to the remaining frames of the @code{mandelbrot} stream.
12799 @subsubsection Hald CLUT with preview
12801 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12802 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12803 biggest possible square starting at the top left of the picture. The remaining
12804 padding pixels (bottom or right) will be ignored. This area can be used to add
12805 a preview of the Hald CLUT.
12807 Typically, the following generated Hald CLUT will be supported by the
12808 @code{haldclut} filter:
12811 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12812 pad=iw+320 [padded_clut];
12813 smptebars=s=320x256, split [a][b];
12814 [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12815 [main][b] overlay=W-320" -frames:v 1 clut.png
12818 It contains the original and a preview of the effect of the CLUT: SMPTE color
12819 bars are displayed on the right-top, and below the same color bars processed by
12822 Then, the effect of this Hald CLUT can be visualized with:
12824 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12829 Flip the input video horizontally.
12831 For example, to horizontally flip the input video with @command{ffmpeg}:
12833 ffmpeg -i in.avi -vf "hflip" out.avi
12837 This filter applies a global color histogram equalization on a
12840 It can be used to correct video that has a compressed range of pixel
12841 intensities. The filter redistributes the pixel intensities to
12842 equalize their distribution across the intensity range. It may be
12843 viewed as an "automatically adjusting contrast filter". This filter is
12844 useful only for correcting degraded or poorly captured source
12847 The filter accepts the following options:
12851 Determine the amount of equalization to be applied. As the strength
12852 is reduced, the distribution of pixel intensities more-and-more
12853 approaches that of the input frame. The value must be a float number
12854 in the range [0,1] and defaults to 0.200.
12857 Set the maximum intensity that can generated and scale the output
12858 values appropriately. The strength should be set as desired and then
12859 the intensity can be limited if needed to avoid washing-out. The value
12860 must be a float number in the range [0,1] and defaults to 0.210.
12863 Set the antibanding level. If enabled the filter will randomly vary
12864 the luminance of output pixels by a small amount to avoid banding of
12865 the histogram. Possible values are @code{none}, @code{weak} or
12866 @code{strong}. It defaults to @code{none}.
12872 Compute and draw a color distribution histogram for the input video.
12874 The computed histogram is a representation of the color component
12875 distribution in an image.
12877 Standard histogram displays the color components distribution in an image.
12878 Displays color graph for each color component. Shows distribution of
12879 the Y, U, V, A or R, G, B components, depending on input format, in the
12880 current frame. Below each graph a color component scale meter is shown.
12882 The filter accepts the following options:
12886 Set height of level. Default value is @code{200}.
12887 Allowed range is [50, 2048].
12890 Set height of color scale. Default value is @code{12}.
12891 Allowed range is [0, 40].
12895 It accepts the following values:
12898 Per color component graphs are placed below each other.
12901 Per color component graphs are placed side by side.
12904 Presents information identical to that in the @code{parade}, except
12905 that the graphs representing color components are superimposed directly
12908 Default is @code{stack}.
12911 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12912 Default is @code{linear}.
12915 Set what color components to display.
12916 Default is @code{7}.
12919 Set foreground opacity. Default is @code{0.7}.
12922 Set background opacity. Default is @code{0.5}.
12925 @subsection Examples
12930 Calculate and draw histogram:
12932 ffplay -i input -vf histogram
12940 This is a high precision/quality 3d denoise filter. It aims to reduce
12941 image noise, producing smooth images and making still images really
12942 still. It should enhance compressibility.
12944 It accepts the following optional parameters:
12948 A non-negative floating point number which specifies spatial luma strength.
12949 It defaults to 4.0.
12951 @item chroma_spatial
12952 A non-negative floating point number which specifies spatial chroma strength.
12953 It defaults to 3.0*@var{luma_spatial}/4.0.
12956 A floating point number which specifies luma temporal strength. It defaults to
12957 6.0*@var{luma_spatial}/4.0.
12960 A floating point number which specifies chroma temporal strength. It defaults to
12961 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12964 @subsection Commands
12965 This filter supports same @ref{commands} as options.
12966 The command accepts the same syntax of the corresponding option.
12968 If the specified expression is not valid, it is kept at its current
12971 @anchor{hwdownload}
12972 @section hwdownload
12974 Download hardware frames to system memory.
12976 The input must be in hardware frames, and the output a non-hardware format.
12977 Not all formats will be supported on the output - it may be necessary to insert
12978 an additional @option{format} filter immediately following in the graph to get
12979 the output in a supported format.
12983 Map hardware frames to system memory or to another device.
12985 This filter has several different modes of operation; which one is used depends
12986 on the input and output formats:
12989 Hardware frame input, normal frame output
12991 Map the input frames to system memory and pass them to the output. If the
12992 original hardware frame is later required (for example, after overlaying
12993 something else on part of it), the @option{hwmap} filter can be used again
12994 in the next mode to retrieve it.
12996 Normal frame input, hardware frame output
12998 If the input is actually a software-mapped hardware frame, then unmap it -
12999 that is, return the original hardware frame.
13001 Otherwise, a device must be provided. Create new hardware surfaces on that
13002 device for the output, then map them back to the software format at the input
13003 and give those frames to the preceding filter. This will then act like the
13004 @option{hwupload} filter, but may be able to avoid an additional copy when
13005 the input is already in a compatible format.
13007 Hardware frame input and output
13009 A device must be supplied for the output, either directly or with the
13010 @option{derive_device} option. The input and output devices must be of
13011 different types and compatible - the exact meaning of this is
13012 system-dependent, but typically it means that they must refer to the same
13013 underlying hardware context (for example, refer to the same graphics card).
13015 If the input frames were originally created on the output device, then unmap
13016 to retrieve the original frames.
13018 Otherwise, map the frames to the output device - create new hardware frames
13019 on the output corresponding to the frames on the input.
13022 The following additional parameters are accepted:
13026 Set the frame mapping mode. Some combination of:
13029 The mapped frame should be readable.
13031 The mapped frame should be writeable.
13033 The mapping will always overwrite the entire frame.
13035 This may improve performance in some cases, as the original contents of the
13036 frame need not be loaded.
13038 The mapping must not involve any copying.
13040 Indirect mappings to copies of frames are created in some cases where either
13041 direct mapping is not possible or it would have unexpected properties.
13042 Setting this flag ensures that the mapping is direct and will fail if that is
13045 Defaults to @var{read+write} if not specified.
13047 @item derive_device @var{type}
13048 Rather than using the device supplied at initialisation, instead derive a new
13049 device of type @var{type} from the device the input frames exist on.
13052 In a hardware to hardware mapping, map in reverse - create frames in the sink
13053 and map them back to the source. This may be necessary in some cases where
13054 a mapping in one direction is required but only the opposite direction is
13055 supported by the devices being used.
13057 This option is dangerous - it may break the preceding filter in undefined
13058 ways if there are any additional constraints on that filter's output.
13059 Do not use it without fully understanding the implications of its use.
13065 Upload system memory frames to hardware surfaces.
13067 The device to upload to must be supplied when the filter is initialised. If
13068 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
13069 option or with the @option{derive_device} option. The input and output devices
13070 must be of different types and compatible - the exact meaning of this is
13071 system-dependent, but typically it means that they must refer to the same
13072 underlying hardware context (for example, refer to the same graphics card).
13074 The following additional parameters are accepted:
13077 @item derive_device @var{type}
13078 Rather than using the device supplied at initialisation, instead derive a new
13079 device of type @var{type} from the device the input frames exist on.
13082 @anchor{hwupload_cuda}
13083 @section hwupload_cuda
13085 Upload system memory frames to a CUDA device.
13087 It accepts the following optional parameters:
13091 The number of the CUDA device to use
13096 Apply a high-quality magnification filter designed for pixel art. This filter
13097 was originally created by Maxim Stepin.
13099 It accepts the following option:
13103 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
13104 @code{hq3x} and @code{4} for @code{hq4x}.
13105 Default is @code{3}.
13109 Stack input videos horizontally.
13111 All streams must be of same pixel format and of same height.
13113 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
13114 to create same output.
13116 The filter accepts the following option:
13120 Set number of input streams. Default is 2.
13123 If set to 1, force the output to terminate when the shortest input
13124 terminates. Default value is 0.
13129 Modify the hue and/or the saturation of the input.
13131 It accepts the following parameters:
13135 Specify the hue angle as a number of degrees. It accepts an expression,
13136 and defaults to "0".
13139 Specify the saturation in the [-10,10] range. It accepts an expression and
13143 Specify the hue angle as a number of radians. It accepts an
13144 expression, and defaults to "0".
13147 Specify the brightness in the [-10,10] range. It accepts an expression and
13151 @option{h} and @option{H} are mutually exclusive, and can't be
13152 specified at the same time.
13154 The @option{b}, @option{h}, @option{H} and @option{s} option values are
13155 expressions containing the following constants:
13159 frame count of the input frame starting from 0
13162 presentation timestamp of the input frame expressed in time base units
13165 frame rate of the input video, NAN if the input frame rate is unknown
13168 timestamp expressed in seconds, NAN if the input timestamp is unknown
13171 time base of the input video
13174 @subsection Examples
13178 Set the hue to 90 degrees and the saturation to 1.0:
13184 Same command but expressing the hue in radians:
13190 Rotate hue and make the saturation swing between 0
13191 and 2 over a period of 1 second:
13193 hue="H=2*PI*t: s=sin(2*PI*t)+1"
13197 Apply a 3 seconds saturation fade-in effect starting at 0:
13199 hue="s=min(t/3\,1)"
13202 The general fade-in expression can be written as:
13204 hue="s=min(0\, max((t-START)/DURATION\, 1))"
13208 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
13210 hue="s=max(0\, min(1\, (8-t)/3))"
13213 The general fade-out expression can be written as:
13215 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
13220 @subsection Commands
13222 This filter supports the following commands:
13228 Modify the hue and/or the saturation and/or brightness of the input video.
13229 The command accepts the same syntax of the corresponding option.
13231 If the specified expression is not valid, it is kept at its current
13235 @section hysteresis
13237 Grow first stream into second stream by connecting components.
13238 This makes it possible to build more robust edge masks.
13240 This filter accepts the following options:
13244 Set which planes will be processed as bitmap, unprocessed planes will be
13245 copied from first stream.
13246 By default value 0xf, all planes will be processed.
13249 Set threshold which is used in filtering. If pixel component value is higher than
13250 this value filter algorithm for connecting components is activated.
13251 By default value is 0.
13254 The @code{hysteresis} filter also supports the @ref{framesync} options.
13258 Detect video interlacing type.
13260 This filter tries to detect if the input frames are interlaced, progressive,
13261 top or bottom field first. It will also try to detect fields that are
13262 repeated between adjacent frames (a sign of telecine).
13264 Single frame detection considers only immediately adjacent frames when classifying each frame.
13265 Multiple frame detection incorporates the classification history of previous frames.
13267 The filter will log these metadata values:
13270 @item single.current_frame
13271 Detected type of current frame using single-frame detection. One of:
13272 ``tff'' (top field first), ``bff'' (bottom field first),
13273 ``progressive'', or ``undetermined''
13276 Cumulative number of frames detected as top field first using single-frame detection.
13279 Cumulative number of frames detected as top field first using multiple-frame detection.
13282 Cumulative number of frames detected as bottom field first using single-frame detection.
13284 @item multiple.current_frame
13285 Detected type of current frame using multiple-frame detection. One of:
13286 ``tff'' (top field first), ``bff'' (bottom field first),
13287 ``progressive'', or ``undetermined''
13290 Cumulative number of frames detected as bottom field first using multiple-frame detection.
13292 @item single.progressive
13293 Cumulative number of frames detected as progressive using single-frame detection.
13295 @item multiple.progressive
13296 Cumulative number of frames detected as progressive using multiple-frame detection.
13298 @item single.undetermined
13299 Cumulative number of frames that could not be classified using single-frame detection.
13301 @item multiple.undetermined
13302 Cumulative number of frames that could not be classified using multiple-frame detection.
13304 @item repeated.current_frame
13305 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
13307 @item repeated.neither
13308 Cumulative number of frames with no repeated field.
13311 Cumulative number of frames with the top field repeated from the previous frame's top field.
13313 @item repeated.bottom
13314 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
13317 The filter accepts the following options:
13321 Set interlacing threshold.
13323 Set progressive threshold.
13325 Threshold for repeated field detection.
13327 Number of frames after which a given frame's contribution to the
13328 statistics is halved (i.e., it contributes only 0.5 to its
13329 classification). The default of 0 means that all frames seen are given
13330 full weight of 1.0 forever.
13331 @item analyze_interlaced_flag
13332 When this is not 0 then idet will use the specified number of frames to determine
13333 if the interlaced flag is accurate, it will not count undetermined frames.
13334 If the flag is found to be accurate it will be used without any further
13335 computations, if it is found to be inaccurate it will be cleared without any
13336 further computations. This allows inserting the idet filter as a low computational
13337 method to clean up the interlaced flag
13342 Deinterleave or interleave fields.
13344 This filter allows one to process interlaced images fields without
13345 deinterlacing them. Deinterleaving splits the input frame into 2
13346 fields (so called half pictures). Odd lines are moved to the top
13347 half of the output image, even lines to the bottom half.
13348 You can process (filter) them independently and then re-interleave them.
13350 The filter accepts the following options:
13354 @item chroma_mode, c
13355 @item alpha_mode, a
13356 Available values for @var{luma_mode}, @var{chroma_mode} and
13357 @var{alpha_mode} are:
13363 @item deinterleave, d
13364 Deinterleave fields, placing one above the other.
13366 @item interleave, i
13367 Interleave fields. Reverse the effect of deinterleaving.
13369 Default value is @code{none}.
13371 @item luma_swap, ls
13372 @item chroma_swap, cs
13373 @item alpha_swap, as
13374 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
13377 @subsection Commands
13379 This filter supports the all above options as @ref{commands}.
13383 Apply inflate effect to the video.
13385 This filter replaces the pixel by the local(3x3) average by taking into account
13386 only values higher than the pixel.
13388 It accepts the following options:
13395 Limit the maximum change for each plane, default is 65535.
13396 If 0, plane will remain unchanged.
13399 @subsection Commands
13401 This filter supports the all above options as @ref{commands}.
13405 Simple interlacing filter from progressive contents. This interleaves upper (or
13406 lower) lines from odd frames with lower (or upper) lines from even frames,
13407 halving the frame rate and preserving image height.
13410 Original Original New Frame
13411 Frame 'j' Frame 'j+1' (tff)
13412 ========== =========== ==================
13413 Line 0 --------------------> Frame 'j' Line 0
13414 Line 1 Line 1 ----> Frame 'j+1' Line 1
13415 Line 2 ---------------------> Frame 'j' Line 2
13416 Line 3 Line 3 ----> Frame 'j+1' Line 3
13418 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
13421 It accepts the following optional parameters:
13425 This determines whether the interlaced frame is taken from the even
13426 (tff - default) or odd (bff) lines of the progressive frame.
13429 Vertical lowpass filter to avoid twitter interlacing and
13430 reduce moire patterns.
13434 Disable vertical lowpass filter
13437 Enable linear filter (default)
13440 Enable complex filter. This will slightly less reduce twitter and moire
13441 but better retain detail and subjective sharpness impression.
13448 Deinterlace input video by applying Donald Graft's adaptive kernel
13449 deinterling. Work on interlaced parts of a video to produce
13450 progressive frames.
13452 The description of the accepted parameters follows.
13456 Set the threshold which affects the filter's tolerance when
13457 determining if a pixel line must be processed. It must be an integer
13458 in the range [0,255] and defaults to 10. A value of 0 will result in
13459 applying the process on every pixels.
13462 Paint pixels exceeding the threshold value to white if set to 1.
13466 Set the fields order. Swap fields if set to 1, leave fields alone if
13470 Enable additional sharpening if set to 1. Default is 0.
13473 Enable twoway sharpening if set to 1. Default is 0.
13476 @subsection Examples
13480 Apply default values:
13482 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
13486 Enable additional sharpening:
13492 Paint processed pixels in white:
13499 Apply kirsch operator to input video stream.
13501 The filter accepts the following option:
13505 Set which planes will be processed, unprocessed planes will be copied.
13506 By default value 0xf, all planes will be processed.
13509 Set value which will be multiplied with filtered result.
13512 Set value which will be added to filtered result.
13515 @subsection Commands
13517 This filter supports the all above options as @ref{commands}.
13521 Slowly update darker pixels.
13523 This filter makes short flashes of light appear longer.
13524 This filter accepts the following options:
13528 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
13531 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
13534 @subsection Commands
13536 This filter supports the all above options as @ref{commands}.
13538 @section lenscorrection
13540 Correct radial lens distortion
13542 This filter can be used to correct for radial distortion as can result from the use
13543 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
13544 one can use tools available for example as part of opencv or simply trial-and-error.
13545 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
13546 and extract the k1 and k2 coefficients from the resulting matrix.
13548 Note that effectively the same filter is available in the open-source tools Krita and
13549 Digikam from the KDE project.
13551 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
13552 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
13553 brightness distribution, so you may want to use both filters together in certain
13554 cases, though you will have to take care of ordering, i.e. whether vignetting should
13555 be applied before or after lens correction.
13557 @subsection Options
13559 The filter accepts the following options:
13563 Relative x-coordinate of the focal point of the image, and thereby the center of the
13564 distortion. This value has a range [0,1] and is expressed as fractions of the image
13565 width. Default is 0.5.
13567 Relative y-coordinate of the focal point of the image, and thereby the center of the
13568 distortion. This value has a range [0,1] and is expressed as fractions of the image
13569 height. Default is 0.5.
13571 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
13572 no correction. Default is 0.
13574 Coefficient of the double quadratic correction term. This value has a range [-1,1].
13575 0 means no correction. Default is 0.
13577 Set interpolation type. Can be @code{nearest} or @code{bilinear}.
13578 Default is @code{nearest}.
13580 Specify the color of the unmapped pixels. For the syntax of this option,
13581 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13582 manual,ffmpeg-utils}. Default color is @code{black@@0}.
13585 The formula that generates the correction is:
13587 @var{r_src} = @var{r_tgt} * (1 + @var{k1} * (@var{r_tgt} / @var{r_0})^2 + @var{k2} * (@var{r_tgt} / @var{r_0})^4)
13589 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
13590 distances from the focal point in the source and target images, respectively.
13592 @subsection Commands
13594 This filter supports the all above options as @ref{commands}.
13598 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
13600 The @code{lensfun} filter requires the camera make, camera model, and lens model
13601 to apply the lens correction. The filter will load the lensfun database and
13602 query it to find the corresponding camera and lens entries in the database. As
13603 long as these entries can be found with the given options, the filter can
13604 perform corrections on frames. Note that incomplete strings will result in the
13605 filter choosing the best match with the given options, and the filter will
13606 output the chosen camera and lens models (logged with level "info"). You must
13607 provide the make, camera model, and lens model as they are required.
13609 The filter accepts the following options:
13613 The make of the camera (for example, "Canon"). This option is required.
13616 The model of the camera (for example, "Canon EOS 100D"). This option is
13620 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
13621 option is required.
13624 The type of correction to apply. The following values are valid options:
13628 Enables fixing lens vignetting.
13631 Enables fixing lens geometry. This is the default.
13634 Enables fixing chromatic aberrations.
13637 Enables fixing lens vignetting and lens geometry.
13640 Enables fixing lens vignetting and chromatic aberrations.
13643 Enables fixing both lens geometry and chromatic aberrations.
13646 Enables all possible corrections.
13650 The focal length of the image/video (zoom; expected constant for video). For
13651 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13652 range should be chosen when using that lens. Default 18.
13655 The aperture of the image/video (expected constant for video). Note that
13656 aperture is only used for vignetting correction. Default 3.5.
13658 @item focus_distance
13659 The focus distance of the image/video (expected constant for video). Note that
13660 focus distance is only used for vignetting and only slightly affects the
13661 vignetting correction process. If unknown, leave it at the default value (which
13665 The scale factor which is applied after transformation. After correction the
13666 video is no longer necessarily rectangular. This parameter controls how much of
13667 the resulting image is visible. The value 0 means that a value will be chosen
13668 automatically such that there is little or no unmapped area in the output
13669 image. 1.0 means that no additional scaling is done. Lower values may result
13670 in more of the corrected image being visible, while higher values may avoid
13671 unmapped areas in the output.
13673 @item target_geometry
13674 The target geometry of the output image/video. The following values are valid
13678 @item rectilinear (default)
13681 @item equirectangular
13682 @item fisheye_orthographic
13683 @item fisheye_stereographic
13684 @item fisheye_equisolid
13685 @item fisheye_thoby
13688 Apply the reverse of image correction (instead of correcting distortion, apply
13691 @item interpolation
13692 The type of interpolation used when correcting distortion. The following values
13697 @item linear (default)
13702 @subsection Examples
13706 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13707 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13711 ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
13715 Apply the same as before, but only for the first 5 seconds of video.
13718 ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
13725 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13726 score between two input videos.
13728 The obtained VMAF score is printed through the logging system.
13730 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13731 After installing the library it can be enabled using:
13732 @code{./configure --enable-libvmaf}.
13733 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13735 The filter has following options:
13739 Set the model path which is to be used for SVM.
13740 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13743 Set the file path to be used to store logs.
13746 Set the format of the log file (csv, json or xml).
13748 @item enable_transform
13749 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13750 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13751 Default value: @code{false}
13754 Invokes the phone model which will generate VMAF scores higher than in the
13755 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13756 Default value: @code{false}
13759 Enables computing psnr along with vmaf.
13760 Default value: @code{false}
13763 Enables computing ssim along with vmaf.
13764 Default value: @code{false}
13767 Enables computing ms_ssim along with vmaf.
13768 Default value: @code{false}
13771 Set the pool method to be used for computing vmaf.
13772 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13775 Set number of threads to be used when computing vmaf.
13776 Default value: @code{0}, which makes use of all available logical processors.
13779 Set interval for frame subsampling used when computing vmaf.
13780 Default value: @code{1}
13782 @item enable_conf_interval
13783 Enables confidence interval.
13784 Default value: @code{false}
13787 This filter also supports the @ref{framesync} options.
13789 @subsection Examples
13792 On the below examples the input file @file{main.mpg} being processed is
13793 compared with the reference file @file{ref.mpg}.
13796 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13800 Example with options:
13802 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13806 Example with options and different containers:
13808 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=psnr=1:log_fmt=json" -f null -
13814 Limits the pixel components values to the specified range [min, max].
13816 The filter accepts the following options:
13820 Lower bound. Defaults to the lowest allowed value for the input.
13823 Upper bound. Defaults to the highest allowed value for the input.
13826 Specify which planes will be processed. Defaults to all available.
13829 @subsection Commands
13831 This filter supports the all above options as @ref{commands}.
13837 The filter accepts the following options:
13841 Set the number of loops. Setting this value to -1 will result in infinite loops.
13845 Set maximal size in number of frames. Default is 0.
13848 Set first frame of loop. Default is 0.
13851 @subsection Examples
13855 Loop single first frame infinitely:
13857 loop=loop=-1:size=1:start=0
13861 Loop single first frame 10 times:
13863 loop=loop=10:size=1:start=0
13867 Loop 10 first frames 5 times:
13869 loop=loop=5:size=10:start=0
13875 Apply a 1D LUT to an input video.
13877 The filter accepts the following options:
13881 Set the 1D LUT file name.
13883 Currently supported formats:
13892 Select interpolation mode.
13894 Available values are:
13898 Use values from the nearest defined point.
13900 Interpolate values using the linear interpolation.
13902 Interpolate values using the cosine interpolation.
13904 Interpolate values using the cubic interpolation.
13906 Interpolate values using the spline interpolation.
13913 Apply a 3D LUT to an input video.
13915 The filter accepts the following options:
13919 Set the 3D LUT file name.
13921 Currently supported formats:
13935 Select interpolation mode.
13937 Available values are:
13941 Use values from the nearest defined point.
13943 Interpolate values using the 8 points defining a cube.
13945 Interpolate values using a tetrahedron.
13947 Interpolate values using a pyramid.
13949 Interpolate values using a prism.
13955 Turn certain luma values into transparency.
13957 The filter accepts the following options:
13961 Set the luma which will be used as base for transparency.
13962 Default value is @code{0}.
13965 Set the range of luma values to be keyed out.
13966 Default value is @code{0.01}.
13969 Set the range of softness. Default value is @code{0}.
13970 Use this to control gradual transition from zero to full transparency.
13973 @subsection Commands
13974 This filter supports same @ref{commands} as options.
13975 The command accepts the same syntax of the corresponding option.
13977 If the specified expression is not valid, it is kept at its current
13980 @section lut, lutrgb, lutyuv
13982 Compute a look-up table for binding each pixel component input value
13983 to an output value, and apply it to the input video.
13985 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13986 to an RGB input video.
13988 These filters accept the following parameters:
13991 set first pixel component expression
13993 set second pixel component expression
13995 set third pixel component expression
13997 set fourth pixel component expression, corresponds to the alpha component
14000 set red component expression
14002 set green component expression
14004 set blue component expression
14006 alpha component expression
14009 set Y/luminance component expression
14011 set U/Cb component expression
14013 set V/Cr component expression
14016 Each of them specifies the expression to use for computing the lookup table for
14017 the corresponding pixel component values.
14019 The exact component associated to each of the @var{c*} options depends on the
14022 The @var{lut} filter requires either YUV or RGB pixel formats in input,
14023 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
14025 The expressions can contain the following constants and functions:
14030 The input width and height.
14033 The input value for the pixel component.
14036 The input value, clipped to the @var{minval}-@var{maxval} range.
14039 The maximum value for the pixel component.
14042 The minimum value for the pixel component.
14045 The negated value for the pixel component value, clipped to the
14046 @var{minval}-@var{maxval} range; it corresponds to the expression
14047 "maxval-clipval+minval".
14050 The computed value in @var{val}, clipped to the
14051 @var{minval}-@var{maxval} range.
14053 @item gammaval(gamma)
14054 The computed gamma correction value of the pixel component value,
14055 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
14057 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
14061 All expressions default to "val".
14063 @subsection Examples
14067 Negate input video:
14069 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
14070 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
14073 The above is the same as:
14075 lutrgb="r=negval:g=negval:b=negval"
14076 lutyuv="y=negval:u=negval:v=negval"
14086 Remove chroma components, turning the video into a graytone image:
14088 lutyuv="u=128:v=128"
14092 Apply a luma burning effect:
14098 Remove green and blue components:
14104 Set a constant alpha channel value on input:
14106 format=rgba,lutrgb=a="maxval-minval/2"
14110 Correct luminance gamma by a factor of 0.5:
14112 lutyuv=y=gammaval(0.5)
14116 Discard least significant bits of luma:
14118 lutyuv=y='bitand(val, 128+64+32)'
14122 Technicolor like effect:
14124 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
14128 @section lut2, tlut2
14130 The @code{lut2} filter takes two input streams and outputs one
14133 The @code{tlut2} (time lut2) filter takes two consecutive frames
14134 from one single stream.
14136 This filter accepts the following parameters:
14139 set first pixel component expression
14141 set second pixel component expression
14143 set third pixel component expression
14145 set fourth pixel component expression, corresponds to the alpha component
14148 set output bit depth, only available for @code{lut2} filter. By default is 0,
14149 which means bit depth is automatically picked from first input format.
14152 The @code{lut2} filter also supports the @ref{framesync} options.
14154 Each of them specifies the expression to use for computing the lookup table for
14155 the corresponding pixel component values.
14157 The exact component associated to each of the @var{c*} options depends on the
14160 The expressions can contain the following constants:
14165 The input width and height.
14168 The first input value for the pixel component.
14171 The second input value for the pixel component.
14174 The first input video bit depth.
14177 The second input video bit depth.
14180 All expressions default to "x".
14182 @subsection Examples
14186 Highlight differences between two RGB video streams:
14188 lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
14192 Highlight differences between two YUV video streams:
14194 lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
14198 Show max difference between two video streams:
14200 lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
14204 @section maskedclamp
14206 Clamp the first input stream with the second input and third input stream.
14208 Returns the value of first stream to be between second input
14209 stream - @code{undershoot} and third input stream + @code{overshoot}.
14211 This filter accepts the following options:
14214 Default value is @code{0}.
14217 Default value is @code{0}.
14220 Set which planes will be processed as bitmap, unprocessed planes will be
14221 copied from first stream.
14222 By default value 0xf, all planes will be processed.
14225 @subsection Commands
14227 This filter supports the all above options as @ref{commands}.
14231 Merge the second and third input stream into output stream using absolute differences
14232 between second input stream and first input stream and absolute difference between
14233 third input stream and first input stream. The picked value will be from second input
14234 stream if second absolute difference is greater than first one or from third input stream
14237 This filter accepts the following options:
14240 Set which planes will be processed as bitmap, unprocessed planes will be
14241 copied from first stream.
14242 By default value 0xf, all planes will be processed.
14245 @subsection Commands
14247 This filter supports the all above options as @ref{commands}.
14249 @section maskedmerge
14251 Merge the first input stream with the second input stream using per pixel
14252 weights in the third input stream.
14254 A value of 0 in the third stream pixel component means that pixel component
14255 from first stream is returned unchanged, while maximum value (eg. 255 for
14256 8-bit videos) means that pixel component from second stream is returned
14257 unchanged. Intermediate values define the amount of merging between both
14258 input stream's pixel components.
14260 This filter accepts the following options:
14263 Set which planes will be processed as bitmap, unprocessed planes will be
14264 copied from first stream.
14265 By default value 0xf, all planes will be processed.
14268 @subsection Commands
14270 This filter supports the all above options as @ref{commands}.
14274 Merge the second and third input stream into output stream using absolute differences
14275 between second input stream and first input stream and absolute difference between
14276 third input stream and first input stream. The picked value will be from second input
14277 stream if second absolute difference is less than first one or from third input stream
14280 This filter accepts the following options:
14283 Set which planes will be processed as bitmap, unprocessed planes will be
14284 copied from first stream.
14285 By default value 0xf, all planes will be processed.
14288 @subsection Commands
14290 This filter supports the all above options as @ref{commands}.
14292 @section maskedthreshold
14293 Pick pixels comparing absolute difference of two video streams with fixed
14296 If absolute difference between pixel component of first and second video
14297 stream is equal or lower than user supplied threshold than pixel component
14298 from first video stream is picked, otherwise pixel component from second
14299 video stream is picked.
14301 This filter accepts the following options:
14304 Set threshold used when picking pixels from absolute difference from two input
14308 Set which planes will be processed as bitmap, unprocessed planes will be
14309 copied from second stream.
14310 By default value 0xf, all planes will be processed.
14313 @subsection Commands
14315 This filter supports the all above options as @ref{commands}.
14318 Create mask from input video.
14320 For example it is useful to create motion masks after @code{tblend} filter.
14322 This filter accepts the following options:
14326 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
14329 Set high threshold. Any pixel component higher than this value will be set to max value
14330 allowed for current pixel format.
14333 Set planes to filter, by default all available planes are filtered.
14336 Fill all frame pixels with this value.
14339 Set max average pixel value for frame. If sum of all pixel components is higher that this
14340 average, output frame will be completely filled with value set by @var{fill} option.
14341 Typically useful for scene changes when used in combination with @code{tblend} filter.
14346 Apply motion-compensation deinterlacing.
14348 It needs one field per frame as input and must thus be used together
14349 with yadif=1/3 or equivalent.
14351 This filter accepts the following options:
14354 Set the deinterlacing mode.
14356 It accepts one of the following values:
14361 use iterative motion estimation
14363 like @samp{slow}, but use multiple reference frames.
14365 Default value is @samp{fast}.
14368 Set the picture field parity assumed for the input video. It must be
14369 one of the following values:
14373 assume top field first
14375 assume bottom field first
14378 Default value is @samp{bff}.
14381 Set per-block quantization parameter (QP) used by the internal
14384 Higher values should result in a smoother motion vector field but less
14385 optimal individual vectors. Default value is 1.
14390 Pick median pixel from certain rectangle defined by radius.
14392 This filter accepts the following options:
14396 Set horizontal radius size. Default value is @code{1}.
14397 Allowed range is integer from 1 to 127.
14400 Set which planes to process. Default is @code{15}, which is all available planes.
14403 Set vertical radius size. Default value is @code{0}.
14404 Allowed range is integer from 0 to 127.
14405 If it is 0, value will be picked from horizontal @code{radius} option.
14408 Set median percentile. Default value is @code{0.5}.
14409 Default value of @code{0.5} will pick always median values, while @code{0} will pick
14410 minimum values, and @code{1} maximum values.
14413 @subsection Commands
14414 This filter supports same @ref{commands} as options.
14415 The command accepts the same syntax of the corresponding option.
14417 If the specified expression is not valid, it is kept at its current
14420 @section mergeplanes
14422 Merge color channel components from several video streams.
14424 The filter accepts up to 4 input streams, and merge selected input
14425 planes to the output video.
14427 This filter accepts the following options:
14430 Set input to output plane mapping. Default is @code{0}.
14432 The mappings is specified as a bitmap. It should be specified as a
14433 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
14434 mapping for the first plane of the output stream. 'A' sets the number of
14435 the input stream to use (from 0 to 3), and 'a' the plane number of the
14436 corresponding input to use (from 0 to 3). The rest of the mappings is
14437 similar, 'Bb' describes the mapping for the output stream second
14438 plane, 'Cc' describes the mapping for the output stream third plane and
14439 'Dd' describes the mapping for the output stream fourth plane.
14442 Set output pixel format. Default is @code{yuva444p}.
14445 @subsection Examples
14449 Merge three gray video streams of same width and height into single video stream:
14451 [a0][a1][a2]mergeplanes=0x001020:yuv444p
14455 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
14457 [a0][a1]mergeplanes=0x00010210:yuva444p
14461 Swap Y and A plane in yuva444p stream:
14463 format=yuva444p,mergeplanes=0x03010200:yuva444p
14467 Swap U and V plane in yuv420p stream:
14469 format=yuv420p,mergeplanes=0x000201:yuv420p
14473 Cast a rgb24 clip to yuv444p:
14475 format=rgb24,mergeplanes=0x000102:yuv444p
14481 Estimate and export motion vectors using block matching algorithms.
14482 Motion vectors are stored in frame side data to be used by other filters.
14484 This filter accepts the following options:
14487 Specify the motion estimation method. Accepts one of the following values:
14491 Exhaustive search algorithm.
14493 Three step search algorithm.
14495 Two dimensional logarithmic search algorithm.
14497 New three step search algorithm.
14499 Four step search algorithm.
14501 Diamond search algorithm.
14503 Hexagon-based search algorithm.
14505 Enhanced predictive zonal search algorithm.
14507 Uneven multi-hexagon search algorithm.
14509 Default value is @samp{esa}.
14512 Macroblock size. Default @code{16}.
14515 Search parameter. Default @code{7}.
14518 @section midequalizer
14520 Apply Midway Image Equalization effect using two video streams.
14522 Midway Image Equalization adjusts a pair of images to have the same
14523 histogram, while maintaining their dynamics as much as possible. It's
14524 useful for e.g. matching exposures from a pair of stereo cameras.
14526 This filter has two inputs and one output, which must be of same pixel format, but
14527 may be of different sizes. The output of filter is first input adjusted with
14528 midway histogram of both inputs.
14530 This filter accepts the following option:
14534 Set which planes to process. Default is @code{15}, which is all available planes.
14537 @section minterpolate
14539 Convert the video to specified frame rate using motion interpolation.
14541 This filter accepts the following options:
14544 Specify the output frame rate. This can be rational e.g. @code{60000/1001}. Frames are dropped if @var{fps} is lower than source fps. Default @code{60}.
14547 Motion interpolation mode. Following values are accepted:
14550 Duplicate previous or next frame for interpolating new ones.
14552 Blend source frames. Interpolated frame is mean of previous and next frames.
14554 Motion compensated interpolation. Following options are effective when this mode is selected:
14558 Motion compensation mode. Following values are accepted:
14561 Overlapped block motion compensation.
14563 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
14565 Default mode is @samp{obmc}.
14568 Motion estimation mode. Following values are accepted:
14571 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
14573 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
14575 Default mode is @samp{bilat}.
14578 The algorithm to be used for motion estimation. Following values are accepted:
14581 Exhaustive search algorithm.
14583 Three step search algorithm.
14585 Two dimensional logarithmic search algorithm.
14587 New three step search algorithm.
14589 Four step search algorithm.
14591 Diamond search algorithm.
14593 Hexagon-based search algorithm.
14595 Enhanced predictive zonal search algorithm.
14597 Uneven multi-hexagon search algorithm.
14599 Default algorithm is @samp{epzs}.
14602 Macroblock size. Default @code{16}.
14605 Motion estimation search parameter. Default @code{32}.
14608 Enable variable-size block motion compensation. Motion estimation is applied with smaller block sizes at object boundaries in order to make the them less blur. Default is @code{0} (disabled).
14613 Scene change detection method. Scene change leads motion vectors to be in random direction. Scene change detection replace interpolated frames by duplicate ones. May not be needed for other modes. Following values are accepted:
14616 Disable scene change detection.
14618 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
14620 Default method is @samp{fdiff}.
14622 @item scd_threshold
14623 Scene change detection threshold. Default is @code{10.}.
14628 Mix several video input streams into one video stream.
14630 A description of the accepted options follows.
14634 The number of inputs. If unspecified, it defaults to 2.
14637 Specify weight of each input video stream as sequence.
14638 Each weight is separated by space. If number of weights
14639 is smaller than number of @var{frames} last specified
14640 weight will be used for all remaining unset weights.
14643 Specify scale, if it is set it will be multiplied with sum
14644 of each weight multiplied with pixel values to give final destination
14645 pixel value. By default @var{scale} is auto scaled to sum of weights.
14648 Specify how end of stream is determined.
14651 The duration of the longest input. (default)
14654 The duration of the shortest input.
14657 The duration of the first input.
14661 @section mpdecimate
14663 Drop frames that do not differ greatly from the previous frame in
14664 order to reduce frame rate.
14666 The main use of this filter is for very-low-bitrate encoding
14667 (e.g. streaming over dialup modem), but it could in theory be used for
14668 fixing movies that were inverse-telecined incorrectly.
14670 A description of the accepted options follows.
14674 Set the maximum number of consecutive frames which can be dropped (if
14675 positive), or the minimum interval between dropped frames (if
14676 negative). If the value is 0, the frame is dropped disregarding the
14677 number of previous sequentially dropped frames.
14679 Default value is 0.
14684 Set the dropping threshold values.
14686 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14687 represent actual pixel value differences, so a threshold of 64
14688 corresponds to 1 unit of difference for each pixel, or the same spread
14689 out differently over the block.
14691 A frame is a candidate for dropping if no 8x8 blocks differ by more
14692 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14693 meaning the whole image) differ by more than a threshold of @option{lo}.
14695 Default value for @option{hi} is 64*12, default value for @option{lo} is
14696 64*5, and default value for @option{frac} is 0.33.
14702 Negate (invert) the input video.
14704 It accepts the following option:
14709 With value 1, it negates the alpha component, if present. Default value is 0.
14715 Denoise frames using Non-Local Means algorithm.
14717 Each pixel is adjusted by looking for other pixels with similar contexts. This
14718 context similarity is defined by comparing their surrounding patches of size
14719 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14722 Note that the research area defines centers for patches, which means some
14723 patches will be made of pixels outside that research area.
14725 The filter accepts the following options.
14729 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14732 Set patch size. Default is 7. Must be odd number in range [0, 99].
14735 Same as @option{p} but for chroma planes.
14737 The default value is @var{0} and means automatic.
14740 Set research size. Default is 15. Must be odd number in range [0, 99].
14743 Same as @option{r} but for chroma planes.
14745 The default value is @var{0} and means automatic.
14750 Deinterlace video using neural network edge directed interpolation.
14752 This filter accepts the following options:
14756 Mandatory option, without binary file filter can not work.
14757 Currently file can be found here:
14758 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14761 Set which frames to deinterlace, by default it is @code{all}.
14762 Can be @code{all} or @code{interlaced}.
14765 Set mode of operation.
14767 Can be one of the following:
14771 Use frame flags, both fields.
14773 Use frame flags, single field.
14775 Use top field only.
14777 Use bottom field only.
14779 Use both fields, top first.
14781 Use both fields, bottom first.
14785 Set which planes to process, by default filter process all frames.
14788 Set size of local neighborhood around each pixel, used by the predictor neural
14791 Can be one of the following:
14804 Set the number of neurons in predictor neural network.
14805 Can be one of the following:
14816 Controls the number of different neural network predictions that are blended
14817 together to compute the final output value. Can be @code{fast}, default or
14821 Set which set of weights to use in the predictor.
14822 Can be one of the following:
14826 weights trained to minimize absolute error
14828 weights trained to minimize squared error
14832 Controls whether or not the prescreener neural network is used to decide
14833 which pixels should be processed by the predictor neural network and which
14834 can be handled by simple cubic interpolation.
14835 The prescreener is trained to know whether cubic interpolation will be
14836 sufficient for a pixel or whether it should be predicted by the predictor nn.
14837 The computational complexity of the prescreener nn is much less than that of
14838 the predictor nn. Since most pixels can be handled by cubic interpolation,
14839 using the prescreener generally results in much faster processing.
14840 The prescreener is pretty accurate, so the difference between using it and not
14841 using it is almost always unnoticeable.
14843 Can be one of the following:
14853 Default is @code{new}.
14856 @subsection Commands
14857 This filter supports same @ref{commands} as options, excluding @var{weights} option.
14861 Force libavfilter not to use any of the specified pixel formats for the
14862 input to the next filter.
14864 It accepts the following parameters:
14868 A '|'-separated list of pixel format names, such as
14869 pix_fmts=yuv420p|monow|rgb24".
14873 @subsection Examples
14877 Force libavfilter to use a format different from @var{yuv420p} for the
14878 input to the vflip filter:
14880 noformat=pix_fmts=yuv420p,vflip
14884 Convert the input video to any of the formats not contained in the list:
14886 noformat=yuv420p|yuv444p|yuv410p
14892 Add noise on video input frame.
14894 The filter accepts the following options:
14902 Set noise seed for specific pixel component or all pixel components in case
14903 of @var{all_seed}. Default value is @code{123457}.
14905 @item all_strength, alls
14906 @item c0_strength, c0s
14907 @item c1_strength, c1s
14908 @item c2_strength, c2s
14909 @item c3_strength, c3s
14910 Set noise strength for specific pixel component or all pixel components in case
14911 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14913 @item all_flags, allf
14914 @item c0_flags, c0f
14915 @item c1_flags, c1f
14916 @item c2_flags, c2f
14917 @item c3_flags, c3f
14918 Set pixel component flags or set flags for all components if @var{all_flags}.
14919 Available values for component flags are:
14922 averaged temporal noise (smoother)
14924 mix random noise with a (semi)regular pattern
14926 temporal noise (noise pattern changes between frames)
14928 uniform noise (gaussian otherwise)
14932 @subsection Examples
14934 Add temporal and uniform noise to input video:
14936 noise=alls=20:allf=t+u
14941 Normalize RGB video (aka histogram stretching, contrast stretching).
14942 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14944 For each channel of each frame, the filter computes the input range and maps
14945 it linearly to the user-specified output range. The output range defaults
14946 to the full dynamic range from pure black to pure white.
14948 Temporal smoothing can be used on the input range to reduce flickering (rapid
14949 changes in brightness) caused when small dark or bright objects enter or leave
14950 the scene. This is similar to the auto-exposure (automatic gain control) on a
14951 video camera, and, like a video camera, it may cause a period of over- or
14952 under-exposure of the video.
14954 The R,G,B channels can be normalized independently, which may cause some
14955 color shifting, or linked together as a single channel, which prevents
14956 color shifting. Linked normalization preserves hue. Independent normalization
14957 does not, so it can be used to remove some color casts. Independent and linked
14958 normalization can be combined in any ratio.
14960 The normalize filter accepts the following options:
14965 Colors which define the output range. The minimum input value is mapped to
14966 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14967 The defaults are black and white respectively. Specifying white for
14968 @var{blackpt} and black for @var{whitept} will give color-inverted,
14969 normalized video. Shades of grey can be used to reduce the dynamic range
14970 (contrast). Specifying saturated colors here can create some interesting
14974 The number of previous frames to use for temporal smoothing. The input range
14975 of each channel is smoothed using a rolling average over the current frame
14976 and the @var{smoothing} previous frames. The default is 0 (no temporal
14980 Controls the ratio of independent (color shifting) channel normalization to
14981 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14982 independent. Defaults to 1.0 (fully independent).
14985 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14986 expensive no-op. Defaults to 1.0 (full strength).
14990 @subsection Commands
14991 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14992 The command accepts the same syntax of the corresponding option.
14994 If the specified expression is not valid, it is kept at its current
14997 @subsection Examples
14999 Stretch video contrast to use the full dynamic range, with no temporal
15000 smoothing; may flicker depending on the source content:
15002 normalize=blackpt=black:whitept=white:smoothing=0
15005 As above, but with 50 frames of temporal smoothing; flicker should be
15006 reduced, depending on the source content:
15008 normalize=blackpt=black:whitept=white:smoothing=50
15011 As above, but with hue-preserving linked channel normalization:
15013 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
15016 As above, but with half strength:
15018 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
15021 Map the darkest input color to red, the brightest input color to cyan:
15023 normalize=blackpt=red:whitept=cyan
15028 Pass the video source unchanged to the output.
15031 Optical Character Recognition
15033 This filter uses Tesseract for optical character recognition. To enable
15034 compilation of this filter, you need to configure FFmpeg with
15035 @code{--enable-libtesseract}.
15037 It accepts the following options:
15041 Set datapath to tesseract data. Default is to use whatever was
15042 set at installation.
15045 Set language, default is "eng".
15048 Set character whitelist.
15051 Set character blacklist.
15054 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
15055 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
15059 Apply a video transform using libopencv.
15061 To enable this filter, install the libopencv library and headers and
15062 configure FFmpeg with @code{--enable-libopencv}.
15064 It accepts the following parameters:
15069 The name of the libopencv filter to apply.
15071 @item filter_params
15072 The parameters to pass to the libopencv filter. If not specified, the default
15073 values are assumed.
15077 Refer to the official libopencv documentation for more precise
15079 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
15081 Several libopencv filters are supported; see the following subsections.
15086 Dilate an image by using a specific structuring element.
15087 It corresponds to the libopencv function @code{cvDilate}.
15089 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
15091 @var{struct_el} represents a structuring element, and has the syntax:
15092 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
15094 @var{cols} and @var{rows} represent the number of columns and rows of
15095 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
15096 point, and @var{shape} the shape for the structuring element. @var{shape}
15097 must be "rect", "cross", "ellipse", or "custom".
15099 If the value for @var{shape} is "custom", it must be followed by a
15100 string of the form "=@var{filename}". The file with name
15101 @var{filename} is assumed to represent a binary image, with each
15102 printable character corresponding to a bright pixel. When a custom
15103 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
15104 or columns and rows of the read file are assumed instead.
15106 The default value for @var{struct_el} is "3x3+0x0/rect".
15108 @var{nb_iterations} specifies the number of times the transform is
15109 applied to the image, and defaults to 1.
15113 # Use the default values
15116 # Dilate using a structuring element with a 5x5 cross, iterating two times
15117 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
15119 # Read the shape from the file diamond.shape, iterating two times.
15120 # The file diamond.shape may contain a pattern of characters like this
15126 # The specified columns and rows are ignored
15127 # but the anchor point coordinates are not
15128 ocv=dilate:0x0+2x2/custom=diamond.shape|2
15133 Erode an image by using a specific structuring element.
15134 It corresponds to the libopencv function @code{cvErode}.
15136 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
15137 with the same syntax and semantics as the @ref{dilate} filter.
15141 Smooth the input video.
15143 The filter takes the following parameters:
15144 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
15146 @var{type} is the type of smooth filter to apply, and must be one of
15147 the following values: "blur", "blur_no_scale", "median", "gaussian",
15148 or "bilateral". The default value is "gaussian".
15150 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
15151 depends on the smooth type. @var{param1} and
15152 @var{param2} accept integer positive values or 0. @var{param3} and
15153 @var{param4} accept floating point values.
15155 The default value for @var{param1} is 3. The default value for the
15156 other parameters is 0.
15158 These parameters correspond to the parameters assigned to the
15159 libopencv function @code{cvSmooth}.
15161 @section oscilloscope
15163 2D Video Oscilloscope.
15165 Useful to measure spatial impulse, step responses, chroma delays, etc.
15167 It accepts the following parameters:
15171 Set scope center x position.
15174 Set scope center y position.
15177 Set scope size, relative to frame diagonal.
15180 Set scope tilt/rotation.
15186 Set trace center x position.
15189 Set trace center y position.
15192 Set trace width, relative to width of frame.
15195 Set trace height, relative to height of frame.
15198 Set which components to trace. By default it traces first three components.
15201 Draw trace grid. By default is enabled.
15204 Draw some statistics. By default is enabled.
15207 Draw scope. By default is enabled.
15210 @subsection Commands
15211 This filter supports same @ref{commands} as options.
15212 The command accepts the same syntax of the corresponding option.
15214 If the specified expression is not valid, it is kept at its current
15217 @subsection Examples
15221 Inspect full first row of video frame.
15223 oscilloscope=x=0.5:y=0:s=1
15227 Inspect full last row of video frame.
15229 oscilloscope=x=0.5:y=1:s=1
15233 Inspect full 5th line of video frame of height 1080.
15235 oscilloscope=x=0.5:y=5/1080:s=1
15239 Inspect full last column of video frame.
15241 oscilloscope=x=1:y=0.5:s=1:t=1
15249 Overlay one video on top of another.
15251 It takes two inputs and has one output. The first input is the "main"
15252 video on which the second input is overlaid.
15254 It accepts the following parameters:
15256 A description of the accepted options follows.
15261 Set the expression for the x and y coordinates of the overlaid video
15262 on the main video. Default value is "0" for both expressions. In case
15263 the expression is invalid, it is set to a huge value (meaning that the
15264 overlay will not be displayed within the output visible area).
15267 See @ref{framesync}.
15270 Set when the expressions for @option{x}, and @option{y} are evaluated.
15272 It accepts the following values:
15275 only evaluate expressions once during the filter initialization or
15276 when a command is processed
15279 evaluate expressions for each incoming frame
15282 Default value is @samp{frame}.
15285 See @ref{framesync}.
15288 Set the format for the output video.
15290 It accepts the following values:
15293 force YUV420 output
15296 force YUV420p10 output
15299 force YUV422 output
15302 force YUV422p10 output
15305 force YUV444 output
15308 force packed RGB output
15311 force planar RGB output
15314 automatically pick format
15317 Default value is @samp{yuv420}.
15320 See @ref{framesync}.
15323 Set format of alpha of the overlaid video, it can be @var{straight} or
15324 @var{premultiplied}. Default is @var{straight}.
15327 The @option{x}, and @option{y} expressions can contain the following
15333 The main input width and height.
15337 The overlay input width and height.
15341 The computed values for @var{x} and @var{y}. They are evaluated for
15346 horizontal and vertical chroma subsample values of the output
15347 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
15351 the number of input frame, starting from 0
15354 the position in the file of the input frame, NAN if unknown
15357 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
15361 This filter also supports the @ref{framesync} options.
15363 Note that the @var{n}, @var{pos}, @var{t} variables are available only
15364 when evaluation is done @emph{per frame}, and will evaluate to NAN
15365 when @option{eval} is set to @samp{init}.
15367 Be aware that frames are taken from each input video in timestamp
15368 order, hence, if their initial timestamps differ, it is a good idea
15369 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
15370 have them begin in the same zero timestamp, as the example for
15371 the @var{movie} filter does.
15373 You can chain together more overlays but you should test the
15374 efficiency of such approach.
15376 @subsection Commands
15378 This filter supports the following commands:
15382 Modify the x and y of the overlay input.
15383 The command accepts the same syntax of the corresponding option.
15385 If the specified expression is not valid, it is kept at its current
15389 @subsection Examples
15393 Draw the overlay at 10 pixels from the bottom right corner of the main
15396 overlay=main_w-overlay_w-10:main_h-overlay_h-10
15399 Using named options the example above becomes:
15401 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
15405 Insert a transparent PNG logo in the bottom left corner of the input,
15406 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
15408 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
15412 Insert 2 different transparent PNG logos (second logo on bottom
15413 right corner) using the @command{ffmpeg} tool:
15415 ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
15419 Add a transparent color layer on top of the main video; @code{WxH}
15420 must specify the size of the main input to the overlay filter:
15422 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
15426 Play an original video and a filtered version (here with the deshake
15427 filter) side by side using the @command{ffplay} tool:
15429 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
15432 The above command is the same as:
15434 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
15438 Make a sliding overlay appearing from the left to the right top part of the
15439 screen starting since time 2:
15441 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
15445 Compose output by putting two input videos side to side:
15447 ffmpeg -i left.avi -i right.avi -filter_complex "
15448 nullsrc=size=200x100 [background];
15449 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
15450 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
15451 [background][left] overlay=shortest=1 [background+left];
15452 [background+left][right] overlay=shortest=1:x=100 [left+right]
15457 Mask 10-20 seconds of a video by applying the delogo filter to a section
15459 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
15460 -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
15465 Chain several overlays in cascade:
15467 nullsrc=s=200x200 [bg];
15468 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
15469 [in0] lutrgb=r=0, [bg] overlay=0:0 [mid0];
15470 [in1] lutrgb=g=0, [mid0] overlay=100:0 [mid1];
15471 [in2] lutrgb=b=0, [mid1] overlay=0:100 [mid2];
15472 [in3] null, [mid2] overlay=100:100 [out0]
15477 @anchor{overlay_cuda}
15478 @section overlay_cuda
15480 Overlay one video on top of another.
15482 This is the CUDA variant of the @ref{overlay} filter.
15483 It only accepts CUDA frames. The underlying input pixel formats have to match.
15485 It takes two inputs and has one output. The first input is the "main"
15486 video on which the second input is overlaid.
15488 It accepts the following parameters:
15493 Set the x and y coordinates of the overlaid video on the main video.
15494 Default value is "0" for both expressions.
15497 See @ref{framesync}.
15500 See @ref{framesync}.
15503 See @ref{framesync}.
15507 This filter also supports the @ref{framesync} options.
15511 Apply Overcomplete Wavelet denoiser.
15513 The filter accepts the following options:
15519 Larger depth values will denoise lower frequency components more, but
15520 slow down filtering.
15522 Must be an int in the range 8-16, default is @code{8}.
15524 @item luma_strength, ls
15527 Must be a double value in the range 0-1000, default is @code{1.0}.
15529 @item chroma_strength, cs
15530 Set chroma strength.
15532 Must be a double value in the range 0-1000, default is @code{1.0}.
15538 Add paddings to the input image, and place the original input at the
15539 provided @var{x}, @var{y} coordinates.
15541 It accepts the following parameters:
15546 Specify an expression for the size of the output image with the
15547 paddings added. If the value for @var{width} or @var{height} is 0, the
15548 corresponding input size is used for the output.
15550 The @var{width} expression can reference the value set by the
15551 @var{height} expression, and vice versa.
15553 The default value of @var{width} and @var{height} is 0.
15557 Specify the offsets to place the input image at within the padded area,
15558 with respect to the top/left border of the output image.
15560 The @var{x} expression can reference the value set by the @var{y}
15561 expression, and vice versa.
15563 The default value of @var{x} and @var{y} is 0.
15565 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
15566 so the input image is centered on the padded area.
15569 Specify the color of the padded area. For the syntax of this option,
15570 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15571 manual,ffmpeg-utils}.
15573 The default value of @var{color} is "black".
15576 Specify when to evaluate @var{width}, @var{height}, @var{x} and @var{y} expression.
15578 It accepts the following values:
15582 Only evaluate expressions once during the filter initialization or when
15583 a command is processed.
15586 Evaluate expressions for each incoming frame.
15590 Default value is @samp{init}.
15593 Pad to aspect instead to a resolution.
15597 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
15598 options are expressions containing the following constants:
15603 The input video width and height.
15607 These are the same as @var{in_w} and @var{in_h}.
15611 The output width and height (the size of the padded area), as
15612 specified by the @var{width} and @var{height} expressions.
15616 These are the same as @var{out_w} and @var{out_h}.
15620 The x and y offsets as specified by the @var{x} and @var{y}
15621 expressions, or NAN if not yet specified.
15624 same as @var{iw} / @var{ih}
15627 input sample aspect ratio
15630 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
15634 The horizontal and vertical chroma subsample values. For example for the
15635 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15638 @subsection Examples
15642 Add paddings with the color "violet" to the input video. The output video
15643 size is 640x480, and the top-left corner of the input video is placed at
15646 pad=640:480:0:40:violet
15649 The example above is equivalent to the following command:
15651 pad=width=640:height=480:x=0:y=40:color=violet
15655 Pad the input to get an output with dimensions increased by 3/2,
15656 and put the input video at the center of the padded area:
15658 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
15662 Pad the input to get a squared output with size equal to the maximum
15663 value between the input width and height, and put the input video at
15664 the center of the padded area:
15666 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15670 Pad the input to get a final w/h ratio of 16:9:
15672 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15676 In case of anamorphic video, in order to set the output display aspect
15677 correctly, it is necessary to use @var{sar} in the expression,
15678 according to the relation:
15680 (ih * X / ih) * sar = output_dar
15681 X = output_dar / sar
15684 Thus the previous example needs to be modified to:
15686 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15690 Double the output size and put the input video in the bottom-right
15691 corner of the output padded area:
15693 pad="2*iw:2*ih:ow-iw:oh-ih"
15697 @anchor{palettegen}
15698 @section palettegen
15700 Generate one palette for a whole video stream.
15702 It accepts the following options:
15706 Set the maximum number of colors to quantize in the palette.
15707 Note: the palette will still contain 256 colors; the unused palette entries
15710 @item reserve_transparent
15711 Create a palette of 255 colors maximum and reserve the last one for
15712 transparency. Reserving the transparency color is useful for GIF optimization.
15713 If not set, the maximum of colors in the palette will be 256. You probably want
15714 to disable this option for a standalone image.
15717 @item transparency_color
15718 Set the color that will be used as background for transparency.
15721 Set statistics mode.
15723 It accepts the following values:
15726 Compute full frame histograms.
15728 Compute histograms only for the part that differs from previous frame. This
15729 might be relevant to give more importance to the moving part of your input if
15730 the background is static.
15732 Compute new histogram for each frame.
15735 Default value is @var{full}.
15738 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15739 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15740 color quantization of the palette. This information is also visible at
15741 @var{info} logging level.
15743 @subsection Examples
15747 Generate a representative palette of a given video using @command{ffmpeg}:
15749 ffmpeg -i input.mkv -vf palettegen palette.png
15753 @section paletteuse
15755 Use a palette to downsample an input video stream.
15757 The filter takes two inputs: one video stream and a palette. The palette must
15758 be a 256 pixels image.
15760 It accepts the following options:
15764 Select dithering mode. Available algorithms are:
15767 Ordered 8x8 bayer dithering (deterministic)
15769 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15770 Note: this dithering is sometimes considered "wrong" and is included as a
15772 @item floyd_steinberg
15773 Floyd and Steingberg dithering (error diffusion)
15775 Frankie Sierra dithering v2 (error diffusion)
15777 Frankie Sierra dithering v2 "Lite" (error diffusion)
15780 Default is @var{sierra2_4a}.
15783 When @var{bayer} dithering is selected, this option defines the scale of the
15784 pattern (how much the crosshatch pattern is visible). A low value means more
15785 visible pattern for less banding, and higher value means less visible pattern
15786 at the cost of more banding.
15788 The option must be an integer value in the range [0,5]. Default is @var{2}.
15791 If set, define the zone to process
15795 Only the changing rectangle will be reprocessed. This is similar to GIF
15796 cropping/offsetting compression mechanism. This option can be useful for speed
15797 if only a part of the image is changing, and has use cases such as limiting the
15798 scope of the error diffusal @option{dither} to the rectangle that bounds the
15799 moving scene (it leads to more deterministic output if the scene doesn't change
15800 much, and as a result less moving noise and better GIF compression).
15803 Default is @var{none}.
15806 Take new palette for each output frame.
15808 @item alpha_threshold
15809 Sets the alpha threshold for transparency. Alpha values above this threshold
15810 will be treated as completely opaque, and values below this threshold will be
15811 treated as completely transparent.
15813 The option must be an integer value in the range [0,255]. Default is @var{128}.
15816 @subsection Examples
15820 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15821 using @command{ffmpeg}:
15823 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15827 @section perspective
15829 Correct perspective of video not recorded perpendicular to the screen.
15831 A description of the accepted parameters follows.
15842 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15843 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15844 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15845 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15846 then the corners of the source will be sent to the specified coordinates.
15848 The expressions can use the following variables:
15853 the width and height of video frame.
15857 Output frame count.
15860 @item interpolation
15861 Set interpolation for perspective correction.
15863 It accepts the following values:
15869 Default value is @samp{linear}.
15872 Set interpretation of coordinate options.
15874 It accepts the following values:
15878 Send point in the source specified by the given coordinates to
15879 the corners of the destination.
15881 @item 1, destination
15883 Send the corners of the source to the point in the destination specified
15884 by the given coordinates.
15886 Default value is @samp{source}.
15890 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15892 It accepts the following values:
15895 only evaluate expressions once during the filter initialization or
15896 when a command is processed
15899 evaluate expressions for each incoming frame
15902 Default value is @samp{init}.
15907 Delay interlaced video by one field time so that the field order changes.
15909 The intended use is to fix PAL movies that have been captured with the
15910 opposite field order to the film-to-video transfer.
15912 A description of the accepted parameters follows.
15918 It accepts the following values:
15921 Capture field order top-first, transfer bottom-first.
15922 Filter will delay the bottom field.
15925 Capture field order bottom-first, transfer top-first.
15926 Filter will delay the top field.
15929 Capture and transfer with the same field order. This mode only exists
15930 for the documentation of the other options to refer to, but if you
15931 actually select it, the filter will faithfully do nothing.
15934 Capture field order determined automatically by field flags, transfer
15936 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15937 basis using field flags. If no field information is available,
15938 then this works just like @samp{u}.
15941 Capture unknown or varying, transfer opposite.
15942 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15943 analyzing the images and selecting the alternative that produces best
15944 match between the fields.
15947 Capture top-first, transfer unknown or varying.
15948 Filter selects among @samp{t} and @samp{p} using image analysis.
15951 Capture bottom-first, transfer unknown or varying.
15952 Filter selects among @samp{b} and @samp{p} using image analysis.
15955 Capture determined by field flags, transfer unknown or varying.
15956 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15957 image analysis. If no field information is available, then this works just
15958 like @samp{U}. This is the default mode.
15961 Both capture and transfer unknown or varying.
15962 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15966 @subsection Commands
15968 This filter supports the all above options as @ref{commands}.
15970 @section photosensitivity
15971 Reduce various flashes in video, so to help users with epilepsy.
15973 It accepts the following options:
15976 Set how many frames to use when filtering. Default is 30.
15979 Set detection threshold factor. Default is 1.
15983 Set how many pixels to skip when sampling frames. Default is 1.
15984 Allowed range is from 1 to 1024.
15987 Leave frames unchanged. Default is disabled.
15990 @section pixdesctest
15992 Pixel format descriptor test filter, mainly useful for internal
15993 testing. The output video should be equal to the input video.
15997 format=monow, pixdesctest
16000 can be used to test the monowhite pixel format descriptor definition.
16004 Display sample values of color channels. Mainly useful for checking color
16005 and levels. Minimum supported resolution is 640x480.
16007 The filters accept the following options:
16011 Set scope X position, relative offset on X axis.
16014 Set scope Y position, relative offset on Y axis.
16023 Set window opacity. This window also holds statistics about pixel area.
16026 Set window X position, relative offset on X axis.
16029 Set window Y position, relative offset on Y axis.
16034 Enable the specified chain of postprocessing subfilters using libpostproc. This
16035 library should be automatically selected with a GPL build (@code{--enable-gpl}).
16036 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
16037 Each subfilter and some options have a short and a long name that can be used
16038 interchangeably, i.e. dr/dering are the same.
16040 The filters accept the following options:
16044 Set postprocessing subfilters string.
16047 All subfilters share common options to determine their scope:
16051 Honor the quality commands for this subfilter.
16054 Do chrominance filtering, too (default).
16057 Do luminance filtering only (no chrominance).
16060 Do chrominance filtering only (no luminance).
16063 These options can be appended after the subfilter name, separated by a '|'.
16065 Available subfilters are:
16068 @item hb/hdeblock[|difference[|flatness]]
16069 Horizontal deblocking filter
16072 Difference factor where higher values mean more deblocking (default: @code{32}).
16074 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16077 @item vb/vdeblock[|difference[|flatness]]
16078 Vertical deblocking filter
16081 Difference factor where higher values mean more deblocking (default: @code{32}).
16083 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16086 @item ha/hadeblock[|difference[|flatness]]
16087 Accurate horizontal deblocking filter
16090 Difference factor where higher values mean more deblocking (default: @code{32}).
16092 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16095 @item va/vadeblock[|difference[|flatness]]
16096 Accurate vertical deblocking filter
16099 Difference factor where higher values mean more deblocking (default: @code{32}).
16101 Flatness threshold where lower values mean more deblocking (default: @code{39}).
16105 The horizontal and vertical deblocking filters share the difference and
16106 flatness values so you cannot set different horizontal and vertical
16110 @item h1/x1hdeblock
16111 Experimental horizontal deblocking filter
16113 @item v1/x1vdeblock
16114 Experimental vertical deblocking filter
16119 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
16122 larger -> stronger filtering
16124 larger -> stronger filtering
16126 larger -> stronger filtering
16129 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
16132 Stretch luminance to @code{0-255}.
16135 @item lb/linblenddeint
16136 Linear blend deinterlacing filter that deinterlaces the given block by
16137 filtering all lines with a @code{(1 2 1)} filter.
16139 @item li/linipoldeint
16140 Linear interpolating deinterlacing filter that deinterlaces the given block by
16141 linearly interpolating every second line.
16143 @item ci/cubicipoldeint
16144 Cubic interpolating deinterlacing filter deinterlaces the given block by
16145 cubically interpolating every second line.
16147 @item md/mediandeint
16148 Median deinterlacing filter that deinterlaces the given block by applying a
16149 median filter to every second line.
16151 @item fd/ffmpegdeint
16152 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
16153 second line with a @code{(-1 4 2 4 -1)} filter.
16156 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
16157 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
16159 @item fq/forceQuant[|quantizer]
16160 Overrides the quantizer table from the input with the constant quantizer you
16168 Default pp filter combination (@code{hb|a,vb|a,dr|a})
16171 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
16174 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
16177 @subsection Examples
16181 Apply horizontal and vertical deblocking, deringing and automatic
16182 brightness/contrast:
16188 Apply default filters without brightness/contrast correction:
16194 Apply default filters and temporal denoiser:
16196 pp=default/tmpnoise|1|2|3
16200 Apply deblocking on luminance only, and switch vertical deblocking on or off
16201 automatically depending on available CPU time:
16208 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
16209 similar to spp = 6 with 7 point DCT, where only the center sample is
16212 The filter accepts the following options:
16216 Force a constant quantization parameter. It accepts an integer in range
16217 0 to 63. If not set, the filter will use the QP from the video stream
16221 Set thresholding mode. Available modes are:
16225 Set hard thresholding.
16227 Set soft thresholding (better de-ringing effect, but likely blurrier).
16229 Set medium thresholding (good results, default).
16233 @section premultiply
16234 Apply alpha premultiply effect to input video stream using first plane
16235 of second stream as alpha.
16237 Both streams must have same dimensions and same pixel format.
16239 The filter accepts the following option:
16243 Set which planes will be processed, unprocessed planes will be copied.
16244 By default value 0xf, all planes will be processed.
16247 Do not require 2nd input for processing, instead use alpha plane from input stream.
16251 Apply prewitt operator to input video stream.
16253 The filter accepts the following option:
16257 Set which planes will be processed, unprocessed planes will be copied.
16258 By default value 0xf, all planes will be processed.
16261 Set value which will be multiplied with filtered result.
16264 Set value which will be added to filtered result.
16267 @subsection Commands
16269 This filter supports the all above options as @ref{commands}.
16271 @section pseudocolor
16273 Alter frame colors in video with pseudocolors.
16275 This filter accepts the following options:
16279 set pixel first component expression
16282 set pixel second component expression
16285 set pixel third component expression
16288 set pixel fourth component expression, corresponds to the alpha component
16291 set component to use as base for altering colors
16294 Pick one of built-in LUTs. By default is set to none.
16310 Each of them specifies the expression to use for computing the lookup table for
16311 the corresponding pixel component values.
16313 The expressions can contain the following constants and functions:
16318 The input width and height.
16321 The input value for the pixel component.
16323 @item ymin, umin, vmin, amin
16324 The minimum allowed component value.
16326 @item ymax, umax, vmax, amax
16327 The maximum allowed component value.
16330 All expressions default to "val".
16332 @subsection Commands
16334 This filter supports the all above options as @ref{commands}.
16336 @subsection Examples
16340 Change too high luma values to gradient:
16342 pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
16348 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
16349 Ratio) between two input videos.
16351 This filter takes in input two input videos, the first input is
16352 considered the "main" source and is passed unchanged to the
16353 output. The second input is used as a "reference" video for computing
16356 Both video inputs must have the same resolution and pixel format for
16357 this filter to work correctly. Also it assumes that both inputs
16358 have the same number of frames, which are compared one by one.
16360 The obtained average PSNR is printed through the logging system.
16362 The filter stores the accumulated MSE (mean squared error) of each
16363 frame, and at the end of the processing it is averaged across all frames
16364 equally, and the following formula is applied to obtain the PSNR:
16367 PSNR = 10*log10(MAX^2/MSE)
16370 Where MAX is the average of the maximum values of each component of the
16373 The description of the accepted parameters follows.
16376 @item stats_file, f
16377 If specified the filter will use the named file to save the PSNR of
16378 each individual frame. When filename equals "-" the data is sent to
16381 @item stats_version
16382 Specifies which version of the stats file format to use. Details of
16383 each format are written below.
16384 Default value is 1.
16386 @item stats_add_max
16387 Determines whether the max value is output to the stats log.
16388 Default value is 0.
16389 Requires stats_version >= 2. If this is set and stats_version < 2,
16390 the filter will return an error.
16393 This filter also supports the @ref{framesync} options.
16395 The file printed if @var{stats_file} is selected, contains a sequence of
16396 key/value pairs of the form @var{key}:@var{value} for each compared
16399 If a @var{stats_version} greater than 1 is specified, a header line precedes
16400 the list of per-frame-pair stats, with key value pairs following the frame
16401 format with the following parameters:
16404 @item psnr_log_version
16405 The version of the log file format. Will match @var{stats_version}.
16408 A comma separated list of the per-frame-pair parameters included in
16412 A description of each shown per-frame-pair parameter follows:
16416 sequential number of the input frame, starting from 1
16419 Mean Square Error pixel-by-pixel average difference of the compared
16420 frames, averaged over all the image components.
16422 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
16423 Mean Square Error pixel-by-pixel average difference of the compared
16424 frames for the component specified by the suffix.
16426 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
16427 Peak Signal to Noise ratio of the compared frames for the component
16428 specified by the suffix.
16430 @item max_avg, max_y, max_u, max_v
16431 Maximum allowed value for each channel, and average over all
16435 @subsection Examples
16440 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16441 [main][ref] psnr="stats_file=stats.log" [out]
16444 On this example the input file being processed is compared with the
16445 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
16446 is stored in @file{stats.log}.
16449 Another example with different containers:
16451 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
16458 Pulldown reversal (inverse telecine) filter, capable of handling mixed
16459 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
16462 The pullup filter is designed to take advantage of future context in making
16463 its decisions. This filter is stateless in the sense that it does not lock
16464 onto a pattern to follow, but it instead looks forward to the following
16465 fields in order to identify matches and rebuild progressive frames.
16467 To produce content with an even framerate, insert the fps filter after
16468 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
16469 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
16471 The filter accepts the following options:
16478 These options set the amount of "junk" to ignore at the left, right, top, and
16479 bottom of the image, respectively. Left and right are in units of 8 pixels,
16480 while top and bottom are in units of 2 lines.
16481 The default is 8 pixels on each side.
16484 Set the strict breaks. Setting this option to 1 will reduce the chances of
16485 filter generating an occasional mismatched frame, but it may also cause an
16486 excessive number of frames to be dropped during high motion sequences.
16487 Conversely, setting it to -1 will make filter match fields more easily.
16488 This may help processing of video where there is slight blurring between
16489 the fields, but may also cause there to be interlaced frames in the output.
16490 Default value is @code{0}.
16493 Set the metric plane to use. It accepts the following values:
16499 Use chroma blue plane.
16502 Use chroma red plane.
16505 This option may be set to use chroma plane instead of the default luma plane
16506 for doing filter's computations. This may improve accuracy on very clean
16507 source material, but more likely will decrease accuracy, especially if there
16508 is chroma noise (rainbow effect) or any grayscale video.
16509 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
16510 load and make pullup usable in realtime on slow machines.
16513 For best results (without duplicated frames in the output file) it is
16514 necessary to change the output frame rate. For example, to inverse
16515 telecine NTSC input:
16517 ffmpeg -i input -vf pullup -r 24000/1001 ...
16522 Change video quantization parameters (QP).
16524 The filter accepts the following option:
16528 Set expression for quantization parameter.
16531 The expression is evaluated through the eval API and can contain, among others,
16532 the following constants:
16536 1 if index is not 129, 0 otherwise.
16539 Sequential index starting from -129 to 128.
16542 @subsection Examples
16546 Some equation like:
16554 Flush video frames from internal cache of frames into a random order.
16555 No frame is discarded.
16556 Inspired by @ref{frei0r} nervous filter.
16560 Set size in number of frames of internal cache, in range from @code{2} to
16561 @code{512}. Default is @code{30}.
16564 Set seed for random number generator, must be an integer included between
16565 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
16566 less than @code{0}, the filter will try to use a good random seed on a
16570 @section readeia608
16572 Read closed captioning (EIA-608) information from the top lines of a video frame.
16574 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
16575 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
16576 with EIA-608 data (starting from 0). A description of each metadata value follows:
16579 @item lavfi.readeia608.X.cc
16580 The two bytes stored as EIA-608 data (printed in hexadecimal).
16582 @item lavfi.readeia608.X.line
16583 The number of the line on which the EIA-608 data was identified and read.
16586 This filter accepts the following options:
16590 Set the line to start scanning for EIA-608 data. Default is @code{0}.
16593 Set the line to end scanning for EIA-608 data. Default is @code{29}.
16596 Set the ratio of width reserved for sync code detection.
16597 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
16600 Enable checking the parity bit. In the event of a parity error, the filter will output
16601 @code{0x00} for that character. Default is false.
16604 Lowpass lines prior to further processing. Default is enabled.
16607 @subsection Commands
16609 This filter supports the all above options as @ref{commands}.
16611 @subsection Examples
16615 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
16617 ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pkt_pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
16623 Read vertical interval timecode (VITC) information from the top lines of a
16626 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
16627 timecode value, if a valid timecode has been detected. Further metadata key
16628 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
16629 timecode data has been found or not.
16631 This filter accepts the following options:
16635 Set the maximum number of lines to scan for VITC data. If the value is set to
16636 @code{-1} the full video frame is scanned. Default is @code{45}.
16639 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
16640 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
16643 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
16644 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
16647 @subsection Examples
16651 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
16652 draw @code{--:--:--:--} as a placeholder:
16654 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
16660 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
16662 Destination pixel at position (X, Y) will be picked from source (x, y) position
16663 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
16664 value for pixel will be used for destination pixel.
16666 Xmap and Ymap input video streams must be of same dimensions. Output video stream
16667 will have Xmap/Ymap video stream dimensions.
16668 Xmap and Ymap input video streams are 16bit depth, single channel.
16672 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
16673 Default is @code{color}.
16676 Specify the color of the unmapped pixels. For the syntax of this option,
16677 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
16678 manual,ffmpeg-utils}. Default color is @code{black}.
16681 @section removegrain
16683 The removegrain filter is a spatial denoiser for progressive video.
16687 Set mode for the first plane.
16690 Set mode for the second plane.
16693 Set mode for the third plane.
16696 Set mode for the fourth plane.
16699 Range of mode is from 0 to 24. Description of each mode follows:
16703 Leave input plane unchanged. Default.
16706 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16709 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16712 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16715 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16716 This is equivalent to a median filter.
16719 Line-sensitive clipping giving the minimal change.
16722 Line-sensitive clipping, intermediate.
16725 Line-sensitive clipping, intermediate.
16728 Line-sensitive clipping, intermediate.
16731 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16734 Replaces the target pixel with the closest neighbour.
16737 [1 2 1] horizontal and vertical kernel blur.
16743 Bob mode, interpolates top field from the line where the neighbours
16744 pixels are the closest.
16747 Bob mode, interpolates bottom field from the line where the neighbours
16748 pixels are the closest.
16751 Bob mode, interpolates top field. Same as 13 but with a more complicated
16752 interpolation formula.
16755 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16756 interpolation formula.
16759 Clips the pixel with the minimum and maximum of respectively the maximum and
16760 minimum of each pair of opposite neighbour pixels.
16763 Line-sensitive clipping using opposite neighbours whose greatest distance from
16764 the current pixel is minimal.
16767 Replaces the pixel with the average of its 8 neighbours.
16770 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16773 Clips pixels using the averages of opposite neighbour.
16776 Same as mode 21 but simpler and faster.
16779 Small edge and halo removal, but reputed useless.
16785 @section removelogo
16787 Suppress a TV station logo, using an image file to determine which
16788 pixels comprise the logo. It works by filling in the pixels that
16789 comprise the logo with neighboring pixels.
16791 The filter accepts the following options:
16795 Set the filter bitmap file, which can be any image format supported by
16796 libavformat. The width and height of the image file must match those of the
16797 video stream being processed.
16800 Pixels in the provided bitmap image with a value of zero are not
16801 considered part of the logo, non-zero pixels are considered part of
16802 the logo. If you use white (255) for the logo and black (0) for the
16803 rest, you will be safe. For making the filter bitmap, it is
16804 recommended to take a screen capture of a black frame with the logo
16805 visible, and then using a threshold filter followed by the erode
16806 filter once or twice.
16808 If needed, little splotches can be fixed manually. Remember that if
16809 logo pixels are not covered, the filter quality will be much
16810 reduced. Marking too many pixels as part of the logo does not hurt as
16811 much, but it will increase the amount of blurring needed to cover over
16812 the image and will destroy more information than necessary, and extra
16813 pixels will slow things down on a large logo.
16815 @section repeatfields
16817 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16818 fields based on its value.
16822 Reverse a video clip.
16824 Warning: This filter requires memory to buffer the entire clip, so trimming
16827 @subsection Examples
16831 Take the first 5 seconds of a clip, and reverse it.
16838 Shift R/G/B/A pixels horizontally and/or vertically.
16840 The filter accepts the following options:
16843 Set amount to shift red horizontally.
16845 Set amount to shift red vertically.
16847 Set amount to shift green horizontally.
16849 Set amount to shift green vertically.
16851 Set amount to shift blue horizontally.
16853 Set amount to shift blue vertically.
16855 Set amount to shift alpha horizontally.
16857 Set amount to shift alpha vertically.
16859 Set edge mode, can be @var{smear}, default, or @var{warp}.
16862 @subsection Commands
16864 This filter supports the all above options as @ref{commands}.
16867 Apply roberts cross operator to input video stream.
16869 The filter accepts the following option:
16873 Set which planes will be processed, unprocessed planes will be copied.
16874 By default value 0xf, all planes will be processed.
16877 Set value which will be multiplied with filtered result.
16880 Set value which will be added to filtered result.
16883 @subsection Commands
16885 This filter supports the all above options as @ref{commands}.
16889 Rotate video by an arbitrary angle expressed in radians.
16891 The filter accepts the following options:
16893 A description of the optional parameters follows.
16896 Set an expression for the angle by which to rotate the input video
16897 clockwise, expressed as a number of radians. A negative value will
16898 result in a counter-clockwise rotation. By default it is set to "0".
16900 This expression is evaluated for each frame.
16903 Set the output width expression, default value is "iw".
16904 This expression is evaluated just once during configuration.
16907 Set the output height expression, default value is "ih".
16908 This expression is evaluated just once during configuration.
16911 Enable bilinear interpolation if set to 1, a value of 0 disables
16912 it. Default value is 1.
16915 Set the color used to fill the output area not covered by the rotated
16916 image. For the general syntax of this option, check the
16917 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16918 If the special value "none" is selected then no
16919 background is printed (useful for example if the background is never shown).
16921 Default value is "black".
16924 The expressions for the angle and the output size can contain the
16925 following constants and functions:
16929 sequential number of the input frame, starting from 0. It is always NAN
16930 before the first frame is filtered.
16933 time in seconds of the input frame, it is set to 0 when the filter is
16934 configured. It is always NAN before the first frame is filtered.
16938 horizontal and vertical chroma subsample values. For example for the
16939 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16943 the input video width and height
16947 the output width and height, that is the size of the padded area as
16948 specified by the @var{width} and @var{height} expressions
16952 the minimal width/height required for completely containing the input
16953 video rotated by @var{a} radians.
16955 These are only available when computing the @option{out_w} and
16956 @option{out_h} expressions.
16959 @subsection Examples
16963 Rotate the input by PI/6 radians clockwise:
16969 Rotate the input by PI/6 radians counter-clockwise:
16975 Rotate the input by 45 degrees clockwise:
16981 Apply a constant rotation with period T, starting from an angle of PI/3:
16983 rotate=PI/3+2*PI*t/T
16987 Make the input video rotation oscillating with a period of T
16988 seconds and an amplitude of A radians:
16990 rotate=A*sin(2*PI/T*t)
16994 Rotate the video, output size is chosen so that the whole rotating
16995 input video is always completely contained in the output:
16997 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
17001 Rotate the video, reduce the output size so that no background is ever
17004 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
17008 @subsection Commands
17010 The filter supports the following commands:
17014 Set the angle expression.
17015 The command accepts the same syntax of the corresponding option.
17017 If the specified expression is not valid, it is kept at its current
17023 Apply Shape Adaptive Blur.
17025 The filter accepts the following options:
17028 @item luma_radius, lr
17029 Set luma blur filter strength, must be a value in range 0.1-4.0, default
17030 value is 1.0. A greater value will result in a more blurred image, and
17031 in slower processing.
17033 @item luma_pre_filter_radius, lpfr
17034 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
17037 @item luma_strength, ls
17038 Set luma maximum difference between pixels to still be considered, must
17039 be a value in the 0.1-100.0 range, default value is 1.0.
17041 @item chroma_radius, cr
17042 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
17043 greater value will result in a more blurred image, and in slower
17046 @item chroma_pre_filter_radius, cpfr
17047 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
17049 @item chroma_strength, cs
17050 Set chroma maximum difference between pixels to still be considered,
17051 must be a value in the -0.9-100.0 range.
17054 Each chroma option value, if not explicitly specified, is set to the
17055 corresponding luma option value.
17060 Scale (resize) the input video, using the libswscale library.
17062 The scale filter forces the output display aspect ratio to be the same
17063 of the input, by changing the output sample aspect ratio.
17065 If the input image format is different from the format requested by
17066 the next filter, the scale filter will convert the input to the
17069 @subsection Options
17070 The filter accepts the following options, or any of the options
17071 supported by the libswscale scaler.
17073 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
17074 the complete list of scaler options.
17079 Set the output video dimension expression. Default value is the input
17082 If the @var{width} or @var{w} value is 0, the input width is used for
17083 the output. If the @var{height} or @var{h} value is 0, the input height
17084 is used for the output.
17086 If one and only one of the values is -n with n >= 1, the scale filter
17087 will use a value that maintains the aspect ratio of the input image,
17088 calculated from the other specified dimension. After that it will,
17089 however, make sure that the calculated dimension is divisible by n and
17090 adjust the value if necessary.
17092 If both values are -n with n >= 1, the behavior will be identical to
17093 both values being set to 0 as previously detailed.
17095 See below for the list of accepted constants for use in the dimension
17099 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
17103 Only evaluate expressions once during the filter initialization or when a command is processed.
17106 Evaluate expressions for each incoming frame.
17110 Default value is @samp{init}.
17114 Set the interlacing mode. It accepts the following values:
17118 Force interlaced aware scaling.
17121 Do not apply interlaced scaling.
17124 Select interlaced aware scaling depending on whether the source frames
17125 are flagged as interlaced or not.
17128 Default value is @samp{0}.
17131 Set libswscale scaling flags. See
17132 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
17133 complete list of values. If not explicitly specified the filter applies
17137 @item param0, param1
17138 Set libswscale input parameters for scaling algorithms that need them. See
17139 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
17140 complete documentation. If not explicitly specified the filter applies
17146 Set the video size. For the syntax of this option, check the
17147 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17149 @item in_color_matrix
17150 @item out_color_matrix
17151 Set in/output YCbCr color space type.
17153 This allows the autodetected value to be overridden as well as allows forcing
17154 a specific value used for the output and encoder.
17156 If not specified, the color space type depends on the pixel format.
17162 Choose automatically.
17165 Format conforming to International Telecommunication Union (ITU)
17166 Recommendation BT.709.
17169 Set color space conforming to the United States Federal Communications
17170 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
17175 Set color space conforming to:
17179 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
17182 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
17185 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
17190 Set color space conforming to SMPTE ST 240:1999.
17193 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
17198 Set in/output YCbCr sample range.
17200 This allows the autodetected value to be overridden as well as allows forcing
17201 a specific value used for the output and encoder. If not specified, the
17202 range depends on the pixel format. Possible values:
17206 Choose automatically.
17209 Set full range (0-255 in case of 8-bit luma).
17211 @item mpeg/limited/tv
17212 Set "MPEG" range (16-235 in case of 8-bit luma).
17215 @item force_original_aspect_ratio
17216 Enable decreasing or increasing output video width or height if necessary to
17217 keep the original aspect ratio. Possible values:
17221 Scale the video as specified and disable this feature.
17224 The output video dimensions will automatically be decreased if needed.
17227 The output video dimensions will automatically be increased if needed.
17231 One useful instance of this option is that when you know a specific device's
17232 maximum allowed resolution, you can use this to limit the output video to
17233 that, while retaining the aspect ratio. For example, device A allows
17234 1280x720 playback, and your video is 1920x800. Using this option (set it to
17235 decrease) and specifying 1280x720 to the command line makes the output
17238 Please note that this is a different thing than specifying -1 for @option{w}
17239 or @option{h}, you still need to specify the output resolution for this option
17242 @item force_divisible_by
17243 Ensures that both the output dimensions, width and height, are divisible by the
17244 given integer when used together with @option{force_original_aspect_ratio}. This
17245 works similar to using @code{-n} in the @option{w} and @option{h} options.
17247 This option respects the value set for @option{force_original_aspect_ratio},
17248 increasing or decreasing the resolution accordingly. The video's aspect ratio
17249 may be slightly modified.
17251 This option can be handy if you need to have a video fit within or exceed
17252 a defined resolution using @option{force_original_aspect_ratio} but also have
17253 encoder restrictions on width or height divisibility.
17257 The values of the @option{w} and @option{h} options are expressions
17258 containing the following constants:
17263 The input width and height
17267 These are the same as @var{in_w} and @var{in_h}.
17271 The output (scaled) width and height
17275 These are the same as @var{out_w} and @var{out_h}
17278 The same as @var{iw} / @var{ih}
17281 input sample aspect ratio
17284 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17288 horizontal and vertical input chroma subsample values. For example for the
17289 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17293 horizontal and vertical output chroma subsample values. For example for the
17294 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17297 The (sequential) number of the input frame, starting from 0.
17298 Only available with @code{eval=frame}.
17301 The presentation timestamp of the input frame, expressed as a number of
17302 seconds. Only available with @code{eval=frame}.
17305 The position (byte offset) of the frame in the input stream, or NaN if
17306 this information is unavailable and/or meaningless (for example in case of synthetic video).
17307 Only available with @code{eval=frame}.
17310 @subsection Examples
17314 Scale the input video to a size of 200x100
17319 This is equivalent to:
17330 Specify a size abbreviation for the output size:
17335 which can also be written as:
17341 Scale the input to 2x:
17343 scale=w=2*iw:h=2*ih
17347 The above is the same as:
17349 scale=2*in_w:2*in_h
17353 Scale the input to 2x with forced interlaced scaling:
17355 scale=2*iw:2*ih:interl=1
17359 Scale the input to half size:
17361 scale=w=iw/2:h=ih/2
17365 Increase the width, and set the height to the same size:
17371 Seek Greek harmony:
17378 Increase the height, and set the width to 3/2 of the height:
17380 scale=w=3/2*oh:h=3/5*ih
17384 Increase the size, making the size a multiple of the chroma
17387 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
17391 Increase the width to a maximum of 500 pixels,
17392 keeping the same aspect ratio as the input:
17394 scale=w='min(500\, iw*3/2):h=-1'
17398 Make pixels square by combining scale and setsar:
17400 scale='trunc(ih*dar):ih',setsar=1/1
17404 Make pixels square by combining scale and setsar,
17405 making sure the resulting resolution is even (required by some codecs):
17407 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
17411 @subsection Commands
17413 This filter supports the following commands:
17417 Set the output video dimension expression.
17418 The command accepts the same syntax of the corresponding option.
17420 If the specified expression is not valid, it is kept at its current
17426 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
17427 format conversion on CUDA video frames. Setting the output width and height
17428 works in the same way as for the @var{scale} filter.
17430 The following additional options are accepted:
17433 The pixel format of the output CUDA frames. If set to the string "same" (the
17434 default), the input format will be kept. Note that automatic format negotiation
17435 and conversion is not yet supported for hardware frames
17438 The interpolation algorithm used for resizing. One of the following:
17445 @item cubic2p_bspline
17446 2-parameter cubic (B=1, C=0)
17448 @item cubic2p_catmullrom
17449 2-parameter cubic (B=0, C=1/2)
17451 @item cubic2p_b05c03
17452 2-parameter cubic (B=1/2, C=3/10)
17460 @item force_original_aspect_ratio
17461 Enable decreasing or increasing output video width or height if necessary to
17462 keep the original aspect ratio. Possible values:
17466 Scale the video as specified and disable this feature.
17469 The output video dimensions will automatically be decreased if needed.
17472 The output video dimensions will automatically be increased if needed.
17476 One useful instance of this option is that when you know a specific device's
17477 maximum allowed resolution, you can use this to limit the output video to
17478 that, while retaining the aspect ratio. For example, device A allows
17479 1280x720 playback, and your video is 1920x800. Using this option (set it to
17480 decrease) and specifying 1280x720 to the command line makes the output
17483 Please note that this is a different thing than specifying -1 for @option{w}
17484 or @option{h}, you still need to specify the output resolution for this option
17487 @item force_divisible_by
17488 Ensures that both the output dimensions, width and height, are divisible by the
17489 given integer when used together with @option{force_original_aspect_ratio}. This
17490 works similar to using @code{-n} in the @option{w} and @option{h} options.
17492 This option respects the value set for @option{force_original_aspect_ratio},
17493 increasing or decreasing the resolution accordingly. The video's aspect ratio
17494 may be slightly modified.
17496 This option can be handy if you need to have a video fit within or exceed
17497 a defined resolution using @option{force_original_aspect_ratio} but also have
17498 encoder restrictions on width or height divisibility.
17504 Scale (resize) the input video, based on a reference video.
17506 See the scale filter for available options, scale2ref supports the same but
17507 uses the reference video instead of the main input as basis. scale2ref also
17508 supports the following additional constants for the @option{w} and
17509 @option{h} options:
17514 The main input video's width and height
17517 The same as @var{main_w} / @var{main_h}
17520 The main input video's sample aspect ratio
17522 @item main_dar, mdar
17523 The main input video's display aspect ratio. Calculated from
17524 @code{(main_w / main_h) * main_sar}.
17528 The main input video's horizontal and vertical chroma subsample values.
17529 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
17533 The (sequential) number of the main input frame, starting from 0.
17534 Only available with @code{eval=frame}.
17537 The presentation timestamp of the main input frame, expressed as a number of
17538 seconds. Only available with @code{eval=frame}.
17541 The position (byte offset) of the frame in the main input stream, or NaN if
17542 this information is unavailable and/or meaningless (for example in case of synthetic video).
17543 Only available with @code{eval=frame}.
17546 @subsection Examples
17550 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
17552 'scale2ref[b][a];[a][b]overlay'
17556 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
17558 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
17562 @subsection Commands
17564 This filter supports the following commands:
17568 Set the output video dimension expression.
17569 The command accepts the same syntax of the corresponding option.
17571 If the specified expression is not valid, it is kept at its current
17576 Scroll input video horizontally and/or vertically by constant speed.
17578 The filter accepts the following options:
17580 @item horizontal, h
17581 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
17582 Negative values changes scrolling direction.
17585 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
17586 Negative values changes scrolling direction.
17589 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
17592 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
17595 @subsection Commands
17597 This filter supports the following @ref{commands}:
17599 @item horizontal, h
17600 Set the horizontal scrolling speed.
17602 Set the vertical scrolling speed.
17608 Detect video scene change.
17610 This filter sets frame metadata with mafd between frame, the scene score, and
17611 forward the frame to the next filter, so they can use these metadata to detect
17612 scene change or others.
17614 In addition, this filter logs a message and sets frame metadata when it detects
17615 a scene change by @option{threshold}.
17617 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
17619 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
17620 to detect scene change.
17622 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
17623 detect scene change with @option{threshold}.
17625 The filter accepts the following options:
17629 Set the scene change detection threshold as a percentage of maximum change. Good
17630 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
17633 Default value is @code{10.}.
17636 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
17637 You can enable it if you want to get snapshot of scene change frames only.
17640 @anchor{selectivecolor}
17641 @section selectivecolor
17643 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
17644 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
17645 by the "purity" of the color (that is, how saturated it already is).
17647 This filter is similar to the Adobe Photoshop Selective Color tool.
17649 The filter accepts the following options:
17652 @item correction_method
17653 Select color correction method.
17655 Available values are:
17658 Specified adjustments are applied "as-is" (added/subtracted to original pixel
17661 Specified adjustments are relative to the original component value.
17663 Default is @code{absolute}.
17665 Adjustments for red pixels (pixels where the red component is the maximum)
17667 Adjustments for yellow pixels (pixels where the blue component is the minimum)
17669 Adjustments for green pixels (pixels where the green component is the maximum)
17671 Adjustments for cyan pixels (pixels where the red component is the minimum)
17673 Adjustments for blue pixels (pixels where the blue component is the maximum)
17675 Adjustments for magenta pixels (pixels where the green component is the minimum)
17677 Adjustments for white pixels (pixels where all components are greater than 128)
17679 Adjustments for all pixels except pure black and pure white
17681 Adjustments for black pixels (pixels where all components are lesser than 128)
17683 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
17686 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
17687 4 space separated floating point adjustment values in the [-1,1] range,
17688 respectively to adjust the amount of cyan, magenta, yellow and black for the
17689 pixels of its range.
17691 @subsection Examples
17695 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
17696 increase magenta by 27% in blue areas:
17698 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17702 Use a Photoshop selective color preset:
17704 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17708 @anchor{separatefields}
17709 @section separatefields
17711 The @code{separatefields} takes a frame-based video input and splits
17712 each frame into its components fields, producing a new half height clip
17713 with twice the frame rate and twice the frame count.
17715 This filter use field-dominance information in frame to decide which
17716 of each pair of fields to place first in the output.
17717 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17719 @section setdar, setsar
17721 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17724 This is done by changing the specified Sample (aka Pixel) Aspect
17725 Ratio, according to the following equation:
17727 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17730 Keep in mind that the @code{setdar} filter does not modify the pixel
17731 dimensions of the video frame. Also, the display aspect ratio set by
17732 this filter may be changed by later filters in the filterchain,
17733 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17736 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17737 the filter output video.
17739 Note that as a consequence of the application of this filter, the
17740 output display aspect ratio will change according to the equation
17743 Keep in mind that the sample aspect ratio set by the @code{setsar}
17744 filter may be changed by later filters in the filterchain, e.g. if
17745 another "setsar" or a "setdar" filter is applied.
17747 It accepts the following parameters:
17750 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17751 Set the aspect ratio used by the filter.
17753 The parameter can be a floating point number string, an expression, or
17754 a string of the form @var{num}:@var{den}, where @var{num} and
17755 @var{den} are the numerator and denominator of the aspect ratio. If
17756 the parameter is not specified, it is assumed the value "0".
17757 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17761 Set the maximum integer value to use for expressing numerator and
17762 denominator when reducing the expressed aspect ratio to a rational.
17763 Default value is @code{100}.
17767 The parameter @var{sar} is an expression containing
17768 the following constants:
17772 These are approximated values for the mathematical constants e
17773 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17776 The input width and height.
17779 These are the same as @var{w} / @var{h}.
17782 The input sample aspect ratio.
17785 The input display aspect ratio. It is the same as
17786 (@var{w} / @var{h}) * @var{sar}.
17789 Horizontal and vertical chroma subsample values. For example, for the
17790 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17793 @subsection Examples
17798 To change the display aspect ratio to 16:9, specify one of the following:
17805 To change the sample aspect ratio to 10:11, specify:
17811 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17812 1000 in the aspect ratio reduction, use the command:
17814 setdar=ratio=16/9:max=1000
17822 Force field for the output video frame.
17824 The @code{setfield} filter marks the interlace type field for the
17825 output frames. It does not change the input frame, but only sets the
17826 corresponding property, which affects how the frame is treated by
17827 following filters (e.g. @code{fieldorder} or @code{yadif}).
17829 The filter accepts the following options:
17834 Available values are:
17838 Keep the same field property.
17841 Mark the frame as bottom-field-first.
17844 Mark the frame as top-field-first.
17847 Mark the frame as progressive.
17854 Force frame parameter for the output video frame.
17856 The @code{setparams} filter marks interlace and color range for the
17857 output frames. It does not change the input frame, but only sets the
17858 corresponding property, which affects how the frame is treated by
17863 Available values are:
17867 Keep the same field property (default).
17870 Mark the frame as bottom-field-first.
17873 Mark the frame as top-field-first.
17876 Mark the frame as progressive.
17880 Available values are:
17884 Keep the same color range property (default).
17886 @item unspecified, unknown
17887 Mark the frame as unspecified color range.
17889 @item limited, tv, mpeg
17890 Mark the frame as limited range.
17892 @item full, pc, jpeg
17893 Mark the frame as full range.
17896 @item color_primaries
17897 Set the color primaries.
17898 Available values are:
17902 Keep the same color primaries property (default).
17919 Set the color transfer.
17920 Available values are:
17924 Keep the same color trc property (default).
17946 Set the colorspace.
17947 Available values are:
17951 Keep the same colorspace property (default).
17964 @item chroma-derived-nc
17965 @item chroma-derived-c
17971 Apply shear transform to input video.
17973 This filter supports the following options:
17977 Shear factor in X-direction. Default value is 0.
17978 Allowed range is from -2 to 2.
17981 Shear factor in Y-direction. Default value is 0.
17982 Allowed range is from -2 to 2.
17985 Set the color used to fill the output area not covered by the transformed
17986 video. For the general syntax of this option, check the
17987 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17988 If the special value "none" is selected then no
17989 background is printed (useful for example if the background is never shown).
17991 Default value is "black".
17994 Set interpolation type. Can be @code{bilinear} or @code{nearest}. Default is @code{bilinear}.
17997 @subsection Commands
17999 This filter supports the all above options as @ref{commands}.
18003 Show a line containing various information for each input video frame.
18004 The input video is not modified.
18006 This filter supports the following options:
18010 Calculate checksums of each plane. By default enabled.
18013 The shown line contains a sequence of key/value pairs of the form
18014 @var{key}:@var{value}.
18016 The following values are shown in the output:
18020 The (sequential) number of the input frame, starting from 0.
18023 The Presentation TimeStamp of the input frame, expressed as a number of
18024 time base units. The time base unit depends on the filter input pad.
18027 The Presentation TimeStamp of the input frame, expressed as a number of
18031 The position of the frame in the input stream, or -1 if this information is
18032 unavailable and/or meaningless (for example in case of synthetic video).
18035 The pixel format name.
18038 The sample aspect ratio of the input frame, expressed in the form
18039 @var{num}/@var{den}.
18042 The size of the input frame. For the syntax of this option, check the
18043 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18046 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
18047 for bottom field first).
18050 This is 1 if the frame is a key frame, 0 otherwise.
18053 The picture type of the input frame ("I" for an I-frame, "P" for a
18054 P-frame, "B" for a B-frame, or "?" for an unknown type).
18055 Also refer to the documentation of the @code{AVPictureType} enum and of
18056 the @code{av_get_picture_type_char} function defined in
18057 @file{libavutil/avutil.h}.
18060 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
18062 @item plane_checksum
18063 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
18064 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
18067 The mean value of pixels in each plane of the input frame, expressed in the form
18068 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
18071 The standard deviation of pixel values in each plane of the input frame, expressed
18072 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
18076 @section showpalette
18078 Displays the 256 colors palette of each frame. This filter is only relevant for
18079 @var{pal8} pixel format frames.
18081 It accepts the following option:
18085 Set the size of the box used to represent one palette color entry. Default is
18086 @code{30} (for a @code{30x30} pixel box).
18089 @section shuffleframes
18091 Reorder and/or duplicate and/or drop video frames.
18093 It accepts the following parameters:
18097 Set the destination indexes of input frames.
18098 This is space or '|' separated list of indexes that maps input frames to output
18099 frames. Number of indexes also sets maximal value that each index may have.
18100 '-1' index have special meaning and that is to drop frame.
18103 The first frame has the index 0. The default is to keep the input unchanged.
18105 @subsection Examples
18109 Swap second and third frame of every three frames of the input:
18111 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
18115 Swap 10th and 1st frame of every ten frames of the input:
18117 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
18121 @section shufflepixels
18123 Reorder pixels in video frames.
18125 This filter accepts the following options:
18129 Set shuffle direction. Can be forward or inverse direction.
18130 Default direction is forward.
18133 Set shuffle mode. Can be horizontal, vertical or block mode.
18137 Set shuffle block_size. In case of horizontal shuffle mode only width
18138 part of size is used, and in case of vertical shuffle mode only height
18139 part of size is used.
18142 Set random seed used with shuffling pixels. Mainly useful to set to be able
18143 to reverse filtering process to get original input.
18144 For example, to reverse forward shuffle you need to use same parameters
18145 and exact same seed and to set direction to inverse.
18148 @section shuffleplanes
18150 Reorder and/or duplicate video planes.
18152 It accepts the following parameters:
18157 The index of the input plane to be used as the first output plane.
18160 The index of the input plane to be used as the second output plane.
18163 The index of the input plane to be used as the third output plane.
18166 The index of the input plane to be used as the fourth output plane.
18170 The first plane has the index 0. The default is to keep the input unchanged.
18172 @subsection Examples
18176 Swap the second and third planes of the input:
18178 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
18182 @anchor{signalstats}
18183 @section signalstats
18184 Evaluate various visual metrics that assist in determining issues associated
18185 with the digitization of analog video media.
18187 By default the filter will log these metadata values:
18191 Display the minimal Y value contained within the input frame. Expressed in
18195 Display the Y value at the 10% percentile within the input frame. Expressed in
18199 Display the average Y value within the input frame. Expressed in range of
18203 Display the Y value at the 90% percentile within the input frame. Expressed in
18207 Display the maximum Y value contained within the input frame. Expressed in
18211 Display the minimal U value contained within the input frame. Expressed in
18215 Display the U value at the 10% percentile within the input frame. Expressed in
18219 Display the average U value within the input frame. Expressed in range of
18223 Display the U value at the 90% percentile within the input frame. Expressed in
18227 Display the maximum U value contained within the input frame. Expressed in
18231 Display the minimal V value contained within the input frame. Expressed in
18235 Display the V value at the 10% percentile within the input frame. Expressed in
18239 Display the average V value within the input frame. Expressed in range of
18243 Display the V value at the 90% percentile within the input frame. Expressed in
18247 Display the maximum V value contained within the input frame. Expressed in
18251 Display the minimal saturation value contained within the input frame.
18252 Expressed in range of [0-~181.02].
18255 Display the saturation value at the 10% percentile within the input frame.
18256 Expressed in range of [0-~181.02].
18259 Display the average saturation value within the input frame. Expressed in range
18263 Display the saturation value at the 90% percentile within the input frame.
18264 Expressed in range of [0-~181.02].
18267 Display the maximum saturation value contained within the input frame.
18268 Expressed in range of [0-~181.02].
18271 Display the median value for hue within the input frame. Expressed in range of
18275 Display the average value for hue within the input frame. Expressed in range of
18279 Display the average of sample value difference between all values of the Y
18280 plane in the current frame and corresponding values of the previous input frame.
18281 Expressed in range of [0-255].
18284 Display the average of sample value difference between all values of the U
18285 plane in the current frame and corresponding values of the previous input frame.
18286 Expressed in range of [0-255].
18289 Display the average of sample value difference between all values of the V
18290 plane in the current frame and corresponding values of the previous input frame.
18291 Expressed in range of [0-255].
18294 Display bit depth of Y plane in current frame.
18295 Expressed in range of [0-16].
18298 Display bit depth of U plane in current frame.
18299 Expressed in range of [0-16].
18302 Display bit depth of V plane in current frame.
18303 Expressed in range of [0-16].
18306 The filter accepts the following options:
18312 @option{stat} specify an additional form of image analysis.
18313 @option{out} output video with the specified type of pixel highlighted.
18315 Both options accept the following values:
18319 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
18320 unlike the neighboring pixels of the same field. Examples of temporal outliers
18321 include the results of video dropouts, head clogs, or tape tracking issues.
18324 Identify @var{vertical line repetition}. Vertical line repetition includes
18325 similar rows of pixels within a frame. In born-digital video vertical line
18326 repetition is common, but this pattern is uncommon in video digitized from an
18327 analog source. When it occurs in video that results from the digitization of an
18328 analog source it can indicate concealment from a dropout compensator.
18331 Identify pixels that fall outside of legal broadcast range.
18335 Set the highlight color for the @option{out} option. The default color is
18339 @subsection Examples
18343 Output data of various video metrics:
18345 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
18349 Output specific data about the minimum and maximum values of the Y plane per frame:
18351 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
18355 Playback video while highlighting pixels that are outside of broadcast range in red.
18357 ffplay example.mov -vf signalstats="out=brng:color=red"
18361 Playback video with signalstats metadata drawn over the frame.
18363 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
18366 The contents of signalstat_drawtext.txt used in the command are:
18369 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
18370 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
18371 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
18372 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
18380 Calculates the MPEG-7 Video Signature. The filter can handle more than one
18381 input. In this case the matching between the inputs can be calculated additionally.
18382 The filter always passes through the first input. The signature of each stream can
18383 be written into a file.
18385 It accepts the following options:
18389 Enable or disable the matching process.
18391 Available values are:
18395 Disable the calculation of a matching (default).
18397 Calculate the matching for the whole video and output whether the whole video
18398 matches or only parts.
18400 Calculate only until a matching is found or the video ends. Should be faster in
18405 Set the number of inputs. The option value must be a non negative integer.
18406 Default value is 1.
18409 Set the path to which the output is written. If there is more than one input,
18410 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
18411 integer), that will be replaced with the input number. If no filename is
18412 specified, no output will be written. This is the default.
18415 Choose the output format.
18417 Available values are:
18421 Use the specified binary representation (default).
18423 Use the specified xml representation.
18427 Set threshold to detect one word as similar. The option value must be an integer
18428 greater than zero. The default value is 9000.
18431 Set threshold to detect all words as similar. The option value must be an integer
18432 greater than zero. The default value is 60000.
18435 Set threshold to detect frames as similar. The option value must be an integer
18436 greater than zero. The default value is 116.
18439 Set the minimum length of a sequence in frames to recognize it as matching
18440 sequence. The option value must be a non negative integer value.
18441 The default value is 0.
18444 Set the minimum relation, that matching frames to all frames must have.
18445 The option value must be a double value between 0 and 1. The default value is 0.5.
18448 @subsection Examples
18452 To calculate the signature of an input video and store it in signature.bin:
18454 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
18458 To detect whether two videos match and store the signatures in XML format in
18459 signature0.xml and signature1.xml:
18461 ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
18469 Blur the input video without impacting the outlines.
18471 It accepts the following options:
18474 @item luma_radius, lr
18475 Set the luma radius. The option value must be a float number in
18476 the range [0.1,5.0] that specifies the variance of the gaussian filter
18477 used to blur the image (slower if larger). Default value is 1.0.
18479 @item luma_strength, ls
18480 Set the luma strength. The option value must be a float number
18481 in the range [-1.0,1.0] that configures the blurring. A value included
18482 in [0.0,1.0] will blur the image whereas a value included in
18483 [-1.0,0.0] will sharpen the image. Default value is 1.0.
18485 @item luma_threshold, lt
18486 Set the luma threshold used as a coefficient to determine
18487 whether a pixel should be blurred or not. The option value must be an
18488 integer in the range [-30,30]. A value of 0 will filter all the image,
18489 a value included in [0,30] will filter flat areas and a value included
18490 in [-30,0] will filter edges. Default value is 0.
18492 @item chroma_radius, cr
18493 Set the chroma radius. The option value must be a float number in
18494 the range [0.1,5.0] that specifies the variance of the gaussian filter
18495 used to blur the image (slower if larger). Default value is @option{luma_radius}.
18497 @item chroma_strength, cs
18498 Set the chroma strength. The option value must be a float number
18499 in the range [-1.0,1.0] that configures the blurring. A value included
18500 in [0.0,1.0] will blur the image whereas a value included in
18501 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
18503 @item chroma_threshold, ct
18504 Set the chroma threshold used as a coefficient to determine
18505 whether a pixel should be blurred or not. The option value must be an
18506 integer in the range [-30,30]. A value of 0 will filter all the image,
18507 a value included in [0,30] will filter flat areas and a value included
18508 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
18511 If a chroma option is not explicitly set, the corresponding luma value
18515 Apply sobel operator to input video stream.
18517 The filter accepts the following option:
18521 Set which planes will be processed, unprocessed planes will be copied.
18522 By default value 0xf, all planes will be processed.
18525 Set value which will be multiplied with filtered result.
18528 Set value which will be added to filtered result.
18531 @subsection Commands
18533 This filter supports the all above options as @ref{commands}.
18538 Apply a simple postprocessing filter that compresses and decompresses the image
18539 at several (or - in the case of @option{quality} level @code{6} - all) shifts
18540 and average the results.
18542 The filter accepts the following options:
18546 Set quality. This option defines the number of levels for averaging. It accepts
18547 an integer in the range 0-6. If set to @code{0}, the filter will have no
18548 effect. A value of @code{6} means the higher quality. For each increment of
18549 that value the speed drops by a factor of approximately 2. Default value is
18553 Force a constant quantization parameter. If not set, the filter will use the QP
18554 from the video stream (if available).
18557 Set thresholding mode. Available modes are:
18561 Set hard thresholding (default).
18563 Set soft thresholding (better de-ringing effect, but likely blurrier).
18566 @item use_bframe_qp
18567 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
18568 option may cause flicker since the B-Frames have often larger QP. Default is
18569 @code{0} (not enabled).
18572 @subsection Commands
18574 This filter supports the following commands:
18576 @item quality, level
18577 Set quality level. The value @code{max} can be used to set the maximum level,
18578 currently @code{6}.
18584 Scale the input by applying one of the super-resolution methods based on
18585 convolutional neural networks. Supported models:
18589 Super-Resolution Convolutional Neural Network model (SRCNN).
18590 See @url{https://arxiv.org/abs/1501.00092}.
18593 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
18594 See @url{https://arxiv.org/abs/1609.05158}.
18597 Training scripts as well as scripts for model file (.pb) saving can be found at
18598 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
18599 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
18601 Native model files (.model) can be generated from TensorFlow model
18602 files (.pb) by using tools/python/convert.py
18604 The filter accepts the following options:
18608 Specify which DNN backend to use for model loading and execution. This option accepts
18609 the following values:
18613 Native implementation of DNN loading and execution.
18616 TensorFlow backend. To enable this backend you
18617 need to install the TensorFlow for C library (see
18618 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
18619 @code{--enable-libtensorflow}
18622 Default value is @samp{native}.
18625 Set path to model file specifying network architecture and its parameters.
18626 Note that different backends use different file formats. TensorFlow backend
18627 can load files for both formats, while native backend can load files for only
18631 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
18632 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
18633 input upscaled using bicubic upscaling with proper scale factor.
18636 This feature can also be finished with @ref{dnn_processing} filter.
18640 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
18642 This filter takes in input two input videos, the first input is
18643 considered the "main" source and is passed unchanged to the
18644 output. The second input is used as a "reference" video for computing
18647 Both video inputs must have the same resolution and pixel format for
18648 this filter to work correctly. Also it assumes that both inputs
18649 have the same number of frames, which are compared one by one.
18651 The filter stores the calculated SSIM of each frame.
18653 The description of the accepted parameters follows.
18656 @item stats_file, f
18657 If specified the filter will use the named file to save the SSIM of
18658 each individual frame. When filename equals "-" the data is sent to
18662 The file printed if @var{stats_file} is selected, contains a sequence of
18663 key/value pairs of the form @var{key}:@var{value} for each compared
18666 A description of each shown parameter follows:
18670 sequential number of the input frame, starting from 1
18672 @item Y, U, V, R, G, B
18673 SSIM of the compared frames for the component specified by the suffix.
18676 SSIM of the compared frames for the whole frame.
18679 Same as above but in dB representation.
18682 This filter also supports the @ref{framesync} options.
18684 @subsection Examples
18689 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
18690 [main][ref] ssim="stats_file=stats.log" [out]
18693 On this example the input file being processed is compared with the
18694 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
18695 is stored in @file{stats.log}.
18698 Another example with both psnr and ssim at same time:
18700 ffmpeg -i main.mpg -i ref.mpg -lavfi "ssim;[0:v][1:v]psnr" -f null -
18704 Another example with different containers:
18706 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
18712 Convert between different stereoscopic image formats.
18714 The filters accept the following options:
18718 Set stereoscopic image format of input.
18720 Available values for input image formats are:
18723 side by side parallel (left eye left, right eye right)
18726 side by side crosseye (right eye left, left eye right)
18729 side by side parallel with half width resolution
18730 (left eye left, right eye right)
18733 side by side crosseye with half width resolution
18734 (right eye left, left eye right)
18738 above-below (left eye above, right eye below)
18742 above-below (right eye above, left eye below)
18746 above-below with half height resolution
18747 (left eye above, right eye below)
18751 above-below with half height resolution
18752 (right eye above, left eye below)
18755 alternating frames (left eye first, right eye second)
18758 alternating frames (right eye first, left eye second)
18761 interleaved rows (left eye has top row, right eye starts on next row)
18764 interleaved rows (right eye has top row, left eye starts on next row)
18767 interleaved columns, left eye first
18770 interleaved columns, right eye first
18772 Default value is @samp{sbsl}.
18776 Set stereoscopic image format of output.
18780 side by side parallel (left eye left, right eye right)
18783 side by side crosseye (right eye left, left eye right)
18786 side by side parallel with half width resolution
18787 (left eye left, right eye right)
18790 side by side crosseye with half width resolution
18791 (right eye left, left eye right)
18795 above-below (left eye above, right eye below)
18799 above-below (right eye above, left eye below)
18803 above-below with half height resolution
18804 (left eye above, right eye below)
18808 above-below with half height resolution
18809 (right eye above, left eye below)
18812 alternating frames (left eye first, right eye second)
18815 alternating frames (right eye first, left eye second)
18818 interleaved rows (left eye has top row, right eye starts on next row)
18821 interleaved rows (right eye has top row, left eye starts on next row)
18824 anaglyph red/blue gray
18825 (red filter on left eye, blue filter on right eye)
18828 anaglyph red/green gray
18829 (red filter on left eye, green filter on right eye)
18832 anaglyph red/cyan gray
18833 (red filter on left eye, cyan filter on right eye)
18836 anaglyph red/cyan half colored
18837 (red filter on left eye, cyan filter on right eye)
18840 anaglyph red/cyan color
18841 (red filter on left eye, cyan filter on right eye)
18844 anaglyph red/cyan color optimized with the least squares projection of dubois
18845 (red filter on left eye, cyan filter on right eye)
18848 anaglyph green/magenta gray
18849 (green filter on left eye, magenta filter on right eye)
18852 anaglyph green/magenta half colored
18853 (green filter on left eye, magenta filter on right eye)
18856 anaglyph green/magenta colored
18857 (green filter on left eye, magenta filter on right eye)
18860 anaglyph green/magenta color optimized with the least squares projection of dubois
18861 (green filter on left eye, magenta filter on right eye)
18864 anaglyph yellow/blue gray
18865 (yellow filter on left eye, blue filter on right eye)
18868 anaglyph yellow/blue half colored
18869 (yellow filter on left eye, blue filter on right eye)
18872 anaglyph yellow/blue colored
18873 (yellow filter on left eye, blue filter on right eye)
18876 anaglyph yellow/blue color optimized with the least squares projection of dubois
18877 (yellow filter on left eye, blue filter on right eye)
18880 mono output (left eye only)
18883 mono output (right eye only)
18886 checkerboard, left eye first
18889 checkerboard, right eye first
18892 interleaved columns, left eye first
18895 interleaved columns, right eye first
18901 Default value is @samp{arcd}.
18904 @subsection Examples
18908 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18914 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18920 @section streamselect, astreamselect
18921 Select video or audio streams.
18923 The filter accepts the following options:
18927 Set number of inputs. Default is 2.
18930 Set input indexes to remap to outputs.
18933 @subsection Commands
18935 The @code{streamselect} and @code{astreamselect} filter supports the following
18940 Set input indexes to remap to outputs.
18943 @subsection Examples
18947 Select first 5 seconds 1st stream and rest of time 2nd stream:
18949 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18953 Same as above, but for audio:
18955 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18962 Draw subtitles on top of input video using the libass library.
18964 To enable compilation of this filter you need to configure FFmpeg with
18965 @code{--enable-libass}. This filter also requires a build with libavcodec and
18966 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18967 Alpha) subtitles format.
18969 The filter accepts the following options:
18973 Set the filename of the subtitle file to read. It must be specified.
18975 @item original_size
18976 Specify the size of the original video, the video for which the ASS file
18977 was composed. For the syntax of this option, check the
18978 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18979 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18980 correctly scale the fonts if the aspect ratio has been changed.
18983 Set a directory path containing fonts that can be used by the filter.
18984 These fonts will be used in addition to whatever the font provider uses.
18987 Process alpha channel, by default alpha channel is untouched.
18990 Set subtitles input character encoding. @code{subtitles} filter only. Only
18991 useful if not UTF-8.
18993 @item stream_index, si
18994 Set subtitles stream index. @code{subtitles} filter only.
18997 Override default style or script info parameters of the subtitles. It accepts a
18998 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
19001 If the first key is not specified, it is assumed that the first value
19002 specifies the @option{filename}.
19004 For example, to render the file @file{sub.srt} on top of the input
19005 video, use the command:
19010 which is equivalent to:
19012 subtitles=filename=sub.srt
19015 To render the default subtitles stream from file @file{video.mkv}, use:
19017 subtitles=video.mkv
19020 To render the second subtitles stream from that file, use:
19022 subtitles=video.mkv:si=1
19025 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
19026 @code{DejaVu Serif}, use:
19028 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
19031 @section super2xsai
19033 Scale the input by 2x and smooth using the Super2xSaI (Scale and
19034 Interpolate) pixel art scaling algorithm.
19036 Useful for enlarging pixel art images without reducing sharpness.
19040 Swap two rectangular objects in video.
19042 This filter accepts the following options:
19052 Set 1st rect x coordinate.
19055 Set 1st rect y coordinate.
19058 Set 2nd rect x coordinate.
19061 Set 2nd rect y coordinate.
19063 All expressions are evaluated once for each frame.
19066 The all options are expressions containing the following constants:
19071 The input width and height.
19074 same as @var{w} / @var{h}
19077 input sample aspect ratio
19080 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
19083 The number of the input frame, starting from 0.
19086 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
19089 the position in the file of the input frame, NAN if unknown
19096 Blend successive video frames.
19102 Apply telecine process to the video.
19104 This filter accepts the following options:
19113 The default value is @code{top}.
19117 A string of numbers representing the pulldown pattern you wish to apply.
19118 The default value is @code{23}.
19122 Some typical patterns:
19127 24p: 2332 (preferred)
19134 24p: 222222222223 ("Euro pulldown")
19139 @section thistogram
19141 Compute and draw a color distribution histogram for the input video across time.
19143 Unlike @ref{histogram} video filter which only shows histogram of single input frame
19144 at certain time, this filter shows also past histograms of number of frames defined
19145 by @code{width} option.
19147 The computed histogram is a representation of the color component
19148 distribution in an image.
19150 The filter accepts the following options:
19154 Set width of single color component output. Default value is @code{0}.
19155 Value of @code{0} means width will be picked from input video.
19156 This also set number of passed histograms to keep.
19157 Allowed range is [0, 8192].
19159 @item display_mode, d
19161 It accepts the following values:
19164 Per color component graphs are placed below each other.
19167 Per color component graphs are placed side by side.
19170 Presents information identical to that in the @code{parade}, except
19171 that the graphs representing color components are superimposed directly
19174 Default is @code{stack}.
19176 @item levels_mode, m
19177 Set mode. Can be either @code{linear}, or @code{logarithmic}.
19178 Default is @code{linear}.
19180 @item components, c
19181 Set what color components to display.
19182 Default is @code{7}.
19185 Set background opacity. Default is @code{0.9}.
19188 Show envelope. Default is disabled.
19191 Set envelope color. Default is @code{gold}.
19196 Available values for slide is:
19199 Draw new frame when right border is reached.
19202 Replace old columns with new ones.
19205 Scroll from right to left.
19208 Scroll from left to right.
19211 Draw single picture.
19214 Default is @code{replace}.
19219 Apply threshold effect to video stream.
19221 This filter needs four video streams to perform thresholding.
19222 First stream is stream we are filtering.
19223 Second stream is holding threshold values, third stream is holding min values,
19224 and last, fourth stream is holding max values.
19226 The filter accepts the following option:
19230 Set which planes will be processed, unprocessed planes will be copied.
19231 By default value 0xf, all planes will be processed.
19234 For example if first stream pixel's component value is less then threshold value
19235 of pixel component from 2nd threshold stream, third stream value will picked,
19236 otherwise fourth stream pixel component value will be picked.
19238 Using color source filter one can perform various types of thresholding:
19240 @subsection Examples
19244 Binary threshold, using gray color as threshold:
19246 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
19250 Inverted binary threshold, using gray color as threshold:
19252 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
19256 Truncate binary threshold, using gray color as threshold:
19258 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
19262 Threshold to zero, using gray color as threshold:
19264 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
19268 Inverted threshold to zero, using gray color as threshold:
19270 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
19275 Select the most representative frame in a given sequence of consecutive frames.
19277 The filter accepts the following options:
19281 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
19282 will pick one of them, and then handle the next batch of @var{n} frames until
19283 the end. Default is @code{100}.
19286 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
19287 value will result in a higher memory usage, so a high value is not recommended.
19289 @subsection Examples
19293 Extract one picture each 50 frames:
19299 Complete example of a thumbnail creation with @command{ffmpeg}:
19301 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
19308 Tile several successive frames together.
19310 The @ref{untile} filter can do the reverse.
19312 The filter accepts the following options:
19317 Set the grid size (i.e. the number of lines and columns). For the syntax of
19318 this option, check the
19319 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19322 Set the maximum number of frames to render in the given area. It must be less
19323 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
19324 the area will be used.
19327 Set the outer border margin in pixels.
19330 Set the inner border thickness (i.e. the number of pixels between frames). For
19331 more advanced padding options (such as having different values for the edges),
19332 refer to the pad video filter.
19335 Specify the color of the unused area. For the syntax of this option, check the
19336 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19337 The default value of @var{color} is "black".
19340 Set the number of frames to overlap when tiling several successive frames together.
19341 The value must be between @code{0} and @var{nb_frames - 1}.
19344 Set the number of frames to initially be empty before displaying first output frame.
19345 This controls how soon will one get first output frame.
19346 The value must be between @code{0} and @var{nb_frames - 1}.
19349 @subsection Examples
19353 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
19355 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
19357 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
19358 duplicating each output frame to accommodate the originally detected frame
19362 Display @code{5} pictures in an area of @code{3x2} frames,
19363 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
19364 mixed flat and named options:
19366 tile=3x2:nb_frames=5:padding=7:margin=2
19370 @section tinterlace
19372 Perform various types of temporal field interlacing.
19374 Frames are counted starting from 1, so the first input frame is
19377 The filter accepts the following options:
19382 Specify the mode of the interlacing. This option can also be specified
19383 as a value alone. See below for a list of values for this option.
19385 Available values are:
19389 Move odd frames into the upper field, even into the lower field,
19390 generating a double height frame at half frame rate.
19394 Frame 1 Frame 2 Frame 3 Frame 4
19396 11111 22222 33333 44444
19397 11111 22222 33333 44444
19398 11111 22222 33333 44444
19399 11111 22222 33333 44444
19413 Only output odd frames, even frames are dropped, generating a frame with
19414 unchanged height at half frame rate.
19419 Frame 1 Frame 2 Frame 3 Frame 4
19421 11111 22222 33333 44444
19422 11111 22222 33333 44444
19423 11111 22222 33333 44444
19424 11111 22222 33333 44444
19434 Only output even frames, odd frames are dropped, generating a frame with
19435 unchanged height at half frame rate.
19440 Frame 1 Frame 2 Frame 3 Frame 4
19442 11111 22222 33333 44444
19443 11111 22222 33333 44444
19444 11111 22222 33333 44444
19445 11111 22222 33333 44444
19455 Expand each frame to full height, but pad alternate lines with black,
19456 generating a frame with double height at the same input frame rate.
19461 Frame 1 Frame 2 Frame 3 Frame 4
19463 11111 22222 33333 44444
19464 11111 22222 33333 44444
19465 11111 22222 33333 44444
19466 11111 22222 33333 44444
19469 11111 ..... 33333 .....
19470 ..... 22222 ..... 44444
19471 11111 ..... 33333 .....
19472 ..... 22222 ..... 44444
19473 11111 ..... 33333 .....
19474 ..... 22222 ..... 44444
19475 11111 ..... 33333 .....
19476 ..... 22222 ..... 44444
19480 @item interleave_top, 4
19481 Interleave the upper field from odd frames with the lower field from
19482 even frames, generating a frame with unchanged height at half frame rate.
19487 Frame 1 Frame 2 Frame 3 Frame 4
19489 11111<- 22222 33333<- 44444
19490 11111 22222<- 33333 44444<-
19491 11111<- 22222 33333<- 44444
19492 11111 22222<- 33333 44444<-
19502 @item interleave_bottom, 5
19503 Interleave the lower field from odd frames with the upper field from
19504 even frames, generating a frame with unchanged height at half frame rate.
19509 Frame 1 Frame 2 Frame 3 Frame 4
19511 11111 22222<- 33333 44444<-
19512 11111<- 22222 33333<- 44444
19513 11111 22222<- 33333 44444<-
19514 11111<- 22222 33333<- 44444
19524 @item interlacex2, 6
19525 Double frame rate with unchanged height. Frames are inserted each
19526 containing the second temporal field from the previous input frame and
19527 the first temporal field from the next input frame. This mode relies on
19528 the top_field_first flag. Useful for interlaced video displays with no
19529 field synchronisation.
19534 Frame 1 Frame 2 Frame 3 Frame 4
19536 11111 22222 33333 44444
19537 11111 22222 33333 44444
19538 11111 22222 33333 44444
19539 11111 22222 33333 44444
19542 11111 22222 22222 33333 33333 44444 44444
19543 11111 11111 22222 22222 33333 33333 44444
19544 11111 22222 22222 33333 33333 44444 44444
19545 11111 11111 22222 22222 33333 33333 44444
19550 Move odd frames into the upper field, even into the lower field,
19551 generating a double height frame at same frame rate.
19556 Frame 1 Frame 2 Frame 3 Frame 4
19558 11111 22222 33333 44444
19559 11111 22222 33333 44444
19560 11111 22222 33333 44444
19561 11111 22222 33333 44444
19564 11111 33333 33333 55555
19565 22222 22222 44444 44444
19566 11111 33333 33333 55555
19567 22222 22222 44444 44444
19568 11111 33333 33333 55555
19569 22222 22222 44444 44444
19570 11111 33333 33333 55555
19571 22222 22222 44444 44444
19576 Numeric values are deprecated but are accepted for backward
19577 compatibility reasons.
19579 Default mode is @code{merge}.
19582 Specify flags influencing the filter process.
19584 Available value for @var{flags} is:
19587 @item low_pass_filter, vlpf
19588 Enable linear vertical low-pass filtering in the filter.
19589 Vertical low-pass filtering is required when creating an interlaced
19590 destination from a progressive source which contains high-frequency
19591 vertical detail. Filtering will reduce interlace 'twitter' and Moire
19594 @item complex_filter, cvlpf
19595 Enable complex vertical low-pass filtering.
19596 This will slightly less reduce interlace 'twitter' and Moire
19597 patterning but better retain detail and subjective sharpness impression.
19600 Bypass already interlaced frames, only adjust the frame rate.
19603 Vertical low-pass filtering and bypassing already interlaced frames can only be
19604 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
19609 Pick median pixels from several successive input video frames.
19611 The filter accepts the following options:
19615 Set radius of median filter.
19616 Default is 1. Allowed range is from 1 to 127.
19619 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19622 Set median percentile. Default value is @code{0.5}.
19623 Default value of @code{0.5} will pick always median values, while @code{0} will pick
19624 minimum values, and @code{1} maximum values.
19627 @subsection Commands
19629 This filter supports all above options as @ref{commands}, excluding option @code{radius}.
19631 @section tmidequalizer
19633 Apply Temporal Midway Video Equalization effect.
19635 Midway Video Equalization adjusts a sequence of video frames to have the same
19636 histograms, while maintaining their dynamics as much as possible. It's
19637 useful for e.g. matching exposures from a video frames sequence.
19639 This filter accepts the following option:
19643 Set filtering radius. Default is @code{5}. Allowed range is from 1 to 127.
19646 Set filtering sigma. Default is @code{0.5}. This controls strength of filtering.
19647 Setting this option to 0 effectively does nothing.
19650 Set which planes to process. Default is @code{15}, which is all available planes.
19655 Mix successive video frames.
19657 A description of the accepted options follows.
19661 The number of successive frames to mix. If unspecified, it defaults to 3.
19664 Specify weight of each input video frame.
19665 Each weight is separated by space. If number of weights is smaller than
19666 number of @var{frames} last specified weight will be used for all remaining
19670 Specify scale, if it is set it will be multiplied with sum
19671 of each weight multiplied with pixel values to give final destination
19672 pixel value. By default @var{scale} is auto scaled to sum of weights.
19675 @subsection Examples
19679 Average 7 successive frames:
19681 tmix=frames=7:weights="1 1 1 1 1 1 1"
19685 Apply simple temporal convolution:
19687 tmix=frames=3:weights="-1 3 -1"
19691 Similar as above but only showing temporal differences:
19693 tmix=frames=3:weights="-1 2 -1":scale=1
19699 Tone map colors from different dynamic ranges.
19701 This filter expects data in single precision floating point, as it needs to
19702 operate on (and can output) out-of-range values. Another filter, such as
19703 @ref{zscale}, is needed to convert the resulting frame to a usable format.
19705 The tonemapping algorithms implemented only work on linear light, so input
19706 data should be linearized beforehand (and possibly correctly tagged).
19709 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
19712 @subsection Options
19713 The filter accepts the following options.
19717 Set the tone map algorithm to use.
19719 Possible values are:
19722 Do not apply any tone map, only desaturate overbright pixels.
19725 Hard-clip any out-of-range values. Use it for perfect color accuracy for
19726 in-range values, while distorting out-of-range values.
19729 Stretch the entire reference gamut to a linear multiple of the display.
19732 Fit a logarithmic transfer between the tone curves.
19735 Preserve overall image brightness with a simple curve, using nonlinear
19736 contrast, which results in flattening details and degrading color accuracy.
19739 Preserve both dark and bright details better than @var{reinhard}, at the cost
19740 of slightly darkening everything. Use it when detail preservation is more
19741 important than color and brightness accuracy.
19744 Smoothly map out-of-range values, while retaining contrast and colors for
19745 in-range material as much as possible. Use it when color accuracy is more
19746 important than detail preservation.
19752 Tune the tone mapping algorithm.
19754 This affects the following algorithms:
19760 Specifies the scale factor to use while stretching.
19764 Specifies the exponent of the function.
19768 Specify an extra linear coefficient to multiply into the signal before clipping.
19772 Specify the local contrast coefficient at the display peak.
19773 Default to 0.5, which means that in-gamut values will be about half as bright
19780 Specify the transition point from linear to mobius transform. Every value
19781 below this point is guaranteed to be mapped 1:1. The higher the value, the
19782 more accurate the result will be, at the cost of losing bright details.
19783 Default to 0.3, which due to the steep initial slope still preserves in-range
19784 colors fairly accurately.
19788 Apply desaturation for highlights that exceed this level of brightness. The
19789 higher the parameter, the more color information will be preserved. This
19790 setting helps prevent unnaturally blown-out colors for super-highlights, by
19791 (smoothly) turning into white instead. This makes images feel more natural,
19792 at the cost of reducing information about out-of-range colors.
19794 The default of 2.0 is somewhat conservative and will mostly just apply to
19795 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19797 This option works only if the input frame has a supported color tag.
19800 Override signal/nominal/reference peak with this value. Useful when the
19801 embedded peak information in display metadata is not reliable or when tone
19802 mapping from a lower range to a higher range.
19807 Temporarily pad video frames.
19809 The filter accepts the following options:
19813 Specify number of delay frames before input video stream. Default is 0.
19816 Specify number of padding frames after input video stream.
19817 Set to -1 to pad indefinitely. Default is 0.
19820 Set kind of frames added to beginning of stream.
19821 Can be either @var{add} or @var{clone}.
19822 With @var{add} frames of solid-color are added.
19823 With @var{clone} frames are clones of first frame.
19824 Default is @var{add}.
19827 Set kind of frames added to end of stream.
19828 Can be either @var{add} or @var{clone}.
19829 With @var{add} frames of solid-color are added.
19830 With @var{clone} frames are clones of last frame.
19831 Default is @var{add}.
19833 @item start_duration, stop_duration
19834 Specify the duration of the start/stop delay. See
19835 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19836 for the accepted syntax.
19837 These options override @var{start} and @var{stop}. Default is 0.
19840 Specify the color of the padded area. For the syntax of this option,
19841 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19842 manual,ffmpeg-utils}.
19844 The default value of @var{color} is "black".
19850 Transpose rows with columns in the input video and optionally flip it.
19852 It accepts the following parameters:
19857 Specify the transposition direction.
19859 Can assume the following values:
19861 @item 0, 4, cclock_flip
19862 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19870 Rotate by 90 degrees clockwise, that is:
19878 Rotate by 90 degrees counterclockwise, that is:
19885 @item 3, 7, clock_flip
19886 Rotate by 90 degrees clockwise and vertically flip, that is:
19894 For values between 4-7, the transposition is only done if the input
19895 video geometry is portrait and not landscape. These values are
19896 deprecated, the @code{passthrough} option should be used instead.
19898 Numerical values are deprecated, and should be dropped in favor of
19899 symbolic constants.
19902 Do not apply the transposition if the input geometry matches the one
19903 specified by the specified value. It accepts the following values:
19906 Always apply transposition.
19908 Preserve portrait geometry (when @var{height} >= @var{width}).
19910 Preserve landscape geometry (when @var{width} >= @var{height}).
19913 Default value is @code{none}.
19916 For example to rotate by 90 degrees clockwise and preserve portrait
19919 transpose=dir=1:passthrough=portrait
19922 The command above can also be specified as:
19924 transpose=1:portrait
19927 @section transpose_npp
19929 Transpose rows with columns in the input video and optionally flip it.
19930 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19932 It accepts the following parameters:
19937 Specify the transposition direction.
19939 Can assume the following values:
19942 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19945 Rotate by 90 degrees clockwise.
19948 Rotate by 90 degrees counterclockwise.
19951 Rotate by 90 degrees clockwise and vertically flip.
19955 Do not apply the transposition if the input geometry matches the one
19956 specified by the specified value. It accepts the following values:
19959 Always apply transposition. (default)
19961 Preserve portrait geometry (when @var{height} >= @var{width}).
19963 Preserve landscape geometry (when @var{width} >= @var{height}).
19969 Trim the input so that the output contains one continuous subpart of the input.
19971 It accepts the following parameters:
19974 Specify the time of the start of the kept section, i.e. the frame with the
19975 timestamp @var{start} will be the first frame in the output.
19978 Specify the time of the first frame that will be dropped, i.e. the frame
19979 immediately preceding the one with the timestamp @var{end} will be the last
19980 frame in the output.
19983 This is the same as @var{start}, except this option sets the start timestamp
19984 in timebase units instead of seconds.
19987 This is the same as @var{end}, except this option sets the end timestamp
19988 in timebase units instead of seconds.
19991 The maximum duration of the output in seconds.
19994 The number of the first frame that should be passed to the output.
19997 The number of the first frame that should be dropped.
20000 @option{start}, @option{end}, and @option{duration} are expressed as time
20001 duration specifications; see
20002 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20003 for the accepted syntax.
20005 Note that the first two sets of the start/end options and the @option{duration}
20006 option look at the frame timestamp, while the _frame variants simply count the
20007 frames that pass through the filter. Also note that this filter does not modify
20008 the timestamps. If you wish for the output timestamps to start at zero, insert a
20009 setpts filter after the trim filter.
20011 If multiple start or end options are set, this filter tries to be greedy and
20012 keep all the frames that match at least one of the specified constraints. To keep
20013 only the part that matches all the constraints at once, chain multiple trim
20016 The defaults are such that all the input is kept. So it is possible to set e.g.
20017 just the end values to keep everything before the specified time.
20022 Drop everything except the second minute of input:
20024 ffmpeg -i INPUT -vf trim=60:120
20028 Keep only the first second:
20030 ffmpeg -i INPUT -vf trim=duration=1
20035 @section unpremultiply
20036 Apply alpha unpremultiply effect to input video stream using first plane
20037 of second stream as alpha.
20039 Both streams must have same dimensions and same pixel format.
20041 The filter accepts the following option:
20045 Set which planes will be processed, unprocessed planes will be copied.
20046 By default value 0xf, all planes will be processed.
20048 If the format has 1 or 2 components, then luma is bit 0.
20049 If the format has 3 or 4 components:
20050 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
20051 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
20052 If present, the alpha channel is always the last bit.
20055 Do not require 2nd input for processing, instead use alpha plane from input stream.
20061 Sharpen or blur the input video.
20063 It accepts the following parameters:
20066 @item luma_msize_x, lx
20067 Set the luma matrix horizontal size. It must be an odd integer between
20068 3 and 23. The default value is 5.
20070 @item luma_msize_y, ly
20071 Set the luma matrix vertical size. It must be an odd integer between 3
20072 and 23. The default value is 5.
20074 @item luma_amount, la
20075 Set the luma effect strength. It must be a floating point number, reasonable
20076 values lay between -1.5 and 1.5.
20078 Negative values will blur the input video, while positive values will
20079 sharpen it, a value of zero will disable the effect.
20081 Default value is 1.0.
20083 @item chroma_msize_x, cx
20084 Set the chroma matrix horizontal size. It must be an odd integer
20085 between 3 and 23. The default value is 5.
20087 @item chroma_msize_y, cy
20088 Set the chroma matrix vertical size. It must be an odd integer
20089 between 3 and 23. The default value is 5.
20091 @item chroma_amount, ca
20092 Set the chroma effect strength. It must be a floating point number, reasonable
20093 values lay between -1.5 and 1.5.
20095 Negative values will blur the input video, while positive values will
20096 sharpen it, a value of zero will disable the effect.
20098 Default value is 0.0.
20102 All parameters are optional and default to the equivalent of the
20103 string '5:5:1.0:5:5:0.0'.
20105 @subsection Examples
20109 Apply strong luma sharpen effect:
20111 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
20115 Apply a strong blur of both luma and chroma parameters:
20117 unsharp=7:7:-2:7:7:-2
20124 Decompose a video made of tiled images into the individual images.
20126 The frame rate of the output video is the frame rate of the input video
20127 multiplied by the number of tiles.
20129 This filter does the reverse of @ref{tile}.
20131 The filter accepts the following options:
20136 Set the grid size (i.e. the number of lines and columns). For the syntax of
20137 this option, check the
20138 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20141 @subsection Examples
20145 Produce a 1-second video from a still image file made of 25 frames stacked
20146 vertically, like an analogic film reel:
20148 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
20154 Apply ultra slow/simple postprocessing filter that compresses and decompresses
20155 the image at several (or - in the case of @option{quality} level @code{8} - all)
20156 shifts and average the results.
20158 The way this differs from the behavior of spp is that uspp actually encodes &
20159 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
20160 DCT similar to MJPEG.
20162 The filter accepts the following options:
20166 Set quality. This option defines the number of levels for averaging. It accepts
20167 an integer in the range 0-8. If set to @code{0}, the filter will have no
20168 effect. A value of @code{8} means the higher quality. For each increment of
20169 that value the speed drops by a factor of approximately 2. Default value is
20173 Force a constant quantization parameter. If not set, the filter will use the QP
20174 from the video stream (if available).
20179 Convert 360 videos between various formats.
20181 The filter accepts the following options:
20187 Set format of the input/output video.
20195 Equirectangular projection.
20200 Cubemap with 3x2/6x1/1x6 layout.
20202 Format specific options:
20207 Set padding proportion for the input/output cubemap. Values in decimals.
20214 1% of face is padding. For example, with 1920x1280 resolution face size would be 640x640 and padding would be 3 pixels from each side. (640 * 0.01 = 6 pixels)
20217 Default value is @b{@samp{0}}.
20218 Maximum value is @b{@samp{0.1}}.
20222 Set fixed padding for the input/output cubemap. Values in pixels.
20224 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
20228 Set order of faces for the input/output cubemap. Choose one direction for each position.
20230 Designation of directions:
20246 Default value is @b{@samp{rludfb}}.
20250 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
20252 Designation of angles:
20255 0 degrees clockwise
20257 90 degrees clockwise
20259 180 degrees clockwise
20261 270 degrees clockwise
20264 Default value is @b{@samp{000000}}.
20268 Equi-Angular Cubemap.
20275 Format specific options:
20280 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20282 If diagonal field of view is set it overrides horizontal and vertical field of view.
20287 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20289 If diagonal field of view is set it overrides horizontal and vertical field of view.
20295 Format specific options:
20300 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20302 If diagonal field of view is set it overrides horizontal and vertical field of view.
20307 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20309 If diagonal field of view is set it overrides horizontal and vertical field of view.
20315 Facebook's 360 formats.
20318 Stereographic format.
20320 Format specific options:
20325 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20327 If diagonal field of view is set it overrides horizontal and vertical field of view.
20332 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20334 If diagonal field of view is set it overrides horizontal and vertical field of view.
20341 Ball format, gives significant distortion toward the back.
20344 Hammer-Aitoff map projection format.
20347 Sinusoidal map projection format.
20350 Fisheye projection.
20352 Format specific options:
20357 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20359 If diagonal field of view is set it overrides horizontal and vertical field of view.
20364 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20366 If diagonal field of view is set it overrides horizontal and vertical field of view.
20370 Pannini projection.
20372 Format specific options:
20375 Set output pannini parameter.
20378 Set input pannini parameter.
20382 Cylindrical projection.
20384 Format specific options:
20389 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20391 If diagonal field of view is set it overrides horizontal and vertical field of view.
20396 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20398 If diagonal field of view is set it overrides horizontal and vertical field of view.
20402 Perspective projection. @i{(output only)}
20404 Format specific options:
20407 Set perspective parameter.
20411 Tetrahedron projection.
20414 Truncated square pyramid projection.
20418 Half equirectangular projection.
20423 Format specific options:
20428 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20430 If diagonal field of view is set it overrides horizontal and vertical field of view.
20435 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20437 If diagonal field of view is set it overrides horizontal and vertical field of view.
20441 Orthographic format.
20443 Format specific options:
20448 Set output horizontal/vertical/diagonal field of view. Values in degrees.
20450 If diagonal field of view is set it overrides horizontal and vertical field of view.
20455 Set input horizontal/vertical/diagonal field of view. Values in degrees.
20457 If diagonal field of view is set it overrides horizontal and vertical field of view.
20461 Octahedron projection.
20465 Set interpolation method.@*
20466 @i{Note: more complex interpolation methods require much more memory to run.}
20476 Bilinear interpolation.
20478 Lagrange9 interpolation.
20481 Bicubic interpolation.
20484 Lanczos interpolation.
20487 Spline16 interpolation.
20490 Gaussian interpolation.
20492 Mitchell interpolation.
20495 Default value is @b{@samp{line}}.
20499 Set the output video resolution.
20501 Default resolution depends on formats.
20505 Set the input/output stereo format.
20516 Default value is @b{@samp{2d}} for input and output format.
20521 Set rotation for the output video. Values in degrees.
20524 Set rotation order for the output video. Choose one item for each position.
20535 Default value is @b{@samp{ypr}}.
20540 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
20544 Set if input video is flipped horizontally/vertically. Boolean values.
20547 Set if input video is transposed. Boolean value, by default disabled.
20550 Set if output video needs to be transposed. Boolean value, by default disabled.
20553 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
20556 @subsection Examples
20560 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
20562 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
20565 Extract back view of Equi-Angular Cubemap:
20567 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
20570 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
20572 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
20576 @subsection Commands
20578 This filter supports subset of above options as @ref{commands}.
20580 @section vaguedenoiser
20582 Apply a wavelet based denoiser.
20584 It transforms each frame from the video input into the wavelet domain,
20585 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
20586 the obtained coefficients. It does an inverse wavelet transform after.
20587 Due to wavelet properties, it should give a nice smoothed result, and
20588 reduced noise, without blurring picture features.
20590 This filter accepts the following options:
20594 The filtering strength. The higher, the more filtered the video will be.
20595 Hard thresholding can use a higher threshold than soft thresholding
20596 before the video looks overfiltered. Default value is 2.
20599 The filtering method the filter will use.
20601 It accepts the following values:
20604 All values under the threshold will be zeroed.
20607 All values under the threshold will be zeroed. All values above will be
20608 reduced by the threshold.
20611 Scales or nullifies coefficients - intermediary between (more) soft and
20612 (less) hard thresholding.
20615 Default is garrote.
20618 Number of times, the wavelet will decompose the picture. Picture can't
20619 be decomposed beyond a particular point (typically, 8 for a 640x480
20620 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
20623 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
20626 A list of the planes to process. By default all planes are processed.
20629 The threshold type the filter will use.
20631 It accepts the following values:
20634 Threshold used is same for all decompositions.
20637 Threshold used depends also on each decomposition coefficients.
20640 Default is universal.
20643 @section vectorscope
20645 Display 2 color component values in the two dimensional graph (which is called
20648 This filter accepts the following options:
20652 Set vectorscope mode.
20654 It accepts the following values:
20658 Gray values are displayed on graph, higher brightness means more pixels have
20659 same component color value on location in graph. This is the default mode.
20662 Gray values are displayed on graph. Surrounding pixels values which are not
20663 present in video frame are drawn in gradient of 2 color components which are
20664 set by option @code{x} and @code{y}. The 3rd color component is static.
20667 Actual color components values present in video frame are displayed on graph.
20670 Similar as color2 but higher frequency of same values @code{x} and @code{y}
20671 on graph increases value of another color component, which is luminance by
20672 default values of @code{x} and @code{y}.
20675 Actual colors present in video frame are displayed on graph. If two different
20676 colors map to same position on graph then color with higher value of component
20677 not present in graph is picked.
20680 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
20681 component picked from radial gradient.
20685 Set which color component will be represented on X-axis. Default is @code{1}.
20688 Set which color component will be represented on Y-axis. Default is @code{2}.
20691 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
20692 of color component which represents frequency of (X, Y) location in graph.
20697 No envelope, this is default.
20700 Instant envelope, even darkest single pixel will be clearly highlighted.
20703 Hold maximum and minimum values presented in graph over time. This way you
20704 can still spot out of range values without constantly looking at vectorscope.
20707 Peak and instant envelope combined together.
20711 Set what kind of graticule to draw.
20720 Set graticule opacity.
20723 Set graticule flags.
20727 Draw graticule for white point.
20730 Draw graticule for black point.
20733 Draw color points short names.
20737 Set background opacity.
20739 @item lthreshold, l
20740 Set low threshold for color component not represented on X or Y axis.
20741 Values lower than this value will be ignored. Default is 0.
20742 Note this value is multiplied with actual max possible value one pixel component
20743 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
20746 @item hthreshold, h
20747 Set high threshold for color component not represented on X or Y axis.
20748 Values higher than this value will be ignored. Default is 1.
20749 Note this value is multiplied with actual max possible value one pixel component
20750 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
20751 is 0.9 * 255 = 230.
20753 @item colorspace, c
20754 Set what kind of colorspace to use when drawing graticule.
20764 Set color tint for gray/tint vectorscope mode. By default both options are zero.
20765 This means no tint, and output will remain gray.
20768 @anchor{vidstabdetect}
20769 @section vidstabdetect
20771 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
20772 @ref{vidstabtransform} for pass 2.
20774 This filter generates a file with relative translation and rotation
20775 transform information about subsequent frames, which is then used by
20776 the @ref{vidstabtransform} filter.
20778 To enable compilation of this filter you need to configure FFmpeg with
20779 @code{--enable-libvidstab}.
20781 This filter accepts the following options:
20785 Set the path to the file used to write the transforms information.
20786 Default value is @file{transforms.trf}.
20789 Set how shaky the video is and how quick the camera is. It accepts an
20790 integer in the range 1-10, a value of 1 means little shakiness, a
20791 value of 10 means strong shakiness. Default value is 5.
20794 Set the accuracy of the detection process. It must be a value in the
20795 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20796 accuracy. Default value is 15.
20799 Set stepsize of the search process. The region around minimum is
20800 scanned with 1 pixel resolution. Default value is 6.
20803 Set minimum contrast. Below this value a local measurement field is
20804 discarded. Must be a floating point value in the range 0-1. Default
20808 Set reference frame number for tripod mode.
20810 If enabled, the motion of the frames is compared to a reference frame
20811 in the filtered stream, identified by the specified number. The idea
20812 is to compensate all movements in a more-or-less static scene and keep
20813 the camera view absolutely still.
20815 If set to 0, it is disabled. The frames are counted starting from 1.
20818 Show fields and transforms in the resulting frames. It accepts an
20819 integer in the range 0-2. Default value is 0, which disables any
20823 @subsection Examples
20827 Use default values:
20833 Analyze strongly shaky movie and put the results in file
20834 @file{mytransforms.trf}:
20836 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20840 Visualize the result of internal transformations in the resulting
20843 vidstabdetect=show=1
20847 Analyze a video with medium shakiness using @command{ffmpeg}:
20849 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20853 @anchor{vidstabtransform}
20854 @section vidstabtransform
20856 Video stabilization/deshaking: pass 2 of 2,
20857 see @ref{vidstabdetect} for pass 1.
20859 Read a file with transform information for each frame and
20860 apply/compensate them. Together with the @ref{vidstabdetect}
20861 filter this can be used to deshake videos. See also
20862 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20863 the @ref{unsharp} filter, see below.
20865 To enable compilation of this filter you need to configure FFmpeg with
20866 @code{--enable-libvidstab}.
20868 @subsection Options
20872 Set path to the file used to read the transforms. Default value is
20873 @file{transforms.trf}.
20876 Set the number of frames (value*2 + 1) used for lowpass filtering the
20877 camera movements. Default value is 10.
20879 For example a number of 10 means that 21 frames are used (10 in the
20880 past and 10 in the future) to smoothen the motion in the video. A
20881 larger value leads to a smoother video, but limits the acceleration of
20882 the camera (pan/tilt movements). 0 is a special case where a static
20883 camera is simulated.
20886 Set the camera path optimization algorithm.
20888 Accepted values are:
20891 gaussian kernel low-pass filter on camera motion (default)
20893 averaging on transformations
20897 Set maximal number of pixels to translate frames. Default value is -1,
20901 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20902 value is -1, meaning no limit.
20905 Specify how to deal with borders that may be visible due to movement
20908 Available values are:
20911 keep image information from previous frame (default)
20913 fill the border black
20917 Invert transforms if set to 1. Default value is 0.
20920 Consider transforms as relative to previous frame if set to 1,
20921 absolute if set to 0. Default value is 0.
20924 Set percentage to zoom. A positive value will result in a zoom-in
20925 effect, a negative value in a zoom-out effect. Default value is 0 (no
20929 Set optimal zooming to avoid borders.
20931 Accepted values are:
20936 optimal static zoom value is determined (only very strong movements
20937 will lead to visible borders) (default)
20939 optimal adaptive zoom value is determined (no borders will be
20940 visible), see @option{zoomspeed}
20943 Note that the value given at zoom is added to the one calculated here.
20946 Set percent to zoom maximally each frame (enabled when
20947 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20951 Specify type of interpolation.
20953 Available values are:
20958 linear only horizontal
20960 linear in both directions (default)
20962 cubic in both directions (slow)
20966 Enable virtual tripod mode if set to 1, which is equivalent to
20967 @code{relative=0:smoothing=0}. Default value is 0.
20969 Use also @code{tripod} option of @ref{vidstabdetect}.
20972 Increase log verbosity if set to 1. Also the detected global motions
20973 are written to the temporary file @file{global_motions.trf}. Default
20977 @subsection Examples
20981 Use @command{ffmpeg} for a typical stabilization with default values:
20983 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20986 Note the use of the @ref{unsharp} filter which is always recommended.
20989 Zoom in a bit more and load transform data from a given file:
20991 vidstabtransform=zoom=5:input="mytransforms.trf"
20995 Smoothen the video even more:
20997 vidstabtransform=smoothing=30
21003 Flip the input video vertically.
21005 For example, to vertically flip a video with @command{ffmpeg}:
21007 ffmpeg -i in.avi -vf "vflip" out.avi
21012 Detect variable frame rate video.
21014 This filter tries to detect if the input is variable or constant frame rate.
21016 At end it will output number of frames detected as having variable delta pts,
21017 and ones with constant delta pts.
21018 If there was frames with variable delta, than it will also show min, max and
21019 average delta encountered.
21023 Boost or alter saturation.
21025 The filter accepts the following options:
21028 Set strength of boost if positive value or strength of alter if negative value.
21029 Default is 0. Allowed range is from -2 to 2.
21032 Set the red balance. Default is 1. Allowed range is from -10 to 10.
21035 Set the green balance. Default is 1. Allowed range is from -10 to 10.
21038 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
21041 Set the red luma coefficient.
21044 Set the green luma coefficient.
21047 Set the blue luma coefficient.
21050 If @code{intensity} is negative and this is set to 1, colors will change,
21051 otherwise colors will be less saturated, more towards gray.
21054 @subsection Commands
21056 This filter supports the all above options as @ref{commands}.
21061 Make or reverse a natural vignetting effect.
21063 The filter accepts the following options:
21067 Set lens angle expression as a number of radians.
21069 The value is clipped in the @code{[0,PI/2]} range.
21071 Default value: @code{"PI/5"}
21075 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
21079 Set forward/backward mode.
21081 Available modes are:
21084 The larger the distance from the central point, the darker the image becomes.
21087 The larger the distance from the central point, the brighter the image becomes.
21088 This can be used to reverse a vignette effect, though there is no automatic
21089 detection to extract the lens @option{angle} and other settings (yet). It can
21090 also be used to create a burning effect.
21093 Default value is @samp{forward}.
21096 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
21098 It accepts the following values:
21101 Evaluate expressions only once during the filter initialization.
21104 Evaluate expressions for each incoming frame. This is way slower than the
21105 @samp{init} mode since it requires all the scalers to be re-computed, but it
21106 allows advanced dynamic expressions.
21109 Default value is @samp{init}.
21112 Set dithering to reduce the circular banding effects. Default is @code{1}
21116 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
21117 Setting this value to the SAR of the input will make a rectangular vignetting
21118 following the dimensions of the video.
21120 Default is @code{1/1}.
21123 @subsection Expressions
21125 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
21126 following parameters.
21131 input width and height
21134 the number of input frame, starting from 0
21137 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
21138 @var{TB} units, NAN if undefined
21141 frame rate of the input video, NAN if the input frame rate is unknown
21144 the PTS (Presentation TimeStamp) of the filtered video frame,
21145 expressed in seconds, NAN if undefined
21148 time base of the input video
21152 @subsection Examples
21156 Apply simple strong vignetting effect:
21162 Make a flickering vignetting:
21164 vignette='PI/4+random(1)*PI/50':eval=frame
21169 @section vmafmotion
21171 Obtain the average VMAF motion score of a video.
21172 It is one of the component metrics of VMAF.
21174 The obtained average motion score is printed through the logging system.
21176 The filter accepts the following options:
21180 If specified, the filter will use the named file to save the motion score of
21181 each frame with respect to the previous frame.
21182 When filename equals "-" the data is sent to standard output.
21187 ffmpeg -i ref.mpg -vf vmafmotion -f null -
21191 Stack input videos vertically.
21193 All streams must be of same pixel format and of same width.
21195 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
21196 to create same output.
21198 The filter accepts the following options:
21202 Set number of input streams. Default is 2.
21205 If set to 1, force the output to terminate when the shortest input
21206 terminates. Default value is 0.
21211 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
21212 Deinterlacing Filter").
21214 Based on the process described by Martin Weston for BBC R&D, and
21215 implemented based on the de-interlace algorithm written by Jim
21216 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
21217 uses filter coefficients calculated by BBC R&D.
21219 This filter uses field-dominance information in frame to decide which
21220 of each pair of fields to place first in the output.
21221 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
21223 There are two sets of filter coefficients, so called "simple"
21224 and "complex". Which set of filter coefficients is used can
21225 be set by passing an optional parameter:
21229 Set the interlacing filter coefficients. Accepts one of the following values:
21233 Simple filter coefficient set.
21235 More-complex filter coefficient set.
21237 Default value is @samp{complex}.
21240 The interlacing mode to adopt. It accepts one of the following values:
21244 Output one frame for each frame.
21246 Output one frame for each field.
21249 The default value is @code{field}.
21252 The picture field parity assumed for the input interlaced video. It accepts one
21253 of the following values:
21257 Assume the top field is first.
21259 Assume the bottom field is first.
21261 Enable automatic detection of field parity.
21264 The default value is @code{auto}.
21265 If the interlacing is unknown or the decoder does not export this information,
21266 top field first will be assumed.
21269 Specify which frames to deinterlace. Accepts one of the following values:
21273 Deinterlace all frames,
21275 Only deinterlace frames marked as interlaced.
21278 Default value is @samp{all}.
21281 @subsection Commands
21282 This filter supports same @ref{commands} as options.
21285 Video waveform monitor.
21287 The waveform monitor plots color component intensity. By default luminance
21288 only. Each column of the waveform corresponds to a column of pixels in the
21291 It accepts the following options:
21295 Can be either @code{row}, or @code{column}. Default is @code{column}.
21296 In row mode, the graph on the left side represents color component value 0 and
21297 the right side represents value = 255. In column mode, the top side represents
21298 color component value = 0 and bottom side represents value = 255.
21301 Set intensity. Smaller values are useful to find out how many values of the same
21302 luminance are distributed across input rows/columns.
21303 Default value is @code{0.04}. Allowed range is [0, 1].
21306 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
21307 In mirrored mode, higher values will be represented on the left
21308 side for @code{row} mode and at the top for @code{column} mode. Default is
21309 @code{1} (mirrored).
21313 It accepts the following values:
21316 Presents information identical to that in the @code{parade}, except
21317 that the graphs representing color components are superimposed directly
21320 This display mode makes it easier to spot relative differences or similarities
21321 in overlapping areas of the color components that are supposed to be identical,
21322 such as neutral whites, grays, or blacks.
21325 Display separate graph for the color components side by side in
21326 @code{row} mode or one below the other in @code{column} mode.
21329 Display separate graph for the color components side by side in
21330 @code{column} mode or one below the other in @code{row} mode.
21332 Using this display mode makes it easy to spot color casts in the highlights
21333 and shadows of an image, by comparing the contours of the top and the bottom
21334 graphs of each waveform. Since whites, grays, and blacks are characterized
21335 by exactly equal amounts of red, green, and blue, neutral areas of the picture
21336 should display three waveforms of roughly equal width/height. If not, the
21337 correction is easy to perform by making level adjustments the three waveforms.
21339 Default is @code{stack}.
21341 @item components, c
21342 Set which color components to display. Default is 1, which means only luminance
21343 or red color component if input is in RGB colorspace. If is set for example to
21344 7 it will display all 3 (if) available color components.
21349 No envelope, this is default.
21352 Instant envelope, minimum and maximum values presented in graph will be easily
21353 visible even with small @code{step} value.
21356 Hold minimum and maximum values presented in graph across time. This way you
21357 can still spot out of range values without constantly looking at waveforms.
21360 Peak and instant envelope combined together.
21366 No filtering, this is default.
21369 Luma and chroma combined together.
21372 Similar as above, but shows difference between blue and red chroma.
21375 Similar as above, but use different colors.
21378 Similar as above, but again with different colors.
21381 Displays only chroma.
21384 Displays actual color value on waveform.
21387 Similar as above, but with luma showing frequency of chroma values.
21391 Set which graticule to display.
21395 Do not display graticule.
21398 Display green graticule showing legal broadcast ranges.
21401 Display orange graticule showing legal broadcast ranges.
21404 Display invert graticule showing legal broadcast ranges.
21408 Set graticule opacity.
21411 Set graticule flags.
21415 Draw numbers above lines. By default enabled.
21418 Draw dots instead of lines.
21422 Set scale used for displaying graticule.
21429 Default is digital.
21432 Set background opacity.
21436 Set tint for output.
21437 Only used with lowpass filter and when display is not overlay and input
21438 pixel formats are not RGB.
21441 @section weave, doubleweave
21443 The @code{weave} takes a field-based video input and join
21444 each two sequential fields into single frame, producing a new double
21445 height clip with half the frame rate and half the frame count.
21447 The @code{doubleweave} works same as @code{weave} but without
21448 halving frame rate and frame count.
21450 It accepts the following option:
21454 Set first field. Available values are:
21458 Set the frame as top-field-first.
21461 Set the frame as bottom-field-first.
21465 @subsection Examples
21469 Interlace video using @ref{select} and @ref{separatefields} filter:
21471 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
21476 Apply the xBR high-quality magnification filter which is designed for pixel
21477 art. It follows a set of edge-detection rules, see
21478 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
21480 It accepts the following option:
21484 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
21485 @code{3xBR} and @code{4} for @code{4xBR}.
21486 Default is @code{3}.
21491 Apply cross fade from one input video stream to another input video stream.
21492 The cross fade is applied for specified duration.
21494 The filter accepts the following options:
21498 Set one of available transition effects:
21546 Default transition effect is fade.
21549 Set cross fade duration in seconds.
21550 Default duration is 1 second.
21553 Set cross fade start relative to first input stream in seconds.
21554 Default offset is 0.
21557 Set expression for custom transition effect.
21559 The expressions can use the following variables and functions:
21564 The coordinates of the current sample.
21568 The width and height of the image.
21571 Progress of transition effect.
21574 Currently processed plane.
21577 Return value of first input at current location and plane.
21580 Return value of second input at current location and plane.
21586 Return the value of the pixel at location (@var{x},@var{y}) of the
21587 first/second/third/fourth component of first input.
21593 Return the value of the pixel at location (@var{x},@var{y}) of the
21594 first/second/third/fourth component of second input.
21598 @subsection Examples
21602 Cross fade from one input video to another input video, with fade transition and duration of transition
21603 of 2 seconds starting at offset of 5 seconds:
21605 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
21610 Pick median pixels from several input videos.
21612 The filter accepts the following options:
21616 Set number of inputs.
21617 Default is 3. Allowed range is from 3 to 255.
21618 If number of inputs is even number, than result will be mean value between two median values.
21621 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
21624 Set median percentile. Default value is @code{0.5}.
21625 Default value of @code{0.5} will pick always median values, while @code{0} will pick
21626 minimum values, and @code{1} maximum values.
21629 @subsection Commands
21631 This filter supports all above options as @ref{commands}, excluding option @code{inputs}.
21634 Stack video inputs into custom layout.
21636 All streams must be of same pixel format.
21638 The filter accepts the following options:
21642 Set number of input streams. Default is 2.
21645 Specify layout of inputs.
21646 This option requires the desired layout configuration to be explicitly set by the user.
21647 This sets position of each video input in output. Each input
21648 is separated by '|'.
21649 The first number represents the column, and the second number represents the row.
21650 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
21651 where X is video input from which to take width or height.
21652 Multiple values can be used when separated by '+'. In such
21653 case values are summed together.
21655 Note that if inputs are of different sizes gaps may appear, as not all of
21656 the output video frame will be filled. Similarly, videos can overlap each
21657 other if their position doesn't leave enough space for the full frame of
21660 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
21661 a layout must be set by the user.
21664 If set to 1, force the output to terminate when the shortest input
21665 terminates. Default value is 0.
21668 If set to valid color, all unused pixels will be filled with that color.
21669 By default fill is set to none, so it is disabled.
21672 @subsection Examples
21676 Display 4 inputs into 2x2 grid.
21680 input1(0, 0) | input3(w0, 0)
21681 input2(0, h0) | input4(w0, h0)
21685 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
21688 Note that if inputs are of different sizes, gaps or overlaps may occur.
21691 Display 4 inputs into 1x4 grid.
21698 input4(0, h0+h1+h2)
21702 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
21705 Note that if inputs are of different widths, unused space will appear.
21708 Display 9 inputs into 3x3 grid.
21712 input1(0, 0) | input4(w0, 0) | input7(w0+w3, 0)
21713 input2(0, h0) | input5(w0, h0) | input8(w0+w3, h0)
21714 input3(0, h0+h1) | input6(w0, h0+h1) | input9(w0+w3, h0+h1)
21718 xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
21721 Note that if inputs are of different sizes, gaps or overlaps may occur.
21724 Display 16 inputs into 4x4 grid.
21728 input1(0, 0) | input5(w0, 0) | input9 (w0+w4, 0) | input13(w0+w4+w8, 0)
21729 input2(0, h0) | input6(w0, h0) | input10(w0+w4, h0) | input14(w0+w4+w8, h0)
21730 input3(0, h0+h1) | input7(w0, h0+h1) | input11(w0+w4, h0+h1) | input15(w0+w4+w8, h0+h1)
21731 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
21735 xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
21736 w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
21739 Note that if inputs are of different sizes, gaps or overlaps may occur.
21746 Deinterlace the input video ("yadif" means "yet another deinterlacing
21749 It accepts the following parameters:
21755 The interlacing mode to adopt. It accepts one of the following values:
21758 @item 0, send_frame
21759 Output one frame for each frame.
21760 @item 1, send_field
21761 Output one frame for each field.
21762 @item 2, send_frame_nospatial
21763 Like @code{send_frame}, but it skips the spatial interlacing check.
21764 @item 3, send_field_nospatial
21765 Like @code{send_field}, but it skips the spatial interlacing check.
21768 The default value is @code{send_frame}.
21771 The picture field parity assumed for the input interlaced video. It accepts one
21772 of the following values:
21776 Assume the top field is first.
21778 Assume the bottom field is first.
21780 Enable automatic detection of field parity.
21783 The default value is @code{auto}.
21784 If the interlacing is unknown or the decoder does not export this information,
21785 top field first will be assumed.
21788 Specify which frames to deinterlace. Accepts one of the following
21793 Deinterlace all frames.
21794 @item 1, interlaced
21795 Only deinterlace frames marked as interlaced.
21798 The default value is @code{all}.
21801 @section yadif_cuda
21803 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
21804 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
21807 It accepts the following parameters:
21813 The interlacing mode to adopt. It accepts one of the following values:
21816 @item 0, send_frame
21817 Output one frame for each frame.
21818 @item 1, send_field
21819 Output one frame for each field.
21820 @item 2, send_frame_nospatial
21821 Like @code{send_frame}, but it skips the spatial interlacing check.
21822 @item 3, send_field_nospatial
21823 Like @code{send_field}, but it skips the spatial interlacing check.
21826 The default value is @code{send_frame}.
21829 The picture field parity assumed for the input interlaced video. It accepts one
21830 of the following values:
21834 Assume the top field is first.
21836 Assume the bottom field is first.
21838 Enable automatic detection of field parity.
21841 The default value is @code{auto}.
21842 If the interlacing is unknown or the decoder does not export this information,
21843 top field first will be assumed.
21846 Specify which frames to deinterlace. Accepts one of the following
21851 Deinterlace all frames.
21852 @item 1, interlaced
21853 Only deinterlace frames marked as interlaced.
21856 The default value is @code{all}.
21861 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21862 The algorithm is described in
21863 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21865 It accepts the following parameters:
21869 Set the window radius. Default value is 3.
21872 Set which planes to filter. Default is only the first plane.
21875 Set blur strength. Default value is 128.
21878 @subsection Commands
21879 This filter supports same @ref{commands} as options.
21883 Apply Zoom & Pan effect.
21885 This filter accepts the following options:
21889 Set the zoom expression. Range is 1-10. Default is 1.
21893 Set the x and y expression. Default is 0.
21896 Set the duration expression in number of frames.
21897 This sets for how many number of frames effect will last for
21898 single input image.
21901 Set the output image size, default is 'hd720'.
21904 Set the output frame rate, default is '25'.
21907 Each expression can contain the following constants:
21926 Output frame count.
21929 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21931 @item out_time, time, ot
21932 The output timestamp expressed in seconds.
21936 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21937 for current input frame.
21941 'x' and 'y' of last output frame of previous input frame or 0 when there was
21942 not yet such frame (first input frame).
21945 Last calculated zoom from 'z' expression for current input frame.
21948 Last calculated zoom of last output frame of previous input frame.
21951 Number of output frames for current input frame. Calculated from 'd' expression
21952 for each input frame.
21955 number of output frames created for previous input frame
21958 Rational number: input width / input height
21961 sample aspect ratio
21964 display aspect ratio
21968 @subsection Examples
21972 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21974 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
21978 Zoom in up to 1.5x and pan always at center of picture:
21980 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21984 Same as above but without pausing:
21986 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21990 Zoom in 2x into center of picture only for the first second of the input video:
21992 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21999 Scale (resize) the input video, using the z.lib library:
22000 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
22001 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
22003 The zscale filter forces the output display aspect ratio to be the same
22004 as the input, by changing the output sample aspect ratio.
22006 If the input image format is different from the format requested by
22007 the next filter, the zscale filter will convert the input to the
22010 @subsection Options
22011 The filter accepts the following options.
22016 Set the output video dimension expression. Default value is the input
22019 If the @var{width} or @var{w} value is 0, the input width is used for
22020 the output. If the @var{height} or @var{h} value is 0, the input height
22021 is used for the output.
22023 If one and only one of the values is -n with n >= 1, the zscale filter
22024 will use a value that maintains the aspect ratio of the input image,
22025 calculated from the other specified dimension. After that it will,
22026 however, make sure that the calculated dimension is divisible by n and
22027 adjust the value if necessary.
22029 If both values are -n with n >= 1, the behavior will be identical to
22030 both values being set to 0 as previously detailed.
22032 See below for the list of accepted constants for use in the dimension
22036 Set the video size. For the syntax of this option, check the
22037 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22040 Set the dither type.
22042 Possible values are:
22047 @item error_diffusion
22053 Set the resize filter type.
22055 Possible values are:
22065 Default is bilinear.
22068 Set the color range.
22070 Possible values are:
22077 Default is same as input.
22080 Set the color primaries.
22082 Possible values are:
22092 Default is same as input.
22095 Set the transfer characteristics.
22097 Possible values are:
22111 Default is same as input.
22114 Set the colorspace matrix.
22116 Possible value are:
22127 Default is same as input.
22130 Set the input color range.
22132 Possible values are:
22139 Default is same as input.
22141 @item primariesin, pin
22142 Set the input color primaries.
22144 Possible values are:
22154 Default is same as input.
22156 @item transferin, tin
22157 Set the input transfer characteristics.
22159 Possible values are:
22170 Default is same as input.
22172 @item matrixin, min
22173 Set the input colorspace matrix.
22175 Possible value are:
22187 Set the output chroma location.
22189 Possible values are:
22200 @item chromalin, cin
22201 Set the input chroma location.
22203 Possible values are:
22215 Set the nominal peak luminance.
22218 The values of the @option{w} and @option{h} options are expressions
22219 containing the following constants:
22224 The input width and height
22228 These are the same as @var{in_w} and @var{in_h}.
22232 The output (scaled) width and height
22236 These are the same as @var{out_w} and @var{out_h}
22239 The same as @var{iw} / @var{ih}
22242 input sample aspect ratio
22245 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
22249 horizontal and vertical input chroma subsample values. For example for the
22250 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
22254 horizontal and vertical output chroma subsample values. For example for the
22255 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
22258 @subsection Commands
22260 This filter supports the following commands:
22264 Set the output video dimension expression.
22265 The command accepts the same syntax of the corresponding option.
22267 If the specified expression is not valid, it is kept at its current
22271 @c man end VIDEO FILTERS
22273 @chapter OpenCL Video Filters
22274 @c man begin OPENCL VIDEO FILTERS
22276 Below is a description of the currently available OpenCL video filters.
22278 To enable compilation of these filters you need to configure FFmpeg with
22279 @code{--enable-opencl}.
22281 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
22284 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
22285 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
22286 given device parameters.
22288 @item -filter_hw_device @var{name}
22289 Pass the hardware device called @var{name} to all filters in any filter graph.
22293 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
22297 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
22299 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
22303 Since OpenCL filters are not able to access frame data in normal memory, all frame data needs to be uploaded(@ref{hwupload}) to hardware surfaces connected to the appropriate device before being used and then downloaded(@ref{hwdownload}) back to normal memory. Note that @ref{hwupload} will upload to a surface with the same layout as the software frame, so it may be necessary to add a @ref{format} filter immediately before to get the input into the right format and @ref{hwdownload} does not support all formats on the output - it may be necessary to insert an additional @ref{format} filter immediately following in the graph to get the output in a supported format.
22305 @section avgblur_opencl
22307 Apply average blur filter.
22309 The filter accepts the following options:
22313 Set horizontal radius size.
22314 Range is @code{[1, 1024]} and default value is @code{1}.
22317 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22320 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
22323 @subsection Example
22327 Apply average blur filter with horizontal and vertical size of 3, setting each pixel of the output to the average value of the 7x7 region centered on it in the input. For pixels on the edges of the image, the region does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
22329 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
22333 @section boxblur_opencl
22335 Apply a boxblur algorithm to the input video.
22337 It accepts the following parameters:
22341 @item luma_radius, lr
22342 @item luma_power, lp
22343 @item chroma_radius, cr
22344 @item chroma_power, cp
22345 @item alpha_radius, ar
22346 @item alpha_power, ap
22350 A description of the accepted options follows.
22353 @item luma_radius, lr
22354 @item chroma_radius, cr
22355 @item alpha_radius, ar
22356 Set an expression for the box radius in pixels used for blurring the
22357 corresponding input plane.
22359 The radius value must be a non-negative number, and must not be
22360 greater than the value of the expression @code{min(w,h)/2} for the
22361 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
22364 Default value for @option{luma_radius} is "2". If not specified,
22365 @option{chroma_radius} and @option{alpha_radius} default to the
22366 corresponding value set for @option{luma_radius}.
22368 The expressions can contain the following constants:
22372 The input width and height in pixels.
22376 The input chroma image width and height in pixels.
22380 The horizontal and vertical chroma subsample values. For example, for the
22381 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
22384 @item luma_power, lp
22385 @item chroma_power, cp
22386 @item alpha_power, ap
22387 Specify how many times the boxblur filter is applied to the
22388 corresponding plane.
22390 Default value for @option{luma_power} is 2. If not specified,
22391 @option{chroma_power} and @option{alpha_power} default to the
22392 corresponding value set for @option{luma_power}.
22394 A value of 0 will disable the effect.
22397 @subsection Examples
22399 Apply boxblur filter, setting each pixel of the output to the average value of box-radiuses @var{luma_radius}, @var{chroma_radius}, @var{alpha_radius} for each plane respectively. The filter will apply @var{luma_power}, @var{chroma_power}, @var{alpha_power} times onto the corresponding plane. For pixels on the edges of the image, the radius does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
22403 Apply a boxblur filter with the luma, chroma, and alpha radius
22404 set to 2 and luma, chroma, and alpha power set to 3. The filter will run 3 times with box-radius set to 2 for every plane of the image.
22406 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
22407 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
22411 Apply a boxblur filter with luma radius set to 2, luma_power to 1, chroma_radius to 4, chroma_power to 5, alpha_radius to 3 and alpha_power to 7.
22413 For the luma plane, a 2x2 box radius will be run once.
22415 For the chroma plane, a 4x4 box radius will be run 5 times.
22417 For the alpha plane, a 3x3 box radius will be run 7 times.
22419 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
22423 @section colorkey_opencl
22424 RGB colorspace color keying.
22426 The filter accepts the following options:
22430 The color which will be replaced with transparency.
22433 Similarity percentage with the key color.
22435 0.01 matches only the exact key color, while 1.0 matches everything.
22440 0.0 makes pixels either fully transparent, or not transparent at all.
22442 Higher values result in semi-transparent pixels, with a higher transparency
22443 the more similar the pixels color is to the key color.
22446 @subsection Examples
22450 Make every semi-green pixel in the input transparent with some slight blending:
22452 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
22456 @section convolution_opencl
22458 Apply convolution of 3x3, 5x5, 7x7 matrix.
22460 The filter accepts the following options:
22467 Set matrix for each plane.
22468 Matrix is sequence of 9, 25 or 49 signed numbers.
22469 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
22475 Set multiplier for calculated value for each plane.
22476 If unset or 0, it will be sum of all matrix elements.
22477 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
22483 Set bias for each plane. This value is added to the result of the multiplication.
22484 Useful for making the overall image brighter or darker.
22485 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
22489 @subsection Examples
22495 -i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
22501 -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
22505 Apply edge enhance:
22507 -i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
22513 -i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
22517 Apply laplacian edge detector which includes diagonals:
22519 -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
22525 -i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
22529 @section erosion_opencl
22531 Apply erosion effect to the video.
22533 This filter replaces the pixel by the local(3x3) minimum.
22535 It accepts the following options:
22542 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22543 If @code{0}, plane will remain unchanged.
22546 Flag which specifies the pixel to refer to.
22547 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22549 Flags to local 3x3 coordinates region centered on @code{x}:
22558 @subsection Example
22562 Apply erosion filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local minimum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local minimum is more then threshold of the corresponding plane, output pixel will be set to input pixel - threshold of corresponding plane.
22564 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22568 @section deshake_opencl
22569 Feature-point based video stabilization filter.
22571 The filter accepts the following options:
22575 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
22578 Whether or not additional debug info should be displayed, both in the processed output and in the console.
22580 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
22582 Viewing point matches in the output video is only supported for RGB input.
22584 Defaults to @code{0}.
22586 @item adaptive_crop
22587 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
22589 Defaults to @code{1}.
22591 @item refine_features
22592 Whether or not feature points should be refined at a sub-pixel level.
22594 This can be turned off for a slight performance gain at the cost of precision.
22596 Defaults to @code{1}.
22598 @item smooth_strength
22599 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
22601 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
22603 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
22605 Defaults to @code{0.0}.
22607 @item smooth_window_multiplier
22608 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
22610 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
22612 Acceptable values range from @code{0.1} to @code{10.0}.
22614 Larger values increase the amount of motion data available for determining how to smooth the camera path,
22615 potentially improving smoothness, but also increase latency and memory usage.
22617 Defaults to @code{2.0}.
22621 @subsection Examples
22625 Stabilize a video with a fixed, medium smoothing strength:
22627 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
22631 Stabilize a video with debugging (both in console and in rendered video):
22633 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
22637 @section dilation_opencl
22639 Apply dilation effect to the video.
22641 This filter replaces the pixel by the local(3x3) maximum.
22643 It accepts the following options:
22650 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
22651 If @code{0}, plane will remain unchanged.
22654 Flag which specifies the pixel to refer to.
22655 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
22657 Flags to local 3x3 coordinates region centered on @code{x}:
22666 @subsection Example
22670 Apply dilation filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local maximum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local maximum is more then threshold of the corresponding plane, output pixel will be set to input pixel + threshold of corresponding plane.
22672 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
22676 @section nlmeans_opencl
22678 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
22680 @section overlay_opencl
22682 Overlay one video on top of another.
22684 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
22685 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
22687 The filter accepts the following options:
22692 Set the x coordinate of the overlaid video on the main video.
22693 Default value is @code{0}.
22696 Set the y coordinate of the overlaid video on the main video.
22697 Default value is @code{0}.
22701 @subsection Examples
22705 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
22707 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22710 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
22712 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
22717 @section pad_opencl
22719 Add paddings to the input image, and place the original input at the
22720 provided @var{x}, @var{y} coordinates.
22722 It accepts the following options:
22727 Specify an expression for the size of the output image with the
22728 paddings added. If the value for @var{width} or @var{height} is 0, the
22729 corresponding input size is used for the output.
22731 The @var{width} expression can reference the value set by the
22732 @var{height} expression, and vice versa.
22734 The default value of @var{width} and @var{height} is 0.
22738 Specify the offsets to place the input image at within the padded area,
22739 with respect to the top/left border of the output image.
22741 The @var{x} expression can reference the value set by the @var{y}
22742 expression, and vice versa.
22744 The default value of @var{x} and @var{y} is 0.
22746 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
22747 so the input image is centered on the padded area.
22750 Specify the color of the padded area. For the syntax of this option,
22751 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
22752 manual,ffmpeg-utils}.
22755 Pad to an aspect instead to a resolution.
22758 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
22759 options are expressions containing the following constants:
22764 The input video width and height.
22768 These are the same as @var{in_w} and @var{in_h}.
22772 The output width and height (the size of the padded area), as
22773 specified by the @var{width} and @var{height} expressions.
22777 These are the same as @var{out_w} and @var{out_h}.
22781 The x and y offsets as specified by the @var{x} and @var{y}
22782 expressions, or NAN if not yet specified.
22785 same as @var{iw} / @var{ih}
22788 input sample aspect ratio
22791 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
22794 @section prewitt_opencl
22796 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
22798 The filter accepts the following option:
22802 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22805 Set value which will be multiplied with filtered result.
22806 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22809 Set value which will be added to filtered result.
22810 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22813 @subsection Example
22817 Apply the Prewitt operator with scale set to 2 and delta set to 10.
22819 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
22823 @anchor{program_opencl}
22824 @section program_opencl
22826 Filter video using an OpenCL program.
22831 OpenCL program source file.
22834 Kernel name in program.
22837 Number of inputs to the filter. Defaults to 1.
22840 Size of output frames. Defaults to the same as the first input.
22844 The @code{program_opencl} filter also supports the @ref{framesync} options.
22846 The program source file must contain a kernel function with the given name,
22847 which will be run once for each plane of the output. Each run on a plane
22848 gets enqueued as a separate 2D global NDRange with one work-item for each
22849 pixel to be generated. The global ID offset for each work-item is therefore
22850 the coordinates of a pixel in the destination image.
22852 The kernel function needs to take the following arguments:
22855 Destination image, @var{__write_only image2d_t}.
22857 This image will become the output; the kernel should write all of it.
22859 Frame index, @var{unsigned int}.
22861 This is a counter starting from zero and increasing by one for each frame.
22863 Source images, @var{__read_only image2d_t}.
22865 These are the most recent images on each input. The kernel may read from
22866 them to generate the output, but they can't be written to.
22873 Copy the input to the output (output must be the same size as the input).
22875 __kernel void copy(__write_only image2d_t destination,
22876 unsigned int index,
22877 __read_only image2d_t source)
22879 const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22881 int2 location = (int2)(get_global_id(0), get_global_id(1));
22883 float4 value = read_imagef(source, sampler, location);
22885 write_imagef(destination, location, value);
22890 Apply a simple transformation, rotating the input by an amount increasing
22891 with the index counter. Pixel values are linearly interpolated by the
22892 sampler, and the output need not have the same dimensions as the input.
22894 __kernel void rotate_image(__write_only image2d_t dst,
22895 unsigned int index,
22896 __read_only image2d_t src)
22898 const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22899 CLK_FILTER_LINEAR);
22901 float angle = (float)index / 100.0f;
22903 float2 dst_dim = convert_float2(get_image_dim(dst));
22904 float2 src_dim = convert_float2(get_image_dim(src));
22906 float2 dst_cen = dst_dim / 2.0f;
22907 float2 src_cen = src_dim / 2.0f;
22909 int2 dst_loc = (int2)(get_global_id(0), get_global_id(1));
22911 float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22913 cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22914 sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22916 src_pos = src_pos * src_dim / dst_dim;
22918 float2 src_loc = src_pos + src_cen;
22920 if (src_loc.x < 0.0f || src_loc.y < 0.0f ||
22921 src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22922 write_imagef(dst, dst_loc, 0.5f);
22924 write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22929 Blend two inputs together, with the amount of each input used varying
22930 with the index counter.
22932 __kernel void blend_images(__write_only image2d_t dst,
22933 unsigned int index,
22934 __read_only image2d_t src1,
22935 __read_only image2d_t src2)
22937 const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22938 CLK_FILTER_LINEAR);
22940 float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22942 int2 dst_loc = (int2)(get_global_id(0), get_global_id(1));
22943 int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22944 int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22946 float4 val1 = read_imagef(src1, sampler, src1_loc);
22947 float4 val2 = read_imagef(src2, sampler, src2_loc);
22949 write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22955 @section roberts_opencl
22956 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22958 The filter accepts the following option:
22962 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22965 Set value which will be multiplied with filtered result.
22966 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22969 Set value which will be added to filtered result.
22970 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22973 @subsection Example
22977 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22979 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22983 @section sobel_opencl
22985 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22987 The filter accepts the following option:
22991 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22994 Set value which will be multiplied with filtered result.
22995 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22998 Set value which will be added to filtered result.
22999 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
23002 @subsection Example
23006 Apply sobel operator with scale set to 2 and delta set to 10
23008 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
23012 @section tonemap_opencl
23014 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
23016 It accepts the following parameters:
23020 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
23023 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
23026 Apply desaturation for highlights that exceed this level of brightness. The
23027 higher the parameter, the more color information will be preserved. This
23028 setting helps prevent unnaturally blown-out colors for super-highlights, by
23029 (smoothly) turning into white instead. This makes images feel more natural,
23030 at the cost of reducing information about out-of-range colors.
23032 The default value is 0.5, and the algorithm here is a little different from
23033 the cpu version tonemap currently. A setting of 0.0 disables this option.
23036 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
23037 is used to detect whether the scene has changed or not. If the distance between
23038 the current frame average brightness and the current running average exceeds
23039 a threshold value, we would re-calculate scene average and peak brightness.
23040 The default value is 0.2.
23043 Specify the output pixel format.
23045 Currently supported formats are:
23052 Set the output color range.
23054 Possible values are:
23060 Default is same as input.
23063 Set the output color primaries.
23065 Possible values are:
23071 Default is same as input.
23074 Set the output transfer characteristics.
23076 Possible values are:
23085 Set the output colorspace matrix.
23087 Possible value are:
23093 Default is same as input.
23097 @subsection Example
23101 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
23103 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
23107 @section unsharp_opencl
23109 Sharpen or blur the input video.
23111 It accepts the following parameters:
23114 @item luma_msize_x, lx
23115 Set the luma matrix horizontal size.
23116 Range is @code{[1, 23]} and default value is @code{5}.
23118 @item luma_msize_y, ly
23119 Set the luma matrix vertical size.
23120 Range is @code{[1, 23]} and default value is @code{5}.
23122 @item luma_amount, la
23123 Set the luma effect strength.
23124 Range is @code{[-10, 10]} and default value is @code{1.0}.
23126 Negative values will blur the input video, while positive values will
23127 sharpen it, a value of zero will disable the effect.
23129 @item chroma_msize_x, cx
23130 Set the chroma matrix horizontal size.
23131 Range is @code{[1, 23]} and default value is @code{5}.
23133 @item chroma_msize_y, cy
23134 Set the chroma matrix vertical size.
23135 Range is @code{[1, 23]} and default value is @code{5}.
23137 @item chroma_amount, ca
23138 Set the chroma effect strength.
23139 Range is @code{[-10, 10]} and default value is @code{0.0}.
23141 Negative values will blur the input video, while positive values will
23142 sharpen it, a value of zero will disable the effect.
23146 All parameters are optional and default to the equivalent of the
23147 string '5:5:1.0:5:5:0.0'.
23149 @subsection Examples
23153 Apply strong luma sharpen effect:
23155 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
23159 Apply a strong blur of both luma and chroma parameters:
23161 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
23165 @section xfade_opencl
23167 Cross fade two videos with custom transition effect by using OpenCL.
23169 It accepts the following options:
23173 Set one of possible transition effects.
23177 Select custom transition effect, the actual transition description
23178 will be picked from source and kernel options.
23190 Default transition is fade.
23194 OpenCL program source file for custom transition.
23197 Set name of kernel to use for custom transition from program source file.
23200 Set duration of video transition.
23203 Set time of start of transition relative to first video.
23206 The program source file must contain a kernel function with the given name,
23207 which will be run once for each plane of the output. Each run on a plane
23208 gets enqueued as a separate 2D global NDRange with one work-item for each
23209 pixel to be generated. The global ID offset for each work-item is therefore
23210 the coordinates of a pixel in the destination image.
23212 The kernel function needs to take the following arguments:
23215 Destination image, @var{__write_only image2d_t}.
23217 This image will become the output; the kernel should write all of it.
23220 First Source image, @var{__read_only image2d_t}.
23221 Second Source image, @var{__read_only image2d_t}.
23223 These are the most recent images on each input. The kernel may read from
23224 them to generate the output, but they can't be written to.
23227 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
23234 Apply dots curtain transition effect:
23236 __kernel void blend_images(__write_only image2d_t dst,
23237 __read_only image2d_t src1,
23238 __read_only image2d_t src2,
23241 const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
23242 CLK_FILTER_LINEAR);
23243 int2 p = (int2)(get_global_id(0), get_global_id(1));
23244 float2 rp = (float2)(get_global_id(0), get_global_id(1));
23245 float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
23248 float2 dots = (float2)(20.0, 20.0);
23249 float2 center = (float2)(0,0);
23252 float4 val1 = read_imagef(src1, sampler, p);
23253 float4 val2 = read_imagef(src2, sampler, p);
23254 bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
23256 write_imagef(dst, p, next ? val1 : val2);
23262 @c man end OPENCL VIDEO FILTERS
23264 @chapter VAAPI Video Filters
23265 @c man begin VAAPI VIDEO FILTERS
23267 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
23269 To enable compilation of these filters you need to configure FFmpeg with
23270 @code{--enable-vaapi}.
23272 To use vaapi filters, you need to setup the vaapi device correctly. For more information, please read @url{https://trac.ffmpeg.org/wiki/Hardware/VAAPI}
23274 @section tonemap_vaapi
23276 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
23277 It maps the dynamic range of HDR10 content to the SDR content.
23278 It currently only accepts HDR10 as input.
23280 It accepts the following parameters:
23284 Specify the output pixel format.
23286 Currently supported formats are:
23295 Set the output color primaries.
23297 Default is same as input.
23300 Set the output transfer characteristics.
23305 Set the output colorspace matrix.
23307 Default is same as input.
23311 @subsection Example
23315 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
23317 tonemap_vaapi=format=p010:t=bt2020-10
23321 @c man end VAAPI VIDEO FILTERS
23323 @chapter Video Sources
23324 @c man begin VIDEO SOURCES
23326 Below is a description of the currently available video sources.
23330 Buffer video frames, and make them available to the filter chain.
23332 This source is mainly intended for a programmatic use, in particular
23333 through the interface defined in @file{libavfilter/buffersrc.h}.
23335 It accepts the following parameters:
23340 Specify the size (width and height) of the buffered video frames. For the
23341 syntax of this option, check the
23342 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23345 The input video width.
23348 The input video height.
23351 A string representing the pixel format of the buffered video frames.
23352 It may be a number corresponding to a pixel format, or a pixel format
23356 Specify the timebase assumed by the timestamps of the buffered frames.
23359 Specify the frame rate expected for the video stream.
23361 @item pixel_aspect, sar
23362 The sample (pixel) aspect ratio of the input video.
23365 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
23366 to the filtergraph description to specify swscale flags for automatically
23367 inserted scalers. See @ref{Filtergraph syntax}.
23369 @item hw_frames_ctx
23370 When using a hardware pixel format, this should be a reference to an
23371 AVHWFramesContext describing input frames.
23376 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
23379 will instruct the source to accept video frames with size 320x240 and
23380 with format "yuv410p", assuming 1/24 as the timestamps timebase and
23381 square pixels (1:1 sample aspect ratio).
23382 Since the pixel format with name "yuv410p" corresponds to the number 6
23383 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
23384 this example corresponds to:
23386 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
23389 Alternatively, the options can be specified as a flat string, but this
23390 syntax is deprecated:
23392 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
23396 Create a pattern generated by an elementary cellular automaton.
23398 The initial state of the cellular automaton can be defined through the
23399 @option{filename} and @option{pattern} options. If such options are
23400 not specified an initial state is created randomly.
23402 At each new frame a new row in the video is filled with the result of
23403 the cellular automaton next generation. The behavior when the whole
23404 frame is filled is defined by the @option{scroll} option.
23406 This source accepts the following options:
23410 Read the initial cellular automaton state, i.e. the starting row, from
23411 the specified file.
23412 In the file, each non-whitespace character is considered an alive
23413 cell, a newline will terminate the row, and further characters in the
23414 file will be ignored.
23417 Read the initial cellular automaton state, i.e. the starting row, from
23418 the specified string.
23420 Each non-whitespace character in the string is considered an alive
23421 cell, a newline will terminate the row, and further characters in the
23422 string will be ignored.
23425 Set the video rate, that is the number of frames generated per second.
23428 @item random_fill_ratio, ratio
23429 Set the random fill ratio for the initial cellular automaton row. It
23430 is a floating point number value ranging from 0 to 1, defaults to
23433 This option is ignored when a file or a pattern is specified.
23435 @item random_seed, seed
23436 Set the seed for filling randomly the initial row, must be an integer
23437 included between 0 and UINT32_MAX. If not specified, or if explicitly
23438 set to -1, the filter will try to use a good random seed on a best
23442 Set the cellular automaton rule, it is a number ranging from 0 to 255.
23443 Default value is 110.
23446 Set the size of the output video. For the syntax of this option, check the
23447 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23449 If @option{filename} or @option{pattern} is specified, the size is set
23450 by default to the width of the specified initial state row, and the
23451 height is set to @var{width} * PHI.
23453 If @option{size} is set, it must contain the width of the specified
23454 pattern string, and the specified pattern will be centered in the
23457 If a filename or a pattern string is not specified, the size value
23458 defaults to "320x518" (used for a randomly generated initial state).
23461 If set to 1, scroll the output upward when all the rows in the output
23462 have been already filled. If set to 0, the new generated row will be
23463 written over the top row just after the bottom row is filled.
23466 @item start_full, full
23467 If set to 1, completely fill the output with generated rows before
23468 outputting the first frame.
23469 This is the default behavior, for disabling set the value to 0.
23472 If set to 1, stitch the left and right row edges together.
23473 This is the default behavior, for disabling set the value to 0.
23476 @subsection Examples
23480 Read the initial state from @file{pattern}, and specify an output of
23483 cellauto=f=pattern:s=200x400
23487 Generate a random initial row with a width of 200 cells, with a fill
23490 cellauto=ratio=2/3:s=200x200
23494 Create a pattern generated by rule 18 starting by a single alive cell
23495 centered on an initial row with width 100:
23497 cellauto=p=@@:s=100x400:full=0:rule=18
23501 Specify a more elaborated initial pattern:
23503 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
23508 @anchor{coreimagesrc}
23509 @section coreimagesrc
23510 Video source generated on GPU using Apple's CoreImage API on OSX.
23512 This video source is a specialized version of the @ref{coreimage} video filter.
23513 Use a core image generator at the beginning of the applied filterchain to
23514 generate the content.
23516 The coreimagesrc video source accepts the following options:
23518 @item list_generators
23519 List all available generators along with all their respective options as well as
23520 possible minimum and maximum values along with the default values.
23522 list_generators=true
23526 Specify the size of the sourced video. For the syntax of this option, check the
23527 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23528 The default value is @code{320x240}.
23531 Specify the frame rate of the sourced video, as the number of frames
23532 generated per second. It has to be a string in the format
23533 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23534 number or a valid video frame rate abbreviation. The default value is
23538 Set the sample aspect ratio of the sourced video.
23541 Set the duration of the sourced video. See
23542 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23543 for the accepted syntax.
23545 If not specified, or the expressed duration is negative, the video is
23546 supposed to be generated forever.
23549 Additionally, all options of the @ref{coreimage} video filter are accepted.
23550 A complete filterchain can be used for further processing of the
23551 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
23552 and examples for details.
23554 @subsection Examples
23559 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
23560 given as complete and escaped command-line for Apple's standard bash shell:
23562 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
23564 This example is equivalent to the QRCode example of @ref{coreimage} without the
23565 need for a nullsrc video source.
23570 Generate several gradients.
23574 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23575 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23578 Set frame rate, expressed as number of frames per second. Default
23581 @item c0, c1, c2, c3, c4, c5, c6, c7
23582 Set 8 colors. Default values for colors is to pick random one.
23584 @item x0, y0, y0, y1
23585 Set gradient line source and destination points. If negative or out of range, random ones
23589 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
23592 Set seed for picking gradient line points.
23595 Set the duration of the sourced video. See
23596 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23597 for the accepted syntax.
23599 If not specified, or the expressed duration is negative, the video is
23600 supposed to be generated forever.
23603 Set speed of gradients rotation.
23607 @section mandelbrot
23609 Generate a Mandelbrot set fractal, and progressively zoom towards the
23610 point specified with @var{start_x} and @var{start_y}.
23612 This source accepts the following options:
23617 Set the terminal pts value. Default value is 400.
23620 Set the terminal scale value.
23621 Must be a floating point value. Default value is 0.3.
23624 Set the inner coloring mode, that is the algorithm used to draw the
23625 Mandelbrot fractal internal region.
23627 It shall assume one of the following values:
23632 Show time until convergence.
23634 Set color based on point closest to the origin of the iterations.
23639 Default value is @var{mincol}.
23642 Set the bailout value. Default value is 10.0.
23645 Set the maximum of iterations performed by the rendering
23646 algorithm. Default value is 7189.
23649 Set outer coloring mode.
23650 It shall assume one of following values:
23652 @item iteration_count
23653 Set iteration count mode.
23654 @item normalized_iteration_count
23655 set normalized iteration count mode.
23657 Default value is @var{normalized_iteration_count}.
23660 Set frame rate, expressed as number of frames per second. Default
23664 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23665 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23668 Set the initial scale value. Default value is 3.0.
23671 Set the initial x position. Must be a floating point value between
23672 -100 and 100. Default value is -0.743643887037158704752191506114774.
23675 Set the initial y position. Must be a floating point value between
23676 -100 and 100. Default value is -0.131825904205311970493132056385139.
23681 Generate various test patterns, as generated by the MPlayer test filter.
23683 The size of the generated video is fixed, and is 256x256.
23684 This source is useful in particular for testing encoding features.
23686 This source accepts the following options:
23691 Specify the frame rate of the sourced video, as the number of frames
23692 generated per second. It has to be a string in the format
23693 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23694 number or a valid video frame rate abbreviation. The default value is
23698 Set the duration of the sourced video. See
23699 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23700 for the accepted syntax.
23702 If not specified, or the expressed duration is negative, the video is
23703 supposed to be generated forever.
23707 Set the number or the name of the test to perform. Supported tests are:
23721 @item max_frames, m
23722 Set the maximum number of frames generated for each test, default value is 30.
23726 Default value is "all", which will cycle through the list of all tests.
23731 mptestsrc=t=dc_luma
23734 will generate a "dc_luma" test pattern.
23736 @section frei0r_src
23738 Provide a frei0r source.
23740 To enable compilation of this filter you need to install the frei0r
23741 header and configure FFmpeg with @code{--enable-frei0r}.
23743 This source accepts the following parameters:
23748 The size of the video to generate. For the syntax of this option, check the
23749 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23752 The framerate of the generated video. It may be a string of the form
23753 @var{num}/@var{den} or a frame rate abbreviation.
23756 The name to the frei0r source to load. For more information regarding frei0r and
23757 how to set the parameters, read the @ref{frei0r} section in the video filters
23760 @item filter_params
23761 A '|'-separated list of parameters to pass to the frei0r source.
23765 For example, to generate a frei0r partik0l source with size 200x200
23766 and frame rate 10 which is overlaid on the overlay filter main input:
23768 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
23773 Generate a life pattern.
23775 This source is based on a generalization of John Conway's life game.
23777 The sourced input represents a life grid, each pixel represents a cell
23778 which can be in one of two possible states, alive or dead. Every cell
23779 interacts with its eight neighbours, which are the cells that are
23780 horizontally, vertically, or diagonally adjacent.
23782 At each interaction the grid evolves according to the adopted rule,
23783 which specifies the number of neighbor alive cells which will make a
23784 cell stay alive or born. The @option{rule} option allows one to specify
23787 This source accepts the following options:
23791 Set the file from which to read the initial grid state. In the file,
23792 each non-whitespace character is considered an alive cell, and newline
23793 is used to delimit the end of each row.
23795 If this option is not specified, the initial grid is generated
23799 Set the video rate, that is the number of frames generated per second.
23802 @item random_fill_ratio, ratio
23803 Set the random fill ratio for the initial random grid. It is a
23804 floating point number value ranging from 0 to 1, defaults to 1/PHI.
23805 It is ignored when a file is specified.
23807 @item random_seed, seed
23808 Set the seed for filling the initial random grid, must be an integer
23809 included between 0 and UINT32_MAX. If not specified, or if explicitly
23810 set to -1, the filter will try to use a good random seed on a best
23816 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
23817 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
23818 @var{NS} specifies the number of alive neighbor cells which make a
23819 live cell stay alive, and @var{NB} the number of alive neighbor cells
23820 which make a dead cell to become alive (i.e. to "born").
23821 "s" and "b" can be used in place of "S" and "B", respectively.
23823 Alternatively a rule can be specified by an 18-bits integer. The 9
23824 high order bits are used to encode the next cell state if it is alive
23825 for each number of neighbor alive cells, the low order bits specify
23826 the rule for "borning" new cells. Higher order bits encode for an
23827 higher number of neighbor cells.
23828 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23829 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23831 Default value is "S23/B3", which is the original Conway's game of life
23832 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23833 cells, and will born a new cell if there are three alive cells around
23837 Set the size of the output video. For the syntax of this option, check the
23838 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23840 If @option{filename} is specified, the size is set by default to the
23841 same size of the input file. If @option{size} is set, it must contain
23842 the size specified in the input file, and the initial grid defined in
23843 that file is centered in the larger resulting area.
23845 If a filename is not specified, the size value defaults to "320x240"
23846 (used for a randomly generated initial grid).
23849 If set to 1, stitch the left and right grid edges together, and the
23850 top and bottom edges also. Defaults to 1.
23853 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23854 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23855 value from 0 to 255.
23858 Set the color of living (or new born) cells.
23861 Set the color of dead cells. If @option{mold} is set, this is the first color
23862 used to represent a dead cell.
23865 Set mold color, for definitely dead and moldy cells.
23867 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23868 ffmpeg-utils manual,ffmpeg-utils}.
23871 @subsection Examples
23875 Read a grid from @file{pattern}, and center it on a grid of size
23878 life=f=pattern:s=300x300
23882 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23884 life=ratio=2/3:s=200x200
23888 Specify a custom rule for evolving a randomly generated grid:
23894 Full example with slow death effect (mold) using @command{ffplay}:
23896 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23903 @anchor{haldclutsrc}
23906 @anchor{pal100bars}
23907 @anchor{rgbtestsrc}
23909 @anchor{smptehdbars}
23912 @anchor{yuvtestsrc}
23913 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23915 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23917 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23919 The @code{color} source provides an uniformly colored input.
23921 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23922 @ref{haldclut} filter.
23924 The @code{nullsrc} source returns unprocessed video frames. It is
23925 mainly useful to be employed in analysis / debugging tools, or as the
23926 source for filters which ignore the input data.
23928 The @code{pal75bars} source generates a color bars pattern, based on
23929 EBU PAL recommendations with 75% color levels.
23931 The @code{pal100bars} source generates a color bars pattern, based on
23932 EBU PAL recommendations with 100% color levels.
23934 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23935 detecting RGB vs BGR issues. You should see a red, green and blue
23936 stripe from top to bottom.
23938 The @code{smptebars} source generates a color bars pattern, based on
23939 the SMPTE Engineering Guideline EG 1-1990.
23941 The @code{smptehdbars} source generates a color bars pattern, based on
23942 the SMPTE RP 219-2002.
23944 The @code{testsrc} source generates a test video pattern, showing a
23945 color pattern, a scrolling gradient and a timestamp. This is mainly
23946 intended for testing purposes.
23948 The @code{testsrc2} source is similar to testsrc, but supports more
23949 pixel formats instead of just @code{rgb24}. This allows using it as an
23950 input for other tests without requiring a format conversion.
23952 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23953 see a y, cb and cr stripe from top to bottom.
23955 The sources accept the following parameters:
23960 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23961 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23962 pixels to be used as identity matrix for 3D lookup tables. Each component is
23963 coded on a @code{1/(N*N)} scale.
23966 Specify the color of the source, only available in the @code{color}
23967 source. For the syntax of this option, check the
23968 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23971 Specify the size of the sourced video. For the syntax of this option, check the
23972 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23973 The default value is @code{320x240}.
23975 This option is not available with the @code{allrgb}, @code{allyuv}, and
23976 @code{haldclutsrc} filters.
23979 Specify the frame rate of the sourced video, as the number of frames
23980 generated per second. It has to be a string in the format
23981 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23982 number or a valid video frame rate abbreviation. The default value is
23986 Set the duration of the sourced video. See
23987 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23988 for the accepted syntax.
23990 If not specified, or the expressed duration is negative, the video is
23991 supposed to be generated forever.
23993 Since the frame rate is used as time base, all frames including the last one
23994 will have their full duration. If the specified duration is not a multiple
23995 of the frame duration, it will be rounded up.
23998 Set the sample aspect ratio of the sourced video.
24001 Specify the alpha (opacity) of the background, only available in the
24002 @code{testsrc2} source. The value must be between 0 (fully transparent) and
24003 255 (fully opaque, the default).
24006 Set the number of decimals to show in the timestamp, only available in the
24007 @code{testsrc} source.
24009 The displayed timestamp value will correspond to the original
24010 timestamp value multiplied by the power of 10 of the specified
24011 value. Default value is 0.
24014 @subsection Examples
24018 Generate a video with a duration of 5.3 seconds, with size
24019 176x144 and a frame rate of 10 frames per second:
24021 testsrc=duration=5.3:size=qcif:rate=10
24025 The following graph description will generate a red source
24026 with an opacity of 0.2, with size "qcif" and a frame rate of 10
24029 color=c=red@@0.2:s=qcif:r=10
24033 If the input content is to be ignored, @code{nullsrc} can be used. The
24034 following command generates noise in the luminance plane by employing
24035 the @code{geq} filter:
24037 nullsrc=s=256x256, geq=random(1)*255:128:128
24041 @subsection Commands
24043 The @code{color} source supports the following commands:
24047 Set the color of the created image. Accepts the same syntax of the
24048 corresponding @option{color} option.
24053 Generate video using an OpenCL program.
24058 OpenCL program source file.
24061 Kernel name in program.
24064 Size of frames to generate. This must be set.
24067 Pixel format to use for the generated frames. This must be set.
24070 Number of frames generated every second. Default value is '25'.
24074 For details of how the program loading works, see the @ref{program_opencl}
24081 Generate a colour ramp by setting pixel values from the position of the pixel
24082 in the output image. (Note that this will work with all pixel formats, but
24083 the generated output will not be the same.)
24085 __kernel void ramp(__write_only image2d_t dst,
24086 unsigned int index)
24088 int2 loc = (int2)(get_global_id(0), get_global_id(1));
24091 val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
24093 write_imagef(dst, loc, val);
24098 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
24100 __kernel void sierpinski_carpet(__write_only image2d_t dst,
24101 unsigned int index)
24103 int2 loc = (int2)(get_global_id(0), get_global_id(1));
24105 float4 value = 0.0f;
24106 int x = loc.x + index;
24107 int y = loc.y + index;
24108 while (x > 0 || y > 0) {
24109 if (x % 3 == 1 && y % 3 == 1) {
24117 write_imagef(dst, loc, value);
24123 @section sierpinski
24125 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
24127 This source accepts the following options:
24131 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
24132 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
24135 Set frame rate, expressed as number of frames per second. Default
24139 Set seed which is used for random panning.
24142 Set max jump for single pan destination. Allowed range is from 1 to 10000.
24145 Set fractal type, can be default @code{carpet} or @code{triangle}.
24148 @c man end VIDEO SOURCES
24150 @chapter Video Sinks
24151 @c man begin VIDEO SINKS
24153 Below is a description of the currently available video sinks.
24155 @section buffersink
24157 Buffer video frames, and make them available to the end of the filter
24160 This sink is mainly intended for programmatic use, in particular
24161 through the interface defined in @file{libavfilter/buffersink.h}
24162 or the options system.
24164 It accepts a pointer to an AVBufferSinkContext structure, which
24165 defines the incoming buffers' formats, to be passed as the opaque
24166 parameter to @code{avfilter_init_filter} for initialization.
24170 Null video sink: do absolutely nothing with the input video. It is
24171 mainly useful as a template and for use in analysis / debugging
24174 @c man end VIDEO SINKS
24176 @chapter Multimedia Filters
24177 @c man begin MULTIMEDIA FILTERS
24179 Below is a description of the currently available multimedia filters.
24183 Convert input audio to a video output, displaying the audio bit scope.
24185 The filter accepts the following options:
24189 Set frame rate, expressed as number of frames per second. Default
24193 Specify the video size for the output. For the syntax of this option, check the
24194 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24195 Default value is @code{1024x256}.
24198 Specify list of colors separated by space or by '|' which will be used to
24199 draw channels. Unrecognized or missing colors will be replaced
24203 @section adrawgraph
24204 Draw a graph using input audio metadata.
24206 See @ref{drawgraph}
24208 @section agraphmonitor
24210 See @ref{graphmonitor}.
24212 @section ahistogram
24214 Convert input audio to a video output, displaying the volume histogram.
24216 The filter accepts the following options:
24220 Specify how histogram is calculated.
24222 It accepts the following values:
24225 Use single histogram for all channels.
24227 Use separate histogram for each channel.
24229 Default is @code{single}.
24232 Set frame rate, expressed as number of frames per second. Default
24236 Specify the video size for the output. For the syntax of this option, check the
24237 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24238 Default value is @code{hd720}.
24243 It accepts the following values:
24254 reverse logarithmic
24256 Default is @code{log}.
24259 Set amplitude scale.
24261 It accepts the following values:
24268 Default is @code{log}.
24271 Set how much frames to accumulate in histogram.
24272 Default is 1. Setting this to -1 accumulates all frames.
24275 Set histogram ratio of window height.
24278 Set sonogram sliding.
24280 It accepts the following values:
24283 replace old rows with new ones.
24285 scroll from top to bottom.
24287 Default is @code{replace}.
24290 @section aphasemeter
24292 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
24293 representing mean phase of current audio frame. A video output can also be produced and is
24294 enabled by default. The audio is passed through as first output.
24296 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
24297 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
24298 and @code{1} means channels are in phase.
24300 The filter accepts the following options, all related to its video output:
24304 Set the output frame rate. Default value is @code{25}.
24307 Set the video size for the output. For the syntax of this option, check the
24308 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24309 Default value is @code{800x400}.
24314 Specify the red, green, blue contrast. Default values are @code{2},
24315 @code{7} and @code{1}.
24316 Allowed range is @code{[0, 255]}.
24319 Set color which will be used for drawing median phase. If color is
24320 @code{none} which is default, no median phase value will be drawn.
24323 Enable video output. Default is enabled.
24326 @subsection phasing detection
24328 The filter also detects out of phase and mono sequences in stereo streams.
24329 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
24331 The filter accepts the following options for this detection:
24335 Enable mono and out of phase detection. Default is disabled.
24338 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
24339 Allowed range is @code{[0, 1]}.
24342 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
24343 Allowed range is @code{[90, 180]}.
24346 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
24349 @subsection Examples
24353 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
24355 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
24359 @section avectorscope
24361 Convert input audio to a video output, representing the audio vector
24364 The filter is used to measure the difference between channels of stereo
24365 audio stream. A monaural signal, consisting of identical left and right
24366 signal, results in straight vertical line. Any stereo separation is visible
24367 as a deviation from this line, creating a Lissajous figure.
24368 If the straight (or deviation from it) but horizontal line appears this
24369 indicates that the left and right channels are out of phase.
24371 The filter accepts the following options:
24375 Set the vectorscope mode.
24377 Available values are:
24380 Lissajous rotated by 45 degrees.
24383 Same as above but not rotated.
24386 Shape resembling half of circle.
24389 Default value is @samp{lissajous}.
24392 Set the video size for the output. For the syntax of this option, check the
24393 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24394 Default value is @code{400x400}.
24397 Set the output frame rate. Default value is @code{25}.
24403 Specify the red, green, blue and alpha contrast. Default values are @code{40},
24404 @code{160}, @code{80} and @code{255}.
24405 Allowed range is @code{[0, 255]}.
24411 Specify the red, green, blue and alpha fade. Default values are @code{15},
24412 @code{10}, @code{5} and @code{5}.
24413 Allowed range is @code{[0, 255]}.
24416 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
24417 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
24420 Set the vectorscope drawing mode.
24422 Available values are:
24425 Draw dot for each sample.
24428 Draw line between previous and current sample.
24431 Default value is @samp{dot}.
24434 Specify amplitude scale of audio samples.
24436 Available values are:
24452 Swap left channel axis with right channel axis.
24462 Mirror only x axis.
24465 Mirror only y axis.
24473 @subsection Examples
24477 Complete example using @command{ffplay}:
24479 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24480 [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
24484 @section bench, abench
24486 Benchmark part of a filtergraph.
24488 The filter accepts the following options:
24492 Start or stop a timer.
24494 Available values are:
24497 Get the current time, set it as frame metadata (using the key
24498 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
24501 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
24502 the input frame metadata to get the time difference. Time difference, average,
24503 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
24504 @code{min}) are then printed. The timestamps are expressed in seconds.
24508 @subsection Examples
24512 Benchmark @ref{selectivecolor} filter:
24514 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
24520 Concatenate audio and video streams, joining them together one after the
24523 The filter works on segments of synchronized video and audio streams. All
24524 segments must have the same number of streams of each type, and that will
24525 also be the number of streams at output.
24527 The filter accepts the following options:
24532 Set the number of segments. Default is 2.
24535 Set the number of output video streams, that is also the number of video
24536 streams in each segment. Default is 1.
24539 Set the number of output audio streams, that is also the number of audio
24540 streams in each segment. Default is 0.
24543 Activate unsafe mode: do not fail if segments have a different format.
24547 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
24548 @var{a} audio outputs.
24550 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
24551 segment, in the same order as the outputs, then the inputs for the second
24554 Related streams do not always have exactly the same duration, for various
24555 reasons including codec frame size or sloppy authoring. For that reason,
24556 related synchronized streams (e.g. a video and its audio track) should be
24557 concatenated at once. The concat filter will use the duration of the longest
24558 stream in each segment (except the last one), and if necessary pad shorter
24559 audio streams with silence.
24561 For this filter to work correctly, all segments must start at timestamp 0.
24563 All corresponding streams must have the same parameters in all segments; the
24564 filtering system will automatically select a common pixel format for video
24565 streams, and a common sample format, sample rate and channel layout for
24566 audio streams, but other settings, such as resolution, must be converted
24567 explicitly by the user.
24569 Different frame rates are acceptable but will result in variable frame rate
24570 at output; be sure to configure the output file to handle it.
24572 @subsection Examples
24576 Concatenate an opening, an episode and an ending, all in bilingual version
24577 (video in stream 0, audio in streams 1 and 2):
24579 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
24580 '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
24581 concat=n=3:v=1:a=2 [v] [a1] [a2]' \
24582 -map '[v]' -map '[a1]' -map '[a2]' output.mkv
24586 Concatenate two parts, handling audio and video separately, using the
24587 (a)movie sources, and adjusting the resolution:
24589 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
24590 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
24591 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
24593 Note that a desync will happen at the stitch if the audio and video streams
24594 do not have exactly the same duration in the first file.
24598 @subsection Commands
24600 This filter supports the following commands:
24603 Close the current segment and step to the next one
24609 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
24610 level. By default, it logs a message at a frequency of 10Hz with the
24611 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
24612 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
24614 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
24615 sample format is double-precision floating point. The input stream will be converted to
24616 this specification, if needed. Users may need to insert aformat and/or aresample filters
24617 after this filter to obtain the original parameters.
24619 The filter also has a video output (see the @var{video} option) with a real
24620 time graph to observe the loudness evolution. The graphic contains the logged
24621 message mentioned above, so it is not printed anymore when this option is set,
24622 unless the verbose logging is set. The main graphing area contains the
24623 short-term loudness (3 seconds of analysis), and the gauge on the right is for
24624 the momentary loudness (400 milliseconds), but can optionally be configured
24625 to instead display short-term loudness (see @var{gauge}).
24627 The green area marks a +/- 1LU target range around the target loudness
24628 (-23LUFS by default, unless modified through @var{target}).
24630 More information about the Loudness Recommendation EBU R128 on
24631 @url{http://tech.ebu.ch/loudness}.
24633 The filter accepts the following options:
24638 Activate the video output. The audio stream is passed unchanged whether this
24639 option is set or no. The video stream will be the first output stream if
24640 activated. Default is @code{0}.
24643 Set the video size. This option is for video only. For the syntax of this
24645 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24646 Default and minimum resolution is @code{640x480}.
24649 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
24650 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
24651 other integer value between this range is allowed.
24654 Set metadata injection. If set to @code{1}, the audio input will be segmented
24655 into 100ms output frames, each of them containing various loudness information
24656 in metadata. All the metadata keys are prefixed with @code{lavfi.r128.}.
24658 Default is @code{0}.
24661 Force the frame logging level.
24663 Available values are:
24666 information logging level
24668 verbose logging level
24671 By default, the logging level is set to @var{info}. If the @option{video} or
24672 the @option{metadata} options are set, it switches to @var{verbose}.
24677 Available modes can be cumulated (the option is a @code{flag} type). Possible
24681 Disable any peak mode (default).
24683 Enable sample-peak mode.
24685 Simple peak mode looking for the higher sample value. It logs a message
24686 for sample-peak (identified by @code{SPK}).
24688 Enable true-peak mode.
24690 If enabled, the peak lookup is done on an over-sampled version of the input
24691 stream for better peak accuracy. It logs a message for true-peak.
24692 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
24693 This mode requires a build with @code{libswresample}.
24697 Treat mono input files as "dual mono". If a mono file is intended for playback
24698 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
24699 If set to @code{true}, this option will compensate for this effect.
24700 Multi-channel input files are not affected by this option.
24703 Set a specific pan law to be used for the measurement of dual mono files.
24704 This parameter is optional, and has a default value of -3.01dB.
24707 Set a specific target level (in LUFS) used as relative zero in the visualization.
24708 This parameter is optional and has a default value of -23LUFS as specified
24709 by EBU R128. However, material published online may prefer a level of -16LUFS
24710 (e.g. for use with podcasts or video platforms).
24713 Set the value displayed by the gauge. Valid values are @code{momentary} and s
24714 @code{shortterm}. By default the momentary value will be used, but in certain
24715 scenarios it may be more useful to observe the short term value instead (e.g.
24719 Sets the display scale for the loudness. Valid parameters are @code{absolute}
24720 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
24721 video output, not the summary or continuous log output.
24724 @subsection Examples
24728 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
24730 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
24734 Run an analysis with @command{ffmpeg}:
24736 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
24740 @section interleave, ainterleave
24742 Temporally interleave frames from several inputs.
24744 @code{interleave} works with video inputs, @code{ainterleave} with audio.
24746 These filters read frames from several inputs and send the oldest
24747 queued frame to the output.
24749 Input streams must have well defined, monotonically increasing frame
24752 In order to submit one frame to output, these filters need to enqueue
24753 at least one frame for each input, so they cannot work in case one
24754 input is not yet terminated and will not receive incoming frames.
24756 For example consider the case when one input is a @code{select} filter
24757 which always drops input frames. The @code{interleave} filter will keep
24758 reading from that input, but it will never be able to send new frames
24759 to output until the input sends an end-of-stream signal.
24761 Also, depending on inputs synchronization, the filters will drop
24762 frames in case one input receives more frames than the other ones, and
24763 the queue is already filled.
24765 These filters accept the following options:
24769 Set the number of different inputs, it is 2 by default.
24772 How to determine the end-of-stream.
24776 The duration of the longest input. (default)
24779 The duration of the shortest input.
24782 The duration of the first input.
24787 @subsection Examples
24791 Interleave frames belonging to different streams using @command{ffmpeg}:
24793 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
24797 Add flickering blur effect:
24799 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
24803 @section metadata, ametadata
24805 Manipulate frame metadata.
24807 This filter accepts the following options:
24811 Set mode of operation of the filter.
24813 Can be one of the following:
24817 If both @code{value} and @code{key} is set, select frames
24818 which have such metadata. If only @code{key} is set, select
24819 every frame that has such key in metadata.
24822 Add new metadata @code{key} and @code{value}. If key is already available
24826 Modify value of already present key.
24829 If @code{value} is set, delete only keys that have such value.
24830 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24834 Print key and its value if metadata was found. If @code{key} is not set print all
24835 metadata values available in frame.
24839 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24842 Set metadata value which will be used. This option is mandatory for
24843 @code{modify} and @code{add} mode.
24846 Which function to use when comparing metadata value and @code{value}.
24848 Can be one of following:
24852 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24855 Values are interpreted as strings, returns true if metadata value starts with
24856 the @code{value} option string.
24859 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24862 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24865 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24868 Values are interpreted as floats, returns true if expression from option @code{expr}
24872 Values are interpreted as strings, returns true if metadata value ends with
24873 the @code{value} option string.
24877 Set expression which is used when @code{function} is set to @code{expr}.
24878 The expression is evaluated through the eval API and can contain the following
24883 Float representation of @code{value} from metadata key.
24886 Float representation of @code{value} as supplied by user in @code{value} option.
24890 If specified in @code{print} mode, output is written to the named file. Instead of
24891 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24892 for standard output. If @code{file} option is not set, output is written to the log
24893 with AV_LOG_INFO loglevel.
24896 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24900 @subsection Examples
24904 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24907 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24910 Print silencedetect output to file @file{metadata.txt}.
24912 silencedetect,ametadata=mode=print:file=metadata.txt
24915 Direct all metadata to a pipe with file descriptor 4.
24917 metadata=mode=print:file='pipe\:4'
24921 @section perms, aperms
24923 Set read/write permissions for the output frames.
24925 These filters are mainly aimed at developers to test direct path in the
24926 following filter in the filtergraph.
24928 The filters accept the following options:
24932 Select the permissions mode.
24934 It accepts the following values:
24937 Do nothing. This is the default.
24939 Set all the output frames read-only.
24941 Set all the output frames directly writable.
24943 Make the frame read-only if writable, and writable if read-only.
24945 Set each output frame read-only or writable randomly.
24949 Set the seed for the @var{random} mode, must be an integer included between
24950 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24951 @code{-1}, the filter will try to use a good random seed on a best effort
24955 Note: in case of auto-inserted filter between the permission filter and the
24956 following one, the permission might not be received as expected in that
24957 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24958 perms/aperms filter can avoid this problem.
24960 @section realtime, arealtime
24962 Slow down filtering to match real time approximately.
24964 These filters will pause the filtering for a variable amount of time to
24965 match the output rate with the input timestamps.
24966 They are similar to the @option{re} option to @code{ffmpeg}.
24968 They accept the following options:
24972 Time limit for the pauses. Any pause longer than that will be considered
24973 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24975 Speed factor for processing. The value must be a float larger than zero.
24976 Values larger than 1.0 will result in faster than realtime processing,
24977 smaller will slow processing down. The @var{limit} is automatically adapted
24978 accordingly. Default is 1.0.
24980 A processing speed faster than what is possible without these filters cannot
24985 @section select, aselect
24987 Select frames to pass in output.
24989 This filter accepts the following options:
24994 Set expression, which is evaluated for each input frame.
24996 If the expression is evaluated to zero, the frame is discarded.
24998 If the evaluation result is negative or NaN, the frame is sent to the
24999 first output; otherwise it is sent to the output with index
25000 @code{ceil(val)-1}, assuming that the input index starts from 0.
25002 For example a value of @code{1.2} corresponds to the output with index
25003 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
25006 Set the number of outputs. The output to which to send the selected
25007 frame is based on the result of the evaluation. Default value is 1.
25010 The expression can contain the following constants:
25014 The (sequential) number of the filtered frame, starting from 0.
25017 The (sequential) number of the selected frame, starting from 0.
25019 @item prev_selected_n
25020 The sequential number of the last selected frame. It's NAN if undefined.
25023 The timebase of the input timestamps.
25026 The PTS (Presentation TimeStamp) of the filtered video frame,
25027 expressed in @var{TB} units. It's NAN if undefined.
25030 The PTS of the filtered video frame,
25031 expressed in seconds. It's NAN if undefined.
25034 The PTS of the previously filtered video frame. It's NAN if undefined.
25036 @item prev_selected_pts
25037 The PTS of the last previously filtered video frame. It's NAN if undefined.
25039 @item prev_selected_t
25040 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
25043 The PTS of the first video frame in the video. It's NAN if undefined.
25046 The time of the first video frame in the video. It's NAN if undefined.
25048 @item pict_type @emph{(video only)}
25049 The type of the filtered frame. It can assume one of the following
25061 @item interlace_type @emph{(video only)}
25062 The frame interlace type. It can assume one of the following values:
25065 The frame is progressive (not interlaced).
25067 The frame is top-field-first.
25069 The frame is bottom-field-first.
25072 @item consumed_sample_n @emph{(audio only)}
25073 the number of selected samples before the current frame
25075 @item samples_n @emph{(audio only)}
25076 the number of samples in the current frame
25078 @item sample_rate @emph{(audio only)}
25079 the input sample rate
25082 This is 1 if the filtered frame is a key-frame, 0 otherwise.
25085 the position in the file of the filtered frame, -1 if the information
25086 is not available (e.g. for synthetic video)
25088 @item scene @emph{(video only)}
25089 value between 0 and 1 to indicate a new scene; a low value reflects a low
25090 probability for the current frame to introduce a new scene, while a higher
25091 value means the current frame is more likely to be one (see the example below)
25093 @item concatdec_select
25094 The concat demuxer can select only part of a concat input file by setting an
25095 inpoint and an outpoint, but the output packets may not be entirely contained
25096 in the selected interval. By using this variable, it is possible to skip frames
25097 generated by the concat demuxer which are not exactly contained in the selected
25100 This works by comparing the frame pts against the @var{lavf.concat.start_time}
25101 and the @var{lavf.concat.duration} packet metadata values which are also
25102 present in the decoded frames.
25104 The @var{concatdec_select} variable is -1 if the frame pts is at least
25105 start_time and either the duration metadata is missing or the frame pts is less
25106 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
25109 That basically means that an input frame is selected if its pts is within the
25110 interval set by the concat demuxer.
25114 The default value of the select expression is "1".
25116 @subsection Examples
25120 Select all frames in input:
25125 The example above is the same as:
25137 Select only I-frames:
25139 select='eq(pict_type\,I)'
25143 Select one frame every 100:
25145 select='not(mod(n\,100))'
25149 Select only frames contained in the 10-20 time interval:
25151 select=between(t\,10\,20)
25155 Select only I-frames contained in the 10-20 time interval:
25157 select=between(t\,10\,20)*eq(pict_type\,I)
25161 Select frames with a minimum distance of 10 seconds:
25163 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
25167 Use aselect to select only audio frames with samples number > 100:
25169 aselect='gt(samples_n\,100)'
25173 Create a mosaic of the first scenes:
25175 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
25178 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
25182 Send even and odd frames to separate outputs, and compose them:
25184 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
25188 Select useful frames from an ffconcat file which is using inpoints and
25189 outpoints but where the source files are not intra frame only.
25191 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
25195 @section sendcmd, asendcmd
25197 Send commands to filters in the filtergraph.
25199 These filters read commands to be sent to other filters in the
25202 @code{sendcmd} must be inserted between two video filters,
25203 @code{asendcmd} must be inserted between two audio filters, but apart
25204 from that they act the same way.
25206 The specification of commands can be provided in the filter arguments
25207 with the @var{commands} option, or in a file specified by the
25208 @var{filename} option.
25210 These filters accept the following options:
25213 Set the commands to be read and sent to the other filters.
25215 Set the filename of the commands to be read and sent to the other
25219 @subsection Commands syntax
25221 A commands description consists of a sequence of interval
25222 specifications, comprising a list of commands to be executed when a
25223 particular event related to that interval occurs. The occurring event
25224 is typically the current frame time entering or leaving a given time
25227 An interval is specified by the following syntax:
25229 @var{START}[-@var{END}] @var{COMMANDS};
25232 The time interval is specified by the @var{START} and @var{END} times.
25233 @var{END} is optional and defaults to the maximum time.
25235 The current frame time is considered within the specified interval if
25236 it is included in the interval [@var{START}, @var{END}), that is when
25237 the time is greater or equal to @var{START} and is lesser than
25240 @var{COMMANDS} consists of a sequence of one or more command
25241 specifications, separated by ",", relating to that interval. The
25242 syntax of a command specification is given by:
25244 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
25247 @var{FLAGS} is optional and specifies the type of events relating to
25248 the time interval which enable sending the specified command, and must
25249 be a non-null sequence of identifier flags separated by "+" or "|" and
25250 enclosed between "[" and "]".
25252 The following flags are recognized:
25255 The command is sent when the current frame timestamp enters the
25256 specified interval. In other words, the command is sent when the
25257 previous frame timestamp was not in the given interval, and the
25261 The command is sent when the current frame timestamp leaves the
25262 specified interval. In other words, the command is sent when the
25263 previous frame timestamp was in the given interval, and the
25267 The command @var{ARG} is interpreted as expression and result of
25268 expression is passed as @var{ARG}.
25270 The expression is evaluated through the eval API and can contain the following
25275 Original position in the file of the frame, or undefined if undefined
25276 for the current frame.
25279 The presentation timestamp in input.
25282 The count of the input frame for video or audio, starting from 0.
25285 The time in seconds of the current frame.
25288 The start time in seconds of the current command interval.
25291 The end time in seconds of the current command interval.
25294 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
25299 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
25302 @var{TARGET} specifies the target of the command, usually the name of
25303 the filter class or a specific filter instance name.
25305 @var{COMMAND} specifies the name of the command for the target filter.
25307 @var{ARG} is optional and specifies the optional list of argument for
25308 the given @var{COMMAND}.
25310 Between one interval specification and another, whitespaces, or
25311 sequences of characters starting with @code{#} until the end of line,
25312 are ignored and can be used to annotate comments.
25314 A simplified BNF description of the commands specification syntax
25317 @var{COMMAND_FLAG} ::= "enter" | "leave"
25318 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
25319 @var{COMMAND} ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
25320 @var{COMMANDS} ::= @var{COMMAND} [,@var{COMMANDS}]
25321 @var{INTERVAL} ::= @var{START}[-@var{END}] @var{COMMANDS}
25322 @var{INTERVALS} ::= @var{INTERVAL}[;@var{INTERVALS}]
25325 @subsection Examples
25329 Specify audio tempo change at second 4:
25331 asendcmd=c='4.0 atempo tempo 1.5',atempo
25335 Target a specific filter instance:
25337 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
25341 Specify a list of drawtext and hue commands in a file.
25343 # show text in the interval 5-10
25344 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
25345 [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
25347 # desaturate the image in the interval 15-20
25348 15.0-20.0 [enter] hue s 0,
25349 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
25351 [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
25353 # apply an exponential saturation fade-out effect, starting from time 25
25354 25 [enter] hue s exp(25-t)
25357 A filtergraph allowing to read and process the above command list
25358 stored in a file @file{test.cmd}, can be specified with:
25360 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
25365 @section setpts, asetpts
25367 Change the PTS (presentation timestamp) of the input frames.
25369 @code{setpts} works on video frames, @code{asetpts} on audio frames.
25371 This filter accepts the following options:
25376 The expression which is evaluated for each frame to construct its timestamp.
25380 The expression is evaluated through the eval API and can contain the following
25384 @item FRAME_RATE, FR
25385 frame rate, only defined for constant frame-rate video
25388 The presentation timestamp in input
25391 The count of the input frame for video or the number of consumed samples,
25392 not including the current frame for audio, starting from 0.
25394 @item NB_CONSUMED_SAMPLES
25395 The number of consumed samples, not including the current frame (only
25398 @item NB_SAMPLES, S
25399 The number of samples in the current frame (only audio)
25401 @item SAMPLE_RATE, SR
25402 The audio sample rate.
25405 The PTS of the first frame.
25408 the time in seconds of the first frame
25411 State whether the current frame is interlaced.
25414 the time in seconds of the current frame
25417 original position in the file of the frame, or undefined if undefined
25418 for the current frame
25421 The previous input PTS.
25424 previous input time in seconds
25427 The previous output PTS.
25430 previous output time in seconds
25433 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
25437 The wallclock (RTC) time at the start of the movie in microseconds.
25440 The timebase of the input timestamps.
25444 @subsection Examples
25448 Start counting PTS from zero
25450 setpts=PTS-STARTPTS
25454 Apply fast motion effect:
25460 Apply slow motion effect:
25466 Set fixed rate of 25 frames per second:
25472 Set fixed rate 25 fps with some jitter:
25474 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
25478 Apply an offset of 10 seconds to the input PTS:
25484 Generate timestamps from a "live source" and rebase onto the current timebase:
25486 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
25490 Generate timestamps by counting samples:
25499 Force color range for the output video frame.
25501 The @code{setrange} filter marks the color range property for the
25502 output frames. It does not change the input frame, but only sets the
25503 corresponding property, which affects how the frame is treated by
25506 The filter accepts the following options:
25511 Available values are:
25515 Keep the same color range property.
25517 @item unspecified, unknown
25518 Set the color range as unspecified.
25520 @item limited, tv, mpeg
25521 Set the color range as limited.
25523 @item full, pc, jpeg
25524 Set the color range as full.
25528 @section settb, asettb
25530 Set the timebase to use for the output frames timestamps.
25531 It is mainly useful for testing timebase configuration.
25533 It accepts the following parameters:
25538 The expression which is evaluated into the output timebase.
25542 The value for @option{tb} is an arithmetic expression representing a
25543 rational. The expression can contain the constants "AVTB" (the default
25544 timebase), "intb" (the input timebase) and "sr" (the sample rate,
25545 audio only). Default value is "intb".
25547 @subsection Examples
25551 Set the timebase to 1/25:
25557 Set the timebase to 1/10:
25563 Set the timebase to 1001/1000:
25569 Set the timebase to 2*intb:
25575 Set the default timebase value:
25582 Convert input audio to a video output representing frequency spectrum
25583 logarithmically using Brown-Puckette constant Q transform algorithm with
25584 direct frequency domain coefficient calculation (but the transform itself
25585 is not really constant Q, instead the Q factor is actually variable/clamped),
25586 with musical tone scale, from E0 to D#10.
25588 The filter accepts the following options:
25592 Specify the video size for the output. It must be even. For the syntax of this option,
25593 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25594 Default value is @code{1920x1080}.
25597 Set the output frame rate. Default value is @code{25}.
25600 Set the bargraph height. It must be even. Default value is @code{-1} which
25601 computes the bargraph height automatically.
25604 Set the axis height. It must be even. Default value is @code{-1} which computes
25605 the axis height automatically.
25608 Set the sonogram height. It must be even. Default value is @code{-1} which
25609 computes the sonogram height automatically.
25612 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
25613 instead. Default value is @code{1}.
25615 @item sono_v, volume
25616 Specify the sonogram volume expression. It can contain variables:
25619 the @var{bar_v} evaluated expression
25620 @item frequency, freq, f
25621 the frequency where it is evaluated
25622 @item timeclamp, tc
25623 the value of @var{timeclamp} option
25627 @item a_weighting(f)
25628 A-weighting of equal loudness
25629 @item b_weighting(f)
25630 B-weighting of equal loudness
25631 @item c_weighting(f)
25632 C-weighting of equal loudness.
25634 Default value is @code{16}.
25636 @item bar_v, volume2
25637 Specify the bargraph volume expression. It can contain variables:
25640 the @var{sono_v} evaluated expression
25641 @item frequency, freq, f
25642 the frequency where it is evaluated
25643 @item timeclamp, tc
25644 the value of @var{timeclamp} option
25648 @item a_weighting(f)
25649 A-weighting of equal loudness
25650 @item b_weighting(f)
25651 B-weighting of equal loudness
25652 @item c_weighting(f)
25653 C-weighting of equal loudness.
25655 Default value is @code{sono_v}.
25657 @item sono_g, gamma
25658 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
25659 higher gamma makes the spectrum having more range. Default value is @code{3}.
25660 Acceptable range is @code{[1, 7]}.
25662 @item bar_g, gamma2
25663 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
25667 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
25668 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
25670 @item timeclamp, tc
25671 Specify the transform timeclamp. At low frequency, there is trade-off between
25672 accuracy in time domain and frequency domain. If timeclamp is lower,
25673 event in time domain is represented more accurately (such as fast bass drum),
25674 otherwise event in frequency domain is represented more accurately
25675 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
25678 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
25679 limits future samples by applying asymmetric windowing in time domain, useful
25680 when low latency is required. Accepted range is @code{[0, 1]}.
25683 Specify the transform base frequency. Default value is @code{20.01523126408007475},
25684 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
25687 Specify the transform end frequency. Default value is @code{20495.59681441799654},
25688 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
25691 This option is deprecated and ignored.
25694 Specify the transform length in time domain. Use this option to control accuracy
25695 trade-off between time domain and frequency domain at every frequency sample.
25696 It can contain variables:
25698 @item frequency, freq, f
25699 the frequency where it is evaluated
25700 @item timeclamp, tc
25701 the value of @var{timeclamp} option.
25703 Default value is @code{384*tc/(384+tc*f)}.
25706 Specify the transform count for every video frame. Default value is @code{6}.
25707 Acceptable range is @code{[1, 30]}.
25710 Specify the transform count for every single pixel. Default value is @code{0},
25711 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
25714 Specify font file for use with freetype to draw the axis. If not specified,
25715 use embedded font. Note that drawing with font file or embedded font is not
25716 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
25720 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
25721 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
25725 Specify font color expression. This is arithmetic expression that should return
25726 integer value 0xRRGGBB. It can contain variables:
25728 @item frequency, freq, f
25729 the frequency where it is evaluated
25730 @item timeclamp, tc
25731 the value of @var{timeclamp} option
25736 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
25737 @item r(x), g(x), b(x)
25738 red, green, and blue value of intensity x.
25740 Default value is @code{st(0, (midi(f)-59.5)/12);
25741 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
25742 r(1-ld(1)) + b(ld(1))}.
25745 Specify image file to draw the axis. This option override @var{fontfile} and
25746 @var{fontcolor} option.
25749 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
25750 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
25751 Default value is @code{1}.
25754 Set colorspace. The accepted values are:
25757 Unspecified (default)
25766 BT.470BG or BT.601-6 625
25769 SMPTE-170M or BT.601-6 525
25775 BT.2020 with non-constant luminance
25780 Set spectrogram color scheme. This is list of floating point values with format
25781 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
25782 The default is @code{1|0.5|0|0|0.5|1}.
25786 @subsection Examples
25790 Playing audio while showing the spectrum:
25792 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
25796 Same as above, but with frame rate 30 fps:
25798 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
25802 Playing at 1280x720:
25804 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
25808 Disable sonogram display:
25814 A1 and its harmonics: A1, A2, (near)E3, A3:
25816 ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
25817 asplit[a][out1]; [a] showcqt [out0]'
25821 Same as above, but with more accuracy in frequency domain:
25823 ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
25824 asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25830 bar_v=10:sono_v=bar_v*a_weighting(f)
25834 Custom gamma, now spectrum is linear to the amplitude.
25840 Custom tlength equation:
25842 tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
25846 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25848 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25852 Custom font using fontconfig:
25854 font='Courier New,Monospace,mono|bold'
25858 Custom frequency range with custom axis using image file:
25860 axisfile=myaxis.png:basefreq=40:endfreq=10000
25866 Convert input audio to video output representing the audio power spectrum.
25867 Audio amplitude is on Y-axis while frequency is on X-axis.
25869 The filter accepts the following options:
25873 Specify size of video. For the syntax of this option, check the
25874 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25875 Default is @code{1024x512}.
25879 This set how each frequency bin will be represented.
25881 It accepts the following values:
25887 Default is @code{bar}.
25890 Set amplitude scale.
25892 It accepts the following values:
25906 Default is @code{log}.
25909 Set frequency scale.
25911 It accepts the following values:
25920 Reverse logarithmic scale.
25922 Default is @code{lin}.
25925 Set window size. Allowed range is from 16 to 65536.
25927 Default is @code{2048}
25930 Set windowing function.
25932 It accepts the following values:
25955 Default is @code{hanning}.
25958 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25959 which means optimal overlap for selected window function will be picked.
25962 Set time averaging. Setting this to 0 will display current maximal peaks.
25963 Default is @code{1}, which means time averaging is disabled.
25966 Specify list of colors separated by space or by '|' which will be used to
25967 draw channel frequencies. Unrecognized or missing colors will be replaced
25971 Set channel display mode.
25973 It accepts the following values:
25978 Default is @code{combined}.
25981 Set minimum amplitude used in @code{log} amplitude scaler.
25984 Set data display mode.
25986 It accepts the following values:
25992 Default is @code{magnitude}.
25995 @section showspatial
25997 Convert stereo input audio to a video output, representing the spatial relationship
25998 between two channels.
26000 The filter accepts the following options:
26004 Specify the video size for the output. For the syntax of this option, check the
26005 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26006 Default value is @code{512x512}.
26009 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
26012 Set window function.
26014 It accepts the following values:
26039 Default value is @code{hann}.
26042 Set ratio of overlap window. Default value is @code{0.5}.
26043 When value is @code{1} overlap is set to recommended size for specific
26044 window function currently used.
26047 @anchor{showspectrum}
26048 @section showspectrum
26050 Convert input audio to a video output, representing the audio frequency
26053 The filter accepts the following options:
26057 Specify the video size for the output. For the syntax of this option, check the
26058 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26059 Default value is @code{640x512}.
26062 Specify how the spectrum should slide along the window.
26064 It accepts the following values:
26067 the samples start again on the left when they reach the right
26069 the samples scroll from right to left
26071 frames are only produced when the samples reach the right
26073 the samples scroll from left to right
26076 Default value is @code{replace}.
26079 Specify display mode.
26081 It accepts the following values:
26084 all channels are displayed in the same row
26086 all channels are displayed in separate rows
26089 Default value is @samp{combined}.
26092 Specify display color mode.
26094 It accepts the following values:
26097 each channel is displayed in a separate color
26099 each channel is displayed using the same color scheme
26101 each channel is displayed using the rainbow color scheme
26103 each channel is displayed using the moreland color scheme
26105 each channel is displayed using the nebulae color scheme
26107 each channel is displayed using the fire color scheme
26109 each channel is displayed using the fiery color scheme
26111 each channel is displayed using the fruit color scheme
26113 each channel is displayed using the cool color scheme
26115 each channel is displayed using the magma color scheme
26117 each channel is displayed using the green color scheme
26119 each channel is displayed using the viridis color scheme
26121 each channel is displayed using the plasma color scheme
26123 each channel is displayed using the cividis color scheme
26125 each channel is displayed using the terrain color scheme
26128 Default value is @samp{channel}.
26131 Specify scale used for calculating intensity color values.
26133 It accepts the following values:
26138 square root, default
26149 Default value is @samp{sqrt}.
26152 Specify frequency scale.
26154 It accepts the following values:
26162 Default value is @samp{lin}.
26165 Set saturation modifier for displayed colors. Negative values provide
26166 alternative color scheme. @code{0} is no saturation at all.
26167 Saturation must be in [-10.0, 10.0] range.
26168 Default value is @code{1}.
26171 Set window function.
26173 It accepts the following values:
26198 Default value is @code{hann}.
26201 Set orientation of time vs frequency axis. Can be @code{vertical} or
26202 @code{horizontal}. Default is @code{vertical}.
26205 Set ratio of overlap window. Default value is @code{0}.
26206 When value is @code{1} overlap is set to recommended size for specific
26207 window function currently used.
26210 Set scale gain for calculating intensity color values.
26211 Default value is @code{1}.
26214 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
26217 Set color rotation, must be in [-1.0, 1.0] range.
26218 Default value is @code{0}.
26221 Set start frequency from which to display spectrogram. Default is @code{0}.
26224 Set stop frequency to which to display spectrogram. Default is @code{0}.
26227 Set upper frame rate limit. Default is @code{auto}, unlimited.
26230 Draw time and frequency axes and legends. Default is disabled.
26233 The usage is very similar to the showwaves filter; see the examples in that
26236 @subsection Examples
26240 Large window with logarithmic color scaling:
26242 showspectrum=s=1280x480:scale=log
26246 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
26248 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
26249 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
26253 @section showspectrumpic
26255 Convert input audio to a single video frame, representing the audio frequency
26258 The filter accepts the following options:
26262 Specify the video size for the output. For the syntax of this option, check the
26263 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26264 Default value is @code{4096x2048}.
26267 Specify display mode.
26269 It accepts the following values:
26272 all channels are displayed in the same row
26274 all channels are displayed in separate rows
26276 Default value is @samp{combined}.
26279 Specify display color mode.
26281 It accepts the following values:
26284 each channel is displayed in a separate color
26286 each channel is displayed using the same color scheme
26288 each channel is displayed using the rainbow color scheme
26290 each channel is displayed using the moreland color scheme
26292 each channel is displayed using the nebulae color scheme
26294 each channel is displayed using the fire color scheme
26296 each channel is displayed using the fiery color scheme
26298 each channel is displayed using the fruit color scheme
26300 each channel is displayed using the cool color scheme
26302 each channel is displayed using the magma color scheme
26304 each channel is displayed using the green color scheme
26306 each channel is displayed using the viridis color scheme
26308 each channel is displayed using the plasma color scheme
26310 each channel is displayed using the cividis color scheme
26312 each channel is displayed using the terrain color scheme
26314 Default value is @samp{intensity}.
26317 Specify scale used for calculating intensity color values.
26319 It accepts the following values:
26324 square root, default
26334 Default value is @samp{log}.
26337 Specify frequency scale.
26339 It accepts the following values:
26347 Default value is @samp{lin}.
26350 Set saturation modifier for displayed colors. Negative values provide
26351 alternative color scheme. @code{0} is no saturation at all.
26352 Saturation must be in [-10.0, 10.0] range.
26353 Default value is @code{1}.
26356 Set window function.
26358 It accepts the following values:
26382 Default value is @code{hann}.
26385 Set orientation of time vs frequency axis. Can be @code{vertical} or
26386 @code{horizontal}. Default is @code{vertical}.
26389 Set scale gain for calculating intensity color values.
26390 Default value is @code{1}.
26393 Draw time and frequency axes and legends. Default is enabled.
26396 Set color rotation, must be in [-1.0, 1.0] range.
26397 Default value is @code{0}.
26400 Set start frequency from which to display spectrogram. Default is @code{0}.
26403 Set stop frequency to which to display spectrogram. Default is @code{0}.
26406 @subsection Examples
26410 Extract an audio spectrogram of a whole audio track
26411 in a 1024x1024 picture using @command{ffmpeg}:
26413 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
26417 @section showvolume
26419 Convert input audio volume to a video output.
26421 The filter accepts the following options:
26428 Set border width, allowed range is [0, 5]. Default is 1.
26431 Set channel width, allowed range is [80, 8192]. Default is 400.
26434 Set channel height, allowed range is [1, 900]. Default is 20.
26437 Set fade, allowed range is [0, 1]. Default is 0.95.
26440 Set volume color expression.
26442 The expression can use the following variables:
26446 Current max volume of channel in dB.
26452 Current channel number, starting from 0.
26456 If set, displays channel names. Default is enabled.
26459 If set, displays volume values. Default is enabled.
26462 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
26463 default is @code{h}.
26466 Set step size, allowed range is [0, 5]. Default is 0, which means
26470 Set background opacity, allowed range is [0, 1]. Default is 0.
26473 Set metering mode, can be peak: @code{p} or rms: @code{r},
26474 default is @code{p}.
26477 Set display scale, can be linear: @code{lin} or log: @code{log},
26478 default is @code{lin}.
26482 If set to > 0., display a line for the max level
26483 in the previous seconds.
26484 default is disabled: @code{0.}
26487 The color of the max line. Use when @code{dm} option is set to > 0.
26488 default is: @code{orange}
26493 Convert input audio to a video output, representing the samples waves.
26495 The filter accepts the following options:
26499 Specify the video size for the output. For the syntax of this option, check the
26500 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26501 Default value is @code{600x240}.
26506 Available values are:
26509 Draw a point for each sample.
26512 Draw a vertical line for each sample.
26515 Draw a point for each sample and a line between them.
26518 Draw a centered vertical line for each sample.
26521 Default value is @code{point}.
26524 Set the number of samples which are printed on the same column. A
26525 larger value will decrease the frame rate. Must be a positive
26526 integer. This option can be set only if the value for @var{rate}
26527 is not explicitly specified.
26530 Set the (approximate) output frame rate. This is done by setting the
26531 option @var{n}. Default value is "25".
26533 @item split_channels
26534 Set if channels should be drawn separately or overlap. Default value is 0.
26537 Set colors separated by '|' which are going to be used for drawing of each channel.
26540 Set amplitude scale.
26542 Available values are:
26560 Set the draw mode. This is mostly useful to set for high @var{n}.
26562 Available values are:
26565 Scale pixel values for each drawn sample.
26568 Draw every sample directly.
26571 Default value is @code{scale}.
26574 @subsection Examples
26578 Output the input file audio and the corresponding video representation
26581 amovie=a.mp3,asplit[out0],showwaves[out1]
26585 Create a synthetic signal and show it with showwaves, forcing a
26586 frame rate of 30 frames per second:
26588 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
26592 @section showwavespic
26594 Convert input audio to a single video frame, representing the samples waves.
26596 The filter accepts the following options:
26600 Specify the video size for the output. For the syntax of this option, check the
26601 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
26602 Default value is @code{600x240}.
26604 @item split_channels
26605 Set if channels should be drawn separately or overlap. Default value is 0.
26608 Set colors separated by '|' which are going to be used for drawing of each channel.
26611 Set amplitude scale.
26613 Available values are:
26633 Available values are:
26636 Scale pixel values for each drawn sample.
26639 Draw every sample directly.
26642 Default value is @code{scale}.
26645 Set the filter mode.
26647 Available values are:
26650 Use average samples values for each drawn sample.
26653 Use peak samples values for each drawn sample.
26656 Default value is @code{average}.
26659 @subsection Examples
26663 Extract a channel split representation of the wave form of a whole audio track
26664 in a 1024x800 picture using @command{ffmpeg}:
26666 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
26670 @section sidedata, asidedata
26672 Delete frame side data, or select frames based on it.
26674 This filter accepts the following options:
26678 Set mode of operation of the filter.
26680 Can be one of the following:
26684 Select every frame with side data of @code{type}.
26687 Delete side data of @code{type}. If @code{type} is not set, delete all side
26693 Set side data type used with all modes. Must be set for @code{select} mode. For
26694 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
26695 in @file{libavutil/frame.h}. For example, to choose
26696 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
26700 @section spectrumsynth
26702 Synthesize audio from 2 input video spectrums, first input stream represents
26703 magnitude across time and second represents phase across time.
26704 The filter will transform from frequency domain as displayed in videos back
26705 to time domain as presented in audio output.
26707 This filter is primarily created for reversing processed @ref{showspectrum}
26708 filter outputs, but can synthesize sound from other spectrograms too.
26709 But in such case results are going to be poor if the phase data is not
26710 available, because in such cases phase data need to be recreated, usually
26711 it's just recreated from random noise.
26712 For best results use gray only output (@code{channel} color mode in
26713 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
26714 @code{lin} scale for phase video. To produce phase, for 2nd video, use
26715 @code{data} option. Inputs videos should generally use @code{fullframe}
26716 slide mode as that saves resources needed for decoding video.
26718 The filter accepts the following options:
26722 Specify sample rate of output audio, the sample rate of audio from which
26723 spectrum was generated may differ.
26726 Set number of channels represented in input video spectrums.
26729 Set scale which was used when generating magnitude input spectrum.
26730 Can be @code{lin} or @code{log}. Default is @code{log}.
26733 Set slide which was used when generating inputs spectrums.
26734 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
26735 Default is @code{fullframe}.
26738 Set window function used for resynthesis.
26741 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
26742 which means optimal overlap for selected window function will be picked.
26745 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
26746 Default is @code{vertical}.
26749 @subsection Examples
26753 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
26754 then resynthesize videos back to audio with spectrumsynth:
26756 ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
26757 ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
26758 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
26762 @section split, asplit
26764 Split input into several identical outputs.
26766 @code{asplit} works with audio input, @code{split} with video.
26768 The filter accepts a single parameter which specifies the number of outputs. If
26769 unspecified, it defaults to 2.
26771 @subsection Examples
26775 Create two separate outputs from the same input:
26777 [in] split [out0][out1]
26781 To create 3 or more outputs, you need to specify the number of
26784 [in] asplit=3 [out0][out1][out2]
26788 Create two separate outputs from the same input, one cropped and
26791 [in] split [splitout1][splitout2];
26792 [splitout1] crop=100:100:0:0 [cropout];
26793 [splitout2] pad=200:200:100:100 [padout];
26797 Create 5 copies of the input audio with @command{ffmpeg}:
26799 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
26805 Receive commands sent through a libzmq client, and forward them to
26806 filters in the filtergraph.
26808 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
26809 must be inserted between two video filters, @code{azmq} between two
26810 audio filters. Both are capable to send messages to any filter type.
26812 To enable these filters you need to install the libzmq library and
26813 headers and configure FFmpeg with @code{--enable-libzmq}.
26815 For more information about libzmq see:
26816 @url{http://www.zeromq.org/}
26818 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
26819 receives messages sent through a network interface defined by the
26820 @option{bind_address} (or the abbreviation "@option{b}") option.
26821 Default value of this option is @file{tcp://localhost:5555}. You may
26822 want to alter this value to your needs, but do not forget to escape any
26823 ':' signs (see @ref{filtergraph escaping}).
26825 The received message must be in the form:
26827 @var{TARGET} @var{COMMAND} [@var{ARG}]
26830 @var{TARGET} specifies the target of the command, usually the name of
26831 the filter class or a specific filter instance name. The default
26832 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26833 but you can override this by using the @samp{filter_name@@id} syntax
26834 (see @ref{Filtergraph syntax}).
26836 @var{COMMAND} specifies the name of the command for the target filter.
26838 @var{ARG} is optional and specifies the optional argument list for the
26839 given @var{COMMAND}.
26841 Upon reception, the message is processed and the corresponding command
26842 is injected into the filtergraph. Depending on the result, the filter
26843 will send a reply to the client, adopting the format:
26845 @var{ERROR_CODE} @var{ERROR_REASON}
26849 @var{MESSAGE} is optional.
26851 @subsection Examples
26853 Look at @file{tools/zmqsend} for an example of a zmq client which can
26854 be used to send commands processed by these filters.
26856 Consider the following filtergraph generated by @command{ffplay}.
26857 In this example the last overlay filter has an instance name. All other
26858 filters will have default instance names.
26861 ffplay -dumpgraph 1 -f lavfi "
26862 color=s=100x100:c=red [l];
26863 color=s=100x100:c=blue [r];
26864 nullsrc=s=200x100, zmq [bg];
26865 [bg][l] overlay [bg+l];
26866 [bg+l][r] overlay@@my=x=100 "
26869 To change the color of the left side of the video, the following
26870 command can be used:
26872 echo Parsed_color_0 c yellow | tools/zmqsend
26875 To change the right side:
26877 echo Parsed_color_1 c pink | tools/zmqsend
26880 To change the position of the right side:
26882 echo overlay@@my x 150 | tools/zmqsend
26886 @c man end MULTIMEDIA FILTERS
26888 @chapter Multimedia Sources
26889 @c man begin MULTIMEDIA SOURCES
26891 Below is a description of the currently available multimedia sources.
26895 This is the same as @ref{movie} source, except it selects an audio
26901 Read audio and/or video stream(s) from a movie container.
26903 It accepts the following parameters:
26907 The name of the resource to read (not necessarily a file; it can also be a
26908 device or a stream accessed through some protocol).
26910 @item format_name, f
26911 Specifies the format assumed for the movie to read, and can be either
26912 the name of a container or an input device. If not specified, the
26913 format is guessed from @var{movie_name} or by probing.
26915 @item seek_point, sp
26916 Specifies the seek point in seconds. The frames will be output
26917 starting from this seek point. The parameter is evaluated with
26918 @code{av_strtod}, so the numerical value may be suffixed by an IS
26919 postfix. The default value is "0".
26922 Specifies the streams to read. Several streams can be specified,
26923 separated by "+". The source will then have as many outputs, in the
26924 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26925 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26926 respectively the default (best suited) video and audio stream. Default
26927 is "dv", or "da" if the filter is called as "amovie".
26929 @item stream_index, si
26930 Specifies the index of the video stream to read. If the value is -1,
26931 the most suitable video stream will be automatically selected. The default
26932 value is "-1". Deprecated. If the filter is called "amovie", it will select
26933 audio instead of video.
26936 Specifies how many times to read the stream in sequence.
26937 If the value is 0, the stream will be looped infinitely.
26938 Default value is "1".
26940 Note that when the movie is looped the source timestamps are not
26941 changed, so it will generate non monotonically increasing timestamps.
26943 @item discontinuity
26944 Specifies the time difference between frames above which the point is
26945 considered a timestamp discontinuity which is removed by adjusting the later
26949 It allows overlaying a second video on top of the main input of
26950 a filtergraph, as shown in this graph:
26952 input -----------> deltapts0 --> overlay --> output
26955 movie --> scale--> deltapts1 -------+
26957 @subsection Examples
26961 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26962 on top of the input labelled "in":
26964 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26965 [in] setpts=PTS-STARTPTS [main];
26966 [main][over] overlay=16:16 [out]
26970 Read from a video4linux2 device, and overlay it on top of the input
26973 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26974 [in] setpts=PTS-STARTPTS [main];
26975 [main][over] overlay=16:16 [out]
26979 Read the first video stream and the audio stream with id 0x81 from
26980 dvd.vob; the video is connected to the pad named "video" and the audio is
26981 connected to the pad named "audio":
26983 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26987 @subsection Commands
26989 Both movie and amovie support the following commands:
26992 Perform seek using "av_seek_frame".
26993 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26996 @var{stream_index}: If stream_index is -1, a default
26997 stream is selected, and @var{timestamp} is automatically converted
26998 from AV_TIME_BASE units to the stream specific time_base.
27000 @var{timestamp}: Timestamp in AVStream.time_base units
27001 or, if no stream is specified, in AV_TIME_BASE units.
27003 @var{flags}: Flags which select direction and seeking mode.
27007 Get movie duration in AV_TIME_BASE units.
27011 @c man end MULTIMEDIA SOURCES