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, can be @var{2nd}, @var{4th} or @var{8th}.
527 Default is @var{4th}.
532 Reduce audio bit resolution.
534 This filter is bit crusher with enhanced functionality. A bit crusher
535 is used to audibly reduce number of bits an audio signal is sampled
536 with. This doesn't change the bit depth at all, it just produces the
537 effect. Material reduced in bit depth sounds more harsh and "digital".
538 This filter is able to even round to continuous values instead of discrete
540 Additionally it has a D/C offset which results in different crushing of
541 the lower and the upper half of the signal.
542 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
544 Another feature of this filter is the logarithmic mode.
545 This setting switches from linear distances between bits to logarithmic ones.
546 The result is a much more "natural" sounding crusher which doesn't gate low
547 signals for example. The human ear has a logarithmic perception,
548 so this kind of crushing is much more pleasant.
549 Logarithmic crushing is also able to get anti-aliased.
551 The filter accepts the following options:
567 Can be linear: @code{lin} or logarithmic: @code{log}.
576 Set sample reduction.
579 Enable LFO. By default disabled.
590 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
594 Remove impulsive noise from input audio.
596 Samples detected as impulsive noise are replaced by interpolated samples using
597 autoregressive modelling.
601 Set window size, in milliseconds. Allowed range is from @code{10} to
602 @code{100}. Default value is @code{55} milliseconds.
603 This sets size of window which will be processed at once.
606 Set window overlap, in percentage of window size. Allowed range is from
607 @code{50} to @code{95}. Default value is @code{75} percent.
608 Setting this to a very high value increases impulsive noise removal but makes
609 whole process much slower.
612 Set autoregression order, in percentage of window size. Allowed range is from
613 @code{0} to @code{25}. Default value is @code{2} percent. This option also
614 controls quality of interpolated samples using neighbour good samples.
617 Set threshold value. Allowed range is from @code{1} to @code{100}.
618 Default value is @code{2}.
619 This controls the strength of impulsive noise which is going to be removed.
620 The lower value, the more samples will be detected as impulsive noise.
623 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
624 @code{10}. Default value is @code{2}.
625 If any two samples detected as noise are spaced less than this value then any
626 sample between those two samples will be also detected as noise.
631 It accepts the following values:
634 Select overlap-add method. Even not interpolated samples are slightly
635 changed with this method.
638 Select overlap-save method. Not interpolated samples remain unchanged.
641 Default value is @code{a}.
645 Remove clipped samples from input audio.
647 Samples detected as clipped are replaced by interpolated samples using
648 autoregressive modelling.
652 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
653 Default value is @code{55} milliseconds.
654 This sets size of window which will be processed at once.
657 Set window overlap, in percentage of window size. Allowed range is from @code{50}
658 to @code{95}. Default value is @code{75} percent.
661 Set autoregression order, in percentage of window size. Allowed range is from
662 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
663 quality of interpolated samples using neighbour good samples.
666 Set threshold value. Allowed range is from @code{1} to @code{100}.
667 Default value is @code{10}. Higher values make clip detection less aggressive.
670 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
671 Default value is @code{1000}. Higher values make clip detection less aggressive.
676 It accepts the following values:
679 Select overlap-add method. Even not interpolated samples are slightly changed
683 Select overlap-save method. Not interpolated samples remain unchanged.
686 Default value is @code{a}.
691 Delay one or more audio channels.
693 Samples in delayed channel are filled with silence.
695 The filter accepts the following option:
699 Set list of delays in milliseconds for each channel separated by '|'.
700 Unused delays will be silently ignored. If number of given delays is
701 smaller than number of channels all remaining channels will not be delayed.
702 If you want to delay exact number of samples, append 'S' to number.
703 If you want instead to delay in seconds, append 's' to number.
706 Use last set delay for all remaining channels. By default is disabled.
707 This option if enabled changes how option @code{delays} is interpreted.
714 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
715 the second channel (and any other channels that may be present) unchanged.
721 Delay second channel by 500 samples, the third channel by 700 samples and leave
722 the first channel (and any other channels that may be present) unchanged.
728 Delay all channels by same number of samples:
730 adelay=delays=64S:all=1
734 @section aderivative, aintegral
736 Compute derivative/integral of audio stream.
738 Applying both filters one after another produces original audio.
742 Apply echoing to the input audio.
744 Echoes are reflected sound and can occur naturally amongst mountains
745 (and sometimes large buildings) when talking or shouting; digital echo
746 effects emulate this behaviour and are often used to help fill out the
747 sound of a single instrument or vocal. The time difference between the
748 original signal and the reflection is the @code{delay}, and the
749 loudness of the reflected signal is the @code{decay}.
750 Multiple echoes can have different delays and decays.
752 A description of the accepted parameters follows.
756 Set input gain of reflected signal. Default is @code{0.6}.
759 Set output gain of reflected signal. Default is @code{0.3}.
762 Set list of time intervals in milliseconds between original signal and reflections
763 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
764 Default is @code{1000}.
767 Set list of loudness of reflected signals separated by '|'.
768 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
769 Default is @code{0.5}.
776 Make it sound as if there are twice as many instruments as are actually playing:
778 aecho=0.8:0.88:60:0.4
782 If delay is very short, then it sounds like a (metallic) robot playing music:
788 A longer delay will sound like an open air concert in the mountains:
790 aecho=0.8:0.9:1000:0.3
794 Same as above but with one more mountain:
796 aecho=0.8:0.9:1000|1800:0.3|0.25
801 Audio emphasis filter creates or restores material directly taken from LPs or
802 emphased CDs with different filter curves. E.g. to store music on vinyl the
803 signal has to be altered by a filter first to even out the disadvantages of
804 this recording medium.
805 Once the material is played back the inverse filter has to be applied to
806 restore the distortion of the frequency response.
808 The filter accepts the following options:
818 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
819 use @code{production} mode. Default is @code{reproduction} mode.
822 Set filter type. Selects medium. Can be one of the following:
834 select Compact Disc (CD).
840 select 50µs (FM-KF).
842 select 75µs (FM-KF).
848 Modify an audio signal according to the specified expressions.
850 This filter accepts one or more expressions (one for each channel),
851 which are evaluated and used to modify a corresponding audio signal.
853 It accepts the following parameters:
857 Set the '|'-separated expressions list for each separate channel. If
858 the number of input channels is greater than the number of
859 expressions, the last specified expression is used for the remaining
862 @item channel_layout, c
863 Set output channel layout. If not specified, the channel layout is
864 specified by the number of expressions. If set to @samp{same}, it will
865 use by default the same input channel layout.
868 Each expression in @var{exprs} can contain the following constants and functions:
872 channel number of the current expression
875 number of the evaluated sample, starting from 0
881 time of the evaluated sample expressed in seconds
884 @item nb_out_channels
885 input and output number of channels
888 the value of input channel with number @var{CH}
891 Note: this filter is slow. For faster processing you should use a
900 aeval=val(ch)/2:c=same
904 Invert phase of the second channel:
913 Apply fade-in/out effect to input audio.
915 A description of the accepted parameters follows.
919 Specify the effect type, can be either @code{in} for fade-in, or
920 @code{out} for a fade-out effect. Default is @code{in}.
922 @item start_sample, ss
923 Specify the number of the start sample for starting to apply the fade
924 effect. Default is 0.
927 Specify the number of samples for which the fade effect has to last. At
928 the end of the fade-in effect the output audio will have the same
929 volume as the input audio, at the end of the fade-out transition
930 the output audio will be silence. Default is 44100.
933 Specify the start time of the fade effect. Default is 0.
934 The value must be specified as a time duration; see
935 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
936 for the accepted syntax.
937 If set this option is used instead of @var{start_sample}.
940 Specify the duration of the fade effect. See
941 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
942 for the accepted syntax.
943 At the end of the fade-in effect the output audio will have the same
944 volume as the input audio, at the end of the fade-out transition
945 the output audio will be silence.
946 By default the duration is determined by @var{nb_samples}.
947 If set this option is used instead of @var{nb_samples}.
950 Set curve for fade transition.
952 It accepts the following values:
955 select triangular, linear slope (default)
957 select quarter of sine wave
959 select half of sine wave
961 select exponential sine wave
965 select inverted parabola
979 select inverted quarter of sine wave
981 select inverted half of sine wave
983 select double-exponential seat
985 select double-exponential sigmoid
987 select logistic sigmoid
997 Fade in first 15 seconds of audio:
1003 Fade out last 25 seconds of a 900 seconds audio:
1005 afade=t=out:st=875:d=25
1010 Denoise audio samples with FFT.
1012 A description of the accepted parameters follows.
1016 Set the noise reduction in dB, allowed range is 0.01 to 97.
1017 Default value is 12 dB.
1020 Set the noise floor in dB, allowed range is -80 to -20.
1021 Default value is -50 dB.
1026 It accepts the following values:
1035 Select shellac noise.
1038 Select custom noise, defined in @code{bn} option.
1040 Default value is white noise.
1044 Set custom band noise for every one of 15 bands.
1045 Bands are separated by ' ' or '|'.
1048 Set the residual floor in dB, allowed range is -80 to -20.
1049 Default value is -38 dB.
1052 Enable noise tracking. By default is disabled.
1053 With this enabled, noise floor is automatically adjusted.
1056 Enable residual tracking. By default is disabled.
1059 Set the output mode.
1061 It accepts the following values:
1064 Pass input unchanged.
1067 Pass noise filtered out.
1072 Default value is @var{o}.
1076 @subsection Commands
1078 This filter supports the following commands:
1080 @item sample_noise, sn
1081 Start or stop measuring noise profile.
1082 Syntax for the command is : "start" or "stop" string.
1083 After measuring noise profile is stopped it will be
1084 automatically applied in filtering.
1086 @item noise_reduction, nr
1087 Change noise reduction. Argument is single float number.
1088 Syntax for the command is : "@var{noise_reduction}"
1090 @item noise_floor, nf
1091 Change noise floor. Argument is single float number.
1092 Syntax for the command is : "@var{noise_floor}"
1094 @item output_mode, om
1095 Change output mode operation.
1096 Syntax for the command is : "i", "o" or "n" string.
1100 Apply arbitrary expressions to samples in frequency domain.
1104 Set frequency domain real expression for each separate channel separated
1105 by '|'. Default is "re".
1106 If the number of input channels is greater than the number of
1107 expressions, the last specified expression is used for the remaining
1111 Set frequency domain imaginary expression for each separate channel
1112 separated by '|'. Default is "im".
1114 Each expression in @var{real} and @var{imag} can contain the following
1115 constants and functions:
1122 current frequency bin number
1125 number of available bins
1128 channel number of the current expression
1137 current real part of frequency bin of current channel
1140 current imaginary part of frequency bin of current channel
1143 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1146 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1150 Set window size. Allowed range is from 16 to 131072.
1151 Default is @code{4096}
1154 Set window function. Default is @code{hann}.
1157 Set window overlap. If set to 1, the recommended overlap for selected
1158 window function will be picked. Default is @code{0.75}.
1161 @subsection Examples
1165 Leave almost only low frequencies in audio:
1167 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1171 Apply robotize effect:
1173 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1177 Apply whisper effect:
1179 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"
1186 Apply an arbitrary Finite Impulse Response filter.
1188 This filter is designed for applying long FIR filters,
1189 up to 60 seconds long.
1191 It can be used as component for digital crossover filters,
1192 room equalization, cross talk cancellation, wavefield synthesis,
1193 auralization, ambiophonics, ambisonics and spatialization.
1195 This filter uses the streams higher than first one as FIR coefficients.
1196 If the non-first stream holds a single channel, it will be used
1197 for all input channels in the first stream, otherwise
1198 the number of channels in the non-first stream must be same as
1199 the number of channels in the first stream.
1201 It accepts the following parameters:
1205 Set dry gain. This sets input gain.
1208 Set wet gain. This sets final output gain.
1211 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1214 Enable applying gain measured from power of IR.
1216 Set which approach to use for auto gain measurement.
1220 Do not apply any gain.
1223 select peak gain, very conservative approach. This is default value.
1226 select DC gain, limited application.
1229 select gain to noise approach, this is most popular one.
1233 Set gain to be applied to IR coefficients before filtering.
1234 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1237 Set format of IR stream. Can be @code{mono} or @code{input}.
1238 Default is @code{input}.
1241 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1242 Allowed range is 0.1 to 60 seconds.
1245 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1246 By default it is disabled.
1249 Set for which IR channel to display frequency response. By default is first channel
1250 displayed. This option is used only when @var{response} is enabled.
1253 Set video stream size. This option is used only when @var{response} is enabled.
1256 Set video stream frame rate. This option is used only when @var{response} is enabled.
1259 Set minimal partition size used for convolution. Default is @var{8192}.
1260 Allowed range is from @var{1} to @var{32768}.
1261 Lower values decreases latency at cost of higher CPU usage.
1264 Set maximal partition size used for convolution. Default is @var{8192}.
1265 Allowed range is from @var{8} to @var{32768}.
1266 Lower values may increase CPU usage.
1269 Set number of input impulse responses streams which will be switchable at runtime.
1270 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1273 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1274 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1275 This option can be changed at runtime via @ref{commands}.
1278 @subsection Examples
1282 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1284 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1291 Set output format constraints for the input audio. The framework will
1292 negotiate the most appropriate format to minimize conversions.
1294 It accepts the following parameters:
1297 @item sample_fmts, f
1298 A '|'-separated list of requested sample formats.
1300 @item sample_rates, r
1301 A '|'-separated list of requested sample rates.
1303 @item channel_layouts, cl
1304 A '|'-separated list of requested channel layouts.
1306 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1307 for the required syntax.
1310 If a parameter is omitted, all values are allowed.
1312 Force the output to either unsigned 8-bit or signed 16-bit stereo
1314 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1319 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1320 processing reduces disturbing noise between useful signals.
1322 Gating is done by detecting the volume below a chosen level @var{threshold}
1323 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1324 floor is set via @var{range}. Because an exact manipulation of the signal
1325 would cause distortion of the waveform the reduction can be levelled over
1326 time. This is done by setting @var{attack} and @var{release}.
1328 @var{attack} determines how long the signal has to fall below the threshold
1329 before any reduction will occur and @var{release} sets the time the signal
1330 has to rise above the threshold to reduce the reduction again.
1331 Shorter signals than the chosen attack time will be left untouched.
1335 Set input level before filtering.
1336 Default is 1. Allowed range is from 0.015625 to 64.
1339 Set the mode of operation. Can be @code{upward} or @code{downward}.
1340 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1341 will be amplified, expanding dynamic range in upward direction.
1342 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1345 Set the level of gain reduction when the signal is below the threshold.
1346 Default is 0.06125. Allowed range is from 0 to 1.
1347 Setting this to 0 disables reduction and then filter behaves like expander.
1350 If a signal rises above this level the gain reduction is released.
1351 Default is 0.125. Allowed range is from 0 to 1.
1354 Set a ratio by which the signal is reduced.
1355 Default is 2. Allowed range is from 1 to 9000.
1358 Amount of milliseconds the signal has to rise above the threshold before gain
1360 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1363 Amount of milliseconds the signal has to fall below the threshold before the
1364 reduction is increased again. Default is 250 milliseconds.
1365 Allowed range is from 0.01 to 9000.
1368 Set amount of amplification of signal after processing.
1369 Default is 1. Allowed range is from 1 to 64.
1372 Curve the sharp knee around the threshold to enter gain reduction more softly.
1373 Default is 2.828427125. Allowed range is from 1 to 8.
1376 Choose if exact signal should be taken for detection or an RMS like one.
1377 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1380 Choose if the average level between all channels or the louder channel affects
1382 Default is @code{average}. Can be @code{average} or @code{maximum}.
1387 Apply an arbitrary Infinite Impulse Response filter.
1389 It accepts the following parameters:
1393 Set numerator/zeros coefficients.
1396 Set denominator/poles coefficients.
1408 Set coefficients format.
1414 Z-plane zeros/poles, cartesian (default)
1416 Z-plane zeros/poles, polar radians
1418 Z-plane zeros/poles, polar degrees
1422 Set kind of processing.
1423 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1426 Set filtering precision.
1430 double-precision floating-point (default)
1432 single-precision floating-point
1440 Normalize filter coefficients, by default is enabled.
1441 Enabling it will normalize magnitude response at DC to 0dB.
1444 How much to use filtered signal in output. Default is 1.
1445 Range is between 0 and 1.
1448 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1449 By default it is disabled.
1452 Set for which IR channel to display frequency response. By default is first channel
1453 displayed. This option is used only when @var{response} is enabled.
1456 Set video stream size. This option is used only when @var{response} is enabled.
1459 Coefficients in @code{tf} format are separated by spaces and are in ascending
1462 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1463 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1466 Different coefficients and gains can be provided for every channel, in such case
1467 use '|' to separate coefficients or gains. Last provided coefficients will be
1468 used for all remaining channels.
1470 @subsection Examples
1474 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1476 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
1480 Same as above but in @code{zp} format:
1482 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
1488 The limiter prevents an input signal from rising over a desired threshold.
1489 This limiter uses lookahead technology to prevent your signal from distorting.
1490 It means that there is a small delay after the signal is processed. Keep in mind
1491 that the delay it produces is the attack time you set.
1493 The filter accepts the following options:
1497 Set input gain. Default is 1.
1500 Set output gain. Default is 1.
1503 Don't let signals above this level pass the limiter. Default is 1.
1506 The limiter will reach its attenuation level in this amount of time in
1507 milliseconds. Default is 5 milliseconds.
1510 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1511 Default is 50 milliseconds.
1514 When gain reduction is always needed ASC takes care of releasing to an
1515 average reduction level rather than reaching a reduction of 0 in the release
1519 Select how much the release time is affected by ASC, 0 means nearly no changes
1520 in release time while 1 produces higher release times.
1523 Auto level output signal. Default is enabled.
1524 This normalizes audio back to 0dB if enabled.
1527 Depending on picked setting it is recommended to upsample input 2x or 4x times
1528 with @ref{aresample} before applying this filter.
1532 Apply a two-pole all-pass filter with central frequency (in Hz)
1533 @var{frequency}, and filter-width @var{width}.
1534 An all-pass filter changes the audio's frequency to phase relationship
1535 without changing its frequency to amplitude relationship.
1537 The filter accepts the following options:
1541 Set frequency in Hz.
1544 Set method to specify band-width of filter.
1559 Specify the band-width of a filter in width_type units.
1562 How much to use filtered signal in output. Default is 1.
1563 Range is between 0 and 1.
1566 Specify which channels to filter, by default all available are filtered.
1569 Normalize biquad coefficients, by default is disabled.
1570 Enabling it will normalize magnitude response at DC to 0dB.
1573 @subsection Commands
1575 This filter supports the following commands:
1578 Change allpass frequency.
1579 Syntax for the command is : "@var{frequency}"
1582 Change allpass width_type.
1583 Syntax for the command is : "@var{width_type}"
1586 Change allpass width.
1587 Syntax for the command is : "@var{width}"
1591 Syntax for the command is : "@var{mix}"
1598 The filter accepts the following options:
1602 Set the number of loops. Setting this value to -1 will result in infinite loops.
1606 Set maximal number of samples. Default is 0.
1609 Set first sample of loop. Default is 0.
1615 Merge two or more audio streams into a single multi-channel stream.
1617 The filter accepts the following options:
1622 Set the number of inputs. Default is 2.
1626 If the channel layouts of the inputs are disjoint, and therefore compatible,
1627 the channel layout of the output will be set accordingly and the channels
1628 will be reordered as necessary. If the channel layouts of the inputs are not
1629 disjoint, the output will have all the channels of the first input then all
1630 the channels of the second input, in that order, and the channel layout of
1631 the output will be the default value corresponding to the total number of
1634 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1635 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1636 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1637 first input, b1 is the first channel of the second input).
1639 On the other hand, if both input are in stereo, the output channels will be
1640 in the default order: a1, a2, b1, b2, and the channel layout will be
1641 arbitrarily set to 4.0, which may or may not be the expected value.
1643 All inputs must have the same sample rate, and format.
1645 If inputs do not have the same duration, the output will stop with the
1648 @subsection Examples
1652 Merge two mono files into a stereo stream:
1654 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1658 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1660 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
1666 Mixes multiple audio inputs into a single output.
1668 Note that this filter only supports float samples (the @var{amerge}
1669 and @var{pan} audio filters support many formats). If the @var{amix}
1670 input has integer samples then @ref{aresample} will be automatically
1671 inserted to perform the conversion to float samples.
1675 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1677 will mix 3 input audio streams to a single output with the same duration as the
1678 first input and a dropout transition time of 3 seconds.
1680 It accepts the following parameters:
1684 The number of inputs. If unspecified, it defaults to 2.
1687 How to determine the end-of-stream.
1691 The duration of the longest input. (default)
1694 The duration of the shortest input.
1697 The duration of the first input.
1701 @item dropout_transition
1702 The transition time, in seconds, for volume renormalization when an input
1703 stream ends. The default value is 2 seconds.
1706 Specify weight of each input audio stream as sequence.
1707 Each weight is separated by space. By default all inputs have same weight.
1710 @subsection Commands
1712 This filter supports the following commands:
1715 Syntax is same as option with same name.
1720 Multiply first audio stream with second audio stream and store result
1721 in output audio stream. Multiplication is done by multiplying each
1722 sample from first stream with sample at same position from second stream.
1724 With this element-wise multiplication one can create amplitude fades and
1725 amplitude modulations.
1727 @section anequalizer
1729 High-order parametric multiband equalizer for each channel.
1731 It accepts the following parameters:
1735 This option string is in format:
1736 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1737 Each equalizer band is separated by '|'.
1741 Set channel number to which equalization will be applied.
1742 If input doesn't have that channel the entry is ignored.
1745 Set central frequency for band.
1746 If input doesn't have that frequency the entry is ignored.
1749 Set band width in hertz.
1752 Set band gain in dB.
1755 Set filter type for band, optional, can be:
1759 Butterworth, this is default.
1770 With this option activated frequency response of anequalizer is displayed
1774 Set video stream size. Only useful if curves option is activated.
1777 Set max gain that will be displayed. Only useful if curves option is activated.
1778 Setting this to a reasonable value makes it possible to display gain which is derived from
1779 neighbour bands which are too close to each other and thus produce higher gain
1780 when both are activated.
1783 Set frequency scale used to draw frequency response in video output.
1784 Can be linear or logarithmic. Default is logarithmic.
1787 Set color for each channel curve which is going to be displayed in video stream.
1788 This is list of color names separated by space or by '|'.
1789 Unrecognised or missing colors will be replaced by white color.
1792 @subsection Examples
1796 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1797 for first 2 channels using Chebyshev type 1 filter:
1799 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1803 @subsection Commands
1805 This filter supports the following commands:
1808 Alter existing filter parameters.
1809 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1811 @var{fN} is existing filter number, starting from 0, if no such filter is available
1813 @var{freq} set new frequency parameter.
1814 @var{width} set new width parameter in herz.
1815 @var{gain} set new gain parameter in dB.
1817 Full filter invocation with asendcmd may look like this:
1818 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1823 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1825 Each sample is adjusted by looking for other samples with similar contexts. This
1826 context similarity is defined by comparing their surrounding patches of size
1827 @option{p}. Patches are searched in an area of @option{r} around the sample.
1829 The filter accepts the following options:
1833 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1836 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1837 Default value is 2 milliseconds.
1840 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1841 Default value is 6 milliseconds.
1844 Set the output mode.
1846 It accepts the following values:
1849 Pass input unchanged.
1852 Pass noise filtered out.
1857 Default value is @var{o}.
1861 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1864 @subsection Commands
1866 This filter supports the following commands:
1869 Change denoise strength. Argument is single float number.
1870 Syntax for the command is : "@var{s}"
1874 Syntax for the command is : "i", "o" or "n" string.
1878 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1880 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1881 relate to producing the least mean square of the error signal (difference between the desired,
1882 2nd input audio stream and the actual signal, the 1st input audio stream).
1884 A description of the accepted options follows.
1897 Set the filter leakage.
1900 It accepts the following values:
1909 Pass filtered samples.
1912 Pass difference between desired and filtered samples.
1914 Default value is @var{o}.
1918 @subsection Examples
1922 One of many usages of this filter is noise reduction, input audio is filtered
1923 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1925 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1929 @subsection Commands
1931 This filter supports the same commands as options, excluding option @code{order}.
1935 Pass the audio source unchanged to the output.
1939 Pad the end of an audio stream with silence.
1941 This can be used together with @command{ffmpeg} @option{-shortest} to
1942 extend audio streams to the same length as the video stream.
1944 A description of the accepted options follows.
1948 Set silence packet size. Default value is 4096.
1951 Set the number of samples of silence to add to the end. After the
1952 value is reached, the stream is terminated. This option is mutually
1953 exclusive with @option{whole_len}.
1956 Set the minimum total number of samples in the output audio stream. If
1957 the value is longer than the input audio length, silence is added to
1958 the end, until the value is reached. This option is mutually exclusive
1959 with @option{pad_len}.
1962 Specify the duration of samples of silence to add. See
1963 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1964 for the accepted syntax. Used only if set to non-zero value.
1967 Specify the minimum total duration in the output audio stream. See
1968 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1969 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1970 the input audio length, silence is added to the end, until the value is reached.
1971 This option is mutually exclusive with @option{pad_dur}
1974 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1975 nor @option{whole_dur} option is set, the filter will add silence to the end of
1976 the input stream indefinitely.
1978 @subsection Examples
1982 Add 1024 samples of silence to the end of the input:
1988 Make sure the audio output will contain at least 10000 samples, pad
1989 the input with silence if required:
1991 apad=whole_len=10000
1995 Use @command{ffmpeg} to pad the audio input with silence, so that the
1996 video stream will always result the shortest and will be converted
1997 until the end in the output file when using the @option{shortest}
2000 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2005 Add a phasing effect to the input audio.
2007 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2008 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2010 A description of the accepted parameters follows.
2014 Set input gain. Default is 0.4.
2017 Set output gain. Default is 0.74
2020 Set delay in milliseconds. Default is 3.0.
2023 Set decay. Default is 0.4.
2026 Set modulation speed in Hz. Default is 0.5.
2029 Set modulation type. Default is triangular.
2031 It accepts the following values:
2040 Audio pulsator is something between an autopanner and a tremolo.
2041 But it can produce funny stereo effects as well. Pulsator changes the volume
2042 of the left and right channel based on a LFO (low frequency oscillator) with
2043 different waveforms and shifted phases.
2044 This filter have the ability to define an offset between left and right
2045 channel. An offset of 0 means that both LFO shapes match each other.
2046 The left and right channel are altered equally - a conventional tremolo.
2047 An offset of 50% means that the shape of the right channel is exactly shifted
2048 in phase (or moved backwards about half of the frequency) - pulsator acts as
2049 an autopanner. At 1 both curves match again. Every setting in between moves the
2050 phase shift gapless between all stages and produces some "bypassing" sounds with
2051 sine and triangle waveforms. The more you set the offset near 1 (starting from
2052 the 0.5) the faster the signal passes from the left to the right speaker.
2054 The filter accepts the following options:
2058 Set input gain. By default it is 1. Range is [0.015625 - 64].
2061 Set output gain. By default it is 1. Range is [0.015625 - 64].
2064 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2065 sawup or sawdown. Default is sine.
2068 Set modulation. Define how much of original signal is affected by the LFO.
2071 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2074 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2077 Set pulse width. Default is 1. Allowed range is [0 - 2].
2080 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2083 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2087 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2091 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2092 if timing is set to hz.
2098 Resample the input audio to the specified parameters, using the
2099 libswresample library. If none are specified then the filter will
2100 automatically convert between its input and output.
2102 This filter is also able to stretch/squeeze the audio data to make it match
2103 the timestamps or to inject silence / cut out audio to make it match the
2104 timestamps, do a combination of both or do neither.
2106 The filter accepts the syntax
2107 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2108 expresses a sample rate and @var{resampler_options} is a list of
2109 @var{key}=@var{value} pairs, separated by ":". See the
2110 @ref{Resampler Options,,"Resampler Options" section in the
2111 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2112 for the complete list of supported options.
2114 @subsection Examples
2118 Resample the input audio to 44100Hz:
2124 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2125 samples per second compensation:
2127 aresample=async=1000
2133 Reverse an audio clip.
2135 Warning: This filter requires memory to buffer the entire clip, so trimming
2138 @subsection Examples
2142 Take the first 5 seconds of a clip, and reverse it.
2144 atrim=end=5,areverse
2150 Reduce noise from speech using Recurrent Neural Networks.
2152 This filter accepts the following options:
2156 Set train model file to load. This option is always required.
2159 @section asetnsamples
2161 Set the number of samples per each output audio frame.
2163 The last output packet may contain a different number of samples, as
2164 the filter will flush all the remaining samples when the input audio
2167 The filter accepts the following options:
2171 @item nb_out_samples, n
2172 Set the number of frames per each output audio frame. The number is
2173 intended as the number of samples @emph{per each channel}.
2174 Default value is 1024.
2177 If set to 1, the filter will pad the last audio frame with zeroes, so
2178 that the last frame will contain the same number of samples as the
2179 previous ones. Default value is 1.
2182 For example, to set the number of per-frame samples to 1234 and
2183 disable padding for the last frame, use:
2185 asetnsamples=n=1234:p=0
2190 Set the sample rate without altering the PCM data.
2191 This will result in a change of speed and pitch.
2193 The filter accepts the following options:
2196 @item sample_rate, r
2197 Set the output sample rate. Default is 44100 Hz.
2202 Show a line containing various information for each input audio frame.
2203 The input audio is not modified.
2205 The shown line contains a sequence of key/value pairs of the form
2206 @var{key}:@var{value}.
2208 The following values are shown in the output:
2212 The (sequential) number of the input frame, starting from 0.
2215 The presentation timestamp of the input frame, in time base units; the time base
2216 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2219 The presentation timestamp of the input frame in seconds.
2222 position of the frame in the input stream, -1 if this information in
2223 unavailable and/or meaningless (for example in case of synthetic audio)
2232 The sample rate for the audio frame.
2235 The number of samples (per channel) in the frame.
2238 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2239 audio, the data is treated as if all the planes were concatenated.
2241 @item plane_checksums
2242 A list of Adler-32 checksums for each data plane.
2246 Apply audio soft clipping.
2248 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2249 along a smooth curve, rather than the abrupt shape of hard-clipping.
2251 This filter accepts the following options:
2255 Set type of soft-clipping.
2257 It accepts the following values:
2269 Set additional parameter which controls sigmoid function.
2272 @subsection Commands
2274 This filter supports the all above options as @ref{commands}.
2277 Automatic Speech Recognition
2279 This filter uses PocketSphinx for speech recognition. To enable
2280 compilation of this filter, you need to configure FFmpeg with
2281 @code{--enable-pocketsphinx}.
2283 It accepts the following options:
2287 Set sampling rate of input audio. Defaults is @code{16000}.
2288 This need to match speech models, otherwise one will get poor results.
2291 Set dictionary containing acoustic model files.
2294 Set pronunciation dictionary.
2297 Set language model file.
2300 Set language model set.
2303 Set which language model to use.
2306 Set output for log messages.
2309 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2314 Display time domain statistical information about the audio channels.
2315 Statistics are calculated and displayed for each audio channel and,
2316 where applicable, an overall figure is also given.
2318 It accepts the following option:
2321 Short window length in seconds, used for peak and trough RMS measurement.
2322 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2326 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2327 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2330 Available keys for each channel are:
2376 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2377 this @code{lavfi.astats.Overall.Peak_count}.
2379 For description what each key means read below.
2382 Set number of frame after which stats are going to be recalculated.
2383 Default is disabled.
2385 @item measure_perchannel
2386 Select the entries which need to be measured per channel. The metadata keys can
2387 be used as flags, default is @option{all} which measures everything.
2388 @option{none} disables all per channel measurement.
2390 @item measure_overall
2391 Select the entries which need to be measured overall. The metadata keys can
2392 be used as flags, default is @option{all} which measures everything.
2393 @option{none} disables all overall measurement.
2397 A description of each shown parameter follows:
2401 Mean amplitude displacement from zero.
2404 Minimal sample level.
2407 Maximal sample level.
2409 @item Min difference
2410 Minimal difference between two consecutive samples.
2412 @item Max difference
2413 Maximal difference between two consecutive samples.
2415 @item Mean difference
2416 Mean difference between two consecutive samples.
2417 The average of each difference between two consecutive samples.
2419 @item RMS difference
2420 Root Mean Square difference between two consecutive samples.
2424 Standard peak and RMS level measured in dBFS.
2428 Peak and trough values for RMS level measured over a short window.
2431 Standard ratio of peak to RMS level (note: not in dB).
2434 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2435 (i.e. either @var{Min level} or @var{Max level}).
2438 Number of occasions (not the number of samples) that the signal attained either
2439 @var{Min level} or @var{Max level}.
2441 @item Noise floor dB
2442 Minimum local peak measured in dBFS over a short window.
2444 @item Noise floor count
2445 Number of occasions (not the number of samples) that the signal attained
2449 Overall bit depth of audio. Number of bits used for each sample.
2452 Measured dynamic range of audio in dB.
2454 @item Zero crossings
2455 Number of points where the waveform crosses the zero level axis.
2457 @item Zero crossings rate
2458 Rate of Zero crossings and number of audio samples.
2462 Boost subwoofer frequencies.
2464 The filter accepts the following options:
2468 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2469 Default value is 0.5.
2472 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2473 Default value is 0.8.
2476 Set delay line decay gain value. Allowed range is from 0 to 1.
2477 Default value is 0.7.
2480 Set delay line feedback gain value. Allowed range is from 0 to 1.
2481 Default value is 0.5.
2484 Set cutoff frequency in herz. Allowed range is 50 to 900.
2485 Default value is 100.
2488 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2489 Default value is 0.5.
2492 Set delay. Allowed range is from 1 to 100.
2493 Default value is 20.
2496 @subsection Commands
2498 This filter supports the all above options as @ref{commands}.
2504 The filter accepts exactly one parameter, the audio tempo. If not
2505 specified then the filter will assume nominal 1.0 tempo. Tempo must
2506 be in the [0.5, 100.0] range.
2508 Note that tempo greater than 2 will skip some samples rather than
2509 blend them in. If for any reason this is a concern it is always
2510 possible to daisy-chain several instances of atempo to achieve the
2511 desired product tempo.
2513 @subsection Examples
2517 Slow down audio to 80% tempo:
2523 To speed up audio to 300% tempo:
2529 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2531 atempo=sqrt(3),atempo=sqrt(3)
2535 @subsection Commands
2537 This filter supports the following commands:
2540 Change filter tempo scale factor.
2541 Syntax for the command is : "@var{tempo}"
2546 Trim the input so that the output contains one continuous subpart of the input.
2548 It accepts the following parameters:
2551 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2552 sample with the timestamp @var{start} will be the first sample in the output.
2555 Specify time of the first audio sample that will be dropped, i.e. the
2556 audio sample immediately preceding the one with the timestamp @var{end} will be
2557 the last sample in the output.
2560 Same as @var{start}, except this option sets the start timestamp in samples
2564 Same as @var{end}, except this option sets the end timestamp in samples instead
2568 The maximum duration of the output in seconds.
2571 The number of the first sample that should be output.
2574 The number of the first sample that should be dropped.
2577 @option{start}, @option{end}, and @option{duration} are expressed as time
2578 duration specifications; see
2579 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2581 Note that the first two sets of the start/end options and the @option{duration}
2582 option look at the frame timestamp, while the _sample options simply count the
2583 samples that pass through the filter. So start/end_pts and start/end_sample will
2584 give different results when the timestamps are wrong, inexact or do not start at
2585 zero. Also note that this filter does not modify the timestamps. If you wish
2586 to have the output timestamps start at zero, insert the asetpts filter after the
2589 If multiple start or end options are set, this filter tries to be greedy and
2590 keep all samples that match at least one of the specified constraints. To keep
2591 only the part that matches all the constraints at once, chain multiple atrim
2594 The defaults are such that all the input is kept. So it is possible to set e.g.
2595 just the end values to keep everything before the specified time.
2600 Drop everything except the second minute of input:
2602 ffmpeg -i INPUT -af atrim=60:120
2606 Keep only the first 1000 samples:
2608 ffmpeg -i INPUT -af atrim=end_sample=1000
2613 @section axcorrelate
2614 Calculate normalized cross-correlation between two input audio streams.
2616 Resulted samples are always between -1 and 1 inclusive.
2617 If result is 1 it means two input samples are highly correlated in that selected segment.
2618 Result 0 means they are not correlated at all.
2619 If result is -1 it means two input samples are out of phase, which means they cancel each
2622 The filter accepts the following options:
2626 Set size of segment over which cross-correlation is calculated.
2627 Default is 256. Allowed range is from 2 to 131072.
2630 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2631 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2632 are always zero and thus need much less calculations to make.
2633 This is generally not true, but is valid for typical audio streams.
2636 @subsection Examples
2640 Calculate correlation between channels in stereo audio stream:
2642 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2648 Apply a two-pole Butterworth band-pass filter with central
2649 frequency @var{frequency}, and (3dB-point) band-width width.
2650 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2651 instead of the default: constant 0dB peak gain.
2652 The filter roll off at 6dB per octave (20dB per decade).
2654 The filter accepts the following options:
2658 Set the filter's central frequency. Default is @code{3000}.
2661 Constant skirt gain if set to 1. Defaults to 0.
2664 Set method to specify band-width of filter.
2679 Specify the band-width of a filter in width_type units.
2682 How much to use filtered signal in output. Default is 1.
2683 Range is between 0 and 1.
2686 Specify which channels to filter, by default all available are filtered.
2689 Normalize biquad coefficients, by default is disabled.
2690 Enabling it will normalize magnitude response at DC to 0dB.
2693 @subsection Commands
2695 This filter supports the following commands:
2698 Change bandpass frequency.
2699 Syntax for the command is : "@var{frequency}"
2702 Change bandpass width_type.
2703 Syntax for the command is : "@var{width_type}"
2706 Change bandpass width.
2707 Syntax for the command is : "@var{width}"
2710 Change bandpass mix.
2711 Syntax for the command is : "@var{mix}"
2716 Apply a two-pole Butterworth band-reject filter with central
2717 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2718 The filter roll off at 6dB per octave (20dB per decade).
2720 The filter accepts the following options:
2724 Set the filter's central frequency. Default is @code{3000}.
2727 Set method to specify band-width of filter.
2742 Specify the band-width of a filter in width_type units.
2745 How much to use filtered signal in output. Default is 1.
2746 Range is between 0 and 1.
2749 Specify which channels to filter, by default all available are filtered.
2752 Normalize biquad coefficients, by default is disabled.
2753 Enabling it will normalize magnitude response at DC to 0dB.
2756 @subsection Commands
2758 This filter supports the following commands:
2761 Change bandreject frequency.
2762 Syntax for the command is : "@var{frequency}"
2765 Change bandreject width_type.
2766 Syntax for the command is : "@var{width_type}"
2769 Change bandreject width.
2770 Syntax for the command is : "@var{width}"
2773 Change bandreject mix.
2774 Syntax for the command is : "@var{mix}"
2777 @section bass, lowshelf
2779 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2780 shelving filter with a response similar to that of a standard
2781 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2783 The filter accepts the following options:
2787 Give the gain at 0 Hz. Its useful range is about -20
2788 (for a large cut) to +20 (for a large boost).
2789 Beware of clipping when using a positive gain.
2792 Set the filter's central frequency and so can be used
2793 to extend or reduce the frequency range to be boosted or cut.
2794 The default value is @code{100} Hz.
2797 Set method to specify band-width of filter.
2812 Determine how steep is the filter's shelf transition.
2815 How much to use filtered signal in output. Default is 1.
2816 Range is between 0 and 1.
2819 Specify which channels to filter, by default all available are filtered.
2822 Normalize biquad coefficients, by default is disabled.
2823 Enabling it will normalize magnitude response at DC to 0dB.
2826 @subsection Commands
2828 This filter supports the following commands:
2831 Change bass frequency.
2832 Syntax for the command is : "@var{frequency}"
2835 Change bass width_type.
2836 Syntax for the command is : "@var{width_type}"
2840 Syntax for the command is : "@var{width}"
2844 Syntax for the command is : "@var{gain}"
2848 Syntax for the command is : "@var{mix}"
2853 Apply a biquad IIR filter with the given coefficients.
2854 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2855 are the numerator and denominator coefficients respectively.
2856 and @var{channels}, @var{c} specify which channels to filter, by default all
2857 available are filtered.
2859 @subsection Commands
2861 This filter supports the following commands:
2869 Change biquad parameter.
2870 Syntax for the command is : "@var{value}"
2873 How much to use filtered signal in output. Default is 1.
2874 Range is between 0 and 1.
2877 Specify which channels to filter, by default all available are filtered.
2880 Normalize biquad coefficients, by default is disabled.
2881 Enabling it will normalize magnitude response at DC to 0dB.
2885 Bauer stereo to binaural transformation, which improves headphone listening of
2886 stereo audio records.
2888 To enable compilation of this filter you need to configure FFmpeg with
2889 @code{--enable-libbs2b}.
2891 It accepts the following parameters:
2895 Pre-defined crossfeed level.
2899 Default level (fcut=700, feed=50).
2902 Chu Moy circuit (fcut=700, feed=60).
2905 Jan Meier circuit (fcut=650, feed=95).
2910 Cut frequency (in Hz).
2919 Remap input channels to new locations.
2921 It accepts the following parameters:
2924 Map channels from input to output. The argument is a '|'-separated list of
2925 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2926 @var{in_channel} form. @var{in_channel} can be either the name of the input
2927 channel (e.g. FL for front left) or its index in the input channel layout.
2928 @var{out_channel} is the name of the output channel or its index in the output
2929 channel layout. If @var{out_channel} is not given then it is implicitly an
2930 index, starting with zero and increasing by one for each mapping.
2932 @item channel_layout
2933 The channel layout of the output stream.
2936 If no mapping is present, the filter will implicitly map input channels to
2937 output channels, preserving indices.
2939 @subsection Examples
2943 For example, assuming a 5.1+downmix input MOV file,
2945 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2947 will create an output WAV file tagged as stereo from the downmix channels of
2951 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2953 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2957 @section channelsplit
2959 Split each channel from an input audio stream into a separate output stream.
2961 It accepts the following parameters:
2963 @item channel_layout
2964 The channel layout of the input stream. The default is "stereo".
2966 A channel layout describing the channels to be extracted as separate output streams
2967 or "all" to extract each input channel as a separate stream. The default is "all".
2969 Choosing channels not present in channel layout in the input will result in an error.
2972 @subsection Examples
2976 For example, assuming a stereo input MP3 file,
2978 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2980 will create an output Matroska file with two audio streams, one containing only
2981 the left channel and the other the right channel.
2984 Split a 5.1 WAV file into per-channel files:
2986 ffmpeg -i in.wav -filter_complex
2987 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2988 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2989 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2994 Extract only LFE from a 5.1 WAV file:
2996 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2997 -map '[LFE]' lfe.wav
3002 Add a chorus effect to the audio.
3004 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3006 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3007 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3008 The modulation depth defines the range the modulated delay is played before or after
3009 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3010 sound tuned around the original one, like in a chorus where some vocals are slightly
3013 It accepts the following parameters:
3016 Set input gain. Default is 0.4.
3019 Set output gain. Default is 0.4.
3022 Set delays. A typical delay is around 40ms to 60ms.
3034 @subsection Examples
3040 chorus=0.7:0.9:55:0.4:0.25:2
3046 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3050 Fuller sounding chorus with three delays:
3052 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
3057 Compress or expand the audio's dynamic range.
3059 It accepts the following parameters:
3065 A list of times in seconds for each channel over which the instantaneous level
3066 of the input signal is averaged to determine its volume. @var{attacks} refers to
3067 increase of volume and @var{decays} refers to decrease of volume. For most
3068 situations, the attack time (response to the audio getting louder) should be
3069 shorter than the decay time, because the human ear is more sensitive to sudden
3070 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3071 a typical value for decay is 0.8 seconds.
3072 If specified number of attacks & decays is lower than number of channels, the last
3073 set attack/decay will be used for all remaining channels.
3076 A list of points for the transfer function, specified in dB relative to the
3077 maximum possible signal amplitude. Each key points list must be defined using
3078 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3079 @code{x0/y0 x1/y1 x2/y2 ....}
3081 The input values must be in strictly increasing order but the transfer function
3082 does not have to be monotonically rising. The point @code{0/0} is assumed but
3083 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3084 function are @code{-70/-70|-60/-20|1/0}.
3087 Set the curve radius in dB for all joints. It defaults to 0.01.
3090 Set the additional gain in dB to be applied at all points on the transfer
3091 function. This allows for easy adjustment of the overall gain.
3095 Set an initial volume, in dB, to be assumed for each channel when filtering
3096 starts. This permits the user to supply a nominal level initially, so that, for
3097 example, a very large gain is not applied to initial signal levels before the
3098 companding has begun to operate. A typical value for audio which is initially
3099 quiet is -90 dB. It defaults to 0.
3102 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3103 delayed before being fed to the volume adjuster. Specifying a delay
3104 approximately equal to the attack/decay times allows the filter to effectively
3105 operate in predictive rather than reactive mode. It defaults to 0.
3109 @subsection Examples
3113 Make music with both quiet and loud passages suitable for listening to in a
3116 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3119 Another example for audio with whisper and explosion parts:
3121 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3125 A noise gate for when the noise is at a lower level than the signal:
3127 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3131 Here is another noise gate, this time for when the noise is at a higher level
3132 than the signal (making it, in some ways, similar to squelch):
3134 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3138 2:1 compression starting at -6dB:
3140 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3144 2:1 compression starting at -9dB:
3146 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3150 2:1 compression starting at -12dB:
3152 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3156 2:1 compression starting at -18dB:
3158 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3162 3:1 compression starting at -15dB:
3164 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3170 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3176 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
3180 Hard limiter at -6dB:
3182 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3186 Hard limiter at -12dB:
3188 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3192 Hard noise gate at -35 dB:
3194 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3200 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3204 @section compensationdelay
3206 Compensation Delay Line is a metric based delay to compensate differing
3207 positions of microphones or speakers.
3209 For example, you have recorded guitar with two microphones placed in
3210 different locations. Because the front of sound wave has fixed speed in
3211 normal conditions, the phasing of microphones can vary and depends on
3212 their location and interposition. The best sound mix can be achieved when
3213 these microphones are in phase (synchronized). Note that a distance of
3214 ~30 cm between microphones makes one microphone capture the signal in
3215 antiphase to the other microphone. That makes the final mix sound moody.
3216 This filter helps to solve phasing problems by adding different delays
3217 to each microphone track and make them synchronized.
3219 The best result can be reached when you take one track as base and
3220 synchronize other tracks one by one with it.
3221 Remember that synchronization/delay tolerance depends on sample rate, too.
3222 Higher sample rates will give more tolerance.
3224 The filter accepts the following parameters:
3228 Set millimeters distance. This is compensation distance for fine tuning.
3232 Set cm distance. This is compensation distance for tightening distance setup.
3236 Set meters distance. This is compensation distance for hard distance setup.
3240 Set dry amount. Amount of unprocessed (dry) signal.
3244 Set wet amount. Amount of processed (wet) signal.
3248 Set temperature in degrees Celsius. This is the temperature of the environment.
3253 Apply headphone crossfeed filter.
3255 Crossfeed is the process of blending the left and right channels of stereo
3257 It is mainly used to reduce extreme stereo separation of low frequencies.
3259 The intent is to produce more speaker like sound to the listener.
3261 The filter accepts the following options:
3265 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3266 This sets gain of low shelf filter for side part of stereo image.
3267 Default is -6dB. Max allowed is -30db when strength is set to 1.
3270 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3271 This sets cut off frequency of low shelf filter. Default is cut off near
3272 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3275 Set curve slope of low shelf filter. Default is 0.5.
3276 Allowed range is from 0.01 to 1.
3279 Set input gain. Default is 0.9.
3282 Set output gain. Default is 1.
3285 @subsection Commands
3287 This filter supports the all above options as @ref{commands}.
3289 @section crystalizer
3290 Simple algorithm to expand audio dynamic range.
3292 The filter accepts the following options:
3296 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3297 (unchanged sound) to 10.0 (maximum effect).
3300 Enable clipping. By default is enabled.
3303 @subsection Commands
3305 This filter supports the all above options as @ref{commands}.
3308 Apply a DC shift to the audio.
3310 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3311 in the recording chain) from the audio. The effect of a DC offset is reduced
3312 headroom and hence volume. The @ref{astats} filter can be used to determine if
3313 a signal has a DC offset.
3317 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3321 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3322 used to prevent clipping.
3327 Apply de-essing to the audio samples.
3331 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3335 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3339 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3343 Set the output mode.
3345 It accepts the following values:
3348 Pass input unchanged.
3351 Pass ess filtered out.
3356 Default value is @var{o}.
3362 Measure audio dynamic range.
3364 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3365 is found in transition material. And anything less that 8 have very poor dynamics
3366 and is very compressed.
3368 The filter accepts the following options:
3372 Set window length in seconds used to split audio into segments of equal length.
3373 Default is 3 seconds.
3377 Dynamic Audio Normalizer.
3379 This filter applies a certain amount of gain to the input audio in order
3380 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3381 contrast to more "simple" normalization algorithms, the Dynamic Audio
3382 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3383 This allows for applying extra gain to the "quiet" sections of the audio
3384 while avoiding distortions or clipping the "loud" sections. In other words:
3385 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3386 sections, in the sense that the volume of each section is brought to the
3387 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3388 this goal *without* applying "dynamic range compressing". It will retain 100%
3389 of the dynamic range *within* each section of the audio file.
3393 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3394 Default is 500 milliseconds.
3395 The Dynamic Audio Normalizer processes the input audio in small chunks,
3396 referred to as frames. This is required, because a peak magnitude has no
3397 meaning for just a single sample value. Instead, we need to determine the
3398 peak magnitude for a contiguous sequence of sample values. While a "standard"
3399 normalizer would simply use the peak magnitude of the complete file, the
3400 Dynamic Audio Normalizer determines the peak magnitude individually for each
3401 frame. The length of a frame is specified in milliseconds. By default, the
3402 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3403 been found to give good results with most files.
3404 Note that the exact frame length, in number of samples, will be determined
3405 automatically, based on the sampling rate of the individual input audio file.
3408 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3409 number. Default is 31.
3410 Probably the most important parameter of the Dynamic Audio Normalizer is the
3411 @code{window size} of the Gaussian smoothing filter. The filter's window size
3412 is specified in frames, centered around the current frame. For the sake of
3413 simplicity, this must be an odd number. Consequently, the default value of 31
3414 takes into account the current frame, as well as the 15 preceding frames and
3415 the 15 subsequent frames. Using a larger window results in a stronger
3416 smoothing effect and thus in less gain variation, i.e. slower gain
3417 adaptation. Conversely, using a smaller window results in a weaker smoothing
3418 effect and thus in more gain variation, i.e. faster gain adaptation.
3419 In other words, the more you increase this value, the more the Dynamic Audio
3420 Normalizer will behave like a "traditional" normalization filter. On the
3421 contrary, the more you decrease this value, the more the Dynamic Audio
3422 Normalizer will behave like a dynamic range compressor.
3425 Set the target peak value. This specifies the highest permissible magnitude
3426 level for the normalized audio input. This filter will try to approach the
3427 target peak magnitude as closely as possible, but at the same time it also
3428 makes sure that the normalized signal will never exceed the peak magnitude.
3429 A frame's maximum local gain factor is imposed directly by the target peak
3430 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3431 It is not recommended to go above this value.
3434 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3435 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3436 factor for each input frame, i.e. the maximum gain factor that does not
3437 result in clipping or distortion. The maximum gain factor is determined by
3438 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3439 additionally bounds the frame's maximum gain factor by a predetermined
3440 (global) maximum gain factor. This is done in order to avoid excessive gain
3441 factors in "silent" or almost silent frames. By default, the maximum gain
3442 factor is 10.0, For most inputs the default value should be sufficient and
3443 it usually is not recommended to increase this value. Though, for input
3444 with an extremely low overall volume level, it may be necessary to allow even
3445 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3446 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3447 Instead, a "sigmoid" threshold function will be applied. This way, the
3448 gain factors will smoothly approach the threshold value, but never exceed that
3452 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3453 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3454 This means that the maximum local gain factor for each frame is defined
3455 (only) by the frame's highest magnitude sample. This way, the samples can
3456 be amplified as much as possible without exceeding the maximum signal
3457 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3458 Normalizer can also take into account the frame's root mean square,
3459 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3460 determine the power of a time-varying signal. It is therefore considered
3461 that the RMS is a better approximation of the "perceived loudness" than
3462 just looking at the signal's peak magnitude. Consequently, by adjusting all
3463 frames to a constant RMS value, a uniform "perceived loudness" can be
3464 established. If a target RMS value has been specified, a frame's local gain
3465 factor is defined as the factor that would result in exactly that RMS value.
3466 Note, however, that the maximum local gain factor is still restricted by the
3467 frame's highest magnitude sample, in order to prevent clipping.
3470 Enable channels coupling. By default is enabled.
3471 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3472 amount. This means the same gain factor will be applied to all channels, i.e.
3473 the maximum possible gain factor is determined by the "loudest" channel.
3474 However, in some recordings, it may happen that the volume of the different
3475 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3476 In this case, this option can be used to disable the channel coupling. This way,
3477 the gain factor will be determined independently for each channel, depending
3478 only on the individual channel's highest magnitude sample. This allows for
3479 harmonizing the volume of the different channels.
3482 Enable DC bias correction. By default is disabled.
3483 An audio signal (in the time domain) is a sequence of sample values.
3484 In the Dynamic Audio Normalizer these sample values are represented in the
3485 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3486 audio signal, or "waveform", should be centered around the zero point.
3487 That means if we calculate the mean value of all samples in a file, or in a
3488 single frame, then the result should be 0.0 or at least very close to that
3489 value. If, however, there is a significant deviation of the mean value from
3490 0.0, in either positive or negative direction, this is referred to as a
3491 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3492 Audio Normalizer provides optional DC bias correction.
3493 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3494 the mean value, or "DC correction" offset, of each input frame and subtract
3495 that value from all of the frame's sample values which ensures those samples
3496 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3497 boundaries, the DC correction offset values will be interpolated smoothly
3498 between neighbouring frames.
3500 @item altboundary, b
3501 Enable alternative boundary mode. By default is disabled.
3502 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3503 around each frame. This includes the preceding frames as well as the
3504 subsequent frames. However, for the "boundary" frames, located at the very
3505 beginning and at the very end of the audio file, not all neighbouring
3506 frames are available. In particular, for the first few frames in the audio
3507 file, the preceding frames are not known. And, similarly, for the last few
3508 frames in the audio file, the subsequent frames are not known. Thus, the
3509 question arises which gain factors should be assumed for the missing frames
3510 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3511 to deal with this situation. The default boundary mode assumes a gain factor
3512 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3513 "fade out" at the beginning and at the end of the input, respectively.
3516 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3517 By default, the Dynamic Audio Normalizer does not apply "traditional"
3518 compression. This means that signal peaks will not be pruned and thus the
3519 full dynamic range will be retained within each local neighbourhood. However,
3520 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3521 normalization algorithm with a more "traditional" compression.
3522 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3523 (thresholding) function. If (and only if) the compression feature is enabled,
3524 all input frames will be processed by a soft knee thresholding function prior
3525 to the actual normalization process. Put simply, the thresholding function is
3526 going to prune all samples whose magnitude exceeds a certain threshold value.
3527 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3528 value. Instead, the threshold value will be adjusted for each individual
3530 In general, smaller parameters result in stronger compression, and vice versa.
3531 Values below 3.0 are not recommended, because audible distortion may appear.
3534 Set the target threshold value. This specifies the lowest permissible
3535 magnitude level for the audio input which will be normalized.
3536 If input frame volume is above this value frame will be normalized.
3537 Otherwise frame may not be normalized at all. The default value is set
3538 to 0, which means all input frames will be normalized.
3539 This option is mostly useful if digital noise is not wanted to be amplified.
3542 @subsection Commands
3544 This filter supports the all above options as @ref{commands}.
3548 Make audio easier to listen to on headphones.
3550 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3551 so that when listened to on headphones the stereo image is moved from
3552 inside your head (standard for headphones) to outside and in front of
3553 the listener (standard for speakers).
3559 Apply a two-pole peaking equalisation (EQ) filter. With this
3560 filter, the signal-level at and around a selected frequency can
3561 be increased or decreased, whilst (unlike bandpass and bandreject
3562 filters) that at all other frequencies is unchanged.
3564 In order to produce complex equalisation curves, this filter can
3565 be given several times, each with a different central frequency.
3567 The filter accepts the following options:
3571 Set the filter's central frequency in Hz.
3574 Set method to specify band-width of filter.
3589 Specify the band-width of a filter in width_type units.
3592 Set the required gain or attenuation in dB.
3593 Beware of clipping when using a positive gain.
3596 How much to use filtered signal in output. Default is 1.
3597 Range is between 0 and 1.
3600 Specify which channels to filter, by default all available are filtered.
3603 Normalize biquad coefficients, by default is disabled.
3604 Enabling it will normalize magnitude response at DC to 0dB.
3607 @subsection Examples
3610 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3612 equalizer=f=1000:t=h:width=200:g=-10
3616 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3618 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3622 @subsection Commands
3624 This filter supports the following commands:
3627 Change equalizer frequency.
3628 Syntax for the command is : "@var{frequency}"
3631 Change equalizer width_type.
3632 Syntax for the command is : "@var{width_type}"
3635 Change equalizer width.
3636 Syntax for the command is : "@var{width}"
3639 Change equalizer gain.
3640 Syntax for the command is : "@var{gain}"
3643 Change equalizer mix.
3644 Syntax for the command is : "@var{mix}"
3647 @section extrastereo
3649 Linearly increases the difference between left and right channels which
3650 adds some sort of "live" effect to playback.
3652 The filter accepts the following options:
3656 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3657 (average of both channels), with 1.0 sound will be unchanged, with
3658 -1.0 left and right channels will be swapped.
3661 Enable clipping. By default is enabled.
3664 @subsection Commands
3666 This filter supports the all above options as @ref{commands}.
3668 @section firequalizer
3669 Apply FIR Equalization using arbitrary frequency response.
3671 The filter accepts the following option:
3675 Set gain curve equation (in dB). The expression can contain variables:
3678 the evaluated frequency
3682 channel number, set to 0 when multichannels evaluation is disabled
3684 channel id, see libavutil/channel_layout.h, set to the first channel id when
3685 multichannels evaluation is disabled
3689 channel_layout, see libavutil/channel_layout.h
3694 @item gain_interpolate(f)
3695 interpolate gain on frequency f based on gain_entry
3696 @item cubic_interpolate(f)
3697 same as gain_interpolate, but smoother
3699 This option is also available as command. Default is @code{gain_interpolate(f)}.
3702 Set gain entry for gain_interpolate function. The expression can
3706 store gain entry at frequency f with value g
3708 This option is also available as command.
3711 Set filter delay in seconds. Higher value means more accurate.
3712 Default is @code{0.01}.
3715 Set filter accuracy in Hz. Lower value means more accurate.
3716 Default is @code{5}.
3719 Set window function. Acceptable values are:
3722 rectangular window, useful when gain curve is already smooth
3724 hann window (default)
3730 3-terms continuous 1st derivative nuttall window
3732 minimum 3-terms discontinuous nuttall window
3734 4-terms continuous 1st derivative nuttall window
3736 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3738 blackman-harris window
3744 If enabled, use fixed number of audio samples. This improves speed when
3745 filtering with large delay. Default is disabled.
3748 Enable multichannels evaluation on gain. Default is disabled.
3751 Enable zero phase mode by subtracting timestamp to compensate delay.
3752 Default is disabled.
3755 Set scale used by gain. Acceptable values are:
3758 linear frequency, linear gain
3760 linear frequency, logarithmic (in dB) gain (default)
3762 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3764 logarithmic frequency, logarithmic gain
3768 Set file for dumping, suitable for gnuplot.
3771 Set scale for dumpfile. Acceptable values are same with scale option.
3775 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3776 Default is disabled.
3779 Enable minimum phase impulse response. Default is disabled.
3782 @subsection Examples
3787 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3790 lowpass at 1000 Hz with gain_entry:
3792 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3795 custom equalization:
3797 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3800 higher delay with zero phase to compensate delay:
3802 firequalizer=delay=0.1:fixed=on:zero_phase=on
3805 lowpass on left channel, highpass on right channel:
3807 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3808 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3813 Apply a flanging effect to the audio.
3815 The filter accepts the following options:
3819 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3822 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3825 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3829 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3830 Default value is 71.
3833 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3836 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3837 Default value is @var{sinusoidal}.
3840 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3841 Default value is 25.
3844 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3845 Default is @var{linear}.
3849 Apply Haas effect to audio.
3851 Note that this makes most sense to apply on mono signals.
3852 With this filter applied to mono signals it give some directionality and
3853 stretches its stereo image.
3855 The filter accepts the following options:
3859 Set input level. By default is @var{1}, or 0dB
3862 Set output level. By default is @var{1}, or 0dB.
3865 Set gain applied to side part of signal. By default is @var{1}.
3868 Set kind of middle source. Can be one of the following:
3878 Pick middle part signal of stereo image.
3881 Pick side part signal of stereo image.
3885 Change middle phase. By default is disabled.
3888 Set left channel delay. By default is @var{2.05} milliseconds.
3891 Set left channel balance. By default is @var{-1}.
3894 Set left channel gain. By default is @var{1}.
3897 Change left phase. By default is disabled.
3900 Set right channel delay. By defaults is @var{2.12} milliseconds.
3903 Set right channel balance. By default is @var{1}.
3906 Set right channel gain. By default is @var{1}.
3909 Change right phase. By default is enabled.
3914 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3915 embedded HDCD codes is expanded into a 20-bit PCM stream.
3917 The filter supports the Peak Extend and Low-level Gain Adjustment features
3918 of HDCD, and detects the Transient Filter flag.
3921 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3924 When using the filter with wav, note the default encoding for wav is 16-bit,
3925 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3926 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3928 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3929 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3932 The filter accepts the following options:
3935 @item disable_autoconvert
3936 Disable any automatic format conversion or resampling in the filter graph.
3938 @item process_stereo
3939 Process the stereo channels together. If target_gain does not match between
3940 channels, consider it invalid and use the last valid target_gain.
3943 Set the code detect timer period in ms.
3946 Always extend peaks above -3dBFS even if PE isn't signaled.
3949 Replace audio with a solid tone and adjust the amplitude to signal some
3950 specific aspect of the decoding process. The output file can be loaded in
3951 an audio editor alongside the original to aid analysis.
3953 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3960 Gain adjustment level at each sample
3962 Samples where peak extend occurs
3964 Samples where the code detect timer is active
3966 Samples where the target gain does not match between channels
3972 Apply head-related transfer functions (HRTFs) to create virtual
3973 loudspeakers around the user for binaural listening via headphones.
3974 The HRIRs are provided via additional streams, for each channel
3975 one stereo input stream is needed.
3977 The filter accepts the following options:
3981 Set mapping of input streams for convolution.
3982 The argument is a '|'-separated list of channel names in order as they
3983 are given as additional stream inputs for filter.
3984 This also specify number of input streams. Number of input streams
3985 must be not less than number of channels in first stream plus one.
3988 Set gain applied to audio. Value is in dB. Default is 0.
3991 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3992 processing audio in time domain which is slow.
3993 @var{freq} is processing audio in frequency domain which is fast.
3994 Default is @var{freq}.
3997 Set custom gain for LFE channels. Value is in dB. Default is 0.
4000 Set size of frame in number of samples which will be processed at once.
4001 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4004 Set format of hrir stream.
4005 Default value is @var{stereo}. Alternative value is @var{multich}.
4006 If value is set to @var{stereo}, number of additional streams should
4007 be greater or equal to number of input channels in first input stream.
4008 Also each additional stream should have stereo number of channels.
4009 If value is set to @var{multich}, number of additional streams should
4010 be exactly one. Also number of input channels of additional stream
4011 should be equal or greater than twice number of channels of first input
4015 @subsection Examples
4019 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4020 each amovie filter use stereo file with IR coefficients as input.
4021 The files give coefficients for each position of virtual loudspeaker:
4024 -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"
4029 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4030 but now in @var{multich} @var{hrir} format.
4032 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"
4039 Apply a high-pass filter with 3dB point frequency.
4040 The filter can be either single-pole, or double-pole (the default).
4041 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4043 The filter accepts the following options:
4047 Set frequency in Hz. Default is 3000.
4050 Set number of poles. Default is 2.
4053 Set method to specify band-width of filter.
4068 Specify the band-width of a filter in width_type units.
4069 Applies only to double-pole filter.
4070 The default is 0.707q and gives a Butterworth response.
4073 How much to use filtered signal in output. Default is 1.
4074 Range is between 0 and 1.
4077 Specify which channels to filter, by default all available are filtered.
4080 Normalize biquad coefficients, by default is disabled.
4081 Enabling it will normalize magnitude response at DC to 0dB.
4084 @subsection Commands
4086 This filter supports the following commands:
4089 Change highpass frequency.
4090 Syntax for the command is : "@var{frequency}"
4093 Change highpass width_type.
4094 Syntax for the command is : "@var{width_type}"
4097 Change highpass width.
4098 Syntax for the command is : "@var{width}"
4101 Change highpass mix.
4102 Syntax for the command is : "@var{mix}"
4107 Join multiple input streams into one multi-channel stream.
4109 It accepts the following parameters:
4113 The number of input streams. It defaults to 2.
4115 @item channel_layout
4116 The desired output channel layout. It defaults to stereo.
4119 Map channels from inputs to output. The argument is a '|'-separated list of
4120 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4121 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4122 can be either the name of the input channel (e.g. FL for front left) or its
4123 index in the specified input stream. @var{out_channel} is the name of the output
4127 The filter will attempt to guess the mappings when they are not specified
4128 explicitly. It does so by first trying to find an unused matching input channel
4129 and if that fails it picks the first unused input channel.
4131 Join 3 inputs (with properly set channel layouts):
4133 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4136 Build a 5.1 output from 6 single-channel streams:
4138 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4139 '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'
4145 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4147 To enable compilation of this filter you need to configure FFmpeg with
4148 @code{--enable-ladspa}.
4152 Specifies the name of LADSPA plugin library to load. If the environment
4153 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4154 each one of the directories specified by the colon separated list in
4155 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4156 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4157 @file{/usr/lib/ladspa/}.
4160 Specifies the plugin within the library. Some libraries contain only
4161 one plugin, but others contain many of them. If this is not set filter
4162 will list all available plugins within the specified library.
4165 Set the '|' separated list of controls which are zero or more floating point
4166 values that determine the behavior of the loaded plugin (for example delay,
4168 Controls need to be defined using the following syntax:
4169 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4170 @var{valuei} is the value set on the @var{i}-th control.
4171 Alternatively they can be also defined using the following syntax:
4172 @var{value0}|@var{value1}|@var{value2}|..., where
4173 @var{valuei} is the value set on the @var{i}-th control.
4174 If @option{controls} is set to @code{help}, all available controls and
4175 their valid ranges are printed.
4177 @item sample_rate, s
4178 Specify the sample rate, default to 44100. Only used if plugin have
4182 Set the number of samples per channel per each output frame, default
4183 is 1024. Only used if plugin have zero inputs.
4186 Set the minimum duration of the sourced audio. See
4187 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4188 for the accepted syntax.
4189 Note that the resulting duration may be greater than the specified duration,
4190 as the generated audio is always cut at the end of a complete frame.
4191 If not specified, or the expressed duration is negative, the audio is
4192 supposed to be generated forever.
4193 Only used if plugin have zero inputs.
4197 @subsection Examples
4201 List all available plugins within amp (LADSPA example plugin) library:
4207 List all available controls and their valid ranges for @code{vcf_notch}
4208 plugin from @code{VCF} library:
4210 ladspa=f=vcf:p=vcf_notch:c=help
4214 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4217 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4221 Add reverberation to the audio using TAP-plugins
4222 (Tom's Audio Processing plugins):
4224 ladspa=file=tap_reverb:tap_reverb
4228 Generate white noise, with 0.2 amplitude:
4230 ladspa=file=cmt:noise_source_white:c=c0=.2
4234 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4235 @code{C* Audio Plugin Suite} (CAPS) library:
4237 ladspa=file=caps:Click:c=c1=20'
4241 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4243 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4247 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4248 @code{SWH Plugins} collection:
4250 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4254 Attenuate low frequencies using Multiband EQ from Steve Harris
4255 @code{SWH Plugins} collection:
4257 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4261 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4264 ladspa=caps:Narrower
4268 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4270 ladspa=caps:White:.2
4274 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4276 ladspa=caps:Fractal:c=c1=1
4280 Dynamic volume normalization using @code{VLevel} plugin:
4282 ladspa=vlevel-ladspa:vlevel_mono
4286 @subsection Commands
4288 This filter supports the following commands:
4291 Modify the @var{N}-th control value.
4293 If the specified value is not valid, it is ignored and prior one is kept.
4298 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4299 Support for both single pass (livestreams, files) and double pass (files) modes.
4300 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4301 detect true peaks, the audio stream will be upsampled to 192 kHz.
4302 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4304 The filter accepts the following options:
4308 Set integrated loudness target.
4309 Range is -70.0 - -5.0. Default value is -24.0.
4312 Set loudness range target.
4313 Range is 1.0 - 20.0. Default value is 7.0.
4316 Set maximum true peak.
4317 Range is -9.0 - +0.0. Default value is -2.0.
4319 @item measured_I, measured_i
4320 Measured IL of input file.
4321 Range is -99.0 - +0.0.
4323 @item measured_LRA, measured_lra
4324 Measured LRA of input file.
4325 Range is 0.0 - 99.0.
4327 @item measured_TP, measured_tp
4328 Measured true peak of input file.
4329 Range is -99.0 - +99.0.
4331 @item measured_thresh
4332 Measured threshold of input file.
4333 Range is -99.0 - +0.0.
4336 Set offset gain. Gain is applied before the true-peak limiter.
4337 Range is -99.0 - +99.0. Default is +0.0.
4340 Normalize by linearly scaling the source audio.
4341 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4342 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4343 be lower than source LRA and the change in integrated loudness shouldn't
4344 result in a true peak which exceeds the target TP. If any of these
4345 conditions aren't met, normalization mode will revert to @var{dynamic}.
4346 Options are @code{true} or @code{false}. Default is @code{true}.
4349 Treat mono input files as "dual-mono". If a mono file is intended for playback
4350 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4351 If set to @code{true}, this option will compensate for this effect.
4352 Multi-channel input files are not affected by this option.
4353 Options are true or false. Default is false.
4356 Set print format for stats. Options are summary, json, or none.
4357 Default value is none.
4362 Apply a low-pass filter with 3dB point frequency.
4363 The filter can be either single-pole or double-pole (the default).
4364 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4366 The filter accepts the following options:
4370 Set frequency in Hz. Default is 500.
4373 Set number of poles. Default is 2.
4376 Set method to specify band-width of filter.
4391 Specify the band-width of a filter in width_type units.
4392 Applies only to double-pole filter.
4393 The default is 0.707q and gives a Butterworth response.
4396 How much to use filtered signal in output. Default is 1.
4397 Range is between 0 and 1.
4400 Specify which channels to filter, by default all available are filtered.
4403 Normalize biquad coefficients, by default is disabled.
4404 Enabling it will normalize magnitude response at DC to 0dB.
4407 @subsection Examples
4410 Lowpass only LFE channel, it LFE is not present it does nothing:
4416 @subsection Commands
4418 This filter supports the following commands:
4421 Change lowpass frequency.
4422 Syntax for the command is : "@var{frequency}"
4425 Change lowpass width_type.
4426 Syntax for the command is : "@var{width_type}"
4429 Change lowpass width.
4430 Syntax for the command is : "@var{width}"
4434 Syntax for the command is : "@var{mix}"
4439 Load a LV2 (LADSPA Version 2) plugin.
4441 To enable compilation of this filter you need to configure FFmpeg with
4442 @code{--enable-lv2}.
4446 Specifies the plugin URI. You may need to escape ':'.
4449 Set the '|' separated list of controls which are zero or more floating point
4450 values that determine the behavior of the loaded plugin (for example delay,
4452 If @option{controls} is set to @code{help}, all available controls and
4453 their valid ranges are printed.
4455 @item sample_rate, s
4456 Specify the sample rate, default to 44100. Only used if plugin have
4460 Set the number of samples per channel per each output frame, default
4461 is 1024. Only used if plugin have zero inputs.
4464 Set the minimum duration of the sourced audio. See
4465 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4466 for the accepted syntax.
4467 Note that the resulting duration may be greater than the specified duration,
4468 as the generated audio is always cut at the end of a complete frame.
4469 If not specified, or the expressed duration is negative, the audio is
4470 supposed to be generated forever.
4471 Only used if plugin have zero inputs.
4474 @subsection Examples
4478 Apply bass enhancer plugin from Calf:
4480 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4484 Apply vinyl plugin from Calf:
4486 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4490 Apply bit crusher plugin from ArtyFX:
4492 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4497 Multiband Compress or expand the audio's dynamic range.
4499 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4500 This is akin to the crossover of a loudspeaker, and results in flat frequency
4501 response when absent compander action.
4503 It accepts the following parameters:
4507 This option syntax is:
4508 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4509 For explanation of each item refer to compand filter documentation.
4515 Mix channels with specific gain levels. The filter accepts the output
4516 channel layout followed by a set of channels definitions.
4518 This filter is also designed to efficiently remap the channels of an audio
4521 The filter accepts parameters of the form:
4522 "@var{l}|@var{outdef}|@var{outdef}|..."
4526 output channel layout or number of channels
4529 output channel specification, of the form:
4530 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4533 output channel to define, either a channel name (FL, FR, etc.) or a channel
4534 number (c0, c1, etc.)
4537 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4540 input channel to use, see out_name for details; it is not possible to mix
4541 named and numbered input channels
4544 If the `=' in a channel specification is replaced by `<', then the gains for
4545 that specification will be renormalized so that the total is 1, thus
4546 avoiding clipping noise.
4548 @subsection Mixing examples
4550 For example, if you want to down-mix from stereo to mono, but with a bigger
4551 factor for the left channel:
4553 pan=1c|c0=0.9*c0+0.1*c1
4556 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4557 7-channels surround:
4559 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4562 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4563 that should be preferred (see "-ac" option) unless you have very specific
4566 @subsection Remapping examples
4568 The channel remapping will be effective if, and only if:
4571 @item gain coefficients are zeroes or ones,
4572 @item only one input per channel output,
4575 If all these conditions are satisfied, the filter will notify the user ("Pure
4576 channel mapping detected"), and use an optimized and lossless method to do the
4579 For example, if you have a 5.1 source and want a stereo audio stream by
4580 dropping the extra channels:
4582 pan="stereo| c0=FL | c1=FR"
4585 Given the same source, you can also switch front left and front right channels
4586 and keep the input channel layout:
4588 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4591 If the input is a stereo audio stream, you can mute the front left channel (and
4592 still keep the stereo channel layout) with:
4597 Still with a stereo audio stream input, you can copy the right channel in both
4598 front left and right:
4600 pan="stereo| c0=FR | c1=FR"
4605 ReplayGain scanner filter. This filter takes an audio stream as an input and
4606 outputs it unchanged.
4607 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4611 Convert the audio sample format, sample rate and channel layout. It is
4612 not meant to be used directly.
4615 Apply time-stretching and pitch-shifting with librubberband.
4617 To enable compilation of this filter, you need to configure FFmpeg with
4618 @code{--enable-librubberband}.
4620 The filter accepts the following options:
4624 Set tempo scale factor.
4627 Set pitch scale factor.
4630 Set transients detector.
4631 Possible values are:
4640 Possible values are:
4649 Possible values are:
4656 Set processing window size.
4657 Possible values are:
4666 Possible values are:
4673 Enable formant preservation when shift pitching.
4674 Possible values are:
4682 Possible values are:
4691 Possible values are:
4698 @subsection Commands
4700 This filter supports the following commands:
4703 Change filter tempo scale factor.
4704 Syntax for the command is : "@var{tempo}"
4707 Change filter pitch scale factor.
4708 Syntax for the command is : "@var{pitch}"
4711 @section sidechaincompress
4713 This filter acts like normal compressor but has the ability to compress
4714 detected signal using second input signal.
4715 It needs two input streams and returns one output stream.
4716 First input stream will be processed depending on second stream signal.
4717 The filtered signal then can be filtered with other filters in later stages of
4718 processing. See @ref{pan} and @ref{amerge} filter.
4720 The filter accepts the following options:
4724 Set input gain. Default is 1. Range is between 0.015625 and 64.
4727 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4728 Default is @code{downward}.
4731 If a signal of second stream raises above this level it will affect the gain
4732 reduction of first stream.
4733 By default is 0.125. Range is between 0.00097563 and 1.
4736 Set a ratio about which the signal is reduced. 1:2 means that if the level
4737 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4738 Default is 2. Range is between 1 and 20.
4741 Amount of milliseconds the signal has to rise above the threshold before gain
4742 reduction starts. Default is 20. Range is between 0.01 and 2000.
4745 Amount of milliseconds the signal has to fall below the threshold before
4746 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4749 Set the amount by how much signal will be amplified after processing.
4750 Default is 1. Range is from 1 to 64.
4753 Curve the sharp knee around the threshold to enter gain reduction more softly.
4754 Default is 2.82843. Range is between 1 and 8.
4757 Choose if the @code{average} level between all channels of side-chain stream
4758 or the louder(@code{maximum}) channel of side-chain stream affects the
4759 reduction. Default is @code{average}.
4762 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4763 of @code{rms}. Default is @code{rms} which is mainly smoother.
4766 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4769 How much to use compressed signal in output. Default is 1.
4770 Range is between 0 and 1.
4773 @subsection Commands
4775 This filter supports the all above options as @ref{commands}.
4777 @subsection Examples
4781 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4782 depending on the signal of 2nd input and later compressed signal to be
4783 merged with 2nd input:
4785 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4789 @section sidechaingate
4791 A sidechain gate acts like a normal (wideband) gate but has the ability to
4792 filter the detected signal before sending it to the gain reduction stage.
4793 Normally a gate uses the full range signal to detect a level above the
4795 For example: If you cut all lower frequencies from your sidechain signal
4796 the gate will decrease the volume of your track only if not enough highs
4797 appear. With this technique you are able to reduce the resonation of a
4798 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4800 It needs two input streams and returns one output stream.
4801 First input stream will be processed depending on second stream signal.
4803 The filter accepts the following options:
4807 Set input level before filtering.
4808 Default is 1. Allowed range is from 0.015625 to 64.
4811 Set the mode of operation. Can be @code{upward} or @code{downward}.
4812 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4813 will be amplified, expanding dynamic range in upward direction.
4814 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4817 Set the level of gain reduction when the signal is below the threshold.
4818 Default is 0.06125. Allowed range is from 0 to 1.
4819 Setting this to 0 disables reduction and then filter behaves like expander.
4822 If a signal rises above this level the gain reduction is released.
4823 Default is 0.125. Allowed range is from 0 to 1.
4826 Set a ratio about which the signal is reduced.
4827 Default is 2. Allowed range is from 1 to 9000.
4830 Amount of milliseconds the signal has to rise above the threshold before gain
4832 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4835 Amount of milliseconds the signal has to fall below the threshold before the
4836 reduction is increased again. Default is 250 milliseconds.
4837 Allowed range is from 0.01 to 9000.
4840 Set amount of amplification of signal after processing.
4841 Default is 1. Allowed range is from 1 to 64.
4844 Curve the sharp knee around the threshold to enter gain reduction more softly.
4845 Default is 2.828427125. Allowed range is from 1 to 8.
4848 Choose if exact signal should be taken for detection or an RMS like one.
4849 Default is rms. Can be peak or rms.
4852 Choose if the average level between all channels or the louder channel affects
4854 Default is average. Can be average or maximum.
4857 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4860 @section silencedetect
4862 Detect silence in an audio stream.
4864 This filter logs a message when it detects that the input audio volume is less
4865 or equal to a noise tolerance value for a duration greater or equal to the
4866 minimum detected noise duration.
4868 The printed times and duration are expressed in seconds. The
4869 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
4870 is set on the first frame whose timestamp equals or exceeds the detection
4871 duration and it contains the timestamp of the first frame of the silence.
4873 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
4874 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
4875 keys are set on the first frame after the silence. If @option{mono} is
4876 enabled, and each channel is evaluated separately, the @code{.X}
4877 suffixed keys are used, and @code{X} corresponds to the channel number.
4879 The filter accepts the following options:
4883 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4884 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4887 Set silence duration until notification (default is 2 seconds). See
4888 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4889 for the accepted syntax.
4892 Process each channel separately, instead of combined. By default is disabled.
4895 @subsection Examples
4899 Detect 5 seconds of silence with -50dB noise tolerance:
4901 silencedetect=n=-50dB:d=5
4905 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4906 tolerance in @file{silence.mp3}:
4908 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4912 @section silenceremove
4914 Remove silence from the beginning, middle or end of the audio.
4916 The filter accepts the following options:
4920 This value is used to indicate if audio should be trimmed at beginning of
4921 the audio. A value of zero indicates no silence should be trimmed from the
4922 beginning. When specifying a non-zero value, it trims audio up until it
4923 finds non-silence. Normally, when trimming silence from beginning of audio
4924 the @var{start_periods} will be @code{1} but it can be increased to higher
4925 values to trim all audio up to specific count of non-silence periods.
4926 Default value is @code{0}.
4928 @item start_duration
4929 Specify the amount of time that non-silence must be detected before it stops
4930 trimming audio. By increasing the duration, bursts of noises can be treated
4931 as silence and trimmed off. Default value is @code{0}.
4933 @item start_threshold
4934 This indicates what sample value should be treated as silence. For digital
4935 audio, a value of @code{0} may be fine but for audio recorded from analog,
4936 you may wish to increase the value to account for background noise.
4937 Can be specified in dB (in case "dB" is appended to the specified value)
4938 or amplitude ratio. Default value is @code{0}.
4941 Specify max duration of silence at beginning that will be kept after
4942 trimming. Default is 0, which is equal to trimming all samples detected
4946 Specify mode of detection of silence end in start of multi-channel audio.
4947 Can be @var{any} or @var{all}. Default is @var{any}.
4948 With @var{any}, any sample that is detected as non-silence will cause
4949 stopped trimming of silence.
4950 With @var{all}, only if all channels are detected as non-silence will cause
4951 stopped trimming of silence.
4954 Set the count for trimming silence from the end of audio.
4955 To remove silence from the middle of a file, specify a @var{stop_periods}
4956 that is negative. This value is then treated as a positive value and is
4957 used to indicate the effect should restart processing as specified by
4958 @var{start_periods}, making it suitable for removing periods of silence
4959 in the middle of the audio.
4960 Default value is @code{0}.
4963 Specify a duration of silence that must exist before audio is not copied any
4964 more. By specifying a higher duration, silence that is wanted can be left in
4966 Default value is @code{0}.
4968 @item stop_threshold
4969 This is the same as @option{start_threshold} but for trimming silence from
4971 Can be specified in dB (in case "dB" is appended to the specified value)
4972 or amplitude ratio. Default value is @code{0}.
4975 Specify max duration of silence at end that will be kept after
4976 trimming. Default is 0, which is equal to trimming all samples detected
4980 Specify mode of detection of silence start in end of multi-channel audio.
4981 Can be @var{any} or @var{all}. Default is @var{any}.
4982 With @var{any}, any sample that is detected as non-silence will cause
4983 stopped trimming of silence.
4984 With @var{all}, only if all channels are detected as non-silence will cause
4985 stopped trimming of silence.
4988 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4989 and works better with digital silence which is exactly 0.
4990 Default value is @code{rms}.
4993 Set duration in number of seconds used to calculate size of window in number
4994 of samples for detecting silence.
4995 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4998 @subsection Examples
5002 The following example shows how this filter can be used to start a recording
5003 that does not contain the delay at the start which usually occurs between
5004 pressing the record button and the start of the performance:
5006 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5010 Trim all silence encountered from beginning to end where there is more than 1
5011 second of silence in audio:
5013 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5017 Trim all digital silence samples, using peak detection, from beginning to end
5018 where there is more than 0 samples of digital silence in audio and digital
5019 silence is detected in all channels at same positions in stream:
5021 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5027 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5028 loudspeakers around the user for binaural listening via headphones (audio
5029 formats up to 9 channels supported).
5030 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5031 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5032 Austrian Academy of Sciences.
5034 To enable compilation of this filter you need to configure FFmpeg with
5035 @code{--enable-libmysofa}.
5037 The filter accepts the following options:
5041 Set the SOFA file used for rendering.
5044 Set gain applied to audio. Value is in dB. Default is 0.
5047 Set rotation of virtual loudspeakers in deg. Default is 0.
5050 Set elevation of virtual speakers in deg. Default is 0.
5053 Set distance in meters between loudspeakers and the listener with near-field
5054 HRTFs. Default is 1.
5057 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5058 processing audio in time domain which is slow.
5059 @var{freq} is processing audio in frequency domain which is fast.
5060 Default is @var{freq}.
5063 Set custom positions of virtual loudspeakers. Syntax for this option is:
5064 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5065 Each virtual loudspeaker is described with short channel name following with
5066 azimuth and elevation in degrees.
5067 Each virtual loudspeaker description is separated by '|'.
5068 For example to override front left and front right channel positions use:
5069 'speakers=FL 45 15|FR 345 15'.
5070 Descriptions with unrecognised channel names are ignored.
5073 Set custom gain for LFE channels. Value is in dB. Default is 0.
5076 Set custom frame size in number of samples. Default is 1024.
5077 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5078 is set to @var{freq}.
5081 Should all IRs be normalized upon importing SOFA file.
5082 By default is enabled.
5085 Should nearest IRs be interpolated with neighbor IRs if exact position
5086 does not match. By default is disabled.
5089 Minphase all IRs upon loading of SOFA file. By default is disabled.
5092 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5095 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5098 @subsection Examples
5102 Using ClubFritz6 sofa file:
5104 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5108 Using ClubFritz12 sofa file and bigger radius with small rotation:
5110 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5114 Similar as above but with custom speaker positions for front left, front right, back left and back right
5115 and also with custom gain:
5117 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5121 @section stereotools
5123 This filter has some handy utilities to manage stereo signals, for converting
5124 M/S stereo recordings to L/R signal while having control over the parameters
5125 or spreading the stereo image of master track.
5127 The filter accepts the following options:
5131 Set input level before filtering for both channels. Defaults is 1.
5132 Allowed range is from 0.015625 to 64.
5135 Set output level after filtering for both channels. Defaults is 1.
5136 Allowed range is from 0.015625 to 64.
5139 Set input balance between both channels. Default is 0.
5140 Allowed range is from -1 to 1.
5143 Set output balance between both channels. Default is 0.
5144 Allowed range is from -1 to 1.
5147 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5148 clipping. Disabled by default.
5151 Mute the left channel. Disabled by default.
5154 Mute the right channel. Disabled by default.
5157 Change the phase of the left channel. Disabled by default.
5160 Change the phase of the right channel. Disabled by default.
5163 Set stereo mode. Available values are:
5167 Left/Right to Left/Right, this is default.
5170 Left/Right to Mid/Side.
5173 Mid/Side to Left/Right.
5176 Left/Right to Left/Left.
5179 Left/Right to Right/Right.
5182 Left/Right to Left + Right.
5185 Left/Right to Right/Left.
5188 Mid/Side to Left/Left.
5191 Mid/Side to Right/Right.
5195 Set level of side signal. Default is 1.
5196 Allowed range is from 0.015625 to 64.
5199 Set balance of side signal. Default is 0.
5200 Allowed range is from -1 to 1.
5203 Set level of the middle signal. Default is 1.
5204 Allowed range is from 0.015625 to 64.
5207 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5210 Set stereo base between mono and inversed channels. Default is 0.
5211 Allowed range is from -1 to 1.
5214 Set delay in milliseconds how much to delay left from right channel and
5215 vice versa. Default is 0. Allowed range is from -20 to 20.
5218 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5221 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5223 @item bmode_in, bmode_out
5224 Set balance mode for balance_in/balance_out option.
5226 Can be one of the following:
5230 Classic balance mode. Attenuate one channel at time.
5231 Gain is raised up to 1.
5234 Similar as classic mode above but gain is raised up to 2.
5237 Equal power distribution, from -6dB to +6dB range.
5241 @subsection Examples
5245 Apply karaoke like effect:
5247 stereotools=mlev=0.015625
5251 Convert M/S signal to L/R:
5253 "stereotools=mode=ms>lr"
5257 @section stereowiden
5259 This filter enhance the stereo effect by suppressing signal common to both
5260 channels and by delaying the signal of left into right and vice versa,
5261 thereby widening the stereo effect.
5263 The filter accepts the following options:
5267 Time in milliseconds of the delay of left signal into right and vice versa.
5268 Default is 20 milliseconds.
5271 Amount of gain in delayed signal into right and vice versa. Gives a delay
5272 effect of left signal in right output and vice versa which gives widening
5273 effect. Default is 0.3.
5276 Cross feed of left into right with inverted phase. This helps in suppressing
5277 the mono. If the value is 1 it will cancel all the signal common to both
5278 channels. Default is 0.3.
5281 Set level of input signal of original channel. Default is 0.8.
5284 @subsection Commands
5286 This filter supports the all above options except @code{delay} as @ref{commands}.
5288 @section superequalizer
5289 Apply 18 band equalizer.
5291 The filter accepts the following options:
5298 Set 131Hz band gain.
5300 Set 185Hz band gain.
5302 Set 262Hz band gain.
5304 Set 370Hz band gain.
5306 Set 523Hz band gain.
5308 Set 740Hz band gain.
5310 Set 1047Hz band gain.
5312 Set 1480Hz band gain.
5314 Set 2093Hz band gain.
5316 Set 2960Hz band gain.
5318 Set 4186Hz band gain.
5320 Set 5920Hz band gain.
5322 Set 8372Hz band gain.
5324 Set 11840Hz band gain.
5326 Set 16744Hz band gain.
5328 Set 20000Hz band gain.
5332 Apply audio surround upmix filter.
5334 This filter allows to produce multichannel output from audio stream.
5336 The filter accepts the following options:
5340 Set output channel layout. By default, this is @var{5.1}.
5342 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5343 for the required syntax.
5346 Set input channel layout. By default, this is @var{stereo}.
5348 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5349 for the required syntax.
5352 Set input volume level. By default, this is @var{1}.
5355 Set output volume level. By default, this is @var{1}.
5358 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5361 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5364 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5367 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5368 In @var{add} mode, LFE channel is created from input audio and added to output.
5369 In @var{sub} mode, LFE channel is created from input audio and added to output but
5370 also all non-LFE output channels are subtracted with output LFE channel.
5373 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5374 Default is @var{90}.
5377 Set front center input volume. By default, this is @var{1}.
5380 Set front center output volume. By default, this is @var{1}.
5383 Set front left input volume. By default, this is @var{1}.
5386 Set front left output volume. By default, this is @var{1}.
5389 Set front right input volume. By default, this is @var{1}.
5392 Set front right output volume. By default, this is @var{1}.
5395 Set side left input volume. By default, this is @var{1}.
5398 Set side left output volume. By default, this is @var{1}.
5401 Set side right input volume. By default, this is @var{1}.
5404 Set side right output volume. By default, this is @var{1}.
5407 Set back left input volume. By default, this is @var{1}.
5410 Set back left output volume. By default, this is @var{1}.
5413 Set back right input volume. By default, this is @var{1}.
5416 Set back right output volume. By default, this is @var{1}.
5419 Set back center input volume. By default, this is @var{1}.
5422 Set back center output volume. By default, this is @var{1}.
5425 Set LFE input volume. By default, this is @var{1}.
5428 Set LFE output volume. By default, this is @var{1}.
5431 Set spread usage of stereo image across X axis for all channels.
5434 Set spread usage of stereo image across Y axis for all channels.
5436 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5437 Set spread usage of stereo image across X axis for each channel.
5439 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5440 Set spread usage of stereo image across Y axis for each channel.
5443 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5446 Set window function.
5448 It accepts the following values:
5471 Default is @code{hann}.
5474 Set window overlap. If set to 1, the recommended overlap for selected
5475 window function will be picked. Default is @code{0.5}.
5478 @section treble, highshelf
5480 Boost or cut treble (upper) frequencies of the audio using a two-pole
5481 shelving filter with a response similar to that of a standard
5482 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5484 The filter accepts the following options:
5488 Give the gain at whichever is the lower of ~22 kHz and the
5489 Nyquist frequency. Its useful range is about -20 (for a large cut)
5490 to +20 (for a large boost). Beware of clipping when using a positive gain.
5493 Set the filter's central frequency and so can be used
5494 to extend or reduce the frequency range to be boosted or cut.
5495 The default value is @code{3000} Hz.
5498 Set method to specify band-width of filter.
5513 Determine how steep is the filter's shelf transition.
5516 How much to use filtered signal in output. Default is 1.
5517 Range is between 0 and 1.
5520 Specify which channels to filter, by default all available are filtered.
5523 Normalize biquad coefficients, by default is disabled.
5524 Enabling it will normalize magnitude response at DC to 0dB.
5527 @subsection Commands
5529 This filter supports the following commands:
5532 Change treble frequency.
5533 Syntax for the command is : "@var{frequency}"
5536 Change treble width_type.
5537 Syntax for the command is : "@var{width_type}"
5540 Change treble width.
5541 Syntax for the command is : "@var{width}"
5545 Syntax for the command is : "@var{gain}"
5549 Syntax for the command is : "@var{mix}"
5554 Sinusoidal amplitude modulation.
5556 The filter accepts the following options:
5560 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5561 (20 Hz or lower) will result in a tremolo effect.
5562 This filter may also be used as a ring modulator by specifying
5563 a modulation frequency higher than 20 Hz.
5564 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5567 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5568 Default value is 0.5.
5573 Sinusoidal phase modulation.
5575 The filter accepts the following options:
5579 Modulation frequency in Hertz.
5580 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5583 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5584 Default value is 0.5.
5589 Adjust the input audio volume.
5591 It accepts the following parameters:
5595 Set audio volume expression.
5597 Output values are clipped to the maximum value.
5599 The output audio volume is given by the relation:
5601 @var{output_volume} = @var{volume} * @var{input_volume}
5604 The default value for @var{volume} is "1.0".
5607 This parameter represents the mathematical precision.
5609 It determines which input sample formats will be allowed, which affects the
5610 precision of the volume scaling.
5614 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5616 32-bit floating-point; this limits input sample format to FLT. (default)
5618 64-bit floating-point; this limits input sample format to DBL.
5622 Choose the behaviour on encountering ReplayGain side data in input frames.
5626 Remove ReplayGain side data, ignoring its contents (the default).
5629 Ignore ReplayGain side data, but leave it in the frame.
5632 Prefer the track gain, if present.
5635 Prefer the album gain, if present.
5638 @item replaygain_preamp
5639 Pre-amplification gain in dB to apply to the selected replaygain gain.
5641 Default value for @var{replaygain_preamp} is 0.0.
5643 @item replaygain_noclip
5644 Prevent clipping by limiting the gain applied.
5646 Default value for @var{replaygain_noclip} is 1.
5649 Set when the volume expression is evaluated.
5651 It accepts the following values:
5654 only evaluate expression once during the filter initialization, or
5655 when the @samp{volume} command is sent
5658 evaluate expression for each incoming frame
5661 Default value is @samp{once}.
5664 The volume expression can contain the following parameters.
5668 frame number (starting at zero)
5671 @item nb_consumed_samples
5672 number of samples consumed by the filter
5674 number of samples in the current frame
5676 original frame position in the file
5682 PTS at start of stream
5684 time at start of stream
5690 last set volume value
5693 Note that when @option{eval} is set to @samp{once} only the
5694 @var{sample_rate} and @var{tb} variables are available, all other
5695 variables will evaluate to NAN.
5697 @subsection Commands
5699 This filter supports the following commands:
5702 Modify the volume expression.
5703 The command accepts the same syntax of the corresponding option.
5705 If the specified expression is not valid, it is kept at its current
5709 @subsection Examples
5713 Halve the input audio volume:
5717 volume=volume=-6.0206dB
5720 In all the above example the named key for @option{volume} can be
5721 omitted, for example like in:
5727 Increase input audio power by 6 decibels using fixed-point precision:
5729 volume=volume=6dB:precision=fixed
5733 Fade volume after time 10 with an annihilation period of 5 seconds:
5735 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5739 @section volumedetect
5741 Detect the volume of the input video.
5743 The filter has no parameters. The input is not modified. Statistics about
5744 the volume will be printed in the log when the input stream end is reached.
5746 In particular it will show the mean volume (root mean square), maximum
5747 volume (on a per-sample basis), and the beginning of a histogram of the
5748 registered volume values (from the maximum value to a cumulated 1/1000 of
5751 All volumes are in decibels relative to the maximum PCM value.
5753 @subsection Examples
5755 Here is an excerpt of the output:
5757 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5758 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5759 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5760 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5761 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5762 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5763 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5764 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5765 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5771 The mean square energy is approximately -27 dB, or 10^-2.7.
5773 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5775 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5778 In other words, raising the volume by +4 dB does not cause any clipping,
5779 raising it by +5 dB causes clipping for 6 samples, etc.
5781 @c man end AUDIO FILTERS
5783 @chapter Audio Sources
5784 @c man begin AUDIO SOURCES
5786 Below is a description of the currently available audio sources.
5790 Buffer audio frames, and make them available to the filter chain.
5792 This source is mainly intended for a programmatic use, in particular
5793 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5795 It accepts the following parameters:
5799 The timebase which will be used for timestamps of submitted frames. It must be
5800 either a floating-point number or in @var{numerator}/@var{denominator} form.
5803 The sample rate of the incoming audio buffers.
5806 The sample format of the incoming audio buffers.
5807 Either a sample format name or its corresponding integer representation from
5808 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5810 @item channel_layout
5811 The channel layout of the incoming audio buffers.
5812 Either a channel layout name from channel_layout_map in
5813 @file{libavutil/channel_layout.c} or its corresponding integer representation
5814 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5817 The number of channels of the incoming audio buffers.
5818 If both @var{channels} and @var{channel_layout} are specified, then they
5823 @subsection Examples
5826 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5829 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5830 Since the sample format with name "s16p" corresponds to the number
5831 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5834 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5839 Generate an audio signal specified by an expression.
5841 This source accepts in input one or more expressions (one for each
5842 channel), which are evaluated and used to generate a corresponding
5845 This source accepts the following options:
5849 Set the '|'-separated expressions list for each separate channel. In case the
5850 @option{channel_layout} option is not specified, the selected channel layout
5851 depends on the number of provided expressions. Otherwise the last
5852 specified expression is applied to the remaining output channels.
5854 @item channel_layout, c
5855 Set the channel layout. The number of channels in the specified layout
5856 must be equal to the number of specified expressions.
5859 Set the minimum duration of the sourced audio. See
5860 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5861 for the accepted syntax.
5862 Note that the resulting duration may be greater than the specified
5863 duration, as the generated audio is always cut at the end of a
5866 If not specified, or the expressed duration is negative, the audio is
5867 supposed to be generated forever.
5870 Set the number of samples per channel per each output frame,
5873 @item sample_rate, s
5874 Specify the sample rate, default to 44100.
5877 Each expression in @var{exprs} can contain the following constants:
5881 number of the evaluated sample, starting from 0
5884 time of the evaluated sample expressed in seconds, starting from 0
5891 @subsection Examples
5901 Generate a sin signal with frequency of 440 Hz, set sample rate to
5904 aevalsrc="sin(440*2*PI*t):s=8000"
5908 Generate a two channels signal, specify the channel layout (Front
5909 Center + Back Center) explicitly:
5911 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5915 Generate white noise:
5917 aevalsrc="-2+random(0)"
5921 Generate an amplitude modulated signal:
5923 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5927 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5929 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5936 Generate a FIR coefficients using frequency sampling method.
5938 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5940 The filter accepts the following options:
5944 Set number of filter coefficents in output audio stream.
5945 Default value is 1025.
5948 Set frequency points from where magnitude and phase are set.
5949 This must be in non decreasing order, and first element must be 0, while last element
5950 must be 1. Elements are separated by white spaces.
5953 Set magnitude value for every frequency point set by @option{frequency}.
5954 Number of values must be same as number of frequency points.
5955 Values are separated by white spaces.
5958 Set phase value for every frequency point set by @option{frequency}.
5959 Number of values must be same as number of frequency points.
5960 Values are separated by white spaces.
5962 @item sample_rate, r
5963 Set sample rate, default is 44100.
5966 Set number of samples per each frame. Default is 1024.
5969 Set window function. Default is blackman.
5974 The null audio source, return unprocessed audio frames. It is mainly useful
5975 as a template and to be employed in analysis / debugging tools, or as
5976 the source for filters which ignore the input data (for example the sox
5979 This source accepts the following options:
5983 @item channel_layout, cl
5985 Specifies the channel layout, and can be either an integer or a string
5986 representing a channel layout. The default value of @var{channel_layout}
5989 Check the channel_layout_map definition in
5990 @file{libavutil/channel_layout.c} for the mapping between strings and
5991 channel layout values.
5993 @item sample_rate, r
5994 Specifies the sample rate, and defaults to 44100.
5997 Set the number of samples per requested frames.
6001 @subsection Examples
6005 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6007 anullsrc=r=48000:cl=4
6011 Do the same operation with a more obvious syntax:
6013 anullsrc=r=48000:cl=mono
6017 All the parameters need to be explicitly defined.
6021 Synthesize a voice utterance using the libflite library.
6023 To enable compilation of this filter you need to configure FFmpeg with
6024 @code{--enable-libflite}.
6026 Note that versions of the flite library prior to 2.0 are not thread-safe.
6028 The filter accepts the following options:
6033 If set to 1, list the names of the available voices and exit
6034 immediately. Default value is 0.
6037 Set the maximum number of samples per frame. Default value is 512.
6040 Set the filename containing the text to speak.
6043 Set the text to speak.
6046 Set the voice to use for the speech synthesis. Default value is
6047 @code{kal}. See also the @var{list_voices} option.
6050 @subsection Examples
6054 Read from file @file{speech.txt}, and synthesize the text using the
6055 standard flite voice:
6057 flite=textfile=speech.txt
6061 Read the specified text selecting the @code{slt} voice:
6063 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6067 Input text to ffmpeg:
6069 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6073 Make @file{ffplay} speak the specified text, using @code{flite} and
6074 the @code{lavfi} device:
6076 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6080 For more information about libflite, check:
6081 @url{http://www.festvox.org/flite/}
6085 Generate a noise audio signal.
6087 The filter accepts the following options:
6090 @item sample_rate, r
6091 Specify the sample rate. Default value is 48000 Hz.
6094 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6098 Specify the duration of the generated audio stream. Not specifying this option
6099 results in noise with an infinite length.
6101 @item color, colour, c
6102 Specify the color of noise. Available noise colors are white, pink, brown,
6103 blue, violet and velvet. Default color is white.
6106 Specify a value used to seed the PRNG.
6109 Set the number of samples per each output frame, default is 1024.
6112 @subsection Examples
6117 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6119 anoisesrc=d=60:c=pink:r=44100:a=0.5
6125 Generate odd-tap Hilbert transform FIR coefficients.
6127 The resulting stream can be used with @ref{afir} filter for phase-shifting
6128 the signal by 90 degrees.
6130 This is used in many matrix coding schemes and for analytic signal generation.
6131 The process is often written as a multiplication by i (or j), the imaginary unit.
6133 The filter accepts the following options:
6137 @item sample_rate, s
6138 Set sample rate, default is 44100.
6141 Set length of FIR filter, default is 22051.
6144 Set number of samples per each frame.
6147 Set window function to be used when generating FIR coefficients.
6152 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6154 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6156 The filter accepts the following options:
6159 @item sample_rate, r
6160 Set sample rate, default is 44100.
6163 Set number of samples per each frame. Default is 1024.
6166 Set high-pass frequency. Default is 0.
6169 Set low-pass frequency. Default is 0.
6170 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6171 is higher than 0 then filter will create band-pass filter coefficients,
6172 otherwise band-reject filter coefficients.
6175 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6178 Set Kaiser window beta.
6181 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6184 Enable rounding, by default is disabled.
6187 Set number of taps for high-pass filter.
6190 Set number of taps for low-pass filter.
6195 Generate an audio signal made of a sine wave with amplitude 1/8.
6197 The audio signal is bit-exact.
6199 The filter accepts the following options:
6204 Set the carrier frequency. Default is 440 Hz.
6206 @item beep_factor, b
6207 Enable a periodic beep every second with frequency @var{beep_factor} times
6208 the carrier frequency. Default is 0, meaning the beep is disabled.
6210 @item sample_rate, r
6211 Specify the sample rate, default is 44100.
6214 Specify the duration of the generated audio stream.
6216 @item samples_per_frame
6217 Set the number of samples per output frame.
6219 The expression can contain the following constants:
6223 The (sequential) number of the output audio frame, starting from 0.
6226 The PTS (Presentation TimeStamp) of the output audio frame,
6227 expressed in @var{TB} units.
6230 The PTS of the output audio frame, expressed in seconds.
6233 The timebase of the output audio frames.
6236 Default is @code{1024}.
6239 @subsection Examples
6244 Generate a simple 440 Hz sine wave:
6250 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6254 sine=frequency=220:beep_factor=4:duration=5
6258 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6261 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6265 @c man end AUDIO SOURCES
6267 @chapter Audio Sinks
6268 @c man begin AUDIO SINKS
6270 Below is a description of the currently available audio sinks.
6272 @section abuffersink
6274 Buffer audio frames, and make them available to the end of filter chain.
6276 This sink is mainly intended for programmatic use, in particular
6277 through the interface defined in @file{libavfilter/buffersink.h}
6278 or the options system.
6280 It accepts a pointer to an AVABufferSinkContext structure, which
6281 defines the incoming buffers' formats, to be passed as the opaque
6282 parameter to @code{avfilter_init_filter} for initialization.
6285 Null audio sink; do absolutely nothing with the input audio. It is
6286 mainly useful as a template and for use in analysis / debugging
6289 @c man end AUDIO SINKS
6291 @chapter Video Filters
6292 @c man begin VIDEO FILTERS
6294 When you configure your FFmpeg build, you can disable any of the
6295 existing filters using @code{--disable-filters}.
6296 The configure output will show the video filters included in your
6299 Below is a description of the currently available video filters.
6303 Mark a region of interest in a video frame.
6305 The frame data is passed through unchanged, but metadata is attached
6306 to the frame indicating regions of interest which can affect the
6307 behaviour of later encoding. Multiple regions can be marked by
6308 applying the filter multiple times.
6312 Region distance in pixels from the left edge of the frame.
6314 Region distance in pixels from the top edge of the frame.
6316 Region width in pixels.
6318 Region height in pixels.
6320 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6321 and may contain the following variables:
6324 Width of the input frame.
6326 Height of the input frame.
6330 Quantisation offset to apply within the region.
6332 This must be a real value in the range -1 to +1. A value of zero
6333 indicates no quality change. A negative value asks for better quality
6334 (less quantisation), while a positive value asks for worse quality
6335 (greater quantisation).
6337 The range is calibrated so that the extreme values indicate the
6338 largest possible offset - if the rest of the frame is encoded with the
6339 worst possible quality, an offset of -1 indicates that this region
6340 should be encoded with the best possible quality anyway. Intermediate
6341 values are then interpolated in some codec-dependent way.
6343 For example, in 10-bit H.264 the quantisation parameter varies between
6344 -12 and 51. A typical qoffset value of -1/10 therefore indicates that
6345 this region should be encoded with a QP around one-tenth of the full
6346 range better than the rest of the frame. So, if most of the frame
6347 were to be encoded with a QP of around 30, this region would get a QP
6348 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6349 An extreme value of -1 would indicate that this region should be
6350 encoded with the best possible quality regardless of the treatment of
6351 the rest of the frame - that is, should be encoded at a QP of -12.
6353 If set to true, remove any existing regions of interest marked on the
6354 frame before adding the new one.
6357 @subsection Examples
6361 Mark the centre quarter of the frame as interesting.
6363 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6366 Mark the 100-pixel-wide region on the left edge of the frame as very
6367 uninteresting (to be encoded at much lower quality than the rest of
6370 addroi=0:0:100:ih:+1/5
6374 @section alphaextract
6376 Extract the alpha component from the input as a grayscale video. This
6377 is especially useful with the @var{alphamerge} filter.
6381 Add or replace the alpha component of the primary input with the
6382 grayscale value of a second input. This is intended for use with
6383 @var{alphaextract} to allow the transmission or storage of frame
6384 sequences that have alpha in a format that doesn't support an alpha
6387 For example, to reconstruct full frames from a normal YUV-encoded video
6388 and a separate video created with @var{alphaextract}, you might use:
6390 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6393 Since this filter is designed for reconstruction, it operates on frame
6394 sequences without considering timestamps, and terminates when either
6395 input reaches end of stream. This will cause problems if your encoding
6396 pipeline drops frames. If you're trying to apply an image as an
6397 overlay to a video stream, consider the @var{overlay} filter instead.
6401 Amplify differences between current pixel and pixels of adjacent frames in
6402 same pixel location.
6404 This filter accepts the following options:
6408 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6409 For example radius of 3 will instruct filter to calculate average of 7 frames.
6412 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6415 Set threshold for difference amplification. Any difference greater or equal to
6416 this value will not alter source pixel. Default is 10.
6417 Allowed range is from 0 to 65535.
6420 Set tolerance for difference amplification. Any difference lower to
6421 this value will not alter source pixel. Default is 0.
6422 Allowed range is from 0 to 65535.
6425 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6426 This option controls maximum possible value that will decrease source pixel value.
6429 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6430 This option controls maximum possible value that will increase source pixel value.
6433 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6436 @subsection Commands
6438 This filter supports the following @ref{commands} that corresponds to option of same name:
6450 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6451 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6452 Substation Alpha) subtitles files.
6454 This filter accepts the following option in addition to the common options from
6455 the @ref{subtitles} filter:
6459 Set the shaping engine
6461 Available values are:
6464 The default libass shaping engine, which is the best available.
6466 Fast, font-agnostic shaper that can do only substitutions
6468 Slower shaper using OpenType for substitutions and positioning
6471 The default is @code{auto}.
6475 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6477 The filter accepts the following options:
6481 Set threshold A for 1st plane. Default is 0.02.
6482 Valid range is 0 to 0.3.
6485 Set threshold B for 1st plane. Default is 0.04.
6486 Valid range is 0 to 5.
6489 Set threshold A for 2nd plane. Default is 0.02.
6490 Valid range is 0 to 0.3.
6493 Set threshold B for 2nd plane. Default is 0.04.
6494 Valid range is 0 to 5.
6497 Set threshold A for 3rd plane. Default is 0.02.
6498 Valid range is 0 to 0.3.
6501 Set threshold B for 3rd plane. Default is 0.04.
6502 Valid range is 0 to 5.
6504 Threshold A is designed to react on abrupt changes in the input signal and
6505 threshold B is designed to react on continuous changes in the input signal.
6508 Set number of frames filter will use for averaging. Default is 9. Must be odd
6509 number in range [5, 129].
6512 Set what planes of frame filter will use for averaging. Default is all.
6515 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6516 Alternatively can be set to @code{s} serial.
6518 Parallel can be faster then serial, while other way around is never true.
6519 Parallel will abort early on first change being greater then thresholds, while serial
6520 will continue processing other side of frames if they are equal or bellow thresholds.
6523 @subsection Commands
6524 This filter supports same @ref{commands} as options except option @code{s}.
6525 The command accepts the same syntax of the corresponding option.
6529 Apply average blur filter.
6531 The filter accepts the following options:
6535 Set horizontal radius size.
6538 Set which planes to filter. By default all planes are filtered.
6541 Set vertical radius size, if zero it will be same as @code{sizeX}.
6542 Default is @code{0}.
6545 @subsection Commands
6546 This filter supports same commands as options.
6547 The command accepts the same syntax of the corresponding option.
6549 If the specified expression is not valid, it is kept at its current
6554 Compute the bounding box for the non-black pixels in the input frame
6557 This filter computes the bounding box containing all the pixels with a
6558 luminance value greater than the minimum allowed value.
6559 The parameters describing the bounding box are printed on the filter
6562 The filter accepts the following option:
6566 Set the minimal luminance value. Default is @code{16}.
6570 Apply bilateral filter, spatial smoothing while preserving edges.
6572 The filter accepts the following options:
6575 Set sigma of gaussian function to calculate spatial weight.
6576 Allowed range is 0 to 10. Default is 0.1.
6579 Set sigma of gaussian function to calculate range weight.
6580 Allowed range is 0 to 1. Default is 0.1.
6583 Set planes to filter. Default is first only.
6586 @section bitplanenoise
6588 Show and measure bit plane noise.
6590 The filter accepts the following options:
6594 Set which plane to analyze. Default is @code{1}.
6597 Filter out noisy pixels from @code{bitplane} set above.
6598 Default is disabled.
6601 @section blackdetect
6603 Detect video intervals that are (almost) completely black. Can be
6604 useful to detect chapter transitions, commercials, or invalid
6607 The filter outputs its detection analysis to both the log as well as
6608 frame metadata. If a black segment of at least the specified minimum
6609 duration is found, a line with the start and end timestamps as well
6610 as duration is printed to the log with level @code{info}. In addition,
6611 a log line with level @code{debug} is printed per frame showing the
6612 black amount detected for that frame.
6614 The filter also attaches metadata to the first frame of a black
6615 segment with key @code{lavfi.black_start} and to the first frame
6616 after the black segment ends with key @code{lavfi.black_end}. The
6617 value is the frame's timestamp. This metadata is added regardless
6618 of the minimum duration specified.
6620 The filter accepts the following options:
6623 @item black_min_duration, d
6624 Set the minimum detected black duration expressed in seconds. It must
6625 be a non-negative floating point number.
6627 Default value is 2.0.
6629 @item picture_black_ratio_th, pic_th
6630 Set the threshold for considering a picture "black".
6631 Express the minimum value for the ratio:
6633 @var{nb_black_pixels} / @var{nb_pixels}
6636 for which a picture is considered black.
6637 Default value is 0.98.
6639 @item pixel_black_th, pix_th
6640 Set the threshold for considering a pixel "black".
6642 The threshold expresses the maximum pixel luminance value for which a
6643 pixel is considered "black". The provided value is scaled according to
6644 the following equation:
6646 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6649 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6650 the input video format, the range is [0-255] for YUV full-range
6651 formats and [16-235] for YUV non full-range formats.
6653 Default value is 0.10.
6656 The following example sets the maximum pixel threshold to the minimum
6657 value, and detects only black intervals of 2 or more seconds:
6659 blackdetect=d=2:pix_th=0.00
6664 Detect frames that are (almost) completely black. Can be useful to
6665 detect chapter transitions or commercials. Output lines consist of
6666 the frame number of the detected frame, the percentage of blackness,
6667 the position in the file if known or -1 and the timestamp in seconds.
6669 In order to display the output lines, you need to set the loglevel at
6670 least to the AV_LOG_INFO value.
6672 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6673 The value represents the percentage of pixels in the picture that
6674 are below the threshold value.
6676 It accepts the following parameters:
6681 The percentage of the pixels that have to be below the threshold; it defaults to
6684 @item threshold, thresh
6685 The threshold below which a pixel value is considered black; it defaults to
6693 Blend two video frames into each other.
6695 The @code{blend} filter takes two input streams and outputs one
6696 stream, the first input is the "top" layer and second input is
6697 "bottom" layer. By default, the output terminates when the longest input terminates.
6699 The @code{tblend} (time blend) filter takes two consecutive frames
6700 from one single stream, and outputs the result obtained by blending
6701 the new frame on top of the old frame.
6703 A description of the accepted options follows.
6711 Set blend mode for specific pixel component or all pixel components in case
6712 of @var{all_mode}. Default value is @code{normal}.
6714 Available values for component modes are:
6756 Set blend opacity for specific pixel component or all pixel components in case
6757 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6764 Set blend expression for specific pixel component or all pixel components in case
6765 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6767 The expressions can use the following variables:
6771 The sequential number of the filtered frame, starting from @code{0}.
6775 the coordinates of the current sample
6779 the width and height of currently filtered plane
6783 Width and height scale for the plane being filtered. It is the
6784 ratio between the dimensions of the current plane to the luma plane,
6785 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6786 the luma plane and @code{0.5,0.5} for the chroma planes.
6789 Time of the current frame, expressed in seconds.
6792 Value of pixel component at current location for first video frame (top layer).
6795 Value of pixel component at current location for second video frame (bottom layer).
6799 The @code{blend} filter also supports the @ref{framesync} options.
6801 @subsection Examples
6805 Apply transition from bottom layer to top layer in first 10 seconds:
6807 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6811 Apply linear horizontal transition from top layer to bottom layer:
6813 blend=all_expr='A*(X/W)+B*(1-X/W)'
6817 Apply 1x1 checkerboard effect:
6819 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6823 Apply uncover left effect:
6825 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6829 Apply uncover down effect:
6831 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6835 Apply uncover up-left effect:
6837 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6841 Split diagonally video and shows top and bottom layer on each side:
6843 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6847 Display differences between the current and the previous frame:
6849 tblend=all_mode=grainextract
6855 Denoise frames using Block-Matching 3D algorithm.
6857 The filter accepts the following options.
6861 Set denoising strength. Default value is 1.
6862 Allowed range is from 0 to 999.9.
6863 The denoising algorithm is very sensitive to sigma, so adjust it
6864 according to the source.
6867 Set local patch size. This sets dimensions in 2D.
6870 Set sliding step for processing blocks. Default value is 4.
6871 Allowed range is from 1 to 64.
6872 Smaller values allows processing more reference blocks and is slower.
6875 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6876 When set to 1, no block matching is done. Larger values allows more blocks
6878 Allowed range is from 1 to 256.
6881 Set radius for search block matching. Default is 9.
6882 Allowed range is from 1 to INT32_MAX.
6885 Set step between two search locations for block matching. Default is 1.
6886 Allowed range is from 1 to 64. Smaller is slower.
6889 Set threshold of mean square error for block matching. Valid range is 0 to
6893 Set thresholding parameter for hard thresholding in 3D transformed domain.
6894 Larger values results in stronger hard-thresholding filtering in frequency
6898 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6899 Default is @code{basic}.
6902 If enabled, filter will use 2nd stream for block matching.
6903 Default is disabled for @code{basic} value of @var{estim} option,
6904 and always enabled if value of @var{estim} is @code{final}.
6907 Set planes to filter. Default is all available except alpha.
6910 @subsection Examples
6914 Basic filtering with bm3d:
6916 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6920 Same as above, but filtering only luma:
6922 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6926 Same as above, but with both estimation modes:
6928 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
6932 Same as above, but prefilter with @ref{nlmeans} filter instead:
6934 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
6940 Apply a boxblur algorithm to the input video.
6942 It accepts the following parameters:
6946 @item luma_radius, lr
6947 @item luma_power, lp
6948 @item chroma_radius, cr
6949 @item chroma_power, cp
6950 @item alpha_radius, ar
6951 @item alpha_power, ap
6955 A description of the accepted options follows.
6958 @item luma_radius, lr
6959 @item chroma_radius, cr
6960 @item alpha_radius, ar
6961 Set an expression for the box radius in pixels used for blurring the
6962 corresponding input plane.
6964 The radius value must be a non-negative number, and must not be
6965 greater than the value of the expression @code{min(w,h)/2} for the
6966 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6969 Default value for @option{luma_radius} is "2". If not specified,
6970 @option{chroma_radius} and @option{alpha_radius} default to the
6971 corresponding value set for @option{luma_radius}.
6973 The expressions can contain the following constants:
6977 The input width and height in pixels.
6981 The input chroma image width and height in pixels.
6985 The horizontal and vertical chroma subsample values. For example, for the
6986 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6989 @item luma_power, lp
6990 @item chroma_power, cp
6991 @item alpha_power, ap
6992 Specify how many times the boxblur filter is applied to the
6993 corresponding plane.
6995 Default value for @option{luma_power} is 2. If not specified,
6996 @option{chroma_power} and @option{alpha_power} default to the
6997 corresponding value set for @option{luma_power}.
6999 A value of 0 will disable the effect.
7002 @subsection Examples
7006 Apply a boxblur filter with the luma, chroma, and alpha radii
7009 boxblur=luma_radius=2:luma_power=1
7014 Set the luma radius to 2, and alpha and chroma radius to 0:
7016 boxblur=2:1:cr=0:ar=0
7020 Set the luma and chroma radii to a fraction of the video dimension:
7022 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7028 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7029 Deinterlacing Filter").
7031 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7032 interpolation algorithms.
7033 It accepts the following parameters:
7037 The interlacing mode to adopt. It accepts one of the following values:
7041 Output one frame for each frame.
7043 Output one frame for each field.
7046 The default value is @code{send_field}.
7049 The picture field parity assumed for the input interlaced video. It accepts one
7050 of the following values:
7054 Assume the top field is first.
7056 Assume the bottom field is first.
7058 Enable automatic detection of field parity.
7061 The default value is @code{auto}.
7062 If the interlacing is unknown or the decoder does not export this information,
7063 top field first will be assumed.
7066 Specify which frames to deinterlace. Accepts one of the following
7071 Deinterlace all frames.
7073 Only deinterlace frames marked as interlaced.
7076 The default value is @code{all}.
7081 Apply Contrast Adaptive Sharpen filter to video stream.
7083 The filter accepts the following options:
7087 Set the sharpening strength. Default value is 0.
7090 Set planes to filter. Default value is to filter all
7091 planes except alpha plane.
7095 Remove all color information for all colors except for certain one.
7097 The filter accepts the following options:
7101 The color which will not be replaced with neutral chroma.
7104 Similarity percentage with the above color.
7105 0.01 matches only the exact key color, while 1.0 matches everything.
7109 0.0 makes pixels either fully gray, or not gray at all.
7110 Higher values result in more preserved color.
7113 Signals that the color passed is already in YUV instead of RGB.
7115 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7116 This can be used to pass exact YUV values as hexadecimal numbers.
7119 @subsection Commands
7120 This filter supports same @ref{commands} as options.
7121 The command accepts the same syntax of the corresponding option.
7123 If the specified expression is not valid, it is kept at its current
7127 YUV colorspace color/chroma keying.
7129 The filter accepts the following options:
7133 The color which will be replaced with transparency.
7136 Similarity percentage with the key color.
7138 0.01 matches only the exact key color, while 1.0 matches everything.
7143 0.0 makes pixels either fully transparent, or not transparent at all.
7145 Higher values result in semi-transparent pixels, with a higher transparency
7146 the more similar the pixels color is to the key color.
7149 Signals that the color passed is already in YUV instead of RGB.
7151 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7152 This can be used to pass exact YUV values as hexadecimal numbers.
7155 @subsection Commands
7156 This filter supports same @ref{commands} as options.
7157 The command accepts the same syntax of the corresponding option.
7159 If the specified expression is not valid, it is kept at its current
7162 @subsection Examples
7166 Make every green pixel in the input image transparent:
7168 ffmpeg -i input.png -vf chromakey=green out.png
7172 Overlay a greenscreen-video on top of a static black background.
7174 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
7178 @section chromashift
7179 Shift chroma pixels horizontally and/or vertically.
7181 The filter accepts the following options:
7184 Set amount to shift chroma-blue horizontally.
7186 Set amount to shift chroma-blue vertically.
7188 Set amount to shift chroma-red horizontally.
7190 Set amount to shift chroma-red vertically.
7192 Set edge mode, can be @var{smear}, default, or @var{warp}.
7195 @subsection Commands
7197 This filter supports the all above options as @ref{commands}.
7201 Display CIE color diagram with pixels overlaid onto it.
7203 The filter accepts the following options:
7218 @item uhdtv, rec2020
7232 Set what gamuts to draw.
7234 See @code{system} option for available values.
7237 Set ciescope size, by default set to 512.
7240 Set intensity used to map input pixel values to CIE diagram.
7243 Set contrast used to draw tongue colors that are out of active color system gamut.
7246 Correct gamma displayed on scope, by default enabled.
7249 Show white point on CIE diagram, by default disabled.
7252 Set input gamma. Used only with XYZ input color space.
7257 Visualize information exported by some codecs.
7259 Some codecs can export information through frames using side-data or other
7260 means. For example, some MPEG based codecs export motion vectors through the
7261 @var{export_mvs} flag in the codec @option{flags2} option.
7263 The filter accepts the following option:
7267 Set motion vectors to visualize.
7269 Available flags for @var{mv} are:
7273 forward predicted MVs of P-frames
7275 forward predicted MVs of B-frames
7277 backward predicted MVs of B-frames
7281 Display quantization parameters using the chroma planes.
7284 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7286 Available flags for @var{mv_type} are:
7290 forward predicted MVs
7292 backward predicted MVs
7295 @item frame_type, ft
7296 Set frame type to visualize motion vectors of.
7298 Available flags for @var{frame_type} are:
7302 intra-coded frames (I-frames)
7304 predicted frames (P-frames)
7306 bi-directionally predicted frames (B-frames)
7310 @subsection Examples
7314 Visualize forward predicted MVs of all frames using @command{ffplay}:
7316 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7320 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7322 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7326 @section colorbalance
7327 Modify intensity of primary colors (red, green and blue) of input frames.
7329 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7330 regions for the red-cyan, green-magenta or blue-yellow balance.
7332 A positive adjustment value shifts the balance towards the primary color, a negative
7333 value towards the complementary color.
7335 The filter accepts the following options:
7341 Adjust red, green and blue shadows (darkest pixels).
7346 Adjust red, green and blue midtones (medium pixels).
7351 Adjust red, green and blue highlights (brightest pixels).
7353 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7356 Preserve lightness when changing color balance. Default is disabled.
7359 @subsection Examples
7363 Add red color cast to shadows:
7369 @subsection Commands
7371 This filter supports the all above options as @ref{commands}.
7373 @section colorchannelmixer
7375 Adjust video input frames by re-mixing color channels.
7377 This filter modifies a color channel by adding the values associated to
7378 the other channels of the same pixels. For example if the value to
7379 modify is red, the output value will be:
7381 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7384 The filter accepts the following options:
7391 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7392 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7398 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7399 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7405 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7406 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7412 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7413 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7415 Allowed ranges for options are @code{[-2.0, 2.0]}.
7418 @subsection Examples
7422 Convert source to grayscale:
7424 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7427 Simulate sepia tones:
7429 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7433 @subsection Commands
7435 This filter supports the all above options as @ref{commands}.
7438 RGB colorspace color keying.
7440 The filter accepts the following options:
7444 The color which will be replaced with transparency.
7447 Similarity percentage with the key color.
7449 0.01 matches only the exact key color, while 1.0 matches everything.
7454 0.0 makes pixels either fully transparent, or not transparent at all.
7456 Higher values result in semi-transparent pixels, with a higher transparency
7457 the more similar the pixels color is to the key color.
7460 @subsection Examples
7464 Make every green pixel in the input image transparent:
7466 ffmpeg -i input.png -vf colorkey=green out.png
7470 Overlay a greenscreen-video on top of a static background image.
7472 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
7476 @subsection Commands
7477 This filter supports same @ref{commands} as options.
7478 The command accepts the same syntax of the corresponding option.
7480 If the specified expression is not valid, it is kept at its current
7484 Remove all color information for all RGB colors except for certain one.
7486 The filter accepts the following options:
7490 The color which will not be replaced with neutral gray.
7493 Similarity percentage with the above color.
7494 0.01 matches only the exact key color, while 1.0 matches everything.
7497 Blend percentage. 0.0 makes pixels fully gray.
7498 Higher values result in more preserved color.
7501 @subsection Commands
7502 This filter supports same @ref{commands} as options.
7503 The command accepts the same syntax of the corresponding option.
7505 If the specified expression is not valid, it is kept at its current
7508 @section colorlevels
7510 Adjust video input frames using levels.
7512 The filter accepts the following options:
7519 Adjust red, green, blue and alpha input black point.
7520 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7526 Adjust red, green, blue and alpha input white point.
7527 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7529 Input levels are used to lighten highlights (bright tones), darken shadows
7530 (dark tones), change the balance of bright and dark tones.
7536 Adjust red, green, blue and alpha output black point.
7537 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7543 Adjust red, green, blue and alpha output white point.
7544 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7546 Output levels allows manual selection of a constrained output level range.
7549 @subsection Examples
7553 Make video output darker:
7555 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7561 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7565 Make video output lighter:
7567 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7571 Increase brightness:
7573 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7577 @subsection Commands
7579 This filter supports the all above options as @ref{commands}.
7581 @section colormatrix
7583 Convert color matrix.
7585 The filter accepts the following options:
7590 Specify the source and destination color matrix. Both values must be
7593 The accepted values are:
7621 For example to convert from BT.601 to SMPTE-240M, use the command:
7623 colormatrix=bt601:smpte240m
7628 Convert colorspace, transfer characteristics or color primaries.
7629 Input video needs to have an even size.
7631 The filter accepts the following options:
7636 Specify all color properties at once.
7638 The accepted values are:
7668 Specify output colorspace.
7670 The accepted values are:
7679 BT.470BG or BT.601-6 625
7682 SMPTE-170M or BT.601-6 525
7691 BT.2020 with non-constant luminance
7697 Specify output transfer characteristics.
7699 The accepted values are:
7711 Constant gamma of 2.2
7714 Constant gamma of 2.8
7717 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7735 BT.2020 for 10-bits content
7738 BT.2020 for 12-bits content
7744 Specify output color primaries.
7746 The accepted values are:
7755 BT.470BG or BT.601-6 625
7758 SMPTE-170M or BT.601-6 525
7782 Specify output color range.
7784 The accepted values are:
7787 TV (restricted) range
7790 MPEG (restricted) range
7801 Specify output color format.
7803 The accepted values are:
7806 YUV 4:2:0 planar 8-bits
7809 YUV 4:2:0 planar 10-bits
7812 YUV 4:2:0 planar 12-bits
7815 YUV 4:2:2 planar 8-bits
7818 YUV 4:2:2 planar 10-bits
7821 YUV 4:2:2 planar 12-bits
7824 YUV 4:4:4 planar 8-bits
7827 YUV 4:4:4 planar 10-bits
7830 YUV 4:4:4 planar 12-bits
7835 Do a fast conversion, which skips gamma/primary correction. This will take
7836 significantly less CPU, but will be mathematically incorrect. To get output
7837 compatible with that produced by the colormatrix filter, use fast=1.
7840 Specify dithering mode.
7842 The accepted values are:
7848 Floyd-Steinberg dithering
7852 Whitepoint adaptation mode.
7854 The accepted values are:
7857 Bradford whitepoint adaptation
7860 von Kries whitepoint adaptation
7863 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7867 Override all input properties at once. Same accepted values as @ref{all}.
7870 Override input colorspace. Same accepted values as @ref{space}.
7873 Override input color primaries. Same accepted values as @ref{primaries}.
7876 Override input transfer characteristics. Same accepted values as @ref{trc}.
7879 Override input color range. Same accepted values as @ref{range}.
7883 The filter converts the transfer characteristics, color space and color
7884 primaries to the specified user values. The output value, if not specified,
7885 is set to a default value based on the "all" property. If that property is
7886 also not specified, the filter will log an error. The output color range and
7887 format default to the same value as the input color range and format. The
7888 input transfer characteristics, color space, color primaries and color range
7889 should be set on the input data. If any of these are missing, the filter will
7890 log an error and no conversion will take place.
7892 For example to convert the input to SMPTE-240M, use the command:
7894 colorspace=smpte240m
7897 @section convolution
7899 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7901 The filter accepts the following options:
7908 Set matrix for each plane.
7909 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7910 and from 1 to 49 odd number of signed integers in @var{row} mode.
7916 Set multiplier for calculated value for each plane.
7917 If unset or 0, it will be sum of all matrix elements.
7923 Set bias for each plane. This value is added to the result of the multiplication.
7924 Useful for making the overall image brighter or darker. Default is 0.0.
7930 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7931 Default is @var{square}.
7934 @subsection Examples
7940 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"
7946 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"
7952 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"
7958 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"
7962 Apply laplacian edge detector which includes diagonals:
7964 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"
7970 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"
7976 Apply 2D convolution of video stream in frequency domain using second stream
7979 The filter accepts the following options:
7983 Set which planes to process.
7986 Set which impulse video frames will be processed, can be @var{first}
7987 or @var{all}. Default is @var{all}.
7990 The @code{convolve} filter also supports the @ref{framesync} options.
7994 Copy the input video source unchanged to the output. This is mainly useful for
7999 Video filtering on GPU using Apple's CoreImage API on OSX.
8001 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8002 processed by video hardware. However, software-based OpenGL implementations
8003 exist which means there is no guarantee for hardware processing. It depends on
8006 There are many filters and image generators provided by Apple that come with a
8007 large variety of options. The filter has to be referenced by its name along
8010 The coreimage filter accepts the following options:
8013 List all available filters and generators along with all their respective
8014 options as well as possible minimum and maximum values along with the default
8021 Specify all filters by their respective name and options.
8022 Use @var{list_filters} to determine all valid filter names and options.
8023 Numerical options are specified by a float value and are automatically clamped
8024 to their respective value range. Vector and color options have to be specified
8025 by a list of space separated float values. Character escaping has to be done.
8026 A special option name @code{default} is available to use default options for a
8029 It is required to specify either @code{default} or at least one of the filter options.
8030 All omitted options are used with their default values.
8031 The syntax of the filter string is as follows:
8033 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8037 Specify a rectangle where the output of the filter chain is copied into the
8038 input image. It is given by a list of space separated float values:
8040 output_rect=x\ y\ width\ height
8042 If not given, the output rectangle equals the dimensions of the input image.
8043 The output rectangle is automatically cropped at the borders of the input
8044 image. Negative values are valid for each component.
8046 output_rect=25\ 25\ 100\ 100
8050 Several filters can be chained for successive processing without GPU-HOST
8051 transfers allowing for fast processing of complex filter chains.
8052 Currently, only filters with zero (generators) or exactly one (filters) input
8053 image and one output image are supported. Also, transition filters are not yet
8056 Some filters generate output images with additional padding depending on the
8057 respective filter kernel. The padding is automatically removed to ensure the
8058 filter output has the same size as the input image.
8060 For image generators, the size of the output image is determined by the
8061 previous output image of the filter chain or the input image of the whole
8062 filterchain, respectively. The generators do not use the pixel information of
8063 this image to generate their output. However, the generated output is
8064 blended onto this image, resulting in partial or complete coverage of the
8067 The @ref{coreimagesrc} video source can be used for generating input images
8068 which are directly fed into the filter chain. By using it, providing input
8069 images by another video source or an input video is not required.
8071 @subsection Examples
8076 List all filters available:
8078 coreimage=list_filters=true
8082 Use the CIBoxBlur filter with default options to blur an image:
8084 coreimage=filter=CIBoxBlur@@default
8088 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8089 its center at 100x100 and a radius of 50 pixels:
8091 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8095 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8096 given as complete and escaped command-line for Apple's standard bash shell:
8098 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8104 Cover a rectangular object
8106 It accepts the following options:
8110 Filepath of the optional cover image, needs to be in yuv420.
8115 It accepts the following values:
8118 cover it by the supplied image
8120 cover it by interpolating the surrounding pixels
8123 Default value is @var{blur}.
8126 @subsection Examples
8130 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8132 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8138 Crop the input video to given dimensions.
8140 It accepts the following parameters:
8144 The width of the output video. It defaults to @code{iw}.
8145 This expression is evaluated only once during the filter
8146 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8149 The height of the output video. It defaults to @code{ih}.
8150 This expression is evaluated only once during the filter
8151 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8154 The horizontal position, in the input video, of the left edge of the output
8155 video. It defaults to @code{(in_w-out_w)/2}.
8156 This expression is evaluated per-frame.
8159 The vertical position, in the input video, of the top edge of the output video.
8160 It defaults to @code{(in_h-out_h)/2}.
8161 This expression is evaluated per-frame.
8164 If set to 1 will force the output display aspect ratio
8165 to be the same of the input, by changing the output sample aspect
8166 ratio. It defaults to 0.
8169 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8170 width/height/x/y as specified and will not be rounded to nearest smaller value.
8174 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8175 expressions containing the following constants:
8180 The computed values for @var{x} and @var{y}. They are evaluated for
8185 The input width and height.
8189 These are the same as @var{in_w} and @var{in_h}.
8193 The output (cropped) width and height.
8197 These are the same as @var{out_w} and @var{out_h}.
8200 same as @var{iw} / @var{ih}
8203 input sample aspect ratio
8206 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8210 horizontal and vertical chroma subsample values. For example for the
8211 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8214 The number of the input frame, starting from 0.
8217 the position in the file of the input frame, NAN if unknown
8220 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8224 The expression for @var{out_w} may depend on the value of @var{out_h},
8225 and the expression for @var{out_h} may depend on @var{out_w}, but they
8226 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8227 evaluated after @var{out_w} and @var{out_h}.
8229 The @var{x} and @var{y} parameters specify the expressions for the
8230 position of the top-left corner of the output (non-cropped) area. They
8231 are evaluated for each frame. If the evaluated value is not valid, it
8232 is approximated to the nearest valid value.
8234 The expression for @var{x} may depend on @var{y}, and the expression
8235 for @var{y} may depend on @var{x}.
8237 @subsection Examples
8241 Crop area with size 100x100 at position (12,34).
8246 Using named options, the example above becomes:
8248 crop=w=100:h=100:x=12:y=34
8252 Crop the central input area with size 100x100:
8258 Crop the central input area with size 2/3 of the input video:
8260 crop=2/3*in_w:2/3*in_h
8264 Crop the input video central square:
8271 Delimit the rectangle with the top-left corner placed at position
8272 100:100 and the right-bottom corner corresponding to the right-bottom
8273 corner of the input image.
8275 crop=in_w-100:in_h-100:100:100
8279 Crop 10 pixels from the left and right borders, and 20 pixels from
8280 the top and bottom borders
8282 crop=in_w-2*10:in_h-2*20
8286 Keep only the bottom right quarter of the input image:
8288 crop=in_w/2:in_h/2:in_w/2:in_h/2
8292 Crop height for getting Greek harmony:
8294 crop=in_w:1/PHI*in_w
8298 Apply trembling effect:
8300 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)
8304 Apply erratic camera effect depending on timestamp:
8306 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)"
8310 Set x depending on the value of y:
8312 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8316 @subsection Commands
8318 This filter supports the following commands:
8324 Set width/height of the output video and the horizontal/vertical position
8326 The command accepts the same syntax of the corresponding option.
8328 If the specified expression is not valid, it is kept at its current
8334 Auto-detect the crop size.
8336 It calculates the necessary cropping parameters and prints the
8337 recommended parameters via the logging system. The detected dimensions
8338 correspond to the non-black area of the input video.
8340 It accepts the following parameters:
8345 Set higher black value threshold, which can be optionally specified
8346 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8347 value greater to the set value is considered non-black. It defaults to 24.
8348 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8349 on the bitdepth of the pixel format.
8352 The value which the width/height should be divisible by. It defaults to
8353 16. The offset is automatically adjusted to center the video. Use 2 to
8354 get only even dimensions (needed for 4:2:2 video). 16 is best when
8355 encoding to most video codecs.
8357 @item reset_count, reset
8358 Set the counter that determines after how many frames cropdetect will
8359 reset the previously detected largest video area and start over to
8360 detect the current optimal crop area. Default value is 0.
8362 This can be useful when channel logos distort the video area. 0
8363 indicates 'never reset', and returns the largest area encountered during
8370 Delay video filtering until a given wallclock timestamp. The filter first
8371 passes on @option{preroll} amount of frames, then it buffers at most
8372 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8373 it forwards the buffered frames and also any subsequent frames coming in its
8376 The filter can be used synchronize the output of multiple ffmpeg processes for
8377 realtime output devices like decklink. By putting the delay in the filtering
8378 chain and pre-buffering frames the process can pass on data to output almost
8379 immediately after the target wallclock timestamp is reached.
8381 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8387 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8390 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8393 The maximum duration of content to buffer before waiting for the cue expressed
8394 in seconds. Default is 0.
8401 Apply color adjustments using curves.
8403 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8404 component (red, green and blue) has its values defined by @var{N} key points
8405 tied from each other using a smooth curve. The x-axis represents the pixel
8406 values from the input frame, and the y-axis the new pixel values to be set for
8409 By default, a component curve is defined by the two points @var{(0;0)} and
8410 @var{(1;1)}. This creates a straight line where each original pixel value is
8411 "adjusted" to its own value, which means no change to the image.
8413 The filter allows you to redefine these two points and add some more. A new
8414 curve (using a natural cubic spline interpolation) will be define to pass
8415 smoothly through all these new coordinates. The new defined points needs to be
8416 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8417 be in the @var{[0;1]} interval. If the computed curves happened to go outside
8418 the vector spaces, the values will be clipped accordingly.
8420 The filter accepts the following options:
8424 Select one of the available color presets. This option can be used in addition
8425 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8426 options takes priority on the preset values.
8427 Available presets are:
8430 @item color_negative
8433 @item increase_contrast
8435 @item linear_contrast
8436 @item medium_contrast
8438 @item strong_contrast
8441 Default is @code{none}.
8443 Set the master key points. These points will define a second pass mapping. It
8444 is sometimes called a "luminance" or "value" mapping. It can be used with
8445 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8446 post-processing LUT.
8448 Set the key points for the red component.
8450 Set the key points for the green component.
8452 Set the key points for the blue component.
8454 Set the key points for all components (not including master).
8455 Can be used in addition to the other key points component
8456 options. In this case, the unset component(s) will fallback on this
8457 @option{all} setting.
8459 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8461 Save Gnuplot script of the curves in specified file.
8464 To avoid some filtergraph syntax conflicts, each key points list need to be
8465 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8467 @subsection Examples
8471 Increase slightly the middle level of blue:
8473 curves=blue='0/0 0.5/0.58 1/1'
8479 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'
8481 Here we obtain the following coordinates for each components:
8484 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8486 @code{(0;0) (0.50;0.48) (1;1)}
8488 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8492 The previous example can also be achieved with the associated built-in preset:
8494 curves=preset=vintage
8504 Use a Photoshop preset and redefine the points of the green component:
8506 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8510 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8511 and @command{gnuplot}:
8513 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8514 gnuplot -p /tmp/curves.plt
8520 Video data analysis filter.
8522 This filter shows hexadecimal pixel values of part of video.
8524 The filter accepts the following options:
8528 Set output video size.
8531 Set x offset from where to pick pixels.
8534 Set y offset from where to pick pixels.
8537 Set scope mode, can be one of the following:
8540 Draw hexadecimal pixel values with white color on black background.
8543 Draw hexadecimal pixel values with input video pixel color on black
8547 Draw hexadecimal pixel values on color background picked from input video,
8548 the text color is picked in such way so its always visible.
8552 Draw rows and columns numbers on left and top of video.
8555 Set background opacity.
8558 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8563 Denoise frames using 2D DCT (frequency domain filtering).
8565 This filter is not designed for real time.
8567 The filter accepts the following options:
8571 Set the noise sigma constant.
8573 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8574 coefficient (absolute value) below this threshold with be dropped.
8576 If you need a more advanced filtering, see @option{expr}.
8578 Default is @code{0}.
8581 Set number overlapping pixels for each block. Since the filter can be slow, you
8582 may want to reduce this value, at the cost of a less effective filter and the
8583 risk of various artefacts.
8585 If the overlapping value doesn't permit processing the whole input width or
8586 height, a warning will be displayed and according borders won't be denoised.
8588 Default value is @var{blocksize}-1, which is the best possible setting.
8591 Set the coefficient factor expression.
8593 For each coefficient of a DCT block, this expression will be evaluated as a
8594 multiplier value for the coefficient.
8596 If this is option is set, the @option{sigma} option will be ignored.
8598 The absolute value of the coefficient can be accessed through the @var{c}
8602 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8603 @var{blocksize}, which is the width and height of the processed blocks.
8605 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8606 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8607 on the speed processing. Also, a larger block size does not necessarily means a
8611 @subsection Examples
8613 Apply a denoise with a @option{sigma} of @code{4.5}:
8618 The same operation can be achieved using the expression system:
8620 dctdnoiz=e='gte(c, 4.5*3)'
8623 Violent denoise using a block size of @code{16x16}:
8630 Remove banding artifacts from input video.
8631 It works by replacing banded pixels with average value of referenced pixels.
8633 The filter accepts the following options:
8640 Set banding detection threshold for each plane. Default is 0.02.
8641 Valid range is 0.00003 to 0.5.
8642 If difference between current pixel and reference pixel is less than threshold,
8643 it will be considered as banded.
8646 Banding detection range in pixels. Default is 16. If positive, random number
8647 in range 0 to set value will be used. If negative, exact absolute value
8649 The range defines square of four pixels around current pixel.
8652 Set direction in radians from which four pixel will be compared. If positive,
8653 random direction from 0 to set direction will be picked. If negative, exact of
8654 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8655 will pick only pixels on same row and -PI/2 will pick only pixels on same
8659 If enabled, current pixel is compared with average value of all four
8660 surrounding pixels. The default is enabled. If disabled current pixel is
8661 compared with all four surrounding pixels. The pixel is considered banded
8662 if only all four differences with surrounding pixels are less than threshold.
8665 If enabled, current pixel is changed if and only if all pixel components are banded,
8666 e.g. banding detection threshold is triggered for all color components.
8667 The default is disabled.
8672 Remove blocking artifacts from input video.
8674 The filter accepts the following options:
8678 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8679 This controls what kind of deblocking is applied.
8682 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8688 Set blocking detection thresholds. Allowed range is 0 to 1.
8689 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8690 Using higher threshold gives more deblocking strength.
8691 Setting @var{alpha} controls threshold detection at exact edge of block.
8692 Remaining options controls threshold detection near the edge. Each one for
8693 below/above or left/right. Setting any of those to @var{0} disables
8697 Set planes to filter. Default is to filter all available planes.
8700 @subsection Examples
8704 Deblock using weak filter and block size of 4 pixels.
8706 deblock=filter=weak:block=4
8710 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8711 deblocking more edges.
8713 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8717 Similar as above, but filter only first plane.
8719 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8723 Similar as above, but filter only second and third plane.
8725 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8732 Drop duplicated frames at regular intervals.
8734 The filter accepts the following options:
8738 Set the number of frames from which one will be dropped. Setting this to
8739 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8740 Default is @code{5}.
8743 Set the threshold for duplicate detection. If the difference metric for a frame
8744 is less than or equal to this value, then it is declared as duplicate. Default
8748 Set scene change threshold. Default is @code{15}.
8752 Set the size of the x and y-axis blocks used during metric calculations.
8753 Larger blocks give better noise suppression, but also give worse detection of
8754 small movements. Must be a power of two. Default is @code{32}.
8757 Mark main input as a pre-processed input and activate clean source input
8758 stream. This allows the input to be pre-processed with various filters to help
8759 the metrics calculation while keeping the frame selection lossless. When set to
8760 @code{1}, the first stream is for the pre-processed input, and the second
8761 stream is the clean source from where the kept frames are chosen. Default is
8765 Set whether or not chroma is considered in the metric calculations. Default is
8771 Apply 2D deconvolution of video stream in frequency domain using second stream
8774 The filter accepts the following options:
8778 Set which planes to process.
8781 Set which impulse video frames will be processed, can be @var{first}
8782 or @var{all}. Default is @var{all}.
8785 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8786 and height are not same and not power of 2 or if stream prior to convolving
8790 The @code{deconvolve} filter also supports the @ref{framesync} options.
8794 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8796 It accepts the following options:
8800 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8801 @var{rainbows} for cross-color reduction.
8804 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8807 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8810 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8813 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8818 Apply deflate effect to the video.
8820 This filter replaces the pixel by the local(3x3) average by taking into account
8821 only values lower than the pixel.
8823 It accepts the following options:
8830 Limit the maximum change for each plane, default is 65535.
8831 If 0, plane will remain unchanged.
8834 @subsection Commands
8836 This filter supports the all above options as @ref{commands}.
8840 Remove temporal frame luminance variations.
8842 It accepts the following options:
8846 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8849 Set averaging mode to smooth temporal luminance variations.
8851 Available values are:
8876 Do not actually modify frame. Useful when one only wants metadata.
8881 Remove judder produced by partially interlaced telecined content.
8883 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8884 source was partially telecined content then the output of @code{pullup,dejudder}
8885 will have a variable frame rate. May change the recorded frame rate of the
8886 container. Aside from that change, this filter will not affect constant frame
8889 The option available in this filter is:
8893 Specify the length of the window over which the judder repeats.
8895 Accepts any integer greater than 1. Useful values are:
8899 If the original was telecined from 24 to 30 fps (Film to NTSC).
8902 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8905 If a mixture of the two.
8908 The default is @samp{4}.
8913 Suppress a TV station logo by a simple interpolation of the surrounding
8914 pixels. Just set a rectangle covering the logo and watch it disappear
8915 (and sometimes something even uglier appear - your mileage may vary).
8917 It accepts the following parameters:
8922 Specify the top left corner coordinates of the logo. They must be
8927 Specify the width and height of the logo to clear. They must be
8931 Specify the thickness of the fuzzy edge of the rectangle (added to
8932 @var{w} and @var{h}). The default value is 1. This option is
8933 deprecated, setting higher values should no longer be necessary and
8937 When set to 1, a green rectangle is drawn on the screen to simplify
8938 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8939 The default value is 0.
8941 The rectangle is drawn on the outermost pixels which will be (partly)
8942 replaced with interpolated values. The values of the next pixels
8943 immediately outside this rectangle in each direction will be used to
8944 compute the interpolated pixel values inside the rectangle.
8948 @subsection Examples
8952 Set a rectangle covering the area with top left corner coordinates 0,0
8953 and size 100x77, and a band of size 10:
8955 delogo=x=0:y=0:w=100:h=77:band=10
8963 Remove the rain in the input image/video by applying the derain methods based on
8964 convolutional neural networks. Supported models:
8968 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8969 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8972 Training as well as model generation scripts are provided in
8973 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8975 Native model files (.model) can be generated from TensorFlow model
8976 files (.pb) by using tools/python/convert.py
8978 The filter accepts the following options:
8982 Specify which filter to use. This option accepts the following values:
8986 Derain filter. To conduct derain filter, you need to use a derain model.
8989 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8991 Default value is @samp{derain}.
8994 Specify which DNN backend to use for model loading and execution. This option accepts
8995 the following values:
8999 Native implementation of DNN loading and execution.
9002 TensorFlow backend. To enable this backend you
9003 need to install the TensorFlow for C library (see
9004 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9005 @code{--enable-libtensorflow}
9007 Default value is @samp{native}.
9010 Set path to model file specifying network architecture and its parameters.
9011 Note that different backends use different file formats. TensorFlow and native
9012 backend can load files for only its format.
9015 It can also be finished with @ref{dnn_processing} filter.
9019 Attempt to fix small changes in horizontal and/or vertical shift. This
9020 filter helps remove camera shake from hand-holding a camera, bumping a
9021 tripod, moving on a vehicle, etc.
9023 The filter accepts the following options:
9031 Specify a rectangular area where to limit the search for motion
9033 If desired the search for motion vectors can be limited to a
9034 rectangular area of the frame defined by its top left corner, width
9035 and height. These parameters have the same meaning as the drawbox
9036 filter which can be used to visualise the position of the bounding
9039 This is useful when simultaneous movement of subjects within the frame
9040 might be confused for camera motion by the motion vector search.
9042 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9043 then the full frame is used. This allows later options to be set
9044 without specifying the bounding box for the motion vector search.
9046 Default - search the whole frame.
9050 Specify the maximum extent of movement in x and y directions in the
9051 range 0-64 pixels. Default 16.
9054 Specify how to generate pixels to fill blanks at the edge of the
9055 frame. Available values are:
9058 Fill zeroes at blank locations
9060 Original image at blank locations
9062 Extruded edge value at blank locations
9064 Mirrored edge at blank locations
9066 Default value is @samp{mirror}.
9069 Specify the blocksize to use for motion search. Range 4-128 pixels,
9073 Specify the contrast threshold for blocks. Only blocks with more than
9074 the specified contrast (difference between darkest and lightest
9075 pixels) will be considered. Range 1-255, default 125.
9078 Specify the search strategy. Available values are:
9081 Set exhaustive search
9083 Set less exhaustive search.
9085 Default value is @samp{exhaustive}.
9088 If set then a detailed log of the motion search is written to the
9095 Remove unwanted contamination of foreground colors, caused by reflected color of
9096 greenscreen or bluescreen.
9098 This filter accepts the following options:
9102 Set what type of despill to use.
9105 Set how spillmap will be generated.
9108 Set how much to get rid of still remaining spill.
9111 Controls amount of red in spill area.
9114 Controls amount of green in spill area.
9115 Should be -1 for greenscreen.
9118 Controls amount of blue in spill area.
9119 Should be -1 for bluescreen.
9122 Controls brightness of spill area, preserving colors.
9125 Modify alpha from generated spillmap.
9130 Apply an exact inverse of the telecine operation. It requires a predefined
9131 pattern specified using the pattern option which must be the same as that passed
9132 to the telecine filter.
9134 This filter accepts the following options:
9143 The default value is @code{top}.
9147 A string of numbers representing the pulldown pattern you wish to apply.
9148 The default value is @code{23}.
9151 A number representing position of the first frame with respect to the telecine
9152 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9157 Apply dilation effect to the video.
9159 This filter replaces the pixel by the local(3x3) maximum.
9161 It accepts the following options:
9168 Limit the maximum change for each plane, default is 65535.
9169 If 0, plane will remain unchanged.
9172 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9175 Flags to local 3x3 coordinates maps like this:
9182 @subsection Commands
9184 This filter supports the all above options as @ref{commands}.
9188 Displace pixels as indicated by second and third input stream.
9190 It takes three input streams and outputs one stream, the first input is the
9191 source, and second and third input are displacement maps.
9193 The second input specifies how much to displace pixels along the
9194 x-axis, while the third input specifies how much to displace pixels
9196 If one of displacement map streams terminates, last frame from that
9197 displacement map will be used.
9199 Note that once generated, displacements maps can be reused over and over again.
9201 A description of the accepted options follows.
9205 Set displace behavior for pixels that are out of range.
9207 Available values are:
9210 Missing pixels are replaced by black pixels.
9213 Adjacent pixels will spread out to replace missing pixels.
9216 Out of range pixels are wrapped so they point to pixels of other side.
9219 Out of range pixels will be replaced with mirrored pixels.
9221 Default is @samp{smear}.
9225 @subsection Examples
9229 Add ripple effect to rgb input of video size hd720:
9231 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
9235 Add wave effect to rgb input of video size hd720:
9237 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
9241 @anchor{dnn_processing}
9242 @section dnn_processing
9244 Do image processing with deep neural networks. It works together with another filter
9245 which converts the pixel format of the Frame to what the dnn network requires.
9247 The filter accepts the following options:
9251 Specify which DNN backend to use for model loading and execution. This option accepts
9252 the following values:
9256 Native implementation of DNN loading and execution.
9259 TensorFlow backend. To enable this backend you
9260 need to install the TensorFlow for C library (see
9261 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9262 @code{--enable-libtensorflow}
9265 Default value is @samp{native}.
9268 Set path to model file specifying network architecture and its parameters.
9269 Note that different backends use different file formats. TensorFlow and native
9270 backend can load files for only its format.
9272 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9275 Set the input name of the dnn network.
9278 Set the output name of the dnn network.
9282 @subsection Examples
9286 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9288 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9292 Halve the pixel value of the frame with format gray32f:
9294 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
9298 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9300 ./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
9304 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9306 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9313 Draw a colored box on the input image.
9315 It accepts the following parameters:
9320 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9324 The expressions which specify the width and height of the box; if 0 they are interpreted as
9325 the input width and height. It defaults to 0.
9328 Specify the color of the box to write. For the general syntax of this option,
9329 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9330 value @code{invert} is used, the box edge color is the same as the
9331 video with inverted luma.
9334 The expression which sets the thickness of the box edge.
9335 A value of @code{fill} will create a filled box. Default value is @code{3}.
9337 See below for the list of accepted constants.
9340 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9341 will overwrite the video's color and alpha pixels.
9342 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9345 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9346 following constants:
9350 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9354 horizontal and vertical chroma subsample values. For example for the
9355 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9359 The input width and height.
9362 The input sample aspect ratio.
9366 The x and y offset coordinates where the box is drawn.
9370 The width and height of the drawn box.
9373 The thickness of the drawn box.
9375 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9376 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9380 @subsection Examples
9384 Draw a black box around the edge of the input image:
9390 Draw a box with color red and an opacity of 50%:
9392 drawbox=10:20:200:60:red@@0.5
9395 The previous example can be specified as:
9397 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9401 Fill the box with pink color:
9403 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9407 Draw a 2-pixel red 2.40:1 mask:
9409 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
9413 @subsection Commands
9414 This filter supports same commands as options.
9415 The command accepts the same syntax of the corresponding option.
9417 If the specified expression is not valid, it is kept at its current
9422 Draw a graph using input video metadata.
9424 It accepts the following parameters:
9428 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9431 Set 1st foreground color expression.
9434 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9437 Set 2nd foreground color expression.
9440 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9443 Set 3rd foreground color expression.
9446 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9449 Set 4th foreground color expression.
9452 Set minimal value of metadata value.
9455 Set maximal value of metadata value.
9458 Set graph background color. Default is white.
9463 Available values for mode is:
9470 Default is @code{line}.
9475 Available values for slide is:
9478 Draw new frame when right border is reached.
9481 Replace old columns with new ones.
9484 Scroll from right to left.
9487 Scroll from left to right.
9490 Draw single picture.
9493 Default is @code{frame}.
9496 Set size of graph video. For the syntax of this option, check the
9497 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9498 The default value is @code{900x256}.
9501 Set the output frame rate. Default value is @code{25}.
9503 The foreground color expressions can use the following variables:
9506 Minimal value of metadata value.
9509 Maximal value of metadata value.
9512 Current metadata key value.
9515 The color is defined as 0xAABBGGRR.
9518 Example using metadata from @ref{signalstats} filter:
9520 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9523 Example using metadata from @ref{ebur128} filter:
9525 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9530 Draw a grid on the input image.
9532 It accepts the following parameters:
9537 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9541 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9542 input width and height, respectively, minus @code{thickness}, so image gets
9543 framed. Default to 0.
9546 Specify the color of the grid. For the general syntax of this option,
9547 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9548 value @code{invert} is used, the grid color is the same as the
9549 video with inverted luma.
9552 The expression which sets the thickness of the grid line. Default value is @code{1}.
9554 See below for the list of accepted constants.
9557 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9558 will overwrite the video's color and alpha pixels.
9559 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9562 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9563 following constants:
9567 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9571 horizontal and vertical chroma subsample values. For example for the
9572 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9576 The input grid cell width and height.
9579 The input sample aspect ratio.
9583 The x and y coordinates of some point of grid intersection (meant to configure offset).
9587 The width and height of the drawn cell.
9590 The thickness of the drawn cell.
9592 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9593 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9597 @subsection Examples
9601 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9603 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9607 Draw a white 3x3 grid with an opacity of 50%:
9609 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9613 @subsection Commands
9614 This filter supports same commands as options.
9615 The command accepts the same syntax of the corresponding option.
9617 If the specified expression is not valid, it is kept at its current
9623 Draw a text string or text from a specified file on top of a video, using the
9624 libfreetype library.
9626 To enable compilation of this filter, you need to configure FFmpeg with
9627 @code{--enable-libfreetype}.
9628 To enable default font fallback and the @var{font} option you need to
9629 configure FFmpeg with @code{--enable-libfontconfig}.
9630 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9631 @code{--enable-libfribidi}.
9635 It accepts the following parameters:
9640 Used to draw a box around text using the background color.
9641 The value must be either 1 (enable) or 0 (disable).
9642 The default value of @var{box} is 0.
9645 Set the width of the border to be drawn around the box using @var{boxcolor}.
9646 The default value of @var{boxborderw} is 0.
9649 The color to be used for drawing box around text. For the syntax of this
9650 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9652 The default value of @var{boxcolor} is "white".
9655 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9656 The default value of @var{line_spacing} is 0.
9659 Set the width of the border to be drawn around the text using @var{bordercolor}.
9660 The default value of @var{borderw} is 0.
9663 Set the color to be used for drawing border around text. For the syntax of this
9664 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9666 The default value of @var{bordercolor} is "black".
9669 Select how the @var{text} is expanded. Can be either @code{none},
9670 @code{strftime} (deprecated) or
9671 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9675 Set a start time for the count. Value is in microseconds. Only applied
9676 in the deprecated strftime expansion mode. To emulate in normal expansion
9677 mode use the @code{pts} function, supplying the start time (in seconds)
9678 as the second argument.
9681 If true, check and fix text coords to avoid clipping.
9684 The color to be used for drawing fonts. For the syntax of this option, check
9685 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9687 The default value of @var{fontcolor} is "black".
9689 @item fontcolor_expr
9690 String which is expanded the same way as @var{text} to obtain dynamic
9691 @var{fontcolor} value. By default this option has empty value and is not
9692 processed. When this option is set, it overrides @var{fontcolor} option.
9695 The font family to be used for drawing text. By default Sans.
9698 The font file to be used for drawing text. The path must be included.
9699 This parameter is mandatory if the fontconfig support is disabled.
9702 Draw the text applying alpha blending. The value can
9703 be a number between 0.0 and 1.0.
9704 The expression accepts the same variables @var{x, y} as well.
9705 The default value is 1.
9706 Please see @var{fontcolor_expr}.
9709 The font size to be used for drawing text.
9710 The default value of @var{fontsize} is 16.
9713 If set to 1, attempt to shape the text (for example, reverse the order of
9714 right-to-left text and join Arabic characters) before drawing it.
9715 Otherwise, just draw the text exactly as given.
9716 By default 1 (if supported).
9719 The flags to be used for loading the fonts.
9721 The flags map the corresponding flags supported by libfreetype, and are
9722 a combination of the following values:
9729 @item vertical_layout
9730 @item force_autohint
9733 @item ignore_global_advance_width
9735 @item ignore_transform
9741 Default value is "default".
9743 For more information consult the documentation for the FT_LOAD_*
9747 The color to be used for drawing a shadow behind the drawn text. For the
9748 syntax of this option, check the @ref{color syntax,,"Color" section in the
9749 ffmpeg-utils manual,ffmpeg-utils}.
9751 The default value of @var{shadowcolor} is "black".
9755 The x and y offsets for the text shadow position with respect to the
9756 position of the text. They can be either positive or negative
9757 values. The default value for both is "0".
9760 The starting frame number for the n/frame_num variable. The default value
9764 The size in number of spaces to use for rendering the tab.
9768 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9769 format. It can be used with or without text parameter. @var{timecode_rate}
9770 option must be specified.
9772 @item timecode_rate, rate, r
9773 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9774 integer. Minimum value is "1".
9775 Drop-frame timecode is supported for frame rates 30 & 60.
9778 If set to 1, the output of the timecode option will wrap around at 24 hours.
9779 Default is 0 (disabled).
9782 The text string to be drawn. The text must be a sequence of UTF-8
9784 This parameter is mandatory if no file is specified with the parameter
9788 A text file containing text to be drawn. The text must be a sequence
9789 of UTF-8 encoded characters.
9791 This parameter is mandatory if no text string is specified with the
9792 parameter @var{text}.
9794 If both @var{text} and @var{textfile} are specified, an error is thrown.
9797 If set to 1, the @var{textfile} will be reloaded before each frame.
9798 Be sure to update it atomically, or it may be read partially, or even fail.
9802 The expressions which specify the offsets where text will be drawn
9803 within the video frame. They are relative to the top/left border of the
9806 The default value of @var{x} and @var{y} is "0".
9808 See below for the list of accepted constants and functions.
9811 The parameters for @var{x} and @var{y} are expressions containing the
9812 following constants and functions:
9816 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9820 horizontal and vertical chroma subsample values. For example for the
9821 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9824 the height of each text line
9832 @item max_glyph_a, ascent
9833 the maximum distance from the baseline to the highest/upper grid
9834 coordinate used to place a glyph outline point, for all the rendered
9836 It is a positive value, due to the grid's orientation with the Y axis
9839 @item max_glyph_d, descent
9840 the maximum distance from the baseline to the lowest grid coordinate
9841 used to place a glyph outline point, for all the rendered glyphs.
9842 This is a negative value, due to the grid's orientation, with the Y axis
9846 maximum glyph height, that is the maximum height for all the glyphs
9847 contained in the rendered text, it is equivalent to @var{ascent} -
9851 maximum glyph width, that is the maximum width for all the glyphs
9852 contained in the rendered text
9855 the number of input frame, starting from 0
9857 @item rand(min, max)
9858 return a random number included between @var{min} and @var{max}
9861 The input sample aspect ratio.
9864 timestamp expressed in seconds, NAN if the input timestamp is unknown
9867 the height of the rendered text
9870 the width of the rendered text
9874 the x and y offset coordinates where the text is drawn.
9876 These parameters allow the @var{x} and @var{y} expressions to refer
9877 to each other, so you can for example specify @code{y=x/dar}.
9880 A one character description of the current frame's picture type.
9883 The current packet's position in the input file or stream
9884 (in bytes, from the start of the input). A value of -1 indicates
9885 this info is not available.
9888 The current packet's duration, in seconds.
9891 The current packet's size (in bytes).
9894 @anchor{drawtext_expansion}
9895 @subsection Text expansion
9897 If @option{expansion} is set to @code{strftime},
9898 the filter recognizes strftime() sequences in the provided text and
9899 expands them accordingly. Check the documentation of strftime(). This
9900 feature is deprecated.
9902 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9904 If @option{expansion} is set to @code{normal} (which is the default),
9905 the following expansion mechanism is used.
9907 The backslash character @samp{\}, followed by any character, always expands to
9908 the second character.
9910 Sequences of the form @code{%@{...@}} are expanded. The text between the
9911 braces is a function name, possibly followed by arguments separated by ':'.
9912 If the arguments contain special characters or delimiters (':' or '@}'),
9913 they should be escaped.
9915 Note that they probably must also be escaped as the value for the
9916 @option{text} option in the filter argument string and as the filter
9917 argument in the filtergraph description, and possibly also for the shell,
9918 that makes up to four levels of escaping; using a text file avoids these
9921 The following functions are available:
9926 The expression evaluation result.
9928 It must take one argument specifying the expression to be evaluated,
9929 which accepts the same constants and functions as the @var{x} and
9930 @var{y} values. Note that not all constants should be used, for
9931 example the text size is not known when evaluating the expression, so
9932 the constants @var{text_w} and @var{text_h} will have an undefined
9935 @item expr_int_format, eif
9936 Evaluate the expression's value and output as formatted integer.
9938 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9939 The second argument specifies the output format. Allowed values are @samp{x},
9940 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9941 @code{printf} function.
9942 The third parameter is optional and sets the number of positions taken by the output.
9943 It can be used to add padding with zeros from the left.
9946 The time at which the filter is running, expressed in UTC.
9947 It can accept an argument: a strftime() format string.
9950 The time at which the filter is running, expressed in the local time zone.
9951 It can accept an argument: a strftime() format string.
9954 Frame metadata. Takes one or two arguments.
9956 The first argument is mandatory and specifies the metadata key.
9958 The second argument is optional and specifies a default value, used when the
9959 metadata key is not found or empty.
9961 Available metadata can be identified by inspecting entries
9962 starting with TAG included within each frame section
9963 printed by running @code{ffprobe -show_frames}.
9965 String metadata generated in filters leading to
9966 the drawtext filter are also available.
9969 The frame number, starting from 0.
9972 A one character description of the current picture type.
9975 The timestamp of the current frame.
9976 It can take up to three arguments.
9978 The first argument is the format of the timestamp; it defaults to @code{flt}
9979 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9980 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9981 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9982 @code{localtime} stands for the timestamp of the frame formatted as
9983 local time zone time.
9985 The second argument is an offset added to the timestamp.
9987 If the format is set to @code{hms}, a third argument @code{24HH} may be
9988 supplied to present the hour part of the formatted timestamp in 24h format
9991 If the format is set to @code{localtime} or @code{gmtime},
9992 a third argument may be supplied: a strftime() format string.
9993 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9996 @subsection Commands
9998 This filter supports altering parameters via commands:
10001 Alter existing filter parameters.
10003 Syntax for the argument is the same as for filter invocation, e.g.
10006 fontsize=56:fontcolor=green:text='Hello World'
10009 Full filter invocation with sendcmd would look like this:
10012 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10016 If the entire argument can't be parsed or applied as valid values then the filter will
10017 continue with its existing parameters.
10019 @subsection Examples
10023 Draw "Test Text" with font FreeSerif, using the default values for the
10024 optional parameters.
10027 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10031 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10032 and y=50 (counting from the top-left corner of the screen), text is
10033 yellow with a red box around it. Both the text and the box have an
10037 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10038 x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10041 Note that the double quotes are not necessary if spaces are not used
10042 within the parameter list.
10045 Show the text at the center of the video frame:
10047 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10051 Show the text at a random position, switching to a new position every 30 seconds:
10053 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)"
10057 Show a text line sliding from right to left in the last row of the video
10058 frame. The file @file{LONG_LINE} is assumed to contain a single line
10061 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10065 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10067 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10071 Draw a single green letter "g", at the center of the input video.
10072 The glyph baseline is placed at half screen height.
10074 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10078 Show text for 1 second every 3 seconds:
10080 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10084 Use fontconfig to set the font. Note that the colons need to be escaped.
10086 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10090 Print the date of a real-time encoding (see strftime(3)):
10092 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10096 Show text fading in and out (appearing/disappearing):
10099 DS=1.0 # display start
10100 DE=10.0 # display end
10101 FID=1.5 # fade in duration
10102 FOD=5 # fade out duration
10103 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 @}"
10107 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10108 and the @option{fontsize} value are included in the @option{y} offset.
10110 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10111 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10115 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10116 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10117 must have option @option{-export_path_metadata 1} for the special metadata fields
10118 to be available for filters.
10120 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10125 For more information about libfreetype, check:
10126 @url{http://www.freetype.org/}.
10128 For more information about fontconfig, check:
10129 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10131 For more information about libfribidi, check:
10132 @url{http://fribidi.org/}.
10134 @section edgedetect
10136 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10138 The filter accepts the following options:
10143 Set low and high threshold values used by the Canny thresholding
10146 The high threshold selects the "strong" edge pixels, which are then
10147 connected through 8-connectivity with the "weak" edge pixels selected
10148 by the low threshold.
10150 @var{low} and @var{high} threshold values must be chosen in the range
10151 [0,1], and @var{low} should be lesser or equal to @var{high}.
10153 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10157 Define the drawing mode.
10161 Draw white/gray wires on black background.
10164 Mix the colors to create a paint/cartoon effect.
10167 Apply Canny edge detector on all selected planes.
10169 Default value is @var{wires}.
10172 Select planes for filtering. By default all available planes are filtered.
10175 @subsection Examples
10179 Standard edge detection with custom values for the hysteresis thresholding:
10181 edgedetect=low=0.1:high=0.4
10185 Painting effect without thresholding:
10187 edgedetect=mode=colormix:high=0
10193 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10195 For each input image, the filter will compute the optimal mapping from
10196 the input to the output given the codebook length, that is the number
10197 of distinct output colors.
10199 This filter accepts the following options.
10202 @item codebook_length, l
10203 Set codebook length. The value must be a positive integer, and
10204 represents the number of distinct output colors. Default value is 256.
10207 Set the maximum number of iterations to apply for computing the optimal
10208 mapping. The higher the value the better the result and the higher the
10209 computation time. Default value is 1.
10212 Set a random seed, must be an integer included between 0 and
10213 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10214 will try to use a good random seed on a best effort basis.
10217 Set pal8 output pixel format. This option does not work with codebook
10218 length greater than 256.
10223 Measure graylevel entropy in histogram of color channels of video frames.
10225 It accepts the following parameters:
10229 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10231 @var{diff} mode measures entropy of histogram delta values, absolute differences
10232 between neighbour histogram values.
10236 Set brightness, contrast, saturation and approximate gamma adjustment.
10238 The filter accepts the following options:
10242 Set the contrast expression. The value must be a float value in range
10243 @code{-1000.0} to @code{1000.0}. The default value is "1".
10246 Set the brightness expression. The value must be a float value in
10247 range @code{-1.0} to @code{1.0}. The default value is "0".
10250 Set the saturation expression. The value must be a float in
10251 range @code{0.0} to @code{3.0}. The default value is "1".
10254 Set the gamma expression. The value must be a float in range
10255 @code{0.1} to @code{10.0}. The default value is "1".
10258 Set the gamma expression for red. The value must be a float in
10259 range @code{0.1} to @code{10.0}. The default value is "1".
10262 Set the gamma expression for green. The value must be a float in range
10263 @code{0.1} to @code{10.0}. The default value is "1".
10266 Set the gamma expression for blue. The value must be a float in range
10267 @code{0.1} to @code{10.0}. The default value is "1".
10270 Set the gamma weight expression. It can be used to reduce the effect
10271 of a high gamma value on bright image areas, e.g. keep them from
10272 getting overamplified and just plain white. The value must be a float
10273 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10274 gamma correction all the way down while @code{1.0} leaves it at its
10275 full strength. Default is "1".
10278 Set when the expressions for brightness, contrast, saturation and
10279 gamma expressions are evaluated.
10281 It accepts the following values:
10284 only evaluate expressions once during the filter initialization or
10285 when a command is processed
10288 evaluate expressions for each incoming frame
10291 Default value is @samp{init}.
10294 The expressions accept the following parameters:
10297 frame count of the input frame starting from 0
10300 byte position of the corresponding packet in the input file, NAN if
10304 frame rate of the input video, NAN if the input frame rate is unknown
10307 timestamp expressed in seconds, NAN if the input timestamp is unknown
10310 @subsection Commands
10311 The filter supports the following commands:
10315 Set the contrast expression.
10318 Set the brightness expression.
10321 Set the saturation expression.
10324 Set the gamma expression.
10327 Set the gamma_r expression.
10330 Set gamma_g expression.
10333 Set gamma_b expression.
10336 Set gamma_weight expression.
10338 The command accepts the same syntax of the corresponding option.
10340 If the specified expression is not valid, it is kept at its current
10347 Apply erosion effect to the video.
10349 This filter replaces the pixel by the local(3x3) minimum.
10351 It accepts the following options:
10358 Limit the maximum change for each plane, default is 65535.
10359 If 0, plane will remain unchanged.
10362 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10365 Flags to local 3x3 coordinates maps like this:
10372 @subsection Commands
10374 This filter supports the all above options as @ref{commands}.
10376 @section extractplanes
10378 Extract color channel components from input video stream into
10379 separate grayscale video streams.
10381 The filter accepts the following option:
10385 Set plane(s) to extract.
10387 Available values for planes are:
10398 Choosing planes not available in the input will result in an error.
10399 That means you cannot select @code{r}, @code{g}, @code{b} planes
10400 with @code{y}, @code{u}, @code{v} planes at same time.
10403 @subsection Examples
10407 Extract luma, u and v color channel component from input video frame
10408 into 3 grayscale outputs:
10410 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
10416 Apply a fade-in/out effect to the input video.
10418 It accepts the following parameters:
10422 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10424 Default is @code{in}.
10426 @item start_frame, s
10427 Specify the number of the frame to start applying the fade
10428 effect at. Default is 0.
10431 The number of frames that the fade effect lasts. At the end of the
10432 fade-in effect, the output video will have the same intensity as the input video.
10433 At the end of the fade-out transition, the output video will be filled with the
10434 selected @option{color}.
10438 If set to 1, fade only alpha channel, if one exists on the input.
10439 Default value is 0.
10441 @item start_time, st
10442 Specify the timestamp (in seconds) of the frame to start to apply the fade
10443 effect. If both start_frame and start_time are specified, the fade will start at
10444 whichever comes last. Default is 0.
10447 The number of seconds for which the fade effect has to last. At the end of the
10448 fade-in effect the output video will have the same intensity as the input video,
10449 at the end of the fade-out transition the output video will be filled with the
10450 selected @option{color}.
10451 If both duration and nb_frames are specified, duration is used. Default is 0
10452 (nb_frames is used by default).
10455 Specify the color of the fade. Default is "black".
10458 @subsection Examples
10462 Fade in the first 30 frames of video:
10467 The command above is equivalent to:
10473 Fade out the last 45 frames of a 200-frame video:
10476 fade=type=out:start_frame=155:nb_frames=45
10480 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10482 fade=in:0:25, fade=out:975:25
10486 Make the first 5 frames yellow, then fade in from frame 5-24:
10488 fade=in:5:20:color=yellow
10492 Fade in alpha over first 25 frames of video:
10494 fade=in:0:25:alpha=1
10498 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10500 fade=t=in:st=5.5:d=0.5
10506 Denoise frames using 3D FFT (frequency domain filtering).
10508 The filter accepts the following options:
10512 Set the noise sigma constant. This sets denoising strength.
10513 Default value is 1. Allowed range is from 0 to 30.
10514 Using very high sigma with low overlap may give blocking artifacts.
10517 Set amount of denoising. By default all detected noise is reduced.
10518 Default value is 1. Allowed range is from 0 to 1.
10521 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10522 Actual size of block in pixels is 2 to power of @var{block}, so by default
10523 block size in pixels is 2^4 which is 16.
10526 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10529 Set number of previous frames to use for denoising. By default is set to 0.
10532 Set number of next frames to to use for denoising. By default is set to 0.
10535 Set planes which will be filtered, by default are all available filtered
10540 Apply arbitrary expressions to samples in frequency domain
10544 Adjust the dc value (gain) of the luma plane of the image. The filter
10545 accepts an integer value in range @code{0} to @code{1000}. The default
10546 value is set to @code{0}.
10549 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10550 filter accepts an integer value in range @code{0} to @code{1000}. The
10551 default value is set to @code{0}.
10554 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10555 filter accepts an integer value in range @code{0} to @code{1000}. The
10556 default value is set to @code{0}.
10559 Set the frequency domain weight expression for the luma plane.
10562 Set the frequency domain weight expression for the 1st chroma plane.
10565 Set the frequency domain weight expression for the 2nd chroma plane.
10568 Set when the expressions are evaluated.
10570 It accepts the following values:
10573 Only evaluate expressions once during the filter initialization.
10576 Evaluate expressions for each incoming frame.
10579 Default value is @samp{init}.
10581 The filter accepts the following variables:
10584 The coordinates of the current sample.
10588 The width and height of the image.
10591 The number of input frame, starting from 0.
10594 @subsection Examples
10600 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10606 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10612 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10618 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10625 Extract a single field from an interlaced image using stride
10626 arithmetic to avoid wasting CPU time. The output frames are marked as
10629 The filter accepts the following options:
10633 Specify whether to extract the top (if the value is @code{0} or
10634 @code{top}) or the bottom field (if the value is @code{1} or
10640 Create new frames by copying the top and bottom fields from surrounding frames
10641 supplied as numbers by the hint file.
10645 Set file containing hints: absolute/relative frame numbers.
10647 There must be one line for each frame in a clip. Each line must contain two
10648 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10649 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10650 is current frame number for @code{absolute} mode or out of [-1, 1] range
10651 for @code{relative} mode. First number tells from which frame to pick up top
10652 field and second number tells from which frame to pick up bottom field.
10654 If optionally followed by @code{+} output frame will be marked as interlaced,
10655 else if followed by @code{-} output frame will be marked as progressive, else
10656 it will be marked same as input frame.
10657 If optionally followed by @code{t} output frame will use only top field, or in
10658 case of @code{b} it will use only bottom field.
10659 If line starts with @code{#} or @code{;} that line is skipped.
10662 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10665 Example of first several lines of @code{hint} file for @code{relative} mode:
10667 0,0 - # first frame
10668 1,0 - # second frame, use third's frame top field and second's frame bottom field
10669 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10684 @section fieldmatch
10686 Field matching filter for inverse telecine. It is meant to reconstruct the
10687 progressive frames from a telecined stream. The filter does not drop duplicated
10688 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10689 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10691 The separation of the field matching and the decimation is notably motivated by
10692 the possibility of inserting a de-interlacing filter fallback between the two.
10693 If the source has mixed telecined and real interlaced content,
10694 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10695 But these remaining combed frames will be marked as interlaced, and thus can be
10696 de-interlaced by a later filter such as @ref{yadif} before decimation.
10698 In addition to the various configuration options, @code{fieldmatch} can take an
10699 optional second stream, activated through the @option{ppsrc} option. If
10700 enabled, the frames reconstruction will be based on the fields and frames from
10701 this second stream. This allows the first input to be pre-processed in order to
10702 help the various algorithms of the filter, while keeping the output lossless
10703 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10704 or brightness/contrast adjustments can help.
10706 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10707 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10708 which @code{fieldmatch} is based on. While the semantic and usage are very
10709 close, some behaviour and options names can differ.
10711 The @ref{decimate} filter currently only works for constant frame rate input.
10712 If your input has mixed telecined (30fps) and progressive content with a lower
10713 framerate like 24fps use the following filterchain to produce the necessary cfr
10714 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10716 The filter accepts the following options:
10720 Specify the assumed field order of the input stream. Available values are:
10724 Auto detect parity (use FFmpeg's internal parity value).
10726 Assume bottom field first.
10728 Assume top field first.
10731 Note that it is sometimes recommended not to trust the parity announced by the
10734 Default value is @var{auto}.
10737 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10738 sense that it won't risk creating jerkiness due to duplicate frames when
10739 possible, but if there are bad edits or blended fields it will end up
10740 outputting combed frames when a good match might actually exist. On the other
10741 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10742 but will almost always find a good frame if there is one. The other values are
10743 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10744 jerkiness and creating duplicate frames versus finding good matches in sections
10745 with bad edits, orphaned fields, blended fields, etc.
10747 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10749 Available values are:
10753 2-way matching (p/c)
10755 2-way matching, and trying 3rd match if still combed (p/c + n)
10757 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10759 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10760 still combed (p/c + n + u/b)
10762 3-way matching (p/c/n)
10764 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10765 detected as combed (p/c/n + u/b)
10768 The parenthesis at the end indicate the matches that would be used for that
10769 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10772 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10775 Default value is @var{pc_n}.
10778 Mark the main input stream as a pre-processed input, and enable the secondary
10779 input stream as the clean source to pick the fields from. See the filter
10780 introduction for more details. It is similar to the @option{clip2} feature from
10783 Default value is @code{0} (disabled).
10786 Set the field to match from. It is recommended to set this to the same value as
10787 @option{order} unless you experience matching failures with that setting. In
10788 certain circumstances changing the field that is used to match from can have a
10789 large impact on matching performance. Available values are:
10793 Automatic (same value as @option{order}).
10795 Match from the bottom field.
10797 Match from the top field.
10800 Default value is @var{auto}.
10803 Set whether or not chroma is included during the match comparisons. In most
10804 cases it is recommended to leave this enabled. You should set this to @code{0}
10805 only if your clip has bad chroma problems such as heavy rainbowing or other
10806 artifacts. Setting this to @code{0} could also be used to speed things up at
10807 the cost of some accuracy.
10809 Default value is @code{1}.
10813 These define an exclusion band which excludes the lines between @option{y0} and
10814 @option{y1} from being included in the field matching decision. An exclusion
10815 band can be used to ignore subtitles, a logo, or other things that may
10816 interfere with the matching. @option{y0} sets the starting scan line and
10817 @option{y1} sets the ending line; all lines in between @option{y0} and
10818 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10819 @option{y0} and @option{y1} to the same value will disable the feature.
10820 @option{y0} and @option{y1} defaults to @code{0}.
10823 Set the scene change detection threshold as a percentage of maximum change on
10824 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10825 detection is only relevant in case @option{combmatch}=@var{sc}. The range for
10826 @option{scthresh} is @code{[0.0, 100.0]}.
10828 Default value is @code{12.0}.
10831 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10832 account the combed scores of matches when deciding what match to use as the
10833 final match. Available values are:
10837 No final matching based on combed scores.
10839 Combed scores are only used when a scene change is detected.
10841 Use combed scores all the time.
10844 Default is @var{sc}.
10847 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10848 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10849 Available values are:
10853 No forced calculation.
10855 Force p/c/n calculations.
10857 Force p/c/n/u/b calculations.
10860 Default value is @var{none}.
10863 This is the area combing threshold used for combed frame detection. This
10864 essentially controls how "strong" or "visible" combing must be to be detected.
10865 Larger values mean combing must be more visible and smaller values mean combing
10866 can be less visible or strong and still be detected. Valid settings are from
10867 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10868 be detected as combed). This is basically a pixel difference value. A good
10869 range is @code{[8, 12]}.
10871 Default value is @code{9}.
10874 Sets whether or not chroma is considered in the combed frame decision. Only
10875 disable this if your source has chroma problems (rainbowing, etc.) that are
10876 causing problems for the combed frame detection with chroma enabled. Actually,
10877 using @option{chroma}=@var{0} is usually more reliable, except for the case
10878 where there is chroma only combing in the source.
10880 Default value is @code{0}.
10884 Respectively set the x-axis and y-axis size of the window used during combed
10885 frame detection. This has to do with the size of the area in which
10886 @option{combpel} pixels are required to be detected as combed for a frame to be
10887 declared combed. See the @option{combpel} parameter description for more info.
10888 Possible values are any number that is a power of 2 starting at 4 and going up
10891 Default value is @code{16}.
10894 The number of combed pixels inside any of the @option{blocky} by
10895 @option{blockx} size blocks on the frame for the frame to be detected as
10896 combed. While @option{cthresh} controls how "visible" the combing must be, this
10897 setting controls "how much" combing there must be in any localized area (a
10898 window defined by the @option{blockx} and @option{blocky} settings) on the
10899 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10900 which point no frames will ever be detected as combed). This setting is known
10901 as @option{MI} in TFM/VFM vocabulary.
10903 Default value is @code{80}.
10906 @anchor{p/c/n/u/b meaning}
10907 @subsection p/c/n/u/b meaning
10909 @subsubsection p/c/n
10911 We assume the following telecined stream:
10914 Top fields: 1 2 2 3 4
10915 Bottom fields: 1 2 3 4 4
10918 The numbers correspond to the progressive frame the fields relate to. Here, the
10919 first two frames are progressive, the 3rd and 4th are combed, and so on.
10921 When @code{fieldmatch} is configured to run a matching from bottom
10922 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10927 B 1 2 3 4 4 <-- matching reference
10936 As a result of the field matching, we can see that some frames get duplicated.
10937 To perform a complete inverse telecine, you need to rely on a decimation filter
10938 after this operation. See for instance the @ref{decimate} filter.
10940 The same operation now matching from top fields (@option{field}=@var{top})
10945 T 1 2 2 3 4 <-- matching reference
10955 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10956 basically, they refer to the frame and field of the opposite parity:
10959 @item @var{p} matches the field of the opposite parity in the previous frame
10960 @item @var{c} matches the field of the opposite parity in the current frame
10961 @item @var{n} matches the field of the opposite parity in the next frame
10966 The @var{u} and @var{b} matching are a bit special in the sense that they match
10967 from the opposite parity flag. In the following examples, we assume that we are
10968 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10969 'x' is placed above and below each matched fields.
10971 With bottom matching (@option{field}=@var{bottom}):
10976 Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
10977 Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
10985 With top matching (@option{field}=@var{top}):
10990 Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
10991 Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
10999 @subsection Examples
11001 Simple IVTC of a top field first telecined stream:
11003 fieldmatch=order=tff:combmatch=none, decimate
11006 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11008 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11011 @section fieldorder
11013 Transform the field order of the input video.
11015 It accepts the following parameters:
11020 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11021 for bottom field first.
11024 The default value is @samp{tff}.
11026 The transformation is done by shifting the picture content up or down
11027 by one line, and filling the remaining line with appropriate picture content.
11028 This method is consistent with most broadcast field order converters.
11030 If the input video is not flagged as being interlaced, or it is already
11031 flagged as being of the required output field order, then this filter does
11032 not alter the incoming video.
11034 It is very useful when converting to or from PAL DV material,
11035 which is bottom field first.
11039 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11042 @section fifo, afifo
11044 Buffer input images and send them when they are requested.
11046 It is mainly useful when auto-inserted by the libavfilter
11049 It does not take parameters.
11051 @section fillborders
11053 Fill borders of the input video, without changing video stream dimensions.
11054 Sometimes video can have garbage at the four edges and you may not want to
11055 crop video input to keep size multiple of some number.
11057 This filter accepts the following options:
11061 Number of pixels to fill from left border.
11064 Number of pixels to fill from right border.
11067 Number of pixels to fill from top border.
11070 Number of pixels to fill from bottom border.
11075 It accepts the following values:
11078 fill pixels using outermost pixels
11081 fill pixels using mirroring
11084 fill pixels with constant value
11087 Default is @var{smear}.
11090 Set color for pixels in fixed mode. Default is @var{black}.
11093 @subsection Commands
11094 This filter supports same @ref{commands} as options.
11095 The command accepts the same syntax of the corresponding option.
11097 If the specified expression is not valid, it is kept at its current
11102 Find a rectangular object
11104 It accepts the following options:
11108 Filepath of the object image, needs to be in gray8.
11111 Detection threshold, default is 0.5.
11114 Number of mipmaps, default is 3.
11116 @item xmin, ymin, xmax, ymax
11117 Specifies the rectangle in which to search.
11120 @subsection Examples
11124 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11126 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11132 Flood area with values of same pixel components with another values.
11134 It accepts the following options:
11137 Set pixel x coordinate.
11140 Set pixel y coordinate.
11143 Set source #0 component value.
11146 Set source #1 component value.
11149 Set source #2 component value.
11152 Set source #3 component value.
11155 Set destination #0 component value.
11158 Set destination #1 component value.
11161 Set destination #2 component value.
11164 Set destination #3 component value.
11170 Convert the input video to one of the specified pixel formats.
11171 Libavfilter will try to pick one that is suitable as input to
11174 It accepts the following parameters:
11178 A '|'-separated list of pixel format names, such as
11179 "pix_fmts=yuv420p|monow|rgb24".
11183 @subsection Examples
11187 Convert the input video to the @var{yuv420p} format
11189 format=pix_fmts=yuv420p
11192 Convert the input video to any of the formats in the list
11194 format=pix_fmts=yuv420p|yuv444p|yuv410p
11201 Convert the video to specified constant frame rate by duplicating or dropping
11202 frames as necessary.
11204 It accepts the following parameters:
11208 The desired output frame rate. The default is @code{25}.
11211 Assume the first PTS should be the given value, in seconds. This allows for
11212 padding/trimming at the start of stream. By default, no assumption is made
11213 about the first frame's expected PTS, so no padding or trimming is done.
11214 For example, this could be set to 0 to pad the beginning with duplicates of
11215 the first frame if a video stream starts after the audio stream or to trim any
11216 frames with a negative PTS.
11219 Timestamp (PTS) rounding method.
11221 Possible values are:
11228 round towards -infinity
11230 round towards +infinity
11234 The default is @code{near}.
11237 Action performed when reading the last frame.
11239 Possible values are:
11242 Use same timestamp rounding method as used for other frames.
11244 Pass through last frame if input duration has not been reached yet.
11246 The default is @code{round}.
11250 Alternatively, the options can be specified as a flat string:
11251 @var{fps}[:@var{start_time}[:@var{round}]].
11253 See also the @ref{setpts} filter.
11255 @subsection Examples
11259 A typical usage in order to set the fps to 25:
11265 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11267 fps=fps=film:round=near
11273 Pack two different video streams into a stereoscopic video, setting proper
11274 metadata on supported codecs. The two views should have the same size and
11275 framerate and processing will stop when the shorter video ends. Please note
11276 that you may conveniently adjust view properties with the @ref{scale} and
11279 It accepts the following parameters:
11283 The desired packing format. Supported values are:
11288 The views are next to each other (default).
11291 The views are on top of each other.
11294 The views are packed by line.
11297 The views are packed by column.
11300 The views are temporally interleaved.
11309 # Convert left and right views into a frame-sequential video
11310 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11312 # Convert views into a side-by-side video with the same output resolution as the input
11313 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
11318 Change the frame rate by interpolating new video output frames from the source
11321 This filter is not designed to function correctly with interlaced media. If
11322 you wish to change the frame rate of interlaced media then you are required
11323 to deinterlace before this filter and re-interlace after this filter.
11325 A description of the accepted options follows.
11329 Specify the output frames per second. This option can also be specified
11330 as a value alone. The default is @code{50}.
11333 Specify the start of a range where the output frame will be created as a
11334 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11335 the default is @code{15}.
11338 Specify the end of a range where the output frame will be created as a
11339 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11340 the default is @code{240}.
11343 Specify the level at which a scene change is detected as a value between
11344 0 and 100 to indicate a new scene; a low value reflects a low
11345 probability for the current frame to introduce a new scene, while a higher
11346 value means the current frame is more likely to be one.
11347 The default is @code{8.2}.
11350 Specify flags influencing the filter process.
11352 Available value for @var{flags} is:
11355 @item scene_change_detect, scd
11356 Enable scene change detection using the value of the option @var{scene}.
11357 This flag is enabled by default.
11363 Select one frame every N-th frame.
11365 This filter accepts the following option:
11368 Select frame after every @code{step} frames.
11369 Allowed values are positive integers higher than 0. Default value is @code{1}.
11372 @section freezedetect
11374 Detect frozen video.
11376 This filter logs a message and sets frame metadata when it detects that the
11377 input video has no significant change in content during a specified duration.
11378 Video freeze detection calculates the mean average absolute difference of all
11379 the components of video frames and compares it to a noise floor.
11381 The printed times and duration are expressed in seconds. The
11382 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11383 whose timestamp equals or exceeds the detection duration and it contains the
11384 timestamp of the first frame of the freeze. The
11385 @code{lavfi.freezedetect.freeze_duration} and
11386 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11389 The filter accepts the following options:
11393 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11394 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11398 Set freeze duration until notification (default is 2 seconds).
11401 @section freezeframes
11403 Freeze video frames.
11405 This filter freezes video frames using frame from 2nd input.
11407 The filter accepts the following options:
11411 Set number of first frame from which to start freeze.
11414 Set number of last frame from which to end freeze.
11417 Set number of frame from 2nd input which will be used instead of replaced frames.
11423 Apply a frei0r effect to the input video.
11425 To enable the compilation of this filter, you need to install the frei0r
11426 header and configure FFmpeg with @code{--enable-frei0r}.
11428 It accepts the following parameters:
11433 The name of the frei0r effect to load. If the environment variable
11434 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11435 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11436 Otherwise, the standard frei0r paths are searched, in this order:
11437 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11438 @file{/usr/lib/frei0r-1/}.
11440 @item filter_params
11441 A '|'-separated list of parameters to pass to the frei0r effect.
11445 A frei0r effect parameter can be a boolean (its value is either
11446 "y" or "n"), a double, a color (specified as
11447 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11448 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11449 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11450 a position (specified as @var{X}/@var{Y}, where
11451 @var{X} and @var{Y} are floating point numbers) and/or a string.
11453 The number and types of parameters depend on the loaded effect. If an
11454 effect parameter is not specified, the default value is set.
11456 @subsection Examples
11460 Apply the distort0r effect, setting the first two double parameters:
11462 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11466 Apply the colordistance effect, taking a color as the first parameter:
11468 frei0r=colordistance:0.2/0.3/0.4
11469 frei0r=colordistance:violet
11470 frei0r=colordistance:0x112233
11474 Apply the perspective effect, specifying the top left and top right image
11477 frei0r=perspective:0.2/0.2|0.8/0.2
11481 For more information, see
11482 @url{http://frei0r.dyne.org}
11486 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11488 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11489 processing filter, one of them is performed once per block, not per pixel.
11490 This allows for much higher speed.
11492 The filter accepts the following options:
11496 Set quality. This option defines the number of levels for averaging. It accepts
11497 an integer in the range 4-5. Default value is @code{4}.
11500 Force a constant quantization parameter. It accepts an integer in range 0-63.
11501 If not set, the filter will use the QP from the video stream (if available).
11504 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11505 more details but also more artifacts, while higher values make the image smoother
11506 but also blurrier. Default value is @code{0} − PSNR optimal.
11508 @item use_bframe_qp
11509 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11510 option may cause flicker since the B-Frames have often larger QP. Default is
11511 @code{0} (not enabled).
11517 Apply Gaussian blur filter.
11519 The filter accepts the following options:
11523 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11526 Set number of steps for Gaussian approximation. Default is @code{1}.
11529 Set which planes to filter. By default all planes are filtered.
11532 Set vertical sigma, if negative it will be same as @code{sigma}.
11533 Default is @code{-1}.
11536 @subsection Commands
11537 This filter supports same commands as options.
11538 The command accepts the same syntax of the corresponding option.
11540 If the specified expression is not valid, it is kept at its current
11545 Apply generic equation to each pixel.
11547 The filter accepts the following options:
11550 @item lum_expr, lum
11551 Set the luminance expression.
11553 Set the chrominance blue expression.
11555 Set the chrominance red expression.
11556 @item alpha_expr, a
11557 Set the alpha expression.
11559 Set the red expression.
11560 @item green_expr, g
11561 Set the green expression.
11563 Set the blue expression.
11566 The colorspace is selected according to the specified options. If one
11567 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11568 options is specified, the filter will automatically select a YCbCr
11569 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11570 @option{blue_expr} options is specified, it will select an RGB
11573 If one of the chrominance expression is not defined, it falls back on the other
11574 one. If no alpha expression is specified it will evaluate to opaque value.
11575 If none of chrominance expressions are specified, they will evaluate
11576 to the luminance expression.
11578 The expressions can use the following variables and functions:
11582 The sequential number of the filtered frame, starting from @code{0}.
11586 The coordinates of the current sample.
11590 The width and height of the image.
11594 Width and height scale depending on the currently filtered plane. It is the
11595 ratio between the corresponding luma plane number of pixels and the current
11596 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11597 @code{0.5,0.5} for chroma planes.
11600 Time of the current frame, expressed in seconds.
11603 Return the value of the pixel at location (@var{x},@var{y}) of the current
11607 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11611 Return the value of the pixel at location (@var{x},@var{y}) of the
11612 blue-difference chroma plane. Return 0 if there is no such plane.
11615 Return the value of the pixel at location (@var{x},@var{y}) of the
11616 red-difference chroma plane. Return 0 if there is no such plane.
11621 Return the value of the pixel at location (@var{x},@var{y}) of the
11622 red/green/blue component. Return 0 if there is no such component.
11625 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11626 plane. Return 0 if there is no such plane.
11628 @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)
11629 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
11630 sums of samples within a rectangle. See the functions without the sum postfix.
11632 @item interpolation
11633 Set one of interpolation methods:
11638 Default is bilinear.
11641 For functions, if @var{x} and @var{y} are outside the area, the value will be
11642 automatically clipped to the closer edge.
11644 Please note that this filter can use multiple threads in which case each slice
11645 will have its own expression state. If you want to use only a single expression
11646 state because your expressions depend on previous state then you should limit
11647 the number of filter threads to 1.
11649 @subsection Examples
11653 Flip the image horizontally:
11659 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11660 wavelength of 100 pixels:
11662 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11666 Generate a fancy enigmatic moving light:
11668 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
11672 Generate a quick emboss effect:
11674 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11678 Modify RGB components depending on pixel position:
11680 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11684 Create a radial gradient that is the same size as the input (also see
11685 the @ref{vignette} filter):
11687 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11693 Fix the banding artifacts that are sometimes introduced into nearly flat
11694 regions by truncation to 8-bit color depth.
11695 Interpolate the gradients that should go where the bands are, and
11698 It is designed for playback only. Do not use it prior to
11699 lossy compression, because compression tends to lose the dither and
11700 bring back the bands.
11702 It accepts the following parameters:
11707 The maximum amount by which the filter will change any one pixel. This is also
11708 the threshold for detecting nearly flat regions. Acceptable values range from
11709 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11713 The neighborhood to fit the gradient to. A larger radius makes for smoother
11714 gradients, but also prevents the filter from modifying the pixels near detailed
11715 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11716 values will be clipped to the valid range.
11720 Alternatively, the options can be specified as a flat string:
11721 @var{strength}[:@var{radius}]
11723 @subsection Examples
11727 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11733 Specify radius, omitting the strength (which will fall-back to the default
11741 @anchor{graphmonitor}
11742 @section graphmonitor
11743 Show various filtergraph stats.
11745 With this filter one can debug complete filtergraph.
11746 Especially issues with links filling with queued frames.
11748 The filter accepts the following options:
11752 Set video output size. Default is @var{hd720}.
11755 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11758 Set output mode, can be @var{fulll} or @var{compact}.
11759 In @var{compact} mode only filters with some queued frames have displayed stats.
11762 Set flags which enable which stats are shown in video.
11764 Available values for flags are:
11767 Display number of queued frames in each link.
11769 @item frame_count_in
11770 Display number of frames taken from filter.
11772 @item frame_count_out
11773 Display number of frames given out from filter.
11776 Display current filtered frame pts.
11779 Display current filtered frame time.
11782 Display time base for filter link.
11785 Display used format for filter link.
11788 Display video size or number of audio channels in case of audio used by filter link.
11791 Display video frame rate or sample rate in case of audio used by filter link.
11795 Set upper limit for video rate of output stream, Default value is @var{25}.
11796 This guarantee that output video frame rate will not be higher than this value.
11800 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11801 and corrects the scene colors accordingly.
11803 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11805 The filter accepts the following options:
11809 The order of differentiation to be applied on the scene. Must be chosen in the range
11810 [0,2] and default value is 1.
11813 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11814 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11815 max value instead of calculating Minkowski distance.
11818 The standard deviation of Gaussian blur to be applied on the scene. Must be
11819 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11820 can't be equal to 0 if @var{difford} is greater than 0.
11823 @subsection Examples
11829 greyedge=difford=1:minknorm=5:sigma=2
11835 greyedge=difford=1:minknorm=0:sigma=2
11843 Apply a Hald CLUT to a video stream.
11845 First input is the video stream to process, and second one is the Hald CLUT.
11846 The Hald CLUT input can be a simple picture or a complete video stream.
11848 The filter accepts the following options:
11852 Force termination when the shortest input terminates. Default is @code{0}.
11854 Continue applying the last CLUT after the end of the stream. A value of
11855 @code{0} disable the filter after the last frame of the CLUT is reached.
11856 Default is @code{1}.
11859 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11860 filters share the same internals).
11862 This filter also supports the @ref{framesync} options.
11864 More information about the Hald CLUT can be found on Eskil Steenberg's website
11865 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11867 @subsection Workflow examples
11869 @subsubsection Hald CLUT video stream
11871 Generate an identity Hald CLUT stream altered with various effects:
11873 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
11876 Note: make sure you use a lossless codec.
11878 Then use it with @code{haldclut} to apply it on some random stream:
11880 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11883 The Hald CLUT will be applied to the 10 first seconds (duration of
11884 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11885 to the remaining frames of the @code{mandelbrot} stream.
11887 @subsubsection Hald CLUT with preview
11889 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11890 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11891 biggest possible square starting at the top left of the picture. The remaining
11892 padding pixels (bottom or right) will be ignored. This area can be used to add
11893 a preview of the Hald CLUT.
11895 Typically, the following generated Hald CLUT will be supported by the
11896 @code{haldclut} filter:
11899 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11900 pad=iw+320 [padded_clut];
11901 smptebars=s=320x256, split [a][b];
11902 [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11903 [main][b] overlay=W-320" -frames:v 1 clut.png
11906 It contains the original and a preview of the effect of the CLUT: SMPTE color
11907 bars are displayed on the right-top, and below the same color bars processed by
11910 Then, the effect of this Hald CLUT can be visualized with:
11912 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11917 Flip the input video horizontally.
11919 For example, to horizontally flip the input video with @command{ffmpeg}:
11921 ffmpeg -i in.avi -vf "hflip" out.avi
11925 This filter applies a global color histogram equalization on a
11928 It can be used to correct video that has a compressed range of pixel
11929 intensities. The filter redistributes the pixel intensities to
11930 equalize their distribution across the intensity range. It may be
11931 viewed as an "automatically adjusting contrast filter". This filter is
11932 useful only for correcting degraded or poorly captured source
11935 The filter accepts the following options:
11939 Determine the amount of equalization to be applied. As the strength
11940 is reduced, the distribution of pixel intensities more-and-more
11941 approaches that of the input frame. The value must be a float number
11942 in the range [0,1] and defaults to 0.200.
11945 Set the maximum intensity that can generated and scale the output
11946 values appropriately. The strength should be set as desired and then
11947 the intensity can be limited if needed to avoid washing-out. The value
11948 must be a float number in the range [0,1] and defaults to 0.210.
11951 Set the antibanding level. If enabled the filter will randomly vary
11952 the luminance of output pixels by a small amount to avoid banding of
11953 the histogram. Possible values are @code{none}, @code{weak} or
11954 @code{strong}. It defaults to @code{none}.
11960 Compute and draw a color distribution histogram for the input video.
11962 The computed histogram is a representation of the color component
11963 distribution in an image.
11965 Standard histogram displays the color components distribution in an image.
11966 Displays color graph for each color component. Shows distribution of
11967 the Y, U, V, A or R, G, B components, depending on input format, in the
11968 current frame. Below each graph a color component scale meter is shown.
11970 The filter accepts the following options:
11974 Set height of level. Default value is @code{200}.
11975 Allowed range is [50, 2048].
11978 Set height of color scale. Default value is @code{12}.
11979 Allowed range is [0, 40].
11983 It accepts the following values:
11986 Per color component graphs are placed below each other.
11989 Per color component graphs are placed side by side.
11992 Presents information identical to that in the @code{parade}, except
11993 that the graphs representing color components are superimposed directly
11996 Default is @code{stack}.
11999 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12000 Default is @code{linear}.
12003 Set what color components to display.
12004 Default is @code{7}.
12007 Set foreground opacity. Default is @code{0.7}.
12010 Set background opacity. Default is @code{0.5}.
12013 @subsection Examples
12018 Calculate and draw histogram:
12020 ffplay -i input -vf histogram
12028 This is a high precision/quality 3d denoise filter. It aims to reduce
12029 image noise, producing smooth images and making still images really
12030 still. It should enhance compressibility.
12032 It accepts the following optional parameters:
12036 A non-negative floating point number which specifies spatial luma strength.
12037 It defaults to 4.0.
12039 @item chroma_spatial
12040 A non-negative floating point number which specifies spatial chroma strength.
12041 It defaults to 3.0*@var{luma_spatial}/4.0.
12044 A floating point number which specifies luma temporal strength. It defaults to
12045 6.0*@var{luma_spatial}/4.0.
12048 A floating point number which specifies chroma temporal strength. It defaults to
12049 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12052 @subsection Commands
12053 This filter supports same @ref{commands} as options.
12054 The command accepts the same syntax of the corresponding option.
12056 If the specified expression is not valid, it is kept at its current
12059 @anchor{hwdownload}
12060 @section hwdownload
12062 Download hardware frames to system memory.
12064 The input must be in hardware frames, and the output a non-hardware format.
12065 Not all formats will be supported on the output - it may be necessary to insert
12066 an additional @option{format} filter immediately following in the graph to get
12067 the output in a supported format.
12071 Map hardware frames to system memory or to another device.
12073 This filter has several different modes of operation; which one is used depends
12074 on the input and output formats:
12077 Hardware frame input, normal frame output
12079 Map the input frames to system memory and pass them to the output. If the
12080 original hardware frame is later required (for example, after overlaying
12081 something else on part of it), the @option{hwmap} filter can be used again
12082 in the next mode to retrieve it.
12084 Normal frame input, hardware frame output
12086 If the input is actually a software-mapped hardware frame, then unmap it -
12087 that is, return the original hardware frame.
12089 Otherwise, a device must be provided. Create new hardware surfaces on that
12090 device for the output, then map them back to the software format at the input
12091 and give those frames to the preceding filter. This will then act like the
12092 @option{hwupload} filter, but may be able to avoid an additional copy when
12093 the input is already in a compatible format.
12095 Hardware frame input and output
12097 A device must be supplied for the output, either directly or with the
12098 @option{derive_device} option. The input and output devices must be of
12099 different types and compatible - the exact meaning of this is
12100 system-dependent, but typically it means that they must refer to the same
12101 underlying hardware context (for example, refer to the same graphics card).
12103 If the input frames were originally created on the output device, then unmap
12104 to retrieve the original frames.
12106 Otherwise, map the frames to the output device - create new hardware frames
12107 on the output corresponding to the frames on the input.
12110 The following additional parameters are accepted:
12114 Set the frame mapping mode. Some combination of:
12117 The mapped frame should be readable.
12119 The mapped frame should be writeable.
12121 The mapping will always overwrite the entire frame.
12123 This may improve performance in some cases, as the original contents of the
12124 frame need not be loaded.
12126 The mapping must not involve any copying.
12128 Indirect mappings to copies of frames are created in some cases where either
12129 direct mapping is not possible or it would have unexpected properties.
12130 Setting this flag ensures that the mapping is direct and will fail if that is
12133 Defaults to @var{read+write} if not specified.
12135 @item derive_device @var{type}
12136 Rather than using the device supplied at initialisation, instead derive a new
12137 device of type @var{type} from the device the input frames exist on.
12140 In a hardware to hardware mapping, map in reverse - create frames in the sink
12141 and map them back to the source. This may be necessary in some cases where
12142 a mapping in one direction is required but only the opposite direction is
12143 supported by the devices being used.
12145 This option is dangerous - it may break the preceding filter in undefined
12146 ways if there are any additional constraints on that filter's output.
12147 Do not use it without fully understanding the implications of its use.
12153 Upload system memory frames to hardware surfaces.
12155 The device to upload to must be supplied when the filter is initialised. If
12156 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12157 option or with the @option{derive_device} option. The input and output devices
12158 must be of different types and compatible - the exact meaning of this is
12159 system-dependent, but typically it means that they must refer to the same
12160 underlying hardware context (for example, refer to the same graphics card).
12162 The following additional parameters are accepted:
12165 @item derive_device @var{type}
12166 Rather than using the device supplied at initialisation, instead derive a new
12167 device of type @var{type} from the device the input frames exist on.
12170 @anchor{hwupload_cuda}
12171 @section hwupload_cuda
12173 Upload system memory frames to a CUDA device.
12175 It accepts the following optional parameters:
12179 The number of the CUDA device to use
12184 Apply a high-quality magnification filter designed for pixel art. This filter
12185 was originally created by Maxim Stepin.
12187 It accepts the following option:
12191 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12192 @code{hq3x} and @code{4} for @code{hq4x}.
12193 Default is @code{3}.
12197 Stack input videos horizontally.
12199 All streams must be of same pixel format and of same height.
12201 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12202 to create same output.
12204 The filter accepts the following option:
12208 Set number of input streams. Default is 2.
12211 If set to 1, force the output to terminate when the shortest input
12212 terminates. Default value is 0.
12217 Modify the hue and/or the saturation of the input.
12219 It accepts the following parameters:
12223 Specify the hue angle as a number of degrees. It accepts an expression,
12224 and defaults to "0".
12227 Specify the saturation in the [-10,10] range. It accepts an expression and
12231 Specify the hue angle as a number of radians. It accepts an
12232 expression, and defaults to "0".
12235 Specify the brightness in the [-10,10] range. It accepts an expression and
12239 @option{h} and @option{H} are mutually exclusive, and can't be
12240 specified at the same time.
12242 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12243 expressions containing the following constants:
12247 frame count of the input frame starting from 0
12250 presentation timestamp of the input frame expressed in time base units
12253 frame rate of the input video, NAN if the input frame rate is unknown
12256 timestamp expressed in seconds, NAN if the input timestamp is unknown
12259 time base of the input video
12262 @subsection Examples
12266 Set the hue to 90 degrees and the saturation to 1.0:
12272 Same command but expressing the hue in radians:
12278 Rotate hue and make the saturation swing between 0
12279 and 2 over a period of 1 second:
12281 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12285 Apply a 3 seconds saturation fade-in effect starting at 0:
12287 hue="s=min(t/3\,1)"
12290 The general fade-in expression can be written as:
12292 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12296 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12298 hue="s=max(0\, min(1\, (8-t)/3))"
12301 The general fade-out expression can be written as:
12303 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12308 @subsection Commands
12310 This filter supports the following commands:
12316 Modify the hue and/or the saturation and/or brightness of the input video.
12317 The command accepts the same syntax of the corresponding option.
12319 If the specified expression is not valid, it is kept at its current
12323 @section hysteresis
12325 Grow first stream into second stream by connecting components.
12326 This makes it possible to build more robust edge masks.
12328 This filter accepts the following options:
12332 Set which planes will be processed as bitmap, unprocessed planes will be
12333 copied from first stream.
12334 By default value 0xf, all planes will be processed.
12337 Set threshold which is used in filtering. If pixel component value is higher than
12338 this value filter algorithm for connecting components is activated.
12339 By default value is 0.
12342 The @code{hysteresis} filter also supports the @ref{framesync} options.
12346 Detect video interlacing type.
12348 This filter tries to detect if the input frames are interlaced, progressive,
12349 top or bottom field first. It will also try to detect fields that are
12350 repeated between adjacent frames (a sign of telecine).
12352 Single frame detection considers only immediately adjacent frames when classifying each frame.
12353 Multiple frame detection incorporates the classification history of previous frames.
12355 The filter will log these metadata values:
12358 @item single.current_frame
12359 Detected type of current frame using single-frame detection. One of:
12360 ``tff'' (top field first), ``bff'' (bottom field first),
12361 ``progressive'', or ``undetermined''
12364 Cumulative number of frames detected as top field first using single-frame detection.
12367 Cumulative number of frames detected as top field first using multiple-frame detection.
12370 Cumulative number of frames detected as bottom field first using single-frame detection.
12372 @item multiple.current_frame
12373 Detected type of current frame using multiple-frame detection. One of:
12374 ``tff'' (top field first), ``bff'' (bottom field first),
12375 ``progressive'', or ``undetermined''
12378 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12380 @item single.progressive
12381 Cumulative number of frames detected as progressive using single-frame detection.
12383 @item multiple.progressive
12384 Cumulative number of frames detected as progressive using multiple-frame detection.
12386 @item single.undetermined
12387 Cumulative number of frames that could not be classified using single-frame detection.
12389 @item multiple.undetermined
12390 Cumulative number of frames that could not be classified using multiple-frame detection.
12392 @item repeated.current_frame
12393 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12395 @item repeated.neither
12396 Cumulative number of frames with no repeated field.
12399 Cumulative number of frames with the top field repeated from the previous frame's top field.
12401 @item repeated.bottom
12402 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12405 The filter accepts the following options:
12409 Set interlacing threshold.
12411 Set progressive threshold.
12413 Threshold for repeated field detection.
12415 Number of frames after which a given frame's contribution to the
12416 statistics is halved (i.e., it contributes only 0.5 to its
12417 classification). The default of 0 means that all frames seen are given
12418 full weight of 1.0 forever.
12419 @item analyze_interlaced_flag
12420 When this is not 0 then idet will use the specified number of frames to determine
12421 if the interlaced flag is accurate, it will not count undetermined frames.
12422 If the flag is found to be accurate it will be used without any further
12423 computations, if it is found to be inaccurate it will be cleared without any
12424 further computations. This allows inserting the idet filter as a low computational
12425 method to clean up the interlaced flag
12430 Deinterleave or interleave fields.
12432 This filter allows one to process interlaced images fields without
12433 deinterlacing them. Deinterleaving splits the input frame into 2
12434 fields (so called half pictures). Odd lines are moved to the top
12435 half of the output image, even lines to the bottom half.
12436 You can process (filter) them independently and then re-interleave them.
12438 The filter accepts the following options:
12442 @item chroma_mode, c
12443 @item alpha_mode, a
12444 Available values for @var{luma_mode}, @var{chroma_mode} and
12445 @var{alpha_mode} are:
12451 @item deinterleave, d
12452 Deinterleave fields, placing one above the other.
12454 @item interleave, i
12455 Interleave fields. Reverse the effect of deinterleaving.
12457 Default value is @code{none}.
12459 @item luma_swap, ls
12460 @item chroma_swap, cs
12461 @item alpha_swap, as
12462 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12465 @subsection Commands
12467 This filter supports the all above options as @ref{commands}.
12471 Apply inflate effect to the video.
12473 This filter replaces the pixel by the local(3x3) average by taking into account
12474 only values higher than the pixel.
12476 It accepts the following options:
12483 Limit the maximum change for each plane, default is 65535.
12484 If 0, plane will remain unchanged.
12487 @subsection Commands
12489 This filter supports the all above options as @ref{commands}.
12493 Simple interlacing filter from progressive contents. This interleaves upper (or
12494 lower) lines from odd frames with lower (or upper) lines from even frames,
12495 halving the frame rate and preserving image height.
12498 Original Original New Frame
12499 Frame 'j' Frame 'j+1' (tff)
12500 ========== =========== ==================
12501 Line 0 --------------------> Frame 'j' Line 0
12502 Line 1 Line 1 ----> Frame 'j+1' Line 1
12503 Line 2 ---------------------> Frame 'j' Line 2
12504 Line 3 Line 3 ----> Frame 'j+1' Line 3
12506 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12509 It accepts the following optional parameters:
12513 This determines whether the interlaced frame is taken from the even
12514 (tff - default) or odd (bff) lines of the progressive frame.
12517 Vertical lowpass filter to avoid twitter interlacing and
12518 reduce moire patterns.
12522 Disable vertical lowpass filter
12525 Enable linear filter (default)
12528 Enable complex filter. This will slightly less reduce twitter and moire
12529 but better retain detail and subjective sharpness impression.
12536 Deinterlace input video by applying Donald Graft's adaptive kernel
12537 deinterling. Work on interlaced parts of a video to produce
12538 progressive frames.
12540 The description of the accepted parameters follows.
12544 Set the threshold which affects the filter's tolerance when
12545 determining if a pixel line must be processed. It must be an integer
12546 in the range [0,255] and defaults to 10. A value of 0 will result in
12547 applying the process on every pixels.
12550 Paint pixels exceeding the threshold value to white if set to 1.
12554 Set the fields order. Swap fields if set to 1, leave fields alone if
12558 Enable additional sharpening if set to 1. Default is 0.
12561 Enable twoway sharpening if set to 1. Default is 0.
12564 @subsection Examples
12568 Apply default values:
12570 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12574 Enable additional sharpening:
12580 Paint processed pixels in white:
12588 Slowly update darker pixels.
12590 This filter makes short flashes of light appear longer.
12591 This filter accepts the following options:
12595 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12598 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12601 @section lenscorrection
12603 Correct radial lens distortion
12605 This filter can be used to correct for radial distortion as can result from the use
12606 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12607 one can use tools available for example as part of opencv or simply trial-and-error.
12608 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12609 and extract the k1 and k2 coefficients from the resulting matrix.
12611 Note that effectively the same filter is available in the open-source tools Krita and
12612 Digikam from the KDE project.
12614 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12615 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12616 brightness distribution, so you may want to use both filters together in certain
12617 cases, though you will have to take care of ordering, i.e. whether vignetting should
12618 be applied before or after lens correction.
12620 @subsection Options
12622 The filter accepts the following options:
12626 Relative x-coordinate of the focal point of the image, and thereby the center of the
12627 distortion. This value has a range [0,1] and is expressed as fractions of the image
12628 width. Default is 0.5.
12630 Relative y-coordinate of the focal point of the image, and thereby the center of the
12631 distortion. This value has a range [0,1] and is expressed as fractions of the image
12632 height. Default is 0.5.
12634 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12635 no correction. Default is 0.
12637 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12638 0 means no correction. Default is 0.
12641 The formula that generates the correction is:
12643 @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)
12645 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12646 distances from the focal point in the source and target images, respectively.
12650 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12652 The @code{lensfun} filter requires the camera make, camera model, and lens model
12653 to apply the lens correction. The filter will load the lensfun database and
12654 query it to find the corresponding camera and lens entries in the database. As
12655 long as these entries can be found with the given options, the filter can
12656 perform corrections on frames. Note that incomplete strings will result in the
12657 filter choosing the best match with the given options, and the filter will
12658 output the chosen camera and lens models (logged with level "info"). You must
12659 provide the make, camera model, and lens model as they are required.
12661 The filter accepts the following options:
12665 The make of the camera (for example, "Canon"). This option is required.
12668 The model of the camera (for example, "Canon EOS 100D"). This option is
12672 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12673 option is required.
12676 The type of correction to apply. The following values are valid options:
12680 Enables fixing lens vignetting.
12683 Enables fixing lens geometry. This is the default.
12686 Enables fixing chromatic aberrations.
12689 Enables fixing lens vignetting and lens geometry.
12692 Enables fixing lens vignetting and chromatic aberrations.
12695 Enables fixing both lens geometry and chromatic aberrations.
12698 Enables all possible corrections.
12702 The focal length of the image/video (zoom; expected constant for video). For
12703 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12704 range should be chosen when using that lens. Default 18.
12707 The aperture of the image/video (expected constant for video). Note that
12708 aperture is only used for vignetting correction. Default 3.5.
12710 @item focus_distance
12711 The focus distance of the image/video (expected constant for video). Note that
12712 focus distance is only used for vignetting and only slightly affects the
12713 vignetting correction process. If unknown, leave it at the default value (which
12717 The scale factor which is applied after transformation. After correction the
12718 video is no longer necessarily rectangular. This parameter controls how much of
12719 the resulting image is visible. The value 0 means that a value will be chosen
12720 automatically such that there is little or no unmapped area in the output
12721 image. 1.0 means that no additional scaling is done. Lower values may result
12722 in more of the corrected image being visible, while higher values may avoid
12723 unmapped areas in the output.
12725 @item target_geometry
12726 The target geometry of the output image/video. The following values are valid
12730 @item rectilinear (default)
12733 @item equirectangular
12734 @item fisheye_orthographic
12735 @item fisheye_stereographic
12736 @item fisheye_equisolid
12737 @item fisheye_thoby
12740 Apply the reverse of image correction (instead of correcting distortion, apply
12743 @item interpolation
12744 The type of interpolation used when correcting distortion. The following values
12749 @item linear (default)
12754 @subsection Examples
12758 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12759 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12763 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
12767 Apply the same as before, but only for the first 5 seconds of video.
12770 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
12777 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12778 score between two input videos.
12780 The obtained VMAF score is printed through the logging system.
12782 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12783 After installing the library it can be enabled using:
12784 @code{./configure --enable-libvmaf --enable-version3}.
12785 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12787 The filter has following options:
12791 Set the model path which is to be used for SVM.
12792 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
12795 Set the file path to be used to store logs.
12798 Set the format of the log file (xml or json).
12800 @item enable_transform
12801 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12802 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12803 Default value: @code{false}
12806 Invokes the phone model which will generate VMAF scores higher than in the
12807 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12808 Default value: @code{false}
12811 Enables computing psnr along with vmaf.
12812 Default value: @code{false}
12815 Enables computing ssim along with vmaf.
12816 Default value: @code{false}
12819 Enables computing ms_ssim along with vmaf.
12820 Default value: @code{false}
12823 Set the pool method to be used for computing vmaf.
12824 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
12827 Set number of threads to be used when computing vmaf.
12828 Default value: @code{0}, which makes use of all available logical processors.
12831 Set interval for frame subsampling used when computing vmaf.
12832 Default value: @code{1}
12834 @item enable_conf_interval
12835 Enables confidence interval.
12836 Default value: @code{false}
12839 This filter also supports the @ref{framesync} options.
12841 @subsection Examples
12844 On the below examples the input file @file{main.mpg} being processed is
12845 compared with the reference file @file{ref.mpg}.
12848 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12852 Example with options:
12854 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12858 Example with options and different containers:
12860 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 -
12866 Limits the pixel components values to the specified range [min, max].
12868 The filter accepts the following options:
12872 Lower bound. Defaults to the lowest allowed value for the input.
12875 Upper bound. Defaults to the highest allowed value for the input.
12878 Specify which planes will be processed. Defaults to all available.
12885 The filter accepts the following options:
12889 Set the number of loops. Setting this value to -1 will result in infinite loops.
12893 Set maximal size in number of frames. Default is 0.
12896 Set first frame of loop. Default is 0.
12899 @subsection Examples
12903 Loop single first frame infinitely:
12905 loop=loop=-1:size=1:start=0
12909 Loop single first frame 10 times:
12911 loop=loop=10:size=1:start=0
12915 Loop 10 first frames 5 times:
12917 loop=loop=5:size=10:start=0
12923 Apply a 1D LUT to an input video.
12925 The filter accepts the following options:
12929 Set the 1D LUT file name.
12931 Currently supported formats:
12940 Select interpolation mode.
12942 Available values are:
12946 Use values from the nearest defined point.
12948 Interpolate values using the linear interpolation.
12950 Interpolate values using the cosine interpolation.
12952 Interpolate values using the cubic interpolation.
12954 Interpolate values using the spline interpolation.
12961 Apply a 3D LUT to an input video.
12963 The filter accepts the following options:
12967 Set the 3D LUT file name.
12969 Currently supported formats:
12983 Select interpolation mode.
12985 Available values are:
12989 Use values from the nearest defined point.
12991 Interpolate values using the 8 points defining a cube.
12993 Interpolate values using a tetrahedron.
12999 Turn certain luma values into transparency.
13001 The filter accepts the following options:
13005 Set the luma which will be used as base for transparency.
13006 Default value is @code{0}.
13009 Set the range of luma values to be keyed out.
13010 Default value is @code{0.01}.
13013 Set the range of softness. Default value is @code{0}.
13014 Use this to control gradual transition from zero to full transparency.
13017 @subsection Commands
13018 This filter supports same @ref{commands} as options.
13019 The command accepts the same syntax of the corresponding option.
13021 If the specified expression is not valid, it is kept at its current
13024 @section lut, lutrgb, lutyuv
13026 Compute a look-up table for binding each pixel component input value
13027 to an output value, and apply it to the input video.
13029 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13030 to an RGB input video.
13032 These filters accept the following parameters:
13035 set first pixel component expression
13037 set second pixel component expression
13039 set third pixel component expression
13041 set fourth pixel component expression, corresponds to the alpha component
13044 set red component expression
13046 set green component expression
13048 set blue component expression
13050 alpha component expression
13053 set Y/luminance component expression
13055 set U/Cb component expression
13057 set V/Cr component expression
13060 Each of them specifies the expression to use for computing the lookup table for
13061 the corresponding pixel component values.
13063 The exact component associated to each of the @var{c*} options depends on the
13066 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13067 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13069 The expressions can contain the following constants and functions:
13074 The input width and height.
13077 The input value for the pixel component.
13080 The input value, clipped to the @var{minval}-@var{maxval} range.
13083 The maximum value for the pixel component.
13086 The minimum value for the pixel component.
13089 The negated value for the pixel component value, clipped to the
13090 @var{minval}-@var{maxval} range; it corresponds to the expression
13091 "maxval-clipval+minval".
13094 The computed value in @var{val}, clipped to the
13095 @var{minval}-@var{maxval} range.
13097 @item gammaval(gamma)
13098 The computed gamma correction value of the pixel component value,
13099 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13101 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13105 All expressions default to "val".
13107 @subsection Examples
13111 Negate input video:
13113 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13114 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13117 The above is the same as:
13119 lutrgb="r=negval:g=negval:b=negval"
13120 lutyuv="y=negval:u=negval:v=negval"
13130 Remove chroma components, turning the video into a graytone image:
13132 lutyuv="u=128:v=128"
13136 Apply a luma burning effect:
13142 Remove green and blue components:
13148 Set a constant alpha channel value on input:
13150 format=rgba,lutrgb=a="maxval-minval/2"
13154 Correct luminance gamma by a factor of 0.5:
13156 lutyuv=y=gammaval(0.5)
13160 Discard least significant bits of luma:
13162 lutyuv=y='bitand(val, 128+64+32)'
13166 Technicolor like effect:
13168 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13172 @section lut2, tlut2
13174 The @code{lut2} filter takes two input streams and outputs one
13177 The @code{tlut2} (time lut2) filter takes two consecutive frames
13178 from one single stream.
13180 This filter accepts the following parameters:
13183 set first pixel component expression
13185 set second pixel component expression
13187 set third pixel component expression
13189 set fourth pixel component expression, corresponds to the alpha component
13192 set output bit depth, only available for @code{lut2} filter. By default is 0,
13193 which means bit depth is automatically picked from first input format.
13196 The @code{lut2} filter also supports the @ref{framesync} options.
13198 Each of them specifies the expression to use for computing the lookup table for
13199 the corresponding pixel component values.
13201 The exact component associated to each of the @var{c*} options depends on the
13204 The expressions can contain the following constants:
13209 The input width and height.
13212 The first input value for the pixel component.
13215 The second input value for the pixel component.
13218 The first input video bit depth.
13221 The second input video bit depth.
13224 All expressions default to "x".
13226 @subsection Examples
13230 Highlight differences between two RGB video streams:
13232 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)'
13236 Highlight differences between two YUV video streams:
13238 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)'
13242 Show max difference between two video streams:
13244 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)))'
13248 @section maskedclamp
13250 Clamp the first input stream with the second input and third input stream.
13252 Returns the value of first stream to be between second input
13253 stream - @code{undershoot} and third input stream + @code{overshoot}.
13255 This filter accepts the following options:
13258 Default value is @code{0}.
13261 Default value is @code{0}.
13264 Set which planes will be processed as bitmap, unprocessed planes will be
13265 copied from first stream.
13266 By default value 0xf, all planes will be processed.
13271 Merge the second and third input stream into output stream using absolute differences
13272 between second input stream and first input stream and absolute difference between
13273 third input stream and first input stream. The picked value will be from second input
13274 stream if second absolute difference is greater than first one or from third input stream
13277 This filter accepts the following options:
13280 Set which planes will be processed as bitmap, unprocessed planes will be
13281 copied from first stream.
13282 By default value 0xf, all planes will be processed.
13285 @section maskedmerge
13287 Merge the first input stream with the second input stream using per pixel
13288 weights in the third input stream.
13290 A value of 0 in the third stream pixel component means that pixel component
13291 from first stream is returned unchanged, while maximum value (eg. 255 for
13292 8-bit videos) means that pixel component from second stream is returned
13293 unchanged. Intermediate values define the amount of merging between both
13294 input stream's pixel components.
13296 This filter accepts the following options:
13299 Set which planes will be processed as bitmap, unprocessed planes will be
13300 copied from first stream.
13301 By default value 0xf, all planes will be processed.
13306 Merge the second and third input stream into output stream using absolute differences
13307 between second input stream and first input stream and absolute difference between
13308 third input stream and first input stream. The picked value will be from second input
13309 stream if second absolute difference is less than first one or from third input stream
13312 This filter accepts the following options:
13315 Set which planes will be processed as bitmap, unprocessed planes will be
13316 copied from first stream.
13317 By default value 0xf, all planes will be processed.
13320 @section maskedthreshold
13321 Pick pixels comparing absolute difference of two video streams with fixed
13324 If absolute difference between pixel component of first and second video
13325 stream is equal or lower than user supplied threshold than pixel component
13326 from first video stream is picked, otherwise pixel component from second
13327 video stream is picked.
13329 This filter accepts the following options:
13332 Set threshold used when picking pixels from absolute difference from two input
13336 Set which planes will be processed as bitmap, unprocessed planes will be
13337 copied from second stream.
13338 By default value 0xf, all planes will be processed.
13342 Create mask from input video.
13344 For example it is useful to create motion masks after @code{tblend} filter.
13346 This filter accepts the following options:
13350 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13353 Set high threshold. Any pixel component higher than this value will be set to max value
13354 allowed for current pixel format.
13357 Set planes to filter, by default all available planes are filtered.
13360 Fill all frame pixels with this value.
13363 Set max average pixel value for frame. If sum of all pixel components is higher that this
13364 average, output frame will be completely filled with value set by @var{fill} option.
13365 Typically useful for scene changes when used in combination with @code{tblend} filter.
13370 Apply motion-compensation deinterlacing.
13372 It needs one field per frame as input and must thus be used together
13373 with yadif=1/3 or equivalent.
13375 This filter accepts the following options:
13378 Set the deinterlacing mode.
13380 It accepts one of the following values:
13385 use iterative motion estimation
13387 like @samp{slow}, but use multiple reference frames.
13389 Default value is @samp{fast}.
13392 Set the picture field parity assumed for the input video. It must be
13393 one of the following values:
13397 assume top field first
13399 assume bottom field first
13402 Default value is @samp{bff}.
13405 Set per-block quantization parameter (QP) used by the internal
13408 Higher values should result in a smoother motion vector field but less
13409 optimal individual vectors. Default value is 1.
13414 Pick median pixel from certain rectangle defined by radius.
13416 This filter accepts the following options:
13420 Set horizontal radius size. Default value is @code{1}.
13421 Allowed range is integer from 1 to 127.
13424 Set which planes to process. Default is @code{15}, which is all available planes.
13427 Set vertical radius size. Default value is @code{0}.
13428 Allowed range is integer from 0 to 127.
13429 If it is 0, value will be picked from horizontal @code{radius} option.
13432 Set median percentile. Default value is @code{0.5}.
13433 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13434 minimum values, and @code{1} maximum values.
13437 @subsection Commands
13438 This filter supports same @ref{commands} as options.
13439 The command accepts the same syntax of the corresponding option.
13441 If the specified expression is not valid, it is kept at its current
13444 @section mergeplanes
13446 Merge color channel components from several video streams.
13448 The filter accepts up to 4 input streams, and merge selected input
13449 planes to the output video.
13451 This filter accepts the following options:
13454 Set input to output plane mapping. Default is @code{0}.
13456 The mappings is specified as a bitmap. It should be specified as a
13457 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13458 mapping for the first plane of the output stream. 'A' sets the number of
13459 the input stream to use (from 0 to 3), and 'a' the plane number of the
13460 corresponding input to use (from 0 to 3). The rest of the mappings is
13461 similar, 'Bb' describes the mapping for the output stream second
13462 plane, 'Cc' describes the mapping for the output stream third plane and
13463 'Dd' describes the mapping for the output stream fourth plane.
13466 Set output pixel format. Default is @code{yuva444p}.
13469 @subsection Examples
13473 Merge three gray video streams of same width and height into single video stream:
13475 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13479 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13481 [a0][a1]mergeplanes=0x00010210:yuva444p
13485 Swap Y and A plane in yuva444p stream:
13487 format=yuva444p,mergeplanes=0x03010200:yuva444p
13491 Swap U and V plane in yuv420p stream:
13493 format=yuv420p,mergeplanes=0x000201:yuv420p
13497 Cast a rgb24 clip to yuv444p:
13499 format=rgb24,mergeplanes=0x000102:yuv444p
13505 Estimate and export motion vectors using block matching algorithms.
13506 Motion vectors are stored in frame side data to be used by other filters.
13508 This filter accepts the following options:
13511 Specify the motion estimation method. Accepts one of the following values:
13515 Exhaustive search algorithm.
13517 Three step search algorithm.
13519 Two dimensional logarithmic search algorithm.
13521 New three step search algorithm.
13523 Four step search algorithm.
13525 Diamond search algorithm.
13527 Hexagon-based search algorithm.
13529 Enhanced predictive zonal search algorithm.
13531 Uneven multi-hexagon search algorithm.
13533 Default value is @samp{esa}.
13536 Macroblock size. Default @code{16}.
13539 Search parameter. Default @code{7}.
13542 @section midequalizer
13544 Apply Midway Image Equalization effect using two video streams.
13546 Midway Image Equalization adjusts a pair of images to have the same
13547 histogram, while maintaining their dynamics as much as possible. It's
13548 useful for e.g. matching exposures from a pair of stereo cameras.
13550 This filter has two inputs and one output, which must be of same pixel format, but
13551 may be of different sizes. The output of filter is first input adjusted with
13552 midway histogram of both inputs.
13554 This filter accepts the following option:
13558 Set which planes to process. Default is @code{15}, which is all available planes.
13561 @section minterpolate
13563 Convert the video to specified frame rate using motion interpolation.
13565 This filter accepts the following options:
13568 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}.
13571 Motion interpolation mode. Following values are accepted:
13574 Duplicate previous or next frame for interpolating new ones.
13576 Blend source frames. Interpolated frame is mean of previous and next frames.
13578 Motion compensated interpolation. Following options are effective when this mode is selected:
13582 Motion compensation mode. Following values are accepted:
13585 Overlapped block motion compensation.
13587 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13589 Default mode is @samp{obmc}.
13592 Motion estimation mode. Following values are accepted:
13595 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13597 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13599 Default mode is @samp{bilat}.
13602 The algorithm to be used for motion estimation. Following values are accepted:
13605 Exhaustive search algorithm.
13607 Three step search algorithm.
13609 Two dimensional logarithmic search algorithm.
13611 New three step search algorithm.
13613 Four step search algorithm.
13615 Diamond search algorithm.
13617 Hexagon-based search algorithm.
13619 Enhanced predictive zonal search algorithm.
13621 Uneven multi-hexagon search algorithm.
13623 Default algorithm is @samp{epzs}.
13626 Macroblock size. Default @code{16}.
13629 Motion estimation search parameter. Default @code{32}.
13632 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).
13637 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:
13640 Disable scene change detection.
13642 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13644 Default method is @samp{fdiff}.
13646 @item scd_threshold
13647 Scene change detection threshold. Default is @code{10.}.
13652 Mix several video input streams into one video stream.
13654 A description of the accepted options follows.
13658 The number of inputs. If unspecified, it defaults to 2.
13661 Specify weight of each input video stream as sequence.
13662 Each weight is separated by space. If number of weights
13663 is smaller than number of @var{frames} last specified
13664 weight will be used for all remaining unset weights.
13667 Specify scale, if it is set it will be multiplied with sum
13668 of each weight multiplied with pixel values to give final destination
13669 pixel value. By default @var{scale} is auto scaled to sum of weights.
13672 Specify how end of stream is determined.
13675 The duration of the longest input. (default)
13678 The duration of the shortest input.
13681 The duration of the first input.
13685 @section mpdecimate
13687 Drop frames that do not differ greatly from the previous frame in
13688 order to reduce frame rate.
13690 The main use of this filter is for very-low-bitrate encoding
13691 (e.g. streaming over dialup modem), but it could in theory be used for
13692 fixing movies that were inverse-telecined incorrectly.
13694 A description of the accepted options follows.
13698 Set the maximum number of consecutive frames which can be dropped (if
13699 positive), or the minimum interval between dropped frames (if
13700 negative). If the value is 0, the frame is dropped disregarding the
13701 number of previous sequentially dropped frames.
13703 Default value is 0.
13708 Set the dropping threshold values.
13710 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13711 represent actual pixel value differences, so a threshold of 64
13712 corresponds to 1 unit of difference for each pixel, or the same spread
13713 out differently over the block.
13715 A frame is a candidate for dropping if no 8x8 blocks differ by more
13716 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13717 meaning the whole image) differ by more than a threshold of @option{lo}.
13719 Default value for @option{hi} is 64*12, default value for @option{lo} is
13720 64*5, and default value for @option{frac} is 0.33.
13726 Negate (invert) the input video.
13728 It accepts the following option:
13733 With value 1, it negates the alpha component, if present. Default value is 0.
13739 Denoise frames using Non-Local Means algorithm.
13741 Each pixel is adjusted by looking for other pixels with similar contexts. This
13742 context similarity is defined by comparing their surrounding patches of size
13743 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13746 Note that the research area defines centers for patches, which means some
13747 patches will be made of pixels outside that research area.
13749 The filter accepts the following options.
13753 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13756 Set patch size. Default is 7. Must be odd number in range [0, 99].
13759 Same as @option{p} but for chroma planes.
13761 The default value is @var{0} and means automatic.
13764 Set research size. Default is 15. Must be odd number in range [0, 99].
13767 Same as @option{r} but for chroma planes.
13769 The default value is @var{0} and means automatic.
13774 Deinterlace video using neural network edge directed interpolation.
13776 This filter accepts the following options:
13780 Mandatory option, without binary file filter can not work.
13781 Currently file can be found here:
13782 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13785 Set which frames to deinterlace, by default it is @code{all}.
13786 Can be @code{all} or @code{interlaced}.
13789 Set mode of operation.
13791 Can be one of the following:
13795 Use frame flags, both fields.
13797 Use frame flags, single field.
13799 Use top field only.
13801 Use bottom field only.
13803 Use both fields, top first.
13805 Use both fields, bottom first.
13809 Set which planes to process, by default filter process all frames.
13812 Set size of local neighborhood around each pixel, used by the predictor neural
13815 Can be one of the following:
13828 Set the number of neurons in predictor neural network.
13829 Can be one of the following:
13840 Controls the number of different neural network predictions that are blended
13841 together to compute the final output value. Can be @code{fast}, default or
13845 Set which set of weights to use in the predictor.
13846 Can be one of the following:
13850 weights trained to minimize absolute error
13852 weights trained to minimize squared error
13856 Controls whether or not the prescreener neural network is used to decide
13857 which pixels should be processed by the predictor neural network and which
13858 can be handled by simple cubic interpolation.
13859 The prescreener is trained to know whether cubic interpolation will be
13860 sufficient for a pixel or whether it should be predicted by the predictor nn.
13861 The computational complexity of the prescreener nn is much less than that of
13862 the predictor nn. Since most pixels can be handled by cubic interpolation,
13863 using the prescreener generally results in much faster processing.
13864 The prescreener is pretty accurate, so the difference between using it and not
13865 using it is almost always unnoticeable.
13867 Can be one of the following:
13875 Default is @code{new}.
13878 Set various debugging flags.
13883 Force libavfilter not to use any of the specified pixel formats for the
13884 input to the next filter.
13886 It accepts the following parameters:
13890 A '|'-separated list of pixel format names, such as
13891 pix_fmts=yuv420p|monow|rgb24".
13895 @subsection Examples
13899 Force libavfilter to use a format different from @var{yuv420p} for the
13900 input to the vflip filter:
13902 noformat=pix_fmts=yuv420p,vflip
13906 Convert the input video to any of the formats not contained in the list:
13908 noformat=yuv420p|yuv444p|yuv410p
13914 Add noise on video input frame.
13916 The filter accepts the following options:
13924 Set noise seed for specific pixel component or all pixel components in case
13925 of @var{all_seed}. Default value is @code{123457}.
13927 @item all_strength, alls
13928 @item c0_strength, c0s
13929 @item c1_strength, c1s
13930 @item c2_strength, c2s
13931 @item c3_strength, c3s
13932 Set noise strength for specific pixel component or all pixel components in case
13933 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13935 @item all_flags, allf
13936 @item c0_flags, c0f
13937 @item c1_flags, c1f
13938 @item c2_flags, c2f
13939 @item c3_flags, c3f
13940 Set pixel component flags or set flags for all components if @var{all_flags}.
13941 Available values for component flags are:
13944 averaged temporal noise (smoother)
13946 mix random noise with a (semi)regular pattern
13948 temporal noise (noise pattern changes between frames)
13950 uniform noise (gaussian otherwise)
13954 @subsection Examples
13956 Add temporal and uniform noise to input video:
13958 noise=alls=20:allf=t+u
13963 Normalize RGB video (aka histogram stretching, contrast stretching).
13964 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13966 For each channel of each frame, the filter computes the input range and maps
13967 it linearly to the user-specified output range. The output range defaults
13968 to the full dynamic range from pure black to pure white.
13970 Temporal smoothing can be used on the input range to reduce flickering (rapid
13971 changes in brightness) caused when small dark or bright objects enter or leave
13972 the scene. This is similar to the auto-exposure (automatic gain control) on a
13973 video camera, and, like a video camera, it may cause a period of over- or
13974 under-exposure of the video.
13976 The R,G,B channels can be normalized independently, which may cause some
13977 color shifting, or linked together as a single channel, which prevents
13978 color shifting. Linked normalization preserves hue. Independent normalization
13979 does not, so it can be used to remove some color casts. Independent and linked
13980 normalization can be combined in any ratio.
13982 The normalize filter accepts the following options:
13987 Colors which define the output range. The minimum input value is mapped to
13988 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13989 The defaults are black and white respectively. Specifying white for
13990 @var{blackpt} and black for @var{whitept} will give color-inverted,
13991 normalized video. Shades of grey can be used to reduce the dynamic range
13992 (contrast). Specifying saturated colors here can create some interesting
13996 The number of previous frames to use for temporal smoothing. The input range
13997 of each channel is smoothed using a rolling average over the current frame
13998 and the @var{smoothing} previous frames. The default is 0 (no temporal
14002 Controls the ratio of independent (color shifting) channel normalization to
14003 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14004 independent. Defaults to 1.0 (fully independent).
14007 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14008 expensive no-op. Defaults to 1.0 (full strength).
14012 @subsection Commands
14013 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14014 The command accepts the same syntax of the corresponding option.
14016 If the specified expression is not valid, it is kept at its current
14019 @subsection Examples
14021 Stretch video contrast to use the full dynamic range, with no temporal
14022 smoothing; may flicker depending on the source content:
14024 normalize=blackpt=black:whitept=white:smoothing=0
14027 As above, but with 50 frames of temporal smoothing; flicker should be
14028 reduced, depending on the source content:
14030 normalize=blackpt=black:whitept=white:smoothing=50
14033 As above, but with hue-preserving linked channel normalization:
14035 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14038 As above, but with half strength:
14040 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14043 Map the darkest input color to red, the brightest input color to cyan:
14045 normalize=blackpt=red:whitept=cyan
14050 Pass the video source unchanged to the output.
14053 Optical Character Recognition
14055 This filter uses Tesseract for optical character recognition. To enable
14056 compilation of this filter, you need to configure FFmpeg with
14057 @code{--enable-libtesseract}.
14059 It accepts the following options:
14063 Set datapath to tesseract data. Default is to use whatever was
14064 set at installation.
14067 Set language, default is "eng".
14070 Set character whitelist.
14073 Set character blacklist.
14076 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14077 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14081 Apply a video transform using libopencv.
14083 To enable this filter, install the libopencv library and headers and
14084 configure FFmpeg with @code{--enable-libopencv}.
14086 It accepts the following parameters:
14091 The name of the libopencv filter to apply.
14093 @item filter_params
14094 The parameters to pass to the libopencv filter. If not specified, the default
14095 values are assumed.
14099 Refer to the official libopencv documentation for more precise
14101 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14103 Several libopencv filters are supported; see the following subsections.
14108 Dilate an image by using a specific structuring element.
14109 It corresponds to the libopencv function @code{cvDilate}.
14111 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14113 @var{struct_el} represents a structuring element, and has the syntax:
14114 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14116 @var{cols} and @var{rows} represent the number of columns and rows of
14117 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14118 point, and @var{shape} the shape for the structuring element. @var{shape}
14119 must be "rect", "cross", "ellipse", or "custom".
14121 If the value for @var{shape} is "custom", it must be followed by a
14122 string of the form "=@var{filename}". The file with name
14123 @var{filename} is assumed to represent a binary image, with each
14124 printable character corresponding to a bright pixel. When a custom
14125 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14126 or columns and rows of the read file are assumed instead.
14128 The default value for @var{struct_el} is "3x3+0x0/rect".
14130 @var{nb_iterations} specifies the number of times the transform is
14131 applied to the image, and defaults to 1.
14135 # Use the default values
14138 # Dilate using a structuring element with a 5x5 cross, iterating two times
14139 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14141 # Read the shape from the file diamond.shape, iterating two times.
14142 # The file diamond.shape may contain a pattern of characters like this
14148 # The specified columns and rows are ignored
14149 # but the anchor point coordinates are not
14150 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14155 Erode an image by using a specific structuring element.
14156 It corresponds to the libopencv function @code{cvErode}.
14158 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14159 with the same syntax and semantics as the @ref{dilate} filter.
14163 Smooth the input video.
14165 The filter takes the following parameters:
14166 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14168 @var{type} is the type of smooth filter to apply, and must be one of
14169 the following values: "blur", "blur_no_scale", "median", "gaussian",
14170 or "bilateral". The default value is "gaussian".
14172 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14173 depends on the smooth type. @var{param1} and
14174 @var{param2} accept integer positive values or 0. @var{param3} and
14175 @var{param4} accept floating point values.
14177 The default value for @var{param1} is 3. The default value for the
14178 other parameters is 0.
14180 These parameters correspond to the parameters assigned to the
14181 libopencv function @code{cvSmooth}.
14183 @section oscilloscope
14185 2D Video Oscilloscope.
14187 Useful to measure spatial impulse, step responses, chroma delays, etc.
14189 It accepts the following parameters:
14193 Set scope center x position.
14196 Set scope center y position.
14199 Set scope size, relative to frame diagonal.
14202 Set scope tilt/rotation.
14208 Set trace center x position.
14211 Set trace center y position.
14214 Set trace width, relative to width of frame.
14217 Set trace height, relative to height of frame.
14220 Set which components to trace. By default it traces first three components.
14223 Draw trace grid. By default is enabled.
14226 Draw some statistics. By default is enabled.
14229 Draw scope. By default is enabled.
14232 @subsection Commands
14233 This filter supports same @ref{commands} as options.
14234 The command accepts the same syntax of the corresponding option.
14236 If the specified expression is not valid, it is kept at its current
14239 @subsection Examples
14243 Inspect full first row of video frame.
14245 oscilloscope=x=0.5:y=0:s=1
14249 Inspect full last row of video frame.
14251 oscilloscope=x=0.5:y=1:s=1
14255 Inspect full 5th line of video frame of height 1080.
14257 oscilloscope=x=0.5:y=5/1080:s=1
14261 Inspect full last column of video frame.
14263 oscilloscope=x=1:y=0.5:s=1:t=1
14271 Overlay one video on top of another.
14273 It takes two inputs and has one output. The first input is the "main"
14274 video on which the second input is overlaid.
14276 It accepts the following parameters:
14278 A description of the accepted options follows.
14283 Set the expression for the x and y coordinates of the overlaid video
14284 on the main video. Default value is "0" for both expressions. In case
14285 the expression is invalid, it is set to a huge value (meaning that the
14286 overlay will not be displayed within the output visible area).
14289 See @ref{framesync}.
14292 Set when the expressions for @option{x}, and @option{y} are evaluated.
14294 It accepts the following values:
14297 only evaluate expressions once during the filter initialization or
14298 when a command is processed
14301 evaluate expressions for each incoming frame
14304 Default value is @samp{frame}.
14307 See @ref{framesync}.
14310 Set the format for the output video.
14312 It accepts the following values:
14315 force YUV420 output
14318 force YUV422 output
14321 force YUV444 output
14324 force packed RGB output
14327 force planar RGB output
14330 automatically pick format
14333 Default value is @samp{yuv420}.
14336 See @ref{framesync}.
14339 Set format of alpha of the overlaid video, it can be @var{straight} or
14340 @var{premultiplied}. Default is @var{straight}.
14343 The @option{x}, and @option{y} expressions can contain the following
14349 The main input width and height.
14353 The overlay input width and height.
14357 The computed values for @var{x} and @var{y}. They are evaluated for
14362 horizontal and vertical chroma subsample values of the output
14363 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14367 the number of input frame, starting from 0
14370 the position in the file of the input frame, NAN if unknown
14373 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14377 This filter also supports the @ref{framesync} options.
14379 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14380 when evaluation is done @emph{per frame}, and will evaluate to NAN
14381 when @option{eval} is set to @samp{init}.
14383 Be aware that frames are taken from each input video in timestamp
14384 order, hence, if their initial timestamps differ, it is a good idea
14385 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14386 have them begin in the same zero timestamp, as the example for
14387 the @var{movie} filter does.
14389 You can chain together more overlays but you should test the
14390 efficiency of such approach.
14392 @subsection Commands
14394 This filter supports the following commands:
14398 Modify the x and y of the overlay input.
14399 The command accepts the same syntax of the corresponding option.
14401 If the specified expression is not valid, it is kept at its current
14405 @subsection Examples
14409 Draw the overlay at 10 pixels from the bottom right corner of the main
14412 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14415 Using named options the example above becomes:
14417 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14421 Insert a transparent PNG logo in the bottom left corner of the input,
14422 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14424 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14428 Insert 2 different transparent PNG logos (second logo on bottom
14429 right corner) using the @command{ffmpeg} tool:
14431 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
14435 Add a transparent color layer on top of the main video; @code{WxH}
14436 must specify the size of the main input to the overlay filter:
14438 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14442 Play an original video and a filtered version (here with the deshake
14443 filter) side by side using the @command{ffplay} tool:
14445 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14448 The above command is the same as:
14450 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14454 Make a sliding overlay appearing from the left to the right top part of the
14455 screen starting since time 2:
14457 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14461 Compose output by putting two input videos side to side:
14463 ffmpeg -i left.avi -i right.avi -filter_complex "
14464 nullsrc=size=200x100 [background];
14465 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14466 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14467 [background][left] overlay=shortest=1 [background+left];
14468 [background+left][right] overlay=shortest=1:x=100 [left+right]
14473 Mask 10-20 seconds of a video by applying the delogo filter to a section
14475 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14476 -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]'
14481 Chain several overlays in cascade:
14483 nullsrc=s=200x200 [bg];
14484 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14485 [in0] lutrgb=r=0, [bg] overlay=0:0 [mid0];
14486 [in1] lutrgb=g=0, [mid0] overlay=100:0 [mid1];
14487 [in2] lutrgb=b=0, [mid1] overlay=0:100 [mid2];
14488 [in3] null, [mid2] overlay=100:100 [out0]
14493 @anchor{overlay_cuda}
14494 @section overlay_cuda
14496 Overlay one video on top of another.
14498 This is the CUDA cariant of the @ref{overlay} filter.
14499 It only accepts CUDA frames. The underlying input pixel formats have to match.
14501 It takes two inputs and has one output. The first input is the "main"
14502 video on which the second input is overlaid.
14504 It accepts the following parameters:
14509 Set the x and y coordinates of the overlaid video on the main video.
14510 Default value is "0" for both expressions.
14513 See @ref{framesync}.
14516 See @ref{framesync}.
14519 See @ref{framesync}.
14523 This filter also supports the @ref{framesync} options.
14527 Apply Overcomplete Wavelet denoiser.
14529 The filter accepts the following options:
14535 Larger depth values will denoise lower frequency components more, but
14536 slow down filtering.
14538 Must be an int in the range 8-16, default is @code{8}.
14540 @item luma_strength, ls
14543 Must be a double value in the range 0-1000, default is @code{1.0}.
14545 @item chroma_strength, cs
14546 Set chroma strength.
14548 Must be a double value in the range 0-1000, default is @code{1.0}.
14554 Add paddings to the input image, and place the original input at the
14555 provided @var{x}, @var{y} coordinates.
14557 It accepts the following parameters:
14562 Specify an expression for the size of the output image with the
14563 paddings added. If the value for @var{width} or @var{height} is 0, the
14564 corresponding input size is used for the output.
14566 The @var{width} expression can reference the value set by the
14567 @var{height} expression, and vice versa.
14569 The default value of @var{width} and @var{height} is 0.
14573 Specify the offsets to place the input image at within the padded area,
14574 with respect to the top/left border of the output image.
14576 The @var{x} expression can reference the value set by the @var{y}
14577 expression, and vice versa.
14579 The default value of @var{x} and @var{y} is 0.
14581 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14582 so the input image is centered on the padded area.
14585 Specify the color of the padded area. For the syntax of this option,
14586 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14587 manual,ffmpeg-utils}.
14589 The default value of @var{color} is "black".
14592 Specify when to evaluate @var{width}, @var{height}, @var{x} and @var{y} expression.
14594 It accepts the following values:
14598 Only evaluate expressions once during the filter initialization or when
14599 a command is processed.
14602 Evaluate expressions for each incoming frame.
14606 Default value is @samp{init}.
14609 Pad to aspect instead to a resolution.
14613 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14614 options are expressions containing the following constants:
14619 The input video width and height.
14623 These are the same as @var{in_w} and @var{in_h}.
14627 The output width and height (the size of the padded area), as
14628 specified by the @var{width} and @var{height} expressions.
14632 These are the same as @var{out_w} and @var{out_h}.
14636 The x and y offsets as specified by the @var{x} and @var{y}
14637 expressions, or NAN if not yet specified.
14640 same as @var{iw} / @var{ih}
14643 input sample aspect ratio
14646 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14650 The horizontal and vertical chroma subsample values. For example for the
14651 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14654 @subsection Examples
14658 Add paddings with the color "violet" to the input video. The output video
14659 size is 640x480, and the top-left corner of the input video is placed at
14662 pad=640:480:0:40:violet
14665 The example above is equivalent to the following command:
14667 pad=width=640:height=480:x=0:y=40:color=violet
14671 Pad the input to get an output with dimensions increased by 3/2,
14672 and put the input video at the center of the padded area:
14674 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14678 Pad the input to get a squared output with size equal to the maximum
14679 value between the input width and height, and put the input video at
14680 the center of the padded area:
14682 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
14686 Pad the input to get a final w/h ratio of 16:9:
14688 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
14692 In case of anamorphic video, in order to set the output display aspect
14693 correctly, it is necessary to use @var{sar} in the expression,
14694 according to the relation:
14696 (ih * X / ih) * sar = output_dar
14697 X = output_dar / sar
14700 Thus the previous example needs to be modified to:
14702 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14706 Double the output size and put the input video in the bottom-right
14707 corner of the output padded area:
14709 pad="2*iw:2*ih:ow-iw:oh-ih"
14713 @anchor{palettegen}
14714 @section palettegen
14716 Generate one palette for a whole video stream.
14718 It accepts the following options:
14722 Set the maximum number of colors to quantize in the palette.
14723 Note: the palette will still contain 256 colors; the unused palette entries
14726 @item reserve_transparent
14727 Create a palette of 255 colors maximum and reserve the last one for
14728 transparency. Reserving the transparency color is useful for GIF optimization.
14729 If not set, the maximum of colors in the palette will be 256. You probably want
14730 to disable this option for a standalone image.
14733 @item transparency_color
14734 Set the color that will be used as background for transparency.
14737 Set statistics mode.
14739 It accepts the following values:
14742 Compute full frame histograms.
14744 Compute histograms only for the part that differs from previous frame. This
14745 might be relevant to give more importance to the moving part of your input if
14746 the background is static.
14748 Compute new histogram for each frame.
14751 Default value is @var{full}.
14754 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14755 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14756 color quantization of the palette. This information is also visible at
14757 @var{info} logging level.
14759 @subsection Examples
14763 Generate a representative palette of a given video using @command{ffmpeg}:
14765 ffmpeg -i input.mkv -vf palettegen palette.png
14769 @section paletteuse
14771 Use a palette to downsample an input video stream.
14773 The filter takes two inputs: one video stream and a palette. The palette must
14774 be a 256 pixels image.
14776 It accepts the following options:
14780 Select dithering mode. Available algorithms are:
14783 Ordered 8x8 bayer dithering (deterministic)
14785 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14786 Note: this dithering is sometimes considered "wrong" and is included as a
14788 @item floyd_steinberg
14789 Floyd and Steingberg dithering (error diffusion)
14791 Frankie Sierra dithering v2 (error diffusion)
14793 Frankie Sierra dithering v2 "Lite" (error diffusion)
14796 Default is @var{sierra2_4a}.
14799 When @var{bayer} dithering is selected, this option defines the scale of the
14800 pattern (how much the crosshatch pattern is visible). A low value means more
14801 visible pattern for less banding, and higher value means less visible pattern
14802 at the cost of more banding.
14804 The option must be an integer value in the range [0,5]. Default is @var{2}.
14807 If set, define the zone to process
14811 Only the changing rectangle will be reprocessed. This is similar to GIF
14812 cropping/offsetting compression mechanism. This option can be useful for speed
14813 if only a part of the image is changing, and has use cases such as limiting the
14814 scope of the error diffusal @option{dither} to the rectangle that bounds the
14815 moving scene (it leads to more deterministic output if the scene doesn't change
14816 much, and as a result less moving noise and better GIF compression).
14819 Default is @var{none}.
14822 Take new palette for each output frame.
14824 @item alpha_threshold
14825 Sets the alpha threshold for transparency. Alpha values above this threshold
14826 will be treated as completely opaque, and values below this threshold will be
14827 treated as completely transparent.
14829 The option must be an integer value in the range [0,255]. Default is @var{128}.
14832 @subsection Examples
14836 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14837 using @command{ffmpeg}:
14839 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14843 @section perspective
14845 Correct perspective of video not recorded perpendicular to the screen.
14847 A description of the accepted parameters follows.
14858 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14859 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14860 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14861 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14862 then the corners of the source will be sent to the specified coordinates.
14864 The expressions can use the following variables:
14869 the width and height of video frame.
14873 Output frame count.
14876 @item interpolation
14877 Set interpolation for perspective correction.
14879 It accepts the following values:
14885 Default value is @samp{linear}.
14888 Set interpretation of coordinate options.
14890 It accepts the following values:
14894 Send point in the source specified by the given coordinates to
14895 the corners of the destination.
14897 @item 1, destination
14899 Send the corners of the source to the point in the destination specified
14900 by the given coordinates.
14902 Default value is @samp{source}.
14906 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14908 It accepts the following values:
14911 only evaluate expressions once during the filter initialization or
14912 when a command is processed
14915 evaluate expressions for each incoming frame
14918 Default value is @samp{init}.
14923 Delay interlaced video by one field time so that the field order changes.
14925 The intended use is to fix PAL movies that have been captured with the
14926 opposite field order to the film-to-video transfer.
14928 A description of the accepted parameters follows.
14934 It accepts the following values:
14937 Capture field order top-first, transfer bottom-first.
14938 Filter will delay the bottom field.
14941 Capture field order bottom-first, transfer top-first.
14942 Filter will delay the top field.
14945 Capture and transfer with the same field order. This mode only exists
14946 for the documentation of the other options to refer to, but if you
14947 actually select it, the filter will faithfully do nothing.
14950 Capture field order determined automatically by field flags, transfer
14952 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14953 basis using field flags. If no field information is available,
14954 then this works just like @samp{u}.
14957 Capture unknown or varying, transfer opposite.
14958 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14959 analyzing the images and selecting the alternative that produces best
14960 match between the fields.
14963 Capture top-first, transfer unknown or varying.
14964 Filter selects among @samp{t} and @samp{p} using image analysis.
14967 Capture bottom-first, transfer unknown or varying.
14968 Filter selects among @samp{b} and @samp{p} using image analysis.
14971 Capture determined by field flags, transfer unknown or varying.
14972 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14973 image analysis. If no field information is available, then this works just
14974 like @samp{U}. This is the default mode.
14977 Both capture and transfer unknown or varying.
14978 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14982 @section photosensitivity
14983 Reduce various flashes in video, so to help users with epilepsy.
14985 It accepts the following options:
14988 Set how many frames to use when filtering. Default is 30.
14991 Set detection threshold factor. Default is 1.
14995 Set how many pixels to skip when sampling frames. Default is 1.
14996 Allowed range is from 1 to 1024.
14999 Leave frames unchanged. Default is disabled.
15002 @section pixdesctest
15004 Pixel format descriptor test filter, mainly useful for internal
15005 testing. The output video should be equal to the input video.
15009 format=monow, pixdesctest
15012 can be used to test the monowhite pixel format descriptor definition.
15016 Display sample values of color channels. Mainly useful for checking color
15017 and levels. Minimum supported resolution is 640x480.
15019 The filters accept the following options:
15023 Set scope X position, relative offset on X axis.
15026 Set scope Y position, relative offset on Y axis.
15035 Set window opacity. This window also holds statistics about pixel area.
15038 Set window X position, relative offset on X axis.
15041 Set window Y position, relative offset on Y axis.
15046 Enable the specified chain of postprocessing subfilters using libpostproc. This
15047 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15048 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15049 Each subfilter and some options have a short and a long name that can be used
15050 interchangeably, i.e. dr/dering are the same.
15052 The filters accept the following options:
15056 Set postprocessing subfilters string.
15059 All subfilters share common options to determine their scope:
15063 Honor the quality commands for this subfilter.
15066 Do chrominance filtering, too (default).
15069 Do luminance filtering only (no chrominance).
15072 Do chrominance filtering only (no luminance).
15075 These options can be appended after the subfilter name, separated by a '|'.
15077 Available subfilters are:
15080 @item hb/hdeblock[|difference[|flatness]]
15081 Horizontal deblocking filter
15084 Difference factor where higher values mean more deblocking (default: @code{32}).
15086 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15089 @item vb/vdeblock[|difference[|flatness]]
15090 Vertical deblocking filter
15093 Difference factor where higher values mean more deblocking (default: @code{32}).
15095 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15098 @item ha/hadeblock[|difference[|flatness]]
15099 Accurate horizontal deblocking filter
15102 Difference factor where higher values mean more deblocking (default: @code{32}).
15104 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15107 @item va/vadeblock[|difference[|flatness]]
15108 Accurate vertical deblocking filter
15111 Difference factor where higher values mean more deblocking (default: @code{32}).
15113 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15117 The horizontal and vertical deblocking filters share the difference and
15118 flatness values so you cannot set different horizontal and vertical
15122 @item h1/x1hdeblock
15123 Experimental horizontal deblocking filter
15125 @item v1/x1vdeblock
15126 Experimental vertical deblocking filter
15131 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15134 larger -> stronger filtering
15136 larger -> stronger filtering
15138 larger -> stronger filtering
15141 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15144 Stretch luminance to @code{0-255}.
15147 @item lb/linblenddeint
15148 Linear blend deinterlacing filter that deinterlaces the given block by
15149 filtering all lines with a @code{(1 2 1)} filter.
15151 @item li/linipoldeint
15152 Linear interpolating deinterlacing filter that deinterlaces the given block by
15153 linearly interpolating every second line.
15155 @item ci/cubicipoldeint
15156 Cubic interpolating deinterlacing filter deinterlaces the given block by
15157 cubically interpolating every second line.
15159 @item md/mediandeint
15160 Median deinterlacing filter that deinterlaces the given block by applying a
15161 median filter to every second line.
15163 @item fd/ffmpegdeint
15164 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15165 second line with a @code{(-1 4 2 4 -1)} filter.
15168 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15169 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15171 @item fq/forceQuant[|quantizer]
15172 Overrides the quantizer table from the input with the constant quantizer you
15180 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15183 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15186 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15189 @subsection Examples
15193 Apply horizontal and vertical deblocking, deringing and automatic
15194 brightness/contrast:
15200 Apply default filters without brightness/contrast correction:
15206 Apply default filters and temporal denoiser:
15208 pp=default/tmpnoise|1|2|3
15212 Apply deblocking on luminance only, and switch vertical deblocking on or off
15213 automatically depending on available CPU time:
15220 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15221 similar to spp = 6 with 7 point DCT, where only the center sample is
15224 The filter accepts the following options:
15228 Force a constant quantization parameter. It accepts an integer in range
15229 0 to 63. If not set, the filter will use the QP from the video stream
15233 Set thresholding mode. Available modes are:
15237 Set hard thresholding.
15239 Set soft thresholding (better de-ringing effect, but likely blurrier).
15241 Set medium thresholding (good results, default).
15245 @section premultiply
15246 Apply alpha premultiply effect to input video stream using first plane
15247 of second stream as alpha.
15249 Both streams must have same dimensions and same pixel format.
15251 The filter accepts the following option:
15255 Set which planes will be processed, unprocessed planes will be copied.
15256 By default value 0xf, all planes will be processed.
15259 Do not require 2nd input for processing, instead use alpha plane from input stream.
15263 Apply prewitt operator to input video stream.
15265 The filter accepts the following option:
15269 Set which planes will be processed, unprocessed planes will be copied.
15270 By default value 0xf, all planes will be processed.
15273 Set value which will be multiplied with filtered result.
15276 Set value which will be added to filtered result.
15279 @section pseudocolor
15281 Alter frame colors in video with pseudocolors.
15283 This filter accepts the following options:
15287 set pixel first component expression
15290 set pixel second component expression
15293 set pixel third component expression
15296 set pixel fourth component expression, corresponds to the alpha component
15299 set component to use as base for altering colors
15302 Each of them specifies the expression to use for computing the lookup table for
15303 the corresponding pixel component values.
15305 The expressions can contain the following constants and functions:
15310 The input width and height.
15313 The input value for the pixel component.
15315 @item ymin, umin, vmin, amin
15316 The minimum allowed component value.
15318 @item ymax, umax, vmax, amax
15319 The maximum allowed component value.
15322 All expressions default to "val".
15324 @subsection Examples
15328 Change too high luma values to gradient:
15330 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'"
15336 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15337 Ratio) between two input videos.
15339 This filter takes in input two input videos, the first input is
15340 considered the "main" source and is passed unchanged to the
15341 output. The second input is used as a "reference" video for computing
15344 Both video inputs must have the same resolution and pixel format for
15345 this filter to work correctly. Also it assumes that both inputs
15346 have the same number of frames, which are compared one by one.
15348 The obtained average PSNR is printed through the logging system.
15350 The filter stores the accumulated MSE (mean squared error) of each
15351 frame, and at the end of the processing it is averaged across all frames
15352 equally, and the following formula is applied to obtain the PSNR:
15355 PSNR = 10*log10(MAX^2/MSE)
15358 Where MAX is the average of the maximum values of each component of the
15361 The description of the accepted parameters follows.
15364 @item stats_file, f
15365 If specified the filter will use the named file to save the PSNR of
15366 each individual frame. When filename equals "-" the data is sent to
15369 @item stats_version
15370 Specifies which version of the stats file format to use. Details of
15371 each format are written below.
15372 Default value is 1.
15374 @item stats_add_max
15375 Determines whether the max value is output to the stats log.
15376 Default value is 0.
15377 Requires stats_version >= 2. If this is set and stats_version < 2,
15378 the filter will return an error.
15381 This filter also supports the @ref{framesync} options.
15383 The file printed if @var{stats_file} is selected, contains a sequence of
15384 key/value pairs of the form @var{key}:@var{value} for each compared
15387 If a @var{stats_version} greater than 1 is specified, a header line precedes
15388 the list of per-frame-pair stats, with key value pairs following the frame
15389 format with the following parameters:
15392 @item psnr_log_version
15393 The version of the log file format. Will match @var{stats_version}.
15396 A comma separated list of the per-frame-pair parameters included in
15400 A description of each shown per-frame-pair parameter follows:
15404 sequential number of the input frame, starting from 1
15407 Mean Square Error pixel-by-pixel average difference of the compared
15408 frames, averaged over all the image components.
15410 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15411 Mean Square Error pixel-by-pixel average difference of the compared
15412 frames for the component specified by the suffix.
15414 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15415 Peak Signal to Noise ratio of the compared frames for the component
15416 specified by the suffix.
15418 @item max_avg, max_y, max_u, max_v
15419 Maximum allowed value for each channel, and average over all
15423 @subsection Examples
15428 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15429 [main][ref] psnr="stats_file=stats.log" [out]
15432 On this example the input file being processed is compared with the
15433 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15434 is stored in @file{stats.log}.
15437 Another example with different containers:
15439 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 -
15446 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15447 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15450 The pullup filter is designed to take advantage of future context in making
15451 its decisions. This filter is stateless in the sense that it does not lock
15452 onto a pattern to follow, but it instead looks forward to the following
15453 fields in order to identify matches and rebuild progressive frames.
15455 To produce content with an even framerate, insert the fps filter after
15456 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15457 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15459 The filter accepts the following options:
15466 These options set the amount of "junk" to ignore at the left, right, top, and
15467 bottom of the image, respectively. Left and right are in units of 8 pixels,
15468 while top and bottom are in units of 2 lines.
15469 The default is 8 pixels on each side.
15472 Set the strict breaks. Setting this option to 1 will reduce the chances of
15473 filter generating an occasional mismatched frame, but it may also cause an
15474 excessive number of frames to be dropped during high motion sequences.
15475 Conversely, setting it to -1 will make filter match fields more easily.
15476 This may help processing of video where there is slight blurring between
15477 the fields, but may also cause there to be interlaced frames in the output.
15478 Default value is @code{0}.
15481 Set the metric plane to use. It accepts the following values:
15487 Use chroma blue plane.
15490 Use chroma red plane.
15493 This option may be set to use chroma plane instead of the default luma plane
15494 for doing filter's computations. This may improve accuracy on very clean
15495 source material, but more likely will decrease accuracy, especially if there
15496 is chroma noise (rainbow effect) or any grayscale video.
15497 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15498 load and make pullup usable in realtime on slow machines.
15501 For best results (without duplicated frames in the output file) it is
15502 necessary to change the output frame rate. For example, to inverse
15503 telecine NTSC input:
15505 ffmpeg -i input -vf pullup -r 24000/1001 ...
15510 Change video quantization parameters (QP).
15512 The filter accepts the following option:
15516 Set expression for quantization parameter.
15519 The expression is evaluated through the eval API and can contain, among others,
15520 the following constants:
15524 1 if index is not 129, 0 otherwise.
15527 Sequential index starting from -129 to 128.
15530 @subsection Examples
15534 Some equation like:
15542 Flush video frames from internal cache of frames into a random order.
15543 No frame is discarded.
15544 Inspired by @ref{frei0r} nervous filter.
15548 Set size in number of frames of internal cache, in range from @code{2} to
15549 @code{512}. Default is @code{30}.
15552 Set seed for random number generator, must be an integer included between
15553 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15554 less than @code{0}, the filter will try to use a good random seed on a
15558 @section readeia608
15560 Read closed captioning (EIA-608) information from the top lines of a video frame.
15562 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15563 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15564 with EIA-608 data (starting from 0). A description of each metadata value follows:
15567 @item lavfi.readeia608.X.cc
15568 The two bytes stored as EIA-608 data (printed in hexadecimal).
15570 @item lavfi.readeia608.X.line
15571 The number of the line on which the EIA-608 data was identified and read.
15574 This filter accepts the following options:
15578 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15581 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15584 Set the ratio of width reserved for sync code detection.
15585 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15588 Enable checking the parity bit. In the event of a parity error, the filter will output
15589 @code{0x00} for that character. Default is false.
15592 Lowpass lines prior to further processing. Default is enabled.
15595 @subsection Examples
15599 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15601 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
15607 Read vertical interval timecode (VITC) information from the top lines of a
15610 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15611 timecode value, if a valid timecode has been detected. Further metadata key
15612 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15613 timecode data has been found or not.
15615 This filter accepts the following options:
15619 Set the maximum number of lines to scan for VITC data. If the value is set to
15620 @code{-1} the full video frame is scanned. Default is @code{45}.
15623 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15624 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15627 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15628 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15631 @subsection Examples
15635 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15636 draw @code{--:--:--:--} as a placeholder:
15638 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15644 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15646 Destination pixel at position (X, Y) will be picked from source (x, y) position
15647 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15648 value for pixel will be used for destination pixel.
15650 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15651 will have Xmap/Ymap video stream dimensions.
15652 Xmap and Ymap input video streams are 16bit depth, single channel.
15656 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15657 Default is @code{color}.
15660 Specify the color of the unmapped pixels. For the syntax of this option,
15661 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15662 manual,ffmpeg-utils}. Default color is @code{black}.
15665 @section removegrain
15667 The removegrain filter is a spatial denoiser for progressive video.
15671 Set mode for the first plane.
15674 Set mode for the second plane.
15677 Set mode for the third plane.
15680 Set mode for the fourth plane.
15683 Range of mode is from 0 to 24. Description of each mode follows:
15687 Leave input plane unchanged. Default.
15690 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15693 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15696 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15699 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15700 This is equivalent to a median filter.
15703 Line-sensitive clipping giving the minimal change.
15706 Line-sensitive clipping, intermediate.
15709 Line-sensitive clipping, intermediate.
15712 Line-sensitive clipping, intermediate.
15715 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15718 Replaces the target pixel with the closest neighbour.
15721 [1 2 1] horizontal and vertical kernel blur.
15727 Bob mode, interpolates top field from the line where the neighbours
15728 pixels are the closest.
15731 Bob mode, interpolates bottom field from the line where the neighbours
15732 pixels are the closest.
15735 Bob mode, interpolates top field. Same as 13 but with a more complicated
15736 interpolation formula.
15739 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15740 interpolation formula.
15743 Clips the pixel with the minimum and maximum of respectively the maximum and
15744 minimum of each pair of opposite neighbour pixels.
15747 Line-sensitive clipping using opposite neighbours whose greatest distance from
15748 the current pixel is minimal.
15751 Replaces the pixel with the average of its 8 neighbours.
15754 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15757 Clips pixels using the averages of opposite neighbour.
15760 Same as mode 21 but simpler and faster.
15763 Small edge and halo removal, but reputed useless.
15769 @section removelogo
15771 Suppress a TV station logo, using an image file to determine which
15772 pixels comprise the logo. It works by filling in the pixels that
15773 comprise the logo with neighboring pixels.
15775 The filter accepts the following options:
15779 Set the filter bitmap file, which can be any image format supported by
15780 libavformat. The width and height of the image file must match those of the
15781 video stream being processed.
15784 Pixels in the provided bitmap image with a value of zero are not
15785 considered part of the logo, non-zero pixels are considered part of
15786 the logo. If you use white (255) for the logo and black (0) for the
15787 rest, you will be safe. For making the filter bitmap, it is
15788 recommended to take a screen capture of a black frame with the logo
15789 visible, and then using a threshold filter followed by the erode
15790 filter once or twice.
15792 If needed, little splotches can be fixed manually. Remember that if
15793 logo pixels are not covered, the filter quality will be much
15794 reduced. Marking too many pixels as part of the logo does not hurt as
15795 much, but it will increase the amount of blurring needed to cover over
15796 the image and will destroy more information than necessary, and extra
15797 pixels will slow things down on a large logo.
15799 @section repeatfields
15801 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15802 fields based on its value.
15806 Reverse a video clip.
15808 Warning: This filter requires memory to buffer the entire clip, so trimming
15811 @subsection Examples
15815 Take the first 5 seconds of a clip, and reverse it.
15822 Shift R/G/B/A pixels horizontally and/or vertically.
15824 The filter accepts the following options:
15827 Set amount to shift red horizontally.
15829 Set amount to shift red vertically.
15831 Set amount to shift green horizontally.
15833 Set amount to shift green vertically.
15835 Set amount to shift blue horizontally.
15837 Set amount to shift blue vertically.
15839 Set amount to shift alpha horizontally.
15841 Set amount to shift alpha vertically.
15843 Set edge mode, can be @var{smear}, default, or @var{warp}.
15846 @subsection Commands
15848 This filter supports the all above options as @ref{commands}.
15851 Apply roberts cross operator to input video stream.
15853 The filter accepts the following option:
15857 Set which planes will be processed, unprocessed planes will be copied.
15858 By default value 0xf, all planes will be processed.
15861 Set value which will be multiplied with filtered result.
15864 Set value which will be added to filtered result.
15869 Rotate video by an arbitrary angle expressed in radians.
15871 The filter accepts the following options:
15873 A description of the optional parameters follows.
15876 Set an expression for the angle by which to rotate the input video
15877 clockwise, expressed as a number of radians. A negative value will
15878 result in a counter-clockwise rotation. By default it is set to "0".
15880 This expression is evaluated for each frame.
15883 Set the output width expression, default value is "iw".
15884 This expression is evaluated just once during configuration.
15887 Set the output height expression, default value is "ih".
15888 This expression is evaluated just once during configuration.
15891 Enable bilinear interpolation if set to 1, a value of 0 disables
15892 it. Default value is 1.
15895 Set the color used to fill the output area not covered by the rotated
15896 image. For the general syntax of this option, check the
15897 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15898 If the special value "none" is selected then no
15899 background is printed (useful for example if the background is never shown).
15901 Default value is "black".
15904 The expressions for the angle and the output size can contain the
15905 following constants and functions:
15909 sequential number of the input frame, starting from 0. It is always NAN
15910 before the first frame is filtered.
15913 time in seconds of the input frame, it is set to 0 when the filter is
15914 configured. It is always NAN before the first frame is filtered.
15918 horizontal and vertical chroma subsample values. For example for the
15919 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15923 the input video width and height
15927 the output width and height, that is the size of the padded area as
15928 specified by the @var{width} and @var{height} expressions
15932 the minimal width/height required for completely containing the input
15933 video rotated by @var{a} radians.
15935 These are only available when computing the @option{out_w} and
15936 @option{out_h} expressions.
15939 @subsection Examples
15943 Rotate the input by PI/6 radians clockwise:
15949 Rotate the input by PI/6 radians counter-clockwise:
15955 Rotate the input by 45 degrees clockwise:
15961 Apply a constant rotation with period T, starting from an angle of PI/3:
15963 rotate=PI/3+2*PI*t/T
15967 Make the input video rotation oscillating with a period of T
15968 seconds and an amplitude of A radians:
15970 rotate=A*sin(2*PI/T*t)
15974 Rotate the video, output size is chosen so that the whole rotating
15975 input video is always completely contained in the output:
15977 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15981 Rotate the video, reduce the output size so that no background is ever
15984 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15988 @subsection Commands
15990 The filter supports the following commands:
15994 Set the angle expression.
15995 The command accepts the same syntax of the corresponding option.
15997 If the specified expression is not valid, it is kept at its current
16003 Apply Shape Adaptive Blur.
16005 The filter accepts the following options:
16008 @item luma_radius, lr
16009 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16010 value is 1.0. A greater value will result in a more blurred image, and
16011 in slower processing.
16013 @item luma_pre_filter_radius, lpfr
16014 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16017 @item luma_strength, ls
16018 Set luma maximum difference between pixels to still be considered, must
16019 be a value in the 0.1-100.0 range, default value is 1.0.
16021 @item chroma_radius, cr
16022 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16023 greater value will result in a more blurred image, and in slower
16026 @item chroma_pre_filter_radius, cpfr
16027 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16029 @item chroma_strength, cs
16030 Set chroma maximum difference between pixels to still be considered,
16031 must be a value in the -0.9-100.0 range.
16034 Each chroma option value, if not explicitly specified, is set to the
16035 corresponding luma option value.
16040 Scale (resize) the input video, using the libswscale library.
16042 The scale filter forces the output display aspect ratio to be the same
16043 of the input, by changing the output sample aspect ratio.
16045 If the input image format is different from the format requested by
16046 the next filter, the scale filter will convert the input to the
16049 @subsection Options
16050 The filter accepts the following options, or any of the options
16051 supported by the libswscale scaler.
16053 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16054 the complete list of scaler options.
16059 Set the output video dimension expression. Default value is the input
16062 If the @var{width} or @var{w} value is 0, the input width is used for
16063 the output. If the @var{height} or @var{h} value is 0, the input height
16064 is used for the output.
16066 If one and only one of the values is -n with n >= 1, the scale filter
16067 will use a value that maintains the aspect ratio of the input image,
16068 calculated from the other specified dimension. After that it will,
16069 however, make sure that the calculated dimension is divisible by n and
16070 adjust the value if necessary.
16072 If both values are -n with n >= 1, the behavior will be identical to
16073 both values being set to 0 as previously detailed.
16075 See below for the list of accepted constants for use in the dimension
16079 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16083 Only evaluate expressions once during the filter initialization or when a command is processed.
16086 Evaluate expressions for each incoming frame.
16090 Default value is @samp{init}.
16094 Set the interlacing mode. It accepts the following values:
16098 Force interlaced aware scaling.
16101 Do not apply interlaced scaling.
16104 Select interlaced aware scaling depending on whether the source frames
16105 are flagged as interlaced or not.
16108 Default value is @samp{0}.
16111 Set libswscale scaling flags. See
16112 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16113 complete list of values. If not explicitly specified the filter applies
16117 @item param0, param1
16118 Set libswscale input parameters for scaling algorithms that need them. See
16119 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16120 complete documentation. If not explicitly specified the filter applies
16126 Set the video size. For the syntax of this option, check the
16127 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16129 @item in_color_matrix
16130 @item out_color_matrix
16131 Set in/output YCbCr color space type.
16133 This allows the autodetected value to be overridden as well as allows forcing
16134 a specific value used for the output and encoder.
16136 If not specified, the color space type depends on the pixel format.
16142 Choose automatically.
16145 Format conforming to International Telecommunication Union (ITU)
16146 Recommendation BT.709.
16149 Set color space conforming to the United States Federal Communications
16150 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16155 Set color space conforming to:
16159 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16162 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16165 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16170 Set color space conforming to SMPTE ST 240:1999.
16173 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16178 Set in/output YCbCr sample range.
16180 This allows the autodetected value to be overridden as well as allows forcing
16181 a specific value used for the output and encoder. If not specified, the
16182 range depends on the pixel format. Possible values:
16186 Choose automatically.
16189 Set full range (0-255 in case of 8-bit luma).
16191 @item mpeg/limited/tv
16192 Set "MPEG" range (16-235 in case of 8-bit luma).
16195 @item force_original_aspect_ratio
16196 Enable decreasing or increasing output video width or height if necessary to
16197 keep the original aspect ratio. Possible values:
16201 Scale the video as specified and disable this feature.
16204 The output video dimensions will automatically be decreased if needed.
16207 The output video dimensions will automatically be increased if needed.
16211 One useful instance of this option is that when you know a specific device's
16212 maximum allowed resolution, you can use this to limit the output video to
16213 that, while retaining the aspect ratio. For example, device A allows
16214 1280x720 playback, and your video is 1920x800. Using this option (set it to
16215 decrease) and specifying 1280x720 to the command line makes the output
16218 Please note that this is a different thing than specifying -1 for @option{w}
16219 or @option{h}, you still need to specify the output resolution for this option
16222 @item force_divisible_by
16223 Ensures that both the output dimensions, width and height, are divisible by the
16224 given integer when used together with @option{force_original_aspect_ratio}. This
16225 works similar to using @code{-n} in the @option{w} and @option{h} options.
16227 This option respects the value set for @option{force_original_aspect_ratio},
16228 increasing or decreasing the resolution accordingly. The video's aspect ratio
16229 may be slightly modified.
16231 This option can be handy if you need to have a video fit within or exceed
16232 a defined resolution using @option{force_original_aspect_ratio} but also have
16233 encoder restrictions on width or height divisibility.
16237 The values of the @option{w} and @option{h} options are expressions
16238 containing the following constants:
16243 The input width and height
16247 These are the same as @var{in_w} and @var{in_h}.
16251 The output (scaled) width and height
16255 These are the same as @var{out_w} and @var{out_h}
16258 The same as @var{iw} / @var{ih}
16261 input sample aspect ratio
16264 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16268 horizontal and vertical input chroma subsample values. For example for the
16269 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16273 horizontal and vertical output chroma subsample values. For example for the
16274 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16277 The (sequential) number of the input frame, starting from 0.
16278 Only available with @code{eval=frame}.
16281 The presentation timestamp of the input frame, expressed as a number of
16282 seconds. Only available with @code{eval=frame}.
16285 The position (byte offset) of the frame in the input stream, or NaN if
16286 this information is unavailable and/or meaningless (for example in case of synthetic video).
16287 Only available with @code{eval=frame}.
16290 @subsection Examples
16294 Scale the input video to a size of 200x100
16299 This is equivalent to:
16310 Specify a size abbreviation for the output size:
16315 which can also be written as:
16321 Scale the input to 2x:
16323 scale=w=2*iw:h=2*ih
16327 The above is the same as:
16329 scale=2*in_w:2*in_h
16333 Scale the input to 2x with forced interlaced scaling:
16335 scale=2*iw:2*ih:interl=1
16339 Scale the input to half size:
16341 scale=w=iw/2:h=ih/2
16345 Increase the width, and set the height to the same size:
16351 Seek Greek harmony:
16358 Increase the height, and set the width to 3/2 of the height:
16360 scale=w=3/2*oh:h=3/5*ih
16364 Increase the size, making the size a multiple of the chroma
16367 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16371 Increase the width to a maximum of 500 pixels,
16372 keeping the same aspect ratio as the input:
16374 scale=w='min(500\, iw*3/2):h=-1'
16378 Make pixels square by combining scale and setsar:
16380 scale='trunc(ih*dar):ih',setsar=1/1
16384 Make pixels square by combining scale and setsar,
16385 making sure the resulting resolution is even (required by some codecs):
16387 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16391 @subsection Commands
16393 This filter supports the following commands:
16397 Set the output video dimension expression.
16398 The command accepts the same syntax of the corresponding option.
16400 If the specified expression is not valid, it is kept at its current
16406 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16407 format conversion on CUDA video frames. Setting the output width and height
16408 works in the same way as for the @var{scale} filter.
16410 The following additional options are accepted:
16413 The pixel format of the output CUDA frames. If set to the string "same" (the
16414 default), the input format will be kept. Note that automatic format negotiation
16415 and conversion is not yet supported for hardware frames
16418 The interpolation algorithm used for resizing. One of the following:
16425 @item cubic2p_bspline
16426 2-parameter cubic (B=1, C=0)
16428 @item cubic2p_catmullrom
16429 2-parameter cubic (B=0, C=1/2)
16431 @item cubic2p_b05c03
16432 2-parameter cubic (B=1/2, C=3/10)
16440 @item force_original_aspect_ratio
16441 Enable decreasing or increasing output video width or height if necessary to
16442 keep the original aspect ratio. Possible values:
16446 Scale the video as specified and disable this feature.
16449 The output video dimensions will automatically be decreased if needed.
16452 The output video dimensions will automatically be increased if needed.
16456 One useful instance of this option is that when you know a specific device's
16457 maximum allowed resolution, you can use this to limit the output video to
16458 that, while retaining the aspect ratio. For example, device A allows
16459 1280x720 playback, and your video is 1920x800. Using this option (set it to
16460 decrease) and specifying 1280x720 to the command line makes the output
16463 Please note that this is a different thing than specifying -1 for @option{w}
16464 or @option{h}, you still need to specify the output resolution for this option
16467 @item force_divisible_by
16468 Ensures that both the output dimensions, width and height, are divisible by the
16469 given integer when used together with @option{force_original_aspect_ratio}. This
16470 works similar to using @code{-n} in the @option{w} and @option{h} options.
16472 This option respects the value set for @option{force_original_aspect_ratio},
16473 increasing or decreasing the resolution accordingly. The video's aspect ratio
16474 may be slightly modified.
16476 This option can be handy if you need to have a video fit within or exceed
16477 a defined resolution using @option{force_original_aspect_ratio} but also have
16478 encoder restrictions on width or height divisibility.
16484 Scale (resize) the input video, based on a reference video.
16486 See the scale filter for available options, scale2ref supports the same but
16487 uses the reference video instead of the main input as basis. scale2ref also
16488 supports the following additional constants for the @option{w} and
16489 @option{h} options:
16494 The main input video's width and height
16497 The same as @var{main_w} / @var{main_h}
16500 The main input video's sample aspect ratio
16502 @item main_dar, mdar
16503 The main input video's display aspect ratio. Calculated from
16504 @code{(main_w / main_h) * main_sar}.
16508 The main input video's horizontal and vertical chroma subsample values.
16509 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16513 The (sequential) number of the main input frame, starting from 0.
16514 Only available with @code{eval=frame}.
16517 The presentation timestamp of the main input frame, expressed as a number of
16518 seconds. Only available with @code{eval=frame}.
16521 The position (byte offset) of the frame in the main input stream, or NaN if
16522 this information is unavailable and/or meaningless (for example in case of synthetic video).
16523 Only available with @code{eval=frame}.
16526 @subsection Examples
16530 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16532 'scale2ref[b][a];[a][b]overlay'
16536 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16538 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16542 @subsection Commands
16544 This filter supports the following commands:
16548 Set the output video dimension expression.
16549 The command accepts the same syntax of the corresponding option.
16551 If the specified expression is not valid, it is kept at its current
16556 Scroll input video horizontally and/or vertically by constant speed.
16558 The filter accepts the following options:
16560 @item horizontal, h
16561 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16562 Negative values changes scrolling direction.
16565 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16566 Negative values changes scrolling direction.
16569 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16572 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16575 @subsection Commands
16577 This filter supports the following @ref{commands}:
16579 @item horizontal, h
16580 Set the horizontal scrolling speed.
16582 Set the vertical scrolling speed.
16588 Detect video scene change.
16590 This filter sets frame metadata with mafd between frame, the scene score, and
16591 forward the frame to the next filter, so they can use these metadata to detect
16592 scene change or others.
16594 In addition, this filter logs a message and sets frame metadata when it detects
16595 a scene change by @option{threshold}.
16597 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
16599 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
16600 to detect scene change.
16602 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
16603 detect scene change with @option{threshold}.
16605 The filter accepts the following options:
16609 Set the scene change detection threshold as a percentage of maximum change. Good
16610 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
16613 Default value is @code{10.}.
16616 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
16617 You can enable it if you want to get snapshot of scene change frames only.
16620 @anchor{selectivecolor}
16621 @section selectivecolor
16623 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16624 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16625 by the "purity" of the color (that is, how saturated it already is).
16627 This filter is similar to the Adobe Photoshop Selective Color tool.
16629 The filter accepts the following options:
16632 @item correction_method
16633 Select color correction method.
16635 Available values are:
16638 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16641 Specified adjustments are relative to the original component value.
16643 Default is @code{absolute}.
16645 Adjustments for red pixels (pixels where the red component is the maximum)
16647 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16649 Adjustments for green pixels (pixels where the green component is the maximum)
16651 Adjustments for cyan pixels (pixels where the red component is the minimum)
16653 Adjustments for blue pixels (pixels where the blue component is the maximum)
16655 Adjustments for magenta pixels (pixels where the green component is the minimum)
16657 Adjustments for white pixels (pixels where all components are greater than 128)
16659 Adjustments for all pixels except pure black and pure white
16661 Adjustments for black pixels (pixels where all components are lesser than 128)
16663 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16666 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16667 4 space separated floating point adjustment values in the [-1,1] range,
16668 respectively to adjust the amount of cyan, magenta, yellow and black for the
16669 pixels of its range.
16671 @subsection Examples
16675 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16676 increase magenta by 27% in blue areas:
16678 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16682 Use a Photoshop selective color preset:
16684 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16688 @anchor{separatefields}
16689 @section separatefields
16691 The @code{separatefields} takes a frame-based video input and splits
16692 each frame into its components fields, producing a new half height clip
16693 with twice the frame rate and twice the frame count.
16695 This filter use field-dominance information in frame to decide which
16696 of each pair of fields to place first in the output.
16697 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16699 @section setdar, setsar
16701 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16704 This is done by changing the specified Sample (aka Pixel) Aspect
16705 Ratio, according to the following equation:
16707 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16710 Keep in mind that the @code{setdar} filter does not modify the pixel
16711 dimensions of the video frame. Also, the display aspect ratio set by
16712 this filter may be changed by later filters in the filterchain,
16713 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16716 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16717 the filter output video.
16719 Note that as a consequence of the application of this filter, the
16720 output display aspect ratio will change according to the equation
16723 Keep in mind that the sample aspect ratio set by the @code{setsar}
16724 filter may be changed by later filters in the filterchain, e.g. if
16725 another "setsar" or a "setdar" filter is applied.
16727 It accepts the following parameters:
16730 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16731 Set the aspect ratio used by the filter.
16733 The parameter can be a floating point number string, an expression, or
16734 a string of the form @var{num}:@var{den}, where @var{num} and
16735 @var{den} are the numerator and denominator of the aspect ratio. If
16736 the parameter is not specified, it is assumed the value "0".
16737 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16741 Set the maximum integer value to use for expressing numerator and
16742 denominator when reducing the expressed aspect ratio to a rational.
16743 Default value is @code{100}.
16747 The parameter @var{sar} is an expression containing
16748 the following constants:
16752 These are approximated values for the mathematical constants e
16753 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16756 The input width and height.
16759 These are the same as @var{w} / @var{h}.
16762 The input sample aspect ratio.
16765 The input display aspect ratio. It is the same as
16766 (@var{w} / @var{h}) * @var{sar}.
16769 Horizontal and vertical chroma subsample values. For example, for the
16770 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16773 @subsection Examples
16778 To change the display aspect ratio to 16:9, specify one of the following:
16785 To change the sample aspect ratio to 10:11, specify:
16791 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16792 1000 in the aspect ratio reduction, use the command:
16794 setdar=ratio=16/9:max=1000
16802 Force field for the output video frame.
16804 The @code{setfield} filter marks the interlace type field for the
16805 output frames. It does not change the input frame, but only sets the
16806 corresponding property, which affects how the frame is treated by
16807 following filters (e.g. @code{fieldorder} or @code{yadif}).
16809 The filter accepts the following options:
16814 Available values are:
16818 Keep the same field property.
16821 Mark the frame as bottom-field-first.
16824 Mark the frame as top-field-first.
16827 Mark the frame as progressive.
16834 Force frame parameter for the output video frame.
16836 The @code{setparams} filter marks interlace and color range for the
16837 output frames. It does not change the input frame, but only sets the
16838 corresponding property, which affects how the frame is treated by
16843 Available values are:
16847 Keep the same field property (default).
16850 Mark the frame as bottom-field-first.
16853 Mark the frame as top-field-first.
16856 Mark the frame as progressive.
16860 Available values are:
16864 Keep the same color range property (default).
16866 @item unspecified, unknown
16867 Mark the frame as unspecified color range.
16869 @item limited, tv, mpeg
16870 Mark the frame as limited range.
16872 @item full, pc, jpeg
16873 Mark the frame as full range.
16876 @item color_primaries
16877 Set the color primaries.
16878 Available values are:
16882 Keep the same color primaries property (default).
16899 Set the color transfer.
16900 Available values are:
16904 Keep the same color trc property (default).
16926 Set the colorspace.
16927 Available values are:
16931 Keep the same colorspace property (default).
16944 @item chroma-derived-nc
16945 @item chroma-derived-c
16952 Show a line containing various information for each input video frame.
16953 The input video is not modified.
16955 This filter supports the following options:
16959 Calculate checksums of each plane. By default enabled.
16962 The shown line contains a sequence of key/value pairs of the form
16963 @var{key}:@var{value}.
16965 The following values are shown in the output:
16969 The (sequential) number of the input frame, starting from 0.
16972 The Presentation TimeStamp of the input frame, expressed as a number of
16973 time base units. The time base unit depends on the filter input pad.
16976 The Presentation TimeStamp of the input frame, expressed as a number of
16980 The position of the frame in the input stream, or -1 if this information is
16981 unavailable and/or meaningless (for example in case of synthetic video).
16984 The pixel format name.
16987 The sample aspect ratio of the input frame, expressed in the form
16988 @var{num}/@var{den}.
16991 The size of the input frame. For the syntax of this option, check the
16992 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16995 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16996 for bottom field first).
16999 This is 1 if the frame is a key frame, 0 otherwise.
17002 The picture type of the input frame ("I" for an I-frame, "P" for a
17003 P-frame, "B" for a B-frame, or "?" for an unknown type).
17004 Also refer to the documentation of the @code{AVPictureType} enum and of
17005 the @code{av_get_picture_type_char} function defined in
17006 @file{libavutil/avutil.h}.
17009 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17011 @item plane_checksum
17012 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17013 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17016 The mean value of pixels in each plane of the input frame, expressed in the form
17017 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17020 The standard deviation of pixel values in each plane of the input frame, expressed
17021 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17025 @section showpalette
17027 Displays the 256 colors palette of each frame. This filter is only relevant for
17028 @var{pal8} pixel format frames.
17030 It accepts the following option:
17034 Set the size of the box used to represent one palette color entry. Default is
17035 @code{30} (for a @code{30x30} pixel box).
17038 @section shuffleframes
17040 Reorder and/or duplicate and/or drop video frames.
17042 It accepts the following parameters:
17046 Set the destination indexes of input frames.
17047 This is space or '|' separated list of indexes that maps input frames to output
17048 frames. Number of indexes also sets maximal value that each index may have.
17049 '-1' index have special meaning and that is to drop frame.
17052 The first frame has the index 0. The default is to keep the input unchanged.
17054 @subsection Examples
17058 Swap second and third frame of every three frames of the input:
17060 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17064 Swap 10th and 1st frame of every ten frames of the input:
17066 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17070 @section shuffleplanes
17072 Reorder and/or duplicate video planes.
17074 It accepts the following parameters:
17079 The index of the input plane to be used as the first output plane.
17082 The index of the input plane to be used as the second output plane.
17085 The index of the input plane to be used as the third output plane.
17088 The index of the input plane to be used as the fourth output plane.
17092 The first plane has the index 0. The default is to keep the input unchanged.
17094 @subsection Examples
17098 Swap the second and third planes of the input:
17100 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17104 @anchor{signalstats}
17105 @section signalstats
17106 Evaluate various visual metrics that assist in determining issues associated
17107 with the digitization of analog video media.
17109 By default the filter will log these metadata values:
17113 Display the minimal Y value contained within the input frame. Expressed in
17117 Display the Y value at the 10% percentile within the input frame. Expressed in
17121 Display the average Y value within the input frame. Expressed in range of
17125 Display the Y value at the 90% percentile within the input frame. Expressed in
17129 Display the maximum Y value contained within the input frame. Expressed in
17133 Display the minimal U value contained within the input frame. Expressed in
17137 Display the U value at the 10% percentile within the input frame. Expressed in
17141 Display the average U value within the input frame. Expressed in range of
17145 Display the U value at the 90% percentile within the input frame. Expressed in
17149 Display the maximum U value contained within the input frame. Expressed in
17153 Display the minimal V value contained within the input frame. Expressed in
17157 Display the V value at the 10% percentile within the input frame. Expressed in
17161 Display the average V value within the input frame. Expressed in range of
17165 Display the V value at the 90% percentile within the input frame. Expressed in
17169 Display the maximum V value contained within the input frame. Expressed in
17173 Display the minimal saturation value contained within the input frame.
17174 Expressed in range of [0-~181.02].
17177 Display the saturation value at the 10% percentile within the input frame.
17178 Expressed in range of [0-~181.02].
17181 Display the average saturation value within the input frame. Expressed in range
17185 Display the saturation value at the 90% percentile within the input frame.
17186 Expressed in range of [0-~181.02].
17189 Display the maximum saturation value contained within the input frame.
17190 Expressed in range of [0-~181.02].
17193 Display the median value for hue within the input frame. Expressed in range of
17197 Display the average value for hue within the input frame. Expressed in range of
17201 Display the average of sample value difference between all values of the Y
17202 plane in the current frame and corresponding values of the previous input frame.
17203 Expressed in range of [0-255].
17206 Display the average of sample value difference between all values of the U
17207 plane in the current frame and corresponding values of the previous input frame.
17208 Expressed in range of [0-255].
17211 Display the average of sample value difference between all values of the V
17212 plane in the current frame and corresponding values of the previous input frame.
17213 Expressed in range of [0-255].
17216 Display bit depth of Y plane in current frame.
17217 Expressed in range of [0-16].
17220 Display bit depth of U plane in current frame.
17221 Expressed in range of [0-16].
17224 Display bit depth of V plane in current frame.
17225 Expressed in range of [0-16].
17228 The filter accepts the following options:
17234 @option{stat} specify an additional form of image analysis.
17235 @option{out} output video with the specified type of pixel highlighted.
17237 Both options accept the following values:
17241 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17242 unlike the neighboring pixels of the same field. Examples of temporal outliers
17243 include the results of video dropouts, head clogs, or tape tracking issues.
17246 Identify @var{vertical line repetition}. Vertical line repetition includes
17247 similar rows of pixels within a frame. In born-digital video vertical line
17248 repetition is common, but this pattern is uncommon in video digitized from an
17249 analog source. When it occurs in video that results from the digitization of an
17250 analog source it can indicate concealment from a dropout compensator.
17253 Identify pixels that fall outside of legal broadcast range.
17257 Set the highlight color for the @option{out} option. The default color is
17261 @subsection Examples
17265 Output data of various video metrics:
17267 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17271 Output specific data about the minimum and maximum values of the Y plane per frame:
17273 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17277 Playback video while highlighting pixels that are outside of broadcast range in red.
17279 ffplay example.mov -vf signalstats="out=brng:color=red"
17283 Playback video with signalstats metadata drawn over the frame.
17285 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17288 The contents of signalstat_drawtext.txt used in the command are:
17291 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17292 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17293 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17294 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17302 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17303 input. In this case the matching between the inputs can be calculated additionally.
17304 The filter always passes through the first input. The signature of each stream can
17305 be written into a file.
17307 It accepts the following options:
17311 Enable or disable the matching process.
17313 Available values are:
17317 Disable the calculation of a matching (default).
17319 Calculate the matching for the whole video and output whether the whole video
17320 matches or only parts.
17322 Calculate only until a matching is found or the video ends. Should be faster in
17327 Set the number of inputs. The option value must be a non negative integer.
17328 Default value is 1.
17331 Set the path to which the output is written. If there is more than one input,
17332 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17333 integer), that will be replaced with the input number. If no filename is
17334 specified, no output will be written. This is the default.
17337 Choose the output format.
17339 Available values are:
17343 Use the specified binary representation (default).
17345 Use the specified xml representation.
17349 Set threshold to detect one word as similar. The option value must be an integer
17350 greater than zero. The default value is 9000.
17353 Set threshold to detect all words as similar. The option value must be an integer
17354 greater than zero. The default value is 60000.
17357 Set threshold to detect frames as similar. The option value must be an integer
17358 greater than zero. The default value is 116.
17361 Set the minimum length of a sequence in frames to recognize it as matching
17362 sequence. The option value must be a non negative integer value.
17363 The default value is 0.
17366 Set the minimum relation, that matching frames to all frames must have.
17367 The option value must be a double value between 0 and 1. The default value is 0.5.
17370 @subsection Examples
17374 To calculate the signature of an input video and store it in signature.bin:
17376 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17380 To detect whether two videos match and store the signatures in XML format in
17381 signature0.xml and signature1.xml:
17383 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 -
17391 Blur the input video without impacting the outlines.
17393 It accepts the following options:
17396 @item luma_radius, lr
17397 Set the luma radius. The option value must be a float number in
17398 the range [0.1,5.0] that specifies the variance of the gaussian filter
17399 used to blur the image (slower if larger). Default value is 1.0.
17401 @item luma_strength, ls
17402 Set the luma strength. The option value must be a float number
17403 in the range [-1.0,1.0] that configures the blurring. A value included
17404 in [0.0,1.0] will blur the image whereas a value included in
17405 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17407 @item luma_threshold, lt
17408 Set the luma threshold used as a coefficient to determine
17409 whether a pixel should be blurred or not. The option value must be an
17410 integer in the range [-30,30]. A value of 0 will filter all the image,
17411 a value included in [0,30] will filter flat areas and a value included
17412 in [-30,0] will filter edges. Default value is 0.
17414 @item chroma_radius, cr
17415 Set the chroma radius. The option value must be a float number in
17416 the range [0.1,5.0] that specifies the variance of the gaussian filter
17417 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17419 @item chroma_strength, cs
17420 Set the chroma strength. The option value must be a float number
17421 in the range [-1.0,1.0] that configures the blurring. A value included
17422 in [0.0,1.0] will blur the image whereas a value included in
17423 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17425 @item chroma_threshold, ct
17426 Set the chroma threshold used as a coefficient to determine
17427 whether a pixel should be blurred or not. The option value must be an
17428 integer in the range [-30,30]. A value of 0 will filter all the image,
17429 a value included in [0,30] will filter flat areas and a value included
17430 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17433 If a chroma option is not explicitly set, the corresponding luma value
17437 Apply sobel operator to input video stream.
17439 The filter accepts the following option:
17443 Set which planes will be processed, unprocessed planes will be copied.
17444 By default value 0xf, all planes will be processed.
17447 Set value which will be multiplied with filtered result.
17450 Set value which will be added to filtered result.
17456 Apply a simple postprocessing filter that compresses and decompresses the image
17457 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17458 and average the results.
17460 The filter accepts the following options:
17464 Set quality. This option defines the number of levels for averaging. It accepts
17465 an integer in the range 0-6. If set to @code{0}, the filter will have no
17466 effect. A value of @code{6} means the higher quality. For each increment of
17467 that value the speed drops by a factor of approximately 2. Default value is
17471 Force a constant quantization parameter. If not set, the filter will use the QP
17472 from the video stream (if available).
17475 Set thresholding mode. Available modes are:
17479 Set hard thresholding (default).
17481 Set soft thresholding (better de-ringing effect, but likely blurrier).
17484 @item use_bframe_qp
17485 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17486 option may cause flicker since the B-Frames have often larger QP. Default is
17487 @code{0} (not enabled).
17490 @subsection Commands
17492 This filter supports the following commands:
17494 @item quality, level
17495 Set quality level. The value @code{max} can be used to set the maximum level,
17496 currently @code{6}.
17502 Scale the input by applying one of the super-resolution methods based on
17503 convolutional neural networks. Supported models:
17507 Super-Resolution Convolutional Neural Network model (SRCNN).
17508 See @url{https://arxiv.org/abs/1501.00092}.
17511 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17512 See @url{https://arxiv.org/abs/1609.05158}.
17515 Training scripts as well as scripts for model file (.pb) saving can be found at
17516 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17517 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17519 Native model files (.model) can be generated from TensorFlow model
17520 files (.pb) by using tools/python/convert.py
17522 The filter accepts the following options:
17526 Specify which DNN backend to use for model loading and execution. This option accepts
17527 the following values:
17531 Native implementation of DNN loading and execution.
17534 TensorFlow backend. To enable this backend you
17535 need to install the TensorFlow for C library (see
17536 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17537 @code{--enable-libtensorflow}
17540 Default value is @samp{native}.
17543 Set path to model file specifying network architecture and its parameters.
17544 Note that different backends use different file formats. TensorFlow backend
17545 can load files for both formats, while native backend can load files for only
17549 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17550 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17551 input upscaled using bicubic upscaling with proper scale factor.
17554 This feature can also be finished with @ref{dnn_processing} filter.
17558 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17560 This filter takes in input two input videos, the first input is
17561 considered the "main" source and is passed unchanged to the
17562 output. The second input is used as a "reference" video for computing
17565 Both video inputs must have the same resolution and pixel format for
17566 this filter to work correctly. Also it assumes that both inputs
17567 have the same number of frames, which are compared one by one.
17569 The filter stores the calculated SSIM of each frame.
17571 The description of the accepted parameters follows.
17574 @item stats_file, f
17575 If specified the filter will use the named file to save the SSIM of
17576 each individual frame. When filename equals "-" the data is sent to
17580 The file printed if @var{stats_file} is selected, contains a sequence of
17581 key/value pairs of the form @var{key}:@var{value} for each compared
17584 A description of each shown parameter follows:
17588 sequential number of the input frame, starting from 1
17590 @item Y, U, V, R, G, B
17591 SSIM of the compared frames for the component specified by the suffix.
17594 SSIM of the compared frames for the whole frame.
17597 Same as above but in dB representation.
17600 This filter also supports the @ref{framesync} options.
17602 @subsection Examples
17607 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17608 [main][ref] ssim="stats_file=stats.log" [out]
17611 On this example the input file being processed is compared with the
17612 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17613 is stored in @file{stats.log}.
17616 Another example with both psnr and ssim at same time:
17618 ffmpeg -i main.mpg -i ref.mpg -lavfi "ssim;[0:v][1:v]psnr" -f null -
17622 Another example with different containers:
17624 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 -
17630 Convert between different stereoscopic image formats.
17632 The filters accept the following options:
17636 Set stereoscopic image format of input.
17638 Available values for input image formats are:
17641 side by side parallel (left eye left, right eye right)
17644 side by side crosseye (right eye left, left eye right)
17647 side by side parallel with half width resolution
17648 (left eye left, right eye right)
17651 side by side crosseye with half width resolution
17652 (right eye left, left eye right)
17656 above-below (left eye above, right eye below)
17660 above-below (right eye above, left eye below)
17664 above-below with half height resolution
17665 (left eye above, right eye below)
17669 above-below with half height resolution
17670 (right eye above, left eye below)
17673 alternating frames (left eye first, right eye second)
17676 alternating frames (right eye first, left eye second)
17679 interleaved rows (left eye has top row, right eye starts on next row)
17682 interleaved rows (right eye has top row, left eye starts on next row)
17685 interleaved columns, left eye first
17688 interleaved columns, right eye first
17690 Default value is @samp{sbsl}.
17694 Set stereoscopic image format of output.
17698 side by side parallel (left eye left, right eye right)
17701 side by side crosseye (right eye left, left eye right)
17704 side by side parallel with half width resolution
17705 (left eye left, right eye right)
17708 side by side crosseye with half width resolution
17709 (right eye left, left eye right)
17713 above-below (left eye above, right eye below)
17717 above-below (right eye above, left eye below)
17721 above-below with half height resolution
17722 (left eye above, right eye below)
17726 above-below with half height resolution
17727 (right eye above, left eye below)
17730 alternating frames (left eye first, right eye second)
17733 alternating frames (right eye first, left eye second)
17736 interleaved rows (left eye has top row, right eye starts on next row)
17739 interleaved rows (right eye has top row, left eye starts on next row)
17742 anaglyph red/blue gray
17743 (red filter on left eye, blue filter on right eye)
17746 anaglyph red/green gray
17747 (red filter on left eye, green filter on right eye)
17750 anaglyph red/cyan gray
17751 (red filter on left eye, cyan filter on right eye)
17754 anaglyph red/cyan half colored
17755 (red filter on left eye, cyan filter on right eye)
17758 anaglyph red/cyan color
17759 (red filter on left eye, cyan filter on right eye)
17762 anaglyph red/cyan color optimized with the least squares projection of dubois
17763 (red filter on left eye, cyan filter on right eye)
17766 anaglyph green/magenta gray
17767 (green filter on left eye, magenta filter on right eye)
17770 anaglyph green/magenta half colored
17771 (green filter on left eye, magenta filter on right eye)
17774 anaglyph green/magenta colored
17775 (green filter on left eye, magenta filter on right eye)
17778 anaglyph green/magenta color optimized with the least squares projection of dubois
17779 (green filter on left eye, magenta filter on right eye)
17782 anaglyph yellow/blue gray
17783 (yellow filter on left eye, blue filter on right eye)
17786 anaglyph yellow/blue half colored
17787 (yellow filter on left eye, blue filter on right eye)
17790 anaglyph yellow/blue colored
17791 (yellow filter on left eye, blue filter on right eye)
17794 anaglyph yellow/blue color optimized with the least squares projection of dubois
17795 (yellow filter on left eye, blue filter on right eye)
17798 mono output (left eye only)
17801 mono output (right eye only)
17804 checkerboard, left eye first
17807 checkerboard, right eye first
17810 interleaved columns, left eye first
17813 interleaved columns, right eye first
17819 Default value is @samp{arcd}.
17822 @subsection Examples
17826 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17832 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17838 @section streamselect, astreamselect
17839 Select video or audio streams.
17841 The filter accepts the following options:
17845 Set number of inputs. Default is 2.
17848 Set input indexes to remap to outputs.
17851 @subsection Commands
17853 The @code{streamselect} and @code{astreamselect} filter supports the following
17858 Set input indexes to remap to outputs.
17861 @subsection Examples
17865 Select first 5 seconds 1st stream and rest of time 2nd stream:
17867 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17871 Same as above, but for audio:
17873 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17880 Draw subtitles on top of input video using the libass library.
17882 To enable compilation of this filter you need to configure FFmpeg with
17883 @code{--enable-libass}. This filter also requires a build with libavcodec and
17884 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17885 Alpha) subtitles format.
17887 The filter accepts the following options:
17891 Set the filename of the subtitle file to read. It must be specified.
17893 @item original_size
17894 Specify the size of the original video, the video for which the ASS file
17895 was composed. For the syntax of this option, check the
17896 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17897 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17898 correctly scale the fonts if the aspect ratio has been changed.
17901 Set a directory path containing fonts that can be used by the filter.
17902 These fonts will be used in addition to whatever the font provider uses.
17905 Process alpha channel, by default alpha channel is untouched.
17908 Set subtitles input character encoding. @code{subtitles} filter only. Only
17909 useful if not UTF-8.
17911 @item stream_index, si
17912 Set subtitles stream index. @code{subtitles} filter only.
17915 Override default style or script info parameters of the subtitles. It accepts a
17916 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17919 If the first key is not specified, it is assumed that the first value
17920 specifies the @option{filename}.
17922 For example, to render the file @file{sub.srt} on top of the input
17923 video, use the command:
17928 which is equivalent to:
17930 subtitles=filename=sub.srt
17933 To render the default subtitles stream from file @file{video.mkv}, use:
17935 subtitles=video.mkv
17938 To render the second subtitles stream from that file, use:
17940 subtitles=video.mkv:si=1
17943 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17944 @code{DejaVu Serif}, use:
17946 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17949 @section super2xsai
17951 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17952 Interpolate) pixel art scaling algorithm.
17954 Useful for enlarging pixel art images without reducing sharpness.
17958 Swap two rectangular objects in video.
17960 This filter accepts the following options:
17970 Set 1st rect x coordinate.
17973 Set 1st rect y coordinate.
17976 Set 2nd rect x coordinate.
17979 Set 2nd rect y coordinate.
17981 All expressions are evaluated once for each frame.
17984 The all options are expressions containing the following constants:
17989 The input width and height.
17992 same as @var{w} / @var{h}
17995 input sample aspect ratio
17998 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18001 The number of the input frame, starting from 0.
18004 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18007 the position in the file of the input frame, NAN if unknown
18014 Blend successive video frames.
18020 Apply telecine process to the video.
18022 This filter accepts the following options:
18031 The default value is @code{top}.
18035 A string of numbers representing the pulldown pattern you wish to apply.
18036 The default value is @code{23}.
18040 Some typical patterns:
18045 24p: 2332 (preferred)
18052 24p: 222222222223 ("Euro pulldown")
18057 @section thistogram
18059 Compute and draw a color distribution histogram for the input video across time.
18061 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18062 at certain time, this filter shows also past histograms of number of frames defined
18063 by @code{width} option.
18065 The computed histogram is a representation of the color component
18066 distribution in an image.
18068 The filter accepts the following options:
18072 Set width of single color component output. Default value is @code{0}.
18073 Value of @code{0} means width will be picked from input video.
18074 This also set number of passed histograms to keep.
18075 Allowed range is [0, 8192].
18077 @item display_mode, d
18079 It accepts the following values:
18082 Per color component graphs are placed below each other.
18085 Per color component graphs are placed side by side.
18088 Presents information identical to that in the @code{parade}, except
18089 that the graphs representing color components are superimposed directly
18092 Default is @code{stack}.
18094 @item levels_mode, m
18095 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18096 Default is @code{linear}.
18098 @item components, c
18099 Set what color components to display.
18100 Default is @code{7}.
18103 Set background opacity. Default is @code{0.9}.
18106 Show envelope. Default is disabled.
18109 Set envelope color. Default is @code{gold}.
18114 Apply threshold effect to video stream.
18116 This filter needs four video streams to perform thresholding.
18117 First stream is stream we are filtering.
18118 Second stream is holding threshold values, third stream is holding min values,
18119 and last, fourth stream is holding max values.
18121 The filter accepts the following option:
18125 Set which planes will be processed, unprocessed planes will be copied.
18126 By default value 0xf, all planes will be processed.
18129 For example if first stream pixel's component value is less then threshold value
18130 of pixel component from 2nd threshold stream, third stream value will picked,
18131 otherwise fourth stream pixel component value will be picked.
18133 Using color source filter one can perform various types of thresholding:
18135 @subsection Examples
18139 Binary threshold, using gray color as threshold:
18141 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18145 Inverted binary threshold, using gray color as threshold:
18147 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18151 Truncate binary threshold, using gray color as threshold:
18153 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18157 Threshold to zero, using gray color as threshold:
18159 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18163 Inverted threshold to zero, using gray color as threshold:
18165 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18170 Select the most representative frame in a given sequence of consecutive frames.
18172 The filter accepts the following options:
18176 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18177 will pick one of them, and then handle the next batch of @var{n} frames until
18178 the end. Default is @code{100}.
18181 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18182 value will result in a higher memory usage, so a high value is not recommended.
18184 @subsection Examples
18188 Extract one picture each 50 frames:
18194 Complete example of a thumbnail creation with @command{ffmpeg}:
18196 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18203 Tile several successive frames together.
18205 The @ref{untile} filter can do the reverse.
18207 The filter accepts the following options:
18212 Set the grid size (i.e. the number of lines and columns). For the syntax of
18213 this option, check the
18214 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18217 Set the maximum number of frames to render in the given area. It must be less
18218 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18219 the area will be used.
18222 Set the outer border margin in pixels.
18225 Set the inner border thickness (i.e. the number of pixels between frames). For
18226 more advanced padding options (such as having different values for the edges),
18227 refer to the pad video filter.
18230 Specify the color of the unused area. For the syntax of this option, check the
18231 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18232 The default value of @var{color} is "black".
18235 Set the number of frames to overlap when tiling several successive frames together.
18236 The value must be between @code{0} and @var{nb_frames - 1}.
18239 Set the number of frames to initially be empty before displaying first output frame.
18240 This controls how soon will one get first output frame.
18241 The value must be between @code{0} and @var{nb_frames - 1}.
18244 @subsection Examples
18248 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18250 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18252 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18253 duplicating each output frame to accommodate the originally detected frame
18257 Display @code{5} pictures in an area of @code{3x2} frames,
18258 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18259 mixed flat and named options:
18261 tile=3x2:nb_frames=5:padding=7:margin=2
18265 @section tinterlace
18267 Perform various types of temporal field interlacing.
18269 Frames are counted starting from 1, so the first input frame is
18272 The filter accepts the following options:
18277 Specify the mode of the interlacing. This option can also be specified
18278 as a value alone. See below for a list of values for this option.
18280 Available values are:
18284 Move odd frames into the upper field, even into the lower field,
18285 generating a double height frame at half frame rate.
18289 Frame 1 Frame 2 Frame 3 Frame 4
18291 11111 22222 33333 44444
18292 11111 22222 33333 44444
18293 11111 22222 33333 44444
18294 11111 22222 33333 44444
18308 Only output odd frames, even frames are dropped, generating a frame with
18309 unchanged height at half frame rate.
18314 Frame 1 Frame 2 Frame 3 Frame 4
18316 11111 22222 33333 44444
18317 11111 22222 33333 44444
18318 11111 22222 33333 44444
18319 11111 22222 33333 44444
18329 Only output even frames, odd frames are dropped, generating a frame with
18330 unchanged height at half frame rate.
18335 Frame 1 Frame 2 Frame 3 Frame 4
18337 11111 22222 33333 44444
18338 11111 22222 33333 44444
18339 11111 22222 33333 44444
18340 11111 22222 33333 44444
18350 Expand each frame to full height, but pad alternate lines with black,
18351 generating a frame with double height at the same input frame rate.
18356 Frame 1 Frame 2 Frame 3 Frame 4
18358 11111 22222 33333 44444
18359 11111 22222 33333 44444
18360 11111 22222 33333 44444
18361 11111 22222 33333 44444
18364 11111 ..... 33333 .....
18365 ..... 22222 ..... 44444
18366 11111 ..... 33333 .....
18367 ..... 22222 ..... 44444
18368 11111 ..... 33333 .....
18369 ..... 22222 ..... 44444
18370 11111 ..... 33333 .....
18371 ..... 22222 ..... 44444
18375 @item interleave_top, 4
18376 Interleave the upper field from odd frames with the lower field from
18377 even frames, generating a frame with unchanged height at half frame rate.
18382 Frame 1 Frame 2 Frame 3 Frame 4
18384 11111<- 22222 33333<- 44444
18385 11111 22222<- 33333 44444<-
18386 11111<- 22222 33333<- 44444
18387 11111 22222<- 33333 44444<-
18397 @item interleave_bottom, 5
18398 Interleave the lower field from odd frames with the upper field from
18399 even frames, generating a frame with unchanged height at half frame rate.
18404 Frame 1 Frame 2 Frame 3 Frame 4
18406 11111 22222<- 33333 44444<-
18407 11111<- 22222 33333<- 44444
18408 11111 22222<- 33333 44444<-
18409 11111<- 22222 33333<- 44444
18419 @item interlacex2, 6
18420 Double frame rate with unchanged height. Frames are inserted each
18421 containing the second temporal field from the previous input frame and
18422 the first temporal field from the next input frame. This mode relies on
18423 the top_field_first flag. Useful for interlaced video displays with no
18424 field synchronisation.
18429 Frame 1 Frame 2 Frame 3 Frame 4
18431 11111 22222 33333 44444
18432 11111 22222 33333 44444
18433 11111 22222 33333 44444
18434 11111 22222 33333 44444
18437 11111 22222 22222 33333 33333 44444 44444
18438 11111 11111 22222 22222 33333 33333 44444
18439 11111 22222 22222 33333 33333 44444 44444
18440 11111 11111 22222 22222 33333 33333 44444
18445 Move odd frames into the upper field, even into the lower field,
18446 generating a double height frame at same frame rate.
18451 Frame 1 Frame 2 Frame 3 Frame 4
18453 11111 22222 33333 44444
18454 11111 22222 33333 44444
18455 11111 22222 33333 44444
18456 11111 22222 33333 44444
18459 11111 33333 33333 55555
18460 22222 22222 44444 44444
18461 11111 33333 33333 55555
18462 22222 22222 44444 44444
18463 11111 33333 33333 55555
18464 22222 22222 44444 44444
18465 11111 33333 33333 55555
18466 22222 22222 44444 44444
18471 Numeric values are deprecated but are accepted for backward
18472 compatibility reasons.
18474 Default mode is @code{merge}.
18477 Specify flags influencing the filter process.
18479 Available value for @var{flags} is:
18482 @item low_pass_filter, vlpf
18483 Enable linear vertical low-pass filtering in the filter.
18484 Vertical low-pass filtering is required when creating an interlaced
18485 destination from a progressive source which contains high-frequency
18486 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18489 @item complex_filter, cvlpf
18490 Enable complex vertical low-pass filtering.
18491 This will slightly less reduce interlace 'twitter' and Moire
18492 patterning but better retain detail and subjective sharpness impression.
18495 Bypass already interlaced frames, only adjust the frame rate.
18498 Vertical low-pass filtering and bypassing already interlaced frames can only be
18499 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18504 Pick median pixels from several successive input video frames.
18506 The filter accepts the following options:
18510 Set radius of median filter.
18511 Default is 1. Allowed range is from 1 to 127.
18514 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18517 Set median percentile. Default value is @code{0.5}.
18518 Default value of @code{0.5} will pick always median values, while @code{0} will pick
18519 minimum values, and @code{1} maximum values.
18524 Mix successive video frames.
18526 A description of the accepted options follows.
18530 The number of successive frames to mix. If unspecified, it defaults to 3.
18533 Specify weight of each input video frame.
18534 Each weight is separated by space. If number of weights is smaller than
18535 number of @var{frames} last specified weight will be used for all remaining
18539 Specify scale, if it is set it will be multiplied with sum
18540 of each weight multiplied with pixel values to give final destination
18541 pixel value. By default @var{scale} is auto scaled to sum of weights.
18544 @subsection Examples
18548 Average 7 successive frames:
18550 tmix=frames=7:weights="1 1 1 1 1 1 1"
18554 Apply simple temporal convolution:
18556 tmix=frames=3:weights="-1 3 -1"
18560 Similar as above but only showing temporal differences:
18562 tmix=frames=3:weights="-1 2 -1":scale=1
18568 Tone map colors from different dynamic ranges.
18570 This filter expects data in single precision floating point, as it needs to
18571 operate on (and can output) out-of-range values. Another filter, such as
18572 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18574 The tonemapping algorithms implemented only work on linear light, so input
18575 data should be linearized beforehand (and possibly correctly tagged).
18578 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18581 @subsection Options
18582 The filter accepts the following options.
18586 Set the tone map algorithm to use.
18588 Possible values are:
18591 Do not apply any tone map, only desaturate overbright pixels.
18594 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18595 in-range values, while distorting out-of-range values.
18598 Stretch the entire reference gamut to a linear multiple of the display.
18601 Fit a logarithmic transfer between the tone curves.
18604 Preserve overall image brightness with a simple curve, using nonlinear
18605 contrast, which results in flattening details and degrading color accuracy.
18608 Preserve both dark and bright details better than @var{reinhard}, at the cost
18609 of slightly darkening everything. Use it when detail preservation is more
18610 important than color and brightness accuracy.
18613 Smoothly map out-of-range values, while retaining contrast and colors for
18614 in-range material as much as possible. Use it when color accuracy is more
18615 important than detail preservation.
18621 Tune the tone mapping algorithm.
18623 This affects the following algorithms:
18629 Specifies the scale factor to use while stretching.
18633 Specifies the exponent of the function.
18637 Specify an extra linear coefficient to multiply into the signal before clipping.
18641 Specify the local contrast coefficient at the display peak.
18642 Default to 0.5, which means that in-gamut values will be about half as bright
18649 Specify the transition point from linear to mobius transform. Every value
18650 below this point is guaranteed to be mapped 1:1. The higher the value, the
18651 more accurate the result will be, at the cost of losing bright details.
18652 Default to 0.3, which due to the steep initial slope still preserves in-range
18653 colors fairly accurately.
18657 Apply desaturation for highlights that exceed this level of brightness. The
18658 higher the parameter, the more color information will be preserved. This
18659 setting helps prevent unnaturally blown-out colors for super-highlights, by
18660 (smoothly) turning into white instead. This makes images feel more natural,
18661 at the cost of reducing information about out-of-range colors.
18663 The default of 2.0 is somewhat conservative and will mostly just apply to
18664 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
18666 This option works only if the input frame has a supported color tag.
18669 Override signal/nominal/reference peak with this value. Useful when the
18670 embedded peak information in display metadata is not reliable or when tone
18671 mapping from a lower range to a higher range.
18676 Temporarily pad video frames.
18678 The filter accepts the following options:
18682 Specify number of delay frames before input video stream. Default is 0.
18685 Specify number of padding frames after input video stream.
18686 Set to -1 to pad indefinitely. Default is 0.
18689 Set kind of frames added to beginning of stream.
18690 Can be either @var{add} or @var{clone}.
18691 With @var{add} frames of solid-color are added.
18692 With @var{clone} frames are clones of first frame.
18693 Default is @var{add}.
18696 Set kind of frames added to end of stream.
18697 Can be either @var{add} or @var{clone}.
18698 With @var{add} frames of solid-color are added.
18699 With @var{clone} frames are clones of last frame.
18700 Default is @var{add}.
18702 @item start_duration, stop_duration
18703 Specify the duration of the start/stop delay. See
18704 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18705 for the accepted syntax.
18706 These options override @var{start} and @var{stop}. Default is 0.
18709 Specify the color of the padded area. For the syntax of this option,
18710 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
18711 manual,ffmpeg-utils}.
18713 The default value of @var{color} is "black".
18719 Transpose rows with columns in the input video and optionally flip it.
18721 It accepts the following parameters:
18726 Specify the transposition direction.
18728 Can assume the following values:
18730 @item 0, 4, cclock_flip
18731 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
18739 Rotate by 90 degrees clockwise, that is:
18747 Rotate by 90 degrees counterclockwise, that is:
18754 @item 3, 7, clock_flip
18755 Rotate by 90 degrees clockwise and vertically flip, that is:
18763 For values between 4-7, the transposition is only done if the input
18764 video geometry is portrait and not landscape. These values are
18765 deprecated, the @code{passthrough} option should be used instead.
18767 Numerical values are deprecated, and should be dropped in favor of
18768 symbolic constants.
18771 Do not apply the transposition if the input geometry matches the one
18772 specified by the specified value. It accepts the following values:
18775 Always apply transposition.
18777 Preserve portrait geometry (when @var{height} >= @var{width}).
18779 Preserve landscape geometry (when @var{width} >= @var{height}).
18782 Default value is @code{none}.
18785 For example to rotate by 90 degrees clockwise and preserve portrait
18788 transpose=dir=1:passthrough=portrait
18791 The command above can also be specified as:
18793 transpose=1:portrait
18796 @section transpose_npp
18798 Transpose rows with columns in the input video and optionally flip it.
18799 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18801 It accepts the following parameters:
18806 Specify the transposition direction.
18808 Can assume the following values:
18811 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18814 Rotate by 90 degrees clockwise.
18817 Rotate by 90 degrees counterclockwise.
18820 Rotate by 90 degrees clockwise and vertically flip.
18824 Do not apply the transposition if the input geometry matches the one
18825 specified by the specified value. It accepts the following values:
18828 Always apply transposition. (default)
18830 Preserve portrait geometry (when @var{height} >= @var{width}).
18832 Preserve landscape geometry (when @var{width} >= @var{height}).
18838 Trim the input so that the output contains one continuous subpart of the input.
18840 It accepts the following parameters:
18843 Specify the time of the start of the kept section, i.e. the frame with the
18844 timestamp @var{start} will be the first frame in the output.
18847 Specify the time of the first frame that will be dropped, i.e. the frame
18848 immediately preceding the one with the timestamp @var{end} will be the last
18849 frame in the output.
18852 This is the same as @var{start}, except this option sets the start timestamp
18853 in timebase units instead of seconds.
18856 This is the same as @var{end}, except this option sets the end timestamp
18857 in timebase units instead of seconds.
18860 The maximum duration of the output in seconds.
18863 The number of the first frame that should be passed to the output.
18866 The number of the first frame that should be dropped.
18869 @option{start}, @option{end}, and @option{duration} are expressed as time
18870 duration specifications; see
18871 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18872 for the accepted syntax.
18874 Note that the first two sets of the start/end options and the @option{duration}
18875 option look at the frame timestamp, while the _frame variants simply count the
18876 frames that pass through the filter. Also note that this filter does not modify
18877 the timestamps. If you wish for the output timestamps to start at zero, insert a
18878 setpts filter after the trim filter.
18880 If multiple start or end options are set, this filter tries to be greedy and
18881 keep all the frames that match at least one of the specified constraints. To keep
18882 only the part that matches all the constraints at once, chain multiple trim
18885 The defaults are such that all the input is kept. So it is possible to set e.g.
18886 just the end values to keep everything before the specified time.
18891 Drop everything except the second minute of input:
18893 ffmpeg -i INPUT -vf trim=60:120
18897 Keep only the first second:
18899 ffmpeg -i INPUT -vf trim=duration=1
18904 @section unpremultiply
18905 Apply alpha unpremultiply effect to input video stream using first plane
18906 of second stream as alpha.
18908 Both streams must have same dimensions and same pixel format.
18910 The filter accepts the following option:
18914 Set which planes will be processed, unprocessed planes will be copied.
18915 By default value 0xf, all planes will be processed.
18917 If the format has 1 or 2 components, then luma is bit 0.
18918 If the format has 3 or 4 components:
18919 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18920 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18921 If present, the alpha channel is always the last bit.
18924 Do not require 2nd input for processing, instead use alpha plane from input stream.
18930 Sharpen or blur the input video.
18932 It accepts the following parameters:
18935 @item luma_msize_x, lx
18936 Set the luma matrix horizontal size. It must be an odd integer between
18937 3 and 23. The default value is 5.
18939 @item luma_msize_y, ly
18940 Set the luma matrix vertical size. It must be an odd integer between 3
18941 and 23. The default value is 5.
18943 @item luma_amount, la
18944 Set the luma effect strength. It must be a floating point number, reasonable
18945 values lay between -1.5 and 1.5.
18947 Negative values will blur the input video, while positive values will
18948 sharpen it, a value of zero will disable the effect.
18950 Default value is 1.0.
18952 @item chroma_msize_x, cx
18953 Set the chroma matrix horizontal size. It must be an odd integer
18954 between 3 and 23. The default value is 5.
18956 @item chroma_msize_y, cy
18957 Set the chroma matrix vertical size. It must be an odd integer
18958 between 3 and 23. The default value is 5.
18960 @item chroma_amount, ca
18961 Set the chroma effect strength. It must be a floating point number, reasonable
18962 values lay between -1.5 and 1.5.
18964 Negative values will blur the input video, while positive values will
18965 sharpen it, a value of zero will disable the effect.
18967 Default value is 0.0.
18971 All parameters are optional and default to the equivalent of the
18972 string '5:5:1.0:5:5:0.0'.
18974 @subsection Examples
18978 Apply strong luma sharpen effect:
18980 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18984 Apply a strong blur of both luma and chroma parameters:
18986 unsharp=7:7:-2:7:7:-2
18993 Decompose a video made of tiled images into the individual images.
18995 The frame rate of the output video is the frame rate of the input video
18996 multiplied by the number of tiles.
18998 This filter does the reverse of @ref{tile}.
19000 The filter accepts the following options:
19005 Set the grid size (i.e. the number of lines and columns). For the syntax of
19006 this option, check the
19007 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19010 @subsection Examples
19014 Produce a 1-second video from a still image file made of 25 frames stacked
19015 vertically, like an analogic film reel:
19017 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19023 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19024 the image at several (or - in the case of @option{quality} level @code{8} - all)
19025 shifts and average the results.
19027 The way this differs from the behavior of spp is that uspp actually encodes &
19028 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19029 DCT similar to MJPEG.
19031 The filter accepts the following options:
19035 Set quality. This option defines the number of levels for averaging. It accepts
19036 an integer in the range 0-8. If set to @code{0}, the filter will have no
19037 effect. A value of @code{8} means the higher quality. For each increment of
19038 that value the speed drops by a factor of approximately 2. Default value is
19042 Force a constant quantization parameter. If not set, the filter will use the QP
19043 from the video stream (if available).
19048 Convert 360 videos between various formats.
19050 The filter accepts the following options:
19056 Set format of the input/output video.
19064 Equirectangular projection.
19069 Cubemap with 3x2/6x1/1x6 layout.
19071 Format specific options:
19076 Set padding proportion for the input/output cubemap. Values in decimals.
19083 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)
19086 Default value is @b{@samp{0}}.
19087 Maximum value is @b{@samp{0.1}}.
19091 Set fixed padding for the input/output cubemap. Values in pixels.
19093 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19097 Set order of faces for the input/output cubemap. Choose one direction for each position.
19099 Designation of directions:
19115 Default value is @b{@samp{rludfb}}.
19119 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19121 Designation of angles:
19124 0 degrees clockwise
19126 90 degrees clockwise
19128 180 degrees clockwise
19130 270 degrees clockwise
19133 Default value is @b{@samp{000000}}.
19137 Equi-Angular Cubemap.
19144 Format specific options:
19149 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19151 If diagonal field of view is set it overrides horizontal and vertical field of view.
19156 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19158 If diagonal field of view is set it overrides horizontal and vertical field of view.
19164 Format specific options:
19169 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19171 If diagonal field of view is set it overrides horizontal and vertical field of view.
19176 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19178 If diagonal field of view is set it overrides horizontal and vertical field of view.
19184 Facebook's 360 formats.
19187 Stereographic format.
19189 Format specific options:
19194 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19196 If diagonal field of view is set it overrides horizontal and vertical field of view.
19201 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19203 If diagonal field of view is set it overrides horizontal and vertical field of view.
19210 Ball format, gives significant distortion toward the back.
19213 Hammer-Aitoff map projection format.
19216 Sinusoidal map projection format.
19219 Fisheye projection.
19221 Format specific options:
19226 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19228 If diagonal field of view is set it overrides horizontal and vertical field of view.
19233 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19235 If diagonal field of view is set it overrides horizontal and vertical field of view.
19239 Pannini projection.
19241 Format specific options:
19244 Set output pannini parameter.
19247 Set input pannini parameter.
19251 Cylindrical projection.
19253 Format specific options:
19258 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19260 If diagonal field of view is set it overrides horizontal and vertical field of view.
19265 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19267 If diagonal field of view is set it overrides horizontal and vertical field of view.
19271 Perspective projection. @i{(output only)}
19273 Format specific options:
19276 Set perspective parameter.
19280 Tetrahedron projection.
19283 Truncated square pyramid projection.
19287 Half equirectangular projection.
19291 Set interpolation method.@*
19292 @i{Note: more complex interpolation methods require much more memory to run.}
19302 Bilinear interpolation.
19304 Lagrange9 interpolation.
19307 Bicubic interpolation.
19310 Lanczos interpolation.
19313 Spline16 interpolation.
19316 Gaussian interpolation.
19319 Default value is @b{@samp{line}}.
19323 Set the output video resolution.
19325 Default resolution depends on formats.
19329 Set the input/output stereo format.
19340 Default value is @b{@samp{2d}} for input and output format.
19345 Set rotation for the output video. Values in degrees.
19348 Set rotation order for the output video. Choose one item for each position.
19359 Default value is @b{@samp{ypr}}.
19364 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19368 Set if input video is flipped horizontally/vertically. Boolean values.
19371 Set if input video is transposed. Boolean value, by default disabled.
19374 Set if output video needs to be transposed. Boolean value, by default disabled.
19377 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19380 @subsection Examples
19384 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19386 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19389 Extract back view of Equi-Angular Cubemap:
19391 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19394 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19396 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19400 @subsection Commands
19402 This filter supports subset of above options as @ref{commands}.
19404 @section vaguedenoiser
19406 Apply a wavelet based denoiser.
19408 It transforms each frame from the video input into the wavelet domain,
19409 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19410 the obtained coefficients. It does an inverse wavelet transform after.
19411 Due to wavelet properties, it should give a nice smoothed result, and
19412 reduced noise, without blurring picture features.
19414 This filter accepts the following options:
19418 The filtering strength. The higher, the more filtered the video will be.
19419 Hard thresholding can use a higher threshold than soft thresholding
19420 before the video looks overfiltered. Default value is 2.
19423 The filtering method the filter will use.
19425 It accepts the following values:
19428 All values under the threshold will be zeroed.
19431 All values under the threshold will be zeroed. All values above will be
19432 reduced by the threshold.
19435 Scales or nullifies coefficients - intermediary between (more) soft and
19436 (less) hard thresholding.
19439 Default is garrote.
19442 Number of times, the wavelet will decompose the picture. Picture can't
19443 be decomposed beyond a particular point (typically, 8 for a 640x480
19444 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19447 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19450 A list of the planes to process. By default all planes are processed.
19453 @section vectorscope
19455 Display 2 color component values in the two dimensional graph (which is called
19458 This filter accepts the following options:
19462 Set vectorscope mode.
19464 It accepts the following values:
19468 Gray values are displayed on graph, higher brightness means more pixels have
19469 same component color value on location in graph. This is the default mode.
19472 Gray values are displayed on graph. Surrounding pixels values which are not
19473 present in video frame are drawn in gradient of 2 color components which are
19474 set by option @code{x} and @code{y}. The 3rd color component is static.
19477 Actual color components values present in video frame are displayed on graph.
19480 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19481 on graph increases value of another color component, which is luminance by
19482 default values of @code{x} and @code{y}.
19485 Actual colors present in video frame are displayed on graph. If two different
19486 colors map to same position on graph then color with higher value of component
19487 not present in graph is picked.
19490 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19491 component picked from radial gradient.
19495 Set which color component will be represented on X-axis. Default is @code{1}.
19498 Set which color component will be represented on Y-axis. Default is @code{2}.
19501 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19502 of color component which represents frequency of (X, Y) location in graph.
19507 No envelope, this is default.
19510 Instant envelope, even darkest single pixel will be clearly highlighted.
19513 Hold maximum and minimum values presented in graph over time. This way you
19514 can still spot out of range values without constantly looking at vectorscope.
19517 Peak and instant envelope combined together.
19521 Set what kind of graticule to draw.
19530 Set graticule opacity.
19533 Set graticule flags.
19537 Draw graticule for white point.
19540 Draw graticule for black point.
19543 Draw color points short names.
19547 Set background opacity.
19549 @item lthreshold, l
19550 Set low threshold for color component not represented on X or Y axis.
19551 Values lower than this value will be ignored. Default is 0.
19552 Note this value is multiplied with actual max possible value one pixel component
19553 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
19556 @item hthreshold, h
19557 Set high threshold for color component not represented on X or Y axis.
19558 Values higher than this value will be ignored. Default is 1.
19559 Note this value is multiplied with actual max possible value one pixel component
19560 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
19561 is 0.9 * 255 = 230.
19563 @item colorspace, c
19564 Set what kind of colorspace to use when drawing graticule.
19574 Set color tint for gray/tint vectorscope mode. By default both options are zero.
19575 This means no tint, and output will remain gray.
19578 @anchor{vidstabdetect}
19579 @section vidstabdetect
19581 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
19582 @ref{vidstabtransform} for pass 2.
19584 This filter generates a file with relative translation and rotation
19585 transform information about subsequent frames, which is then used by
19586 the @ref{vidstabtransform} filter.
19588 To enable compilation of this filter you need to configure FFmpeg with
19589 @code{--enable-libvidstab}.
19591 This filter accepts the following options:
19595 Set the path to the file used to write the transforms information.
19596 Default value is @file{transforms.trf}.
19599 Set how shaky the video is and how quick the camera is. It accepts an
19600 integer in the range 1-10, a value of 1 means little shakiness, a
19601 value of 10 means strong shakiness. Default value is 5.
19604 Set the accuracy of the detection process. It must be a value in the
19605 range 1-15. A value of 1 means low accuracy, a value of 15 means high
19606 accuracy. Default value is 15.
19609 Set stepsize of the search process. The region around minimum is
19610 scanned with 1 pixel resolution. Default value is 6.
19613 Set minimum contrast. Below this value a local measurement field is
19614 discarded. Must be a floating point value in the range 0-1. Default
19618 Set reference frame number for tripod mode.
19620 If enabled, the motion of the frames is compared to a reference frame
19621 in the filtered stream, identified by the specified number. The idea
19622 is to compensate all movements in a more-or-less static scene and keep
19623 the camera view absolutely still.
19625 If set to 0, it is disabled. The frames are counted starting from 1.
19628 Show fields and transforms in the resulting frames. It accepts an
19629 integer in the range 0-2. Default value is 0, which disables any
19633 @subsection Examples
19637 Use default values:
19643 Analyze strongly shaky movie and put the results in file
19644 @file{mytransforms.trf}:
19646 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
19650 Visualize the result of internal transformations in the resulting
19653 vidstabdetect=show=1
19657 Analyze a video with medium shakiness using @command{ffmpeg}:
19659 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
19663 @anchor{vidstabtransform}
19664 @section vidstabtransform
19666 Video stabilization/deshaking: pass 2 of 2,
19667 see @ref{vidstabdetect} for pass 1.
19669 Read a file with transform information for each frame and
19670 apply/compensate them. Together with the @ref{vidstabdetect}
19671 filter this can be used to deshake videos. See also
19672 @url{http://public.hronopik.de/vid.stab}. It is important to also use
19673 the @ref{unsharp} filter, see below.
19675 To enable compilation of this filter you need to configure FFmpeg with
19676 @code{--enable-libvidstab}.
19678 @subsection Options
19682 Set path to the file used to read the transforms. Default value is
19683 @file{transforms.trf}.
19686 Set the number of frames (value*2 + 1) used for lowpass filtering the
19687 camera movements. Default value is 10.
19689 For example a number of 10 means that 21 frames are used (10 in the
19690 past and 10 in the future) to smoothen the motion in the video. A
19691 larger value leads to a smoother video, but limits the acceleration of
19692 the camera (pan/tilt movements). 0 is a special case where a static
19693 camera is simulated.
19696 Set the camera path optimization algorithm.
19698 Accepted values are:
19701 gaussian kernel low-pass filter on camera motion (default)
19703 averaging on transformations
19707 Set maximal number of pixels to translate frames. Default value is -1,
19711 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
19712 value is -1, meaning no limit.
19715 Specify how to deal with borders that may be visible due to movement
19718 Available values are:
19721 keep image information from previous frame (default)
19723 fill the border black
19727 Invert transforms if set to 1. Default value is 0.
19730 Consider transforms as relative to previous frame if set to 1,
19731 absolute if set to 0. Default value is 0.
19734 Set percentage to zoom. A positive value will result in a zoom-in
19735 effect, a negative value in a zoom-out effect. Default value is 0 (no
19739 Set optimal zooming to avoid borders.
19741 Accepted values are:
19746 optimal static zoom value is determined (only very strong movements
19747 will lead to visible borders) (default)
19749 optimal adaptive zoom value is determined (no borders will be
19750 visible), see @option{zoomspeed}
19753 Note that the value given at zoom is added to the one calculated here.
19756 Set percent to zoom maximally each frame (enabled when
19757 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
19761 Specify type of interpolation.
19763 Available values are:
19768 linear only horizontal
19770 linear in both directions (default)
19772 cubic in both directions (slow)
19776 Enable virtual tripod mode if set to 1, which is equivalent to
19777 @code{relative=0:smoothing=0}. Default value is 0.
19779 Use also @code{tripod} option of @ref{vidstabdetect}.
19782 Increase log verbosity if set to 1. Also the detected global motions
19783 are written to the temporary file @file{global_motions.trf}. Default
19787 @subsection Examples
19791 Use @command{ffmpeg} for a typical stabilization with default values:
19793 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
19796 Note the use of the @ref{unsharp} filter which is always recommended.
19799 Zoom in a bit more and load transform data from a given file:
19801 vidstabtransform=zoom=5:input="mytransforms.trf"
19805 Smoothen the video even more:
19807 vidstabtransform=smoothing=30
19813 Flip the input video vertically.
19815 For example, to vertically flip a video with @command{ffmpeg}:
19817 ffmpeg -i in.avi -vf "vflip" out.avi
19822 Detect variable frame rate video.
19824 This filter tries to detect if the input is variable or constant frame rate.
19826 At end it will output number of frames detected as having variable delta pts,
19827 and ones with constant delta pts.
19828 If there was frames with variable delta, than it will also show min, max and
19829 average delta encountered.
19833 Boost or alter saturation.
19835 The filter accepts the following options:
19838 Set strength of boost if positive value or strength of alter if negative value.
19839 Default is 0. Allowed range is from -2 to 2.
19842 Set the red balance. Default is 1. Allowed range is from -10 to 10.
19845 Set the green balance. Default is 1. Allowed range is from -10 to 10.
19848 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
19851 Set the red luma coefficient.
19854 Set the green luma coefficient.
19857 Set the blue luma coefficient.
19860 If @code{intensity} is negative and this is set to 1, colors will change,
19861 otherwise colors will be less saturated, more towards gray.
19864 @subsection Commands
19866 This filter supports the all above options as @ref{commands}.
19871 Make or reverse a natural vignetting effect.
19873 The filter accepts the following options:
19877 Set lens angle expression as a number of radians.
19879 The value is clipped in the @code{[0,PI/2]} range.
19881 Default value: @code{"PI/5"}
19885 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
19889 Set forward/backward mode.
19891 Available modes are:
19894 The larger the distance from the central point, the darker the image becomes.
19897 The larger the distance from the central point, the brighter the image becomes.
19898 This can be used to reverse a vignette effect, though there is no automatic
19899 detection to extract the lens @option{angle} and other settings (yet). It can
19900 also be used to create a burning effect.
19903 Default value is @samp{forward}.
19906 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
19908 It accepts the following values:
19911 Evaluate expressions only once during the filter initialization.
19914 Evaluate expressions for each incoming frame. This is way slower than the
19915 @samp{init} mode since it requires all the scalers to be re-computed, but it
19916 allows advanced dynamic expressions.
19919 Default value is @samp{init}.
19922 Set dithering to reduce the circular banding effects. Default is @code{1}
19926 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
19927 Setting this value to the SAR of the input will make a rectangular vignetting
19928 following the dimensions of the video.
19930 Default is @code{1/1}.
19933 @subsection Expressions
19935 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
19936 following parameters.
19941 input width and height
19944 the number of input frame, starting from 0
19947 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
19948 @var{TB} units, NAN if undefined
19951 frame rate of the input video, NAN if the input frame rate is unknown
19954 the PTS (Presentation TimeStamp) of the filtered video frame,
19955 expressed in seconds, NAN if undefined
19958 time base of the input video
19962 @subsection Examples
19966 Apply simple strong vignetting effect:
19972 Make a flickering vignetting:
19974 vignette='PI/4+random(1)*PI/50':eval=frame
19979 @section vmafmotion
19981 Obtain the average VMAF motion score of a video.
19982 It is one of the component metrics of VMAF.
19984 The obtained average motion score is printed through the logging system.
19986 The filter accepts the following options:
19990 If specified, the filter will use the named file to save the motion score of
19991 each frame with respect to the previous frame.
19992 When filename equals "-" the data is sent to standard output.
19997 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20001 Stack input videos vertically.
20003 All streams must be of same pixel format and of same width.
20005 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20006 to create same output.
20008 The filter accepts the following options:
20012 Set number of input streams. Default is 2.
20015 If set to 1, force the output to terminate when the shortest input
20016 terminates. Default value is 0.
20021 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20022 Deinterlacing Filter").
20024 Based on the process described by Martin Weston for BBC R&D, and
20025 implemented based on the de-interlace algorithm written by Jim
20026 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20027 uses filter coefficients calculated by BBC R&D.
20029 This filter uses field-dominance information in frame to decide which
20030 of each pair of fields to place first in the output.
20031 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20033 There are two sets of filter coefficients, so called "simple"
20034 and "complex". Which set of filter coefficients is used can
20035 be set by passing an optional parameter:
20039 Set the interlacing filter coefficients. Accepts one of the following values:
20043 Simple filter coefficient set.
20045 More-complex filter coefficient set.
20047 Default value is @samp{complex}.
20050 Specify which frames to deinterlace. Accepts one of the following values:
20054 Deinterlace all frames,
20056 Only deinterlace frames marked as interlaced.
20059 Default value is @samp{all}.
20063 Video waveform monitor.
20065 The waveform monitor plots color component intensity. By default luminance
20066 only. Each column of the waveform corresponds to a column of pixels in the
20069 It accepts the following options:
20073 Can be either @code{row}, or @code{column}. Default is @code{column}.
20074 In row mode, the graph on the left side represents color component value 0 and
20075 the right side represents value = 255. In column mode, the top side represents
20076 color component value = 0 and bottom side represents value = 255.
20079 Set intensity. Smaller values are useful to find out how many values of the same
20080 luminance are distributed across input rows/columns.
20081 Default value is @code{0.04}. Allowed range is [0, 1].
20084 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20085 In mirrored mode, higher values will be represented on the left
20086 side for @code{row} mode and at the top for @code{column} mode. Default is
20087 @code{1} (mirrored).
20091 It accepts the following values:
20094 Presents information identical to that in the @code{parade}, except
20095 that the graphs representing color components are superimposed directly
20098 This display mode makes it easier to spot relative differences or similarities
20099 in overlapping areas of the color components that are supposed to be identical,
20100 such as neutral whites, grays, or blacks.
20103 Display separate graph for the color components side by side in
20104 @code{row} mode or one below the other in @code{column} mode.
20107 Display separate graph for the color components side by side in
20108 @code{column} mode or one below the other in @code{row} mode.
20110 Using this display mode makes it easy to spot color casts in the highlights
20111 and shadows of an image, by comparing the contours of the top and the bottom
20112 graphs of each waveform. Since whites, grays, and blacks are characterized
20113 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20114 should display three waveforms of roughly equal width/height. If not, the
20115 correction is easy to perform by making level adjustments the three waveforms.
20117 Default is @code{stack}.
20119 @item components, c
20120 Set which color components to display. Default is 1, which means only luminance
20121 or red color component if input is in RGB colorspace. If is set for example to
20122 7 it will display all 3 (if) available color components.
20127 No envelope, this is default.
20130 Instant envelope, minimum and maximum values presented in graph will be easily
20131 visible even with small @code{step} value.
20134 Hold minimum and maximum values presented in graph across time. This way you
20135 can still spot out of range values without constantly looking at waveforms.
20138 Peak and instant envelope combined together.
20144 No filtering, this is default.
20147 Luma and chroma combined together.
20150 Similar as above, but shows difference between blue and red chroma.
20153 Similar as above, but use different colors.
20156 Similar as above, but again with different colors.
20159 Displays only chroma.
20162 Displays actual color value on waveform.
20165 Similar as above, but with luma showing frequency of chroma values.
20169 Set which graticule to display.
20173 Do not display graticule.
20176 Display green graticule showing legal broadcast ranges.
20179 Display orange graticule showing legal broadcast ranges.
20182 Display invert graticule showing legal broadcast ranges.
20186 Set graticule opacity.
20189 Set graticule flags.
20193 Draw numbers above lines. By default enabled.
20196 Draw dots instead of lines.
20200 Set scale used for displaying graticule.
20207 Default is digital.
20210 Set background opacity.
20214 Set tint for output.
20215 Only used with lowpass filter and when display is not overlay and input
20216 pixel formats are not RGB.
20219 @section weave, doubleweave
20221 The @code{weave} takes a field-based video input and join
20222 each two sequential fields into single frame, producing a new double
20223 height clip with half the frame rate and half the frame count.
20225 The @code{doubleweave} works same as @code{weave} but without
20226 halving frame rate and frame count.
20228 It accepts the following option:
20232 Set first field. Available values are:
20236 Set the frame as top-field-first.
20239 Set the frame as bottom-field-first.
20243 @subsection Examples
20247 Interlace video using @ref{select} and @ref{separatefields} filter:
20249 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20254 Apply the xBR high-quality magnification filter which is designed for pixel
20255 art. It follows a set of edge-detection rules, see
20256 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20258 It accepts the following option:
20262 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20263 @code{3xBR} and @code{4} for @code{4xBR}.
20264 Default is @code{3}.
20269 Apply cross fade from one input video stream to another input video stream.
20270 The cross fade is applied for specified duration.
20272 The filter accepts the following options:
20276 Set one of available transition effects:
20316 Default transition effect is fade.
20319 Set cross fade duration in seconds.
20320 Default duration is 1 second.
20323 Set cross fade start relative to first input stream in seconds.
20324 Default offset is 0.
20327 Set expression for custom transition effect.
20329 The expressions can use the following variables and functions:
20334 The coordinates of the current sample.
20338 The width and height of the image.
20341 Progress of transition effect.
20344 Currently processed plane.
20347 Return value of first input at current location and plane.
20350 Return value of second input at current location and plane.
20356 Return the value of the pixel at location (@var{x},@var{y}) of the
20357 first/second/third/fourth component of first input.
20363 Return the value of the pixel at location (@var{x},@var{y}) of the
20364 first/second/third/fourth component of second input.
20368 @subsection Examples
20372 Cross fade from one input video to another input video, with fade transition and duration of transition
20373 of 2 seconds starting at offset of 5 seconds:
20375 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20380 Pick median pixels from several input videos.
20382 The filter accepts the following options:
20386 Set number of inputs.
20387 Default is 3. Allowed range is from 3 to 255.
20388 If number of inputs is even number, than result will be mean value between two median values.
20391 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20394 Set median percentile. Default value is @code{0.5}.
20395 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20396 minimum values, and @code{1} maximum values.
20400 Stack video inputs into custom layout.
20402 All streams must be of same pixel format.
20404 The filter accepts the following options:
20408 Set number of input streams. Default is 2.
20411 Specify layout of inputs.
20412 This option requires the desired layout configuration to be explicitly set by the user.
20413 This sets position of each video input in output. Each input
20414 is separated by '|'.
20415 The first number represents the column, and the second number represents the row.
20416 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20417 where X is video input from which to take width or height.
20418 Multiple values can be used when separated by '+'. In such
20419 case values are summed together.
20421 Note that if inputs are of different sizes gaps may appear, as not all of
20422 the output video frame will be filled. Similarly, videos can overlap each
20423 other if their position doesn't leave enough space for the full frame of
20426 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20427 a layout must be set by the user.
20430 If set to 1, force the output to terminate when the shortest input
20431 terminates. Default value is 0.
20434 If set to valid color, all unused pixels will be filled with that color.
20435 By default fill is set to none, so it is disabled.
20438 @subsection Examples
20442 Display 4 inputs into 2x2 grid.
20446 input1(0, 0) | input3(w0, 0)
20447 input2(0, h0) | input4(w0, h0)
20451 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20454 Note that if inputs are of different sizes, gaps or overlaps may occur.
20457 Display 4 inputs into 1x4 grid.
20464 input4(0, h0+h1+h2)
20468 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20471 Note that if inputs are of different widths, unused space will appear.
20474 Display 9 inputs into 3x3 grid.
20478 input1(0, 0) | input4(w0, 0) | input7(w0+w3, 0)
20479 input2(0, h0) | input5(w0, h0) | input8(w0+w3, h0)
20480 input3(0, h0+h1) | input6(w0, h0+h1) | input9(w0+w3, h0+h1)
20484 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
20487 Note that if inputs are of different sizes, gaps or overlaps may occur.
20490 Display 16 inputs into 4x4 grid.
20494 input1(0, 0) | input5(w0, 0) | input9 (w0+w4, 0) | input13(w0+w4+w8, 0)
20495 input2(0, h0) | input6(w0, h0) | input10(w0+w4, h0) | input14(w0+w4+w8, h0)
20496 input3(0, h0+h1) | input7(w0, h0+h1) | input11(w0+w4, h0+h1) | input15(w0+w4+w8, h0+h1)
20497 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20501 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|
20502 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
20505 Note that if inputs are of different sizes, gaps or overlaps may occur.
20512 Deinterlace the input video ("yadif" means "yet another deinterlacing
20515 It accepts the following parameters:
20521 The interlacing mode to adopt. It accepts one of the following values:
20524 @item 0, send_frame
20525 Output one frame for each frame.
20526 @item 1, send_field
20527 Output one frame for each field.
20528 @item 2, send_frame_nospatial
20529 Like @code{send_frame}, but it skips the spatial interlacing check.
20530 @item 3, send_field_nospatial
20531 Like @code{send_field}, but it skips the spatial interlacing check.
20534 The default value is @code{send_frame}.
20537 The picture field parity assumed for the input interlaced video. It accepts one
20538 of the following values:
20542 Assume the top field is first.
20544 Assume the bottom field is first.
20546 Enable automatic detection of field parity.
20549 The default value is @code{auto}.
20550 If the interlacing is unknown or the decoder does not export this information,
20551 top field first will be assumed.
20554 Specify which frames to deinterlace. Accepts one of the following
20559 Deinterlace all frames.
20560 @item 1, interlaced
20561 Only deinterlace frames marked as interlaced.
20564 The default value is @code{all}.
20567 @section yadif_cuda
20569 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
20570 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
20573 It accepts the following parameters:
20579 The interlacing mode to adopt. It accepts one of the following values:
20582 @item 0, send_frame
20583 Output one frame for each frame.
20584 @item 1, send_field
20585 Output one frame for each field.
20586 @item 2, send_frame_nospatial
20587 Like @code{send_frame}, but it skips the spatial interlacing check.
20588 @item 3, send_field_nospatial
20589 Like @code{send_field}, but it skips the spatial interlacing check.
20592 The default value is @code{send_frame}.
20595 The picture field parity assumed for the input interlaced video. It accepts one
20596 of the following values:
20600 Assume the top field is first.
20602 Assume the bottom field is first.
20604 Enable automatic detection of field parity.
20607 The default value is @code{auto}.
20608 If the interlacing is unknown or the decoder does not export this information,
20609 top field first will be assumed.
20612 Specify which frames to deinterlace. Accepts one of the following
20617 Deinterlace all frames.
20618 @item 1, interlaced
20619 Only deinterlace frames marked as interlaced.
20622 The default value is @code{all}.
20627 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
20628 The algorithm is described in
20629 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
20631 It accepts the following parameters:
20635 Set the window radius. Default value is 3.
20638 Set which planes to filter. Default is only the first plane.
20641 Set blur strength. Default value is 128.
20644 @subsection Commands
20645 This filter supports same @ref{commands} as options.
20649 Apply Zoom & Pan effect.
20651 This filter accepts the following options:
20655 Set the zoom expression. Range is 1-10. Default is 1.
20659 Set the x and y expression. Default is 0.
20662 Set the duration expression in number of frames.
20663 This sets for how many number of frames effect will last for
20664 single input image.
20667 Set the output image size, default is 'hd720'.
20670 Set the output frame rate, default is '25'.
20673 Each expression can contain the following constants:
20692 Output frame count.
20696 Last calculated 'x' and 'y' position from 'x' and 'y' expression
20697 for current input frame.
20701 'x' and 'y' of last output frame of previous input frame or 0 when there was
20702 not yet such frame (first input frame).
20705 Last calculated zoom from 'z' expression for current input frame.
20708 Last calculated zoom of last output frame of previous input frame.
20711 Number of output frames for current input frame. Calculated from 'd' expression
20712 for each input frame.
20715 number of output frames created for previous input frame
20718 Rational number: input width / input height
20721 sample aspect ratio
20724 display aspect ratio
20728 @subsection Examples
20732 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
20734 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
20738 Zoom-in up to 1.5 and pan always at center of picture:
20740 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20744 Same as above but without pausing:
20746 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20752 Scale (resize) the input video, using the z.lib library:
20753 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
20754 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
20756 The zscale filter forces the output display aspect ratio to be the same
20757 as the input, by changing the output sample aspect ratio.
20759 If the input image format is different from the format requested by
20760 the next filter, the zscale filter will convert the input to the
20763 @subsection Options
20764 The filter accepts the following options.
20769 Set the output video dimension expression. Default value is the input
20772 If the @var{width} or @var{w} value is 0, the input width is used for
20773 the output. If the @var{height} or @var{h} value is 0, the input height
20774 is used for the output.
20776 If one and only one of the values is -n with n >= 1, the zscale filter
20777 will use a value that maintains the aspect ratio of the input image,
20778 calculated from the other specified dimension. After that it will,
20779 however, make sure that the calculated dimension is divisible by n and
20780 adjust the value if necessary.
20782 If both values are -n with n >= 1, the behavior will be identical to
20783 both values being set to 0 as previously detailed.
20785 See below for the list of accepted constants for use in the dimension
20789 Set the video size. For the syntax of this option, check the
20790 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20793 Set the dither type.
20795 Possible values are:
20800 @item error_diffusion
20806 Set the resize filter type.
20808 Possible values are:
20818 Default is bilinear.
20821 Set the color range.
20823 Possible values are:
20830 Default is same as input.
20833 Set the color primaries.
20835 Possible values are:
20845 Default is same as input.
20848 Set the transfer characteristics.
20850 Possible values are:
20864 Default is same as input.
20867 Set the colorspace matrix.
20869 Possible value are:
20880 Default is same as input.
20883 Set the input color range.
20885 Possible values are:
20892 Default is same as input.
20894 @item primariesin, pin
20895 Set the input color primaries.
20897 Possible values are:
20907 Default is same as input.
20909 @item transferin, tin
20910 Set the input transfer characteristics.
20912 Possible values are:
20923 Default is same as input.
20925 @item matrixin, min
20926 Set the input colorspace matrix.
20928 Possible value are:
20940 Set the output chroma location.
20942 Possible values are:
20953 @item chromalin, cin
20954 Set the input chroma location.
20956 Possible values are:
20968 Set the nominal peak luminance.
20971 The values of the @option{w} and @option{h} options are expressions
20972 containing the following constants:
20977 The input width and height
20981 These are the same as @var{in_w} and @var{in_h}.
20985 The output (scaled) width and height
20989 These are the same as @var{out_w} and @var{out_h}
20992 The same as @var{iw} / @var{ih}
20995 input sample aspect ratio
20998 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21002 horizontal and vertical input chroma subsample values. For example for the
21003 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21007 horizontal and vertical output chroma subsample values. For example for the
21008 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21011 @subsection Commands
21013 This filter supports the following commands:
21017 Set the output video dimension expression.
21018 The command accepts the same syntax of the corresponding option.
21020 If the specified expression is not valid, it is kept at its current
21024 @c man end VIDEO FILTERS
21026 @chapter OpenCL Video Filters
21027 @c man begin OPENCL VIDEO FILTERS
21029 Below is a description of the currently available OpenCL video filters.
21031 To enable compilation of these filters you need to configure FFmpeg with
21032 @code{--enable-opencl}.
21034 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21037 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21038 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21039 given device parameters.
21041 @item -filter_hw_device @var{name}
21042 Pass the hardware device called @var{name} to all filters in any filter graph.
21046 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21050 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21052 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21056 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.
21058 @section avgblur_opencl
21060 Apply average blur filter.
21062 The filter accepts the following options:
21066 Set horizontal radius size.
21067 Range is @code{[1, 1024]} and default value is @code{1}.
21070 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21073 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21076 @subsection Example
21080 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.
21082 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21086 @section boxblur_opencl
21088 Apply a boxblur algorithm to the input video.
21090 It accepts the following parameters:
21094 @item luma_radius, lr
21095 @item luma_power, lp
21096 @item chroma_radius, cr
21097 @item chroma_power, cp
21098 @item alpha_radius, ar
21099 @item alpha_power, ap
21103 A description of the accepted options follows.
21106 @item luma_radius, lr
21107 @item chroma_radius, cr
21108 @item alpha_radius, ar
21109 Set an expression for the box radius in pixels used for blurring the
21110 corresponding input plane.
21112 The radius value must be a non-negative number, and must not be
21113 greater than the value of the expression @code{min(w,h)/2} for the
21114 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21117 Default value for @option{luma_radius} is "2". If not specified,
21118 @option{chroma_radius} and @option{alpha_radius} default to the
21119 corresponding value set for @option{luma_radius}.
21121 The expressions can contain the following constants:
21125 The input width and height in pixels.
21129 The input chroma image width and height in pixels.
21133 The horizontal and vertical chroma subsample values. For example, for the
21134 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21137 @item luma_power, lp
21138 @item chroma_power, cp
21139 @item alpha_power, ap
21140 Specify how many times the boxblur filter is applied to the
21141 corresponding plane.
21143 Default value for @option{luma_power} is 2. If not specified,
21144 @option{chroma_power} and @option{alpha_power} default to the
21145 corresponding value set for @option{luma_power}.
21147 A value of 0 will disable the effect.
21150 @subsection Examples
21152 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.
21156 Apply a boxblur filter with the luma, chroma, and alpha radius
21157 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.
21159 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21160 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21164 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.
21166 For the luma plane, a 2x2 box radius will be run once.
21168 For the chroma plane, a 4x4 box radius will be run 5 times.
21170 For the alpha plane, a 3x3 box radius will be run 7 times.
21172 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21176 @section colorkey_opencl
21177 RGB colorspace color keying.
21179 The filter accepts the following options:
21183 The color which will be replaced with transparency.
21186 Similarity percentage with the key color.
21188 0.01 matches only the exact key color, while 1.0 matches everything.
21193 0.0 makes pixels either fully transparent, or not transparent at all.
21195 Higher values result in semi-transparent pixels, with a higher transparency
21196 the more similar the pixels color is to the key color.
21199 @subsection Examples
21203 Make every semi-green pixel in the input transparent with some slight blending:
21205 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21209 @section convolution_opencl
21211 Apply convolution of 3x3, 5x5, 7x7 matrix.
21213 The filter accepts the following options:
21220 Set matrix for each plane.
21221 Matrix is sequence of 9, 25 or 49 signed numbers.
21222 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21228 Set multiplier for calculated value for each plane.
21229 If unset or 0, it will be sum of all matrix elements.
21230 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21236 Set bias for each plane. This value is added to the result of the multiplication.
21237 Useful for making the overall image brighter or darker.
21238 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21242 @subsection Examples
21248 -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
21254 -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
21258 Apply edge enhance:
21260 -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
21266 -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
21270 Apply laplacian edge detector which includes diagonals:
21272 -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
21278 -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
21282 @section erosion_opencl
21284 Apply erosion effect to the video.
21286 This filter replaces the pixel by the local(3x3) minimum.
21288 It accepts the following options:
21295 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21296 If @code{0}, plane will remain unchanged.
21299 Flag which specifies the pixel to refer to.
21300 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21302 Flags to local 3x3 coordinates region centered on @code{x}:
21311 @subsection Example
21315 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.
21317 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21321 @section deshake_opencl
21322 Feature-point based video stabilization filter.
21324 The filter accepts the following options:
21328 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21331 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21333 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21335 Viewing point matches in the output video is only supported for RGB input.
21337 Defaults to @code{0}.
21339 @item adaptive_crop
21340 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21342 Defaults to @code{1}.
21344 @item refine_features
21345 Whether or not feature points should be refined at a sub-pixel level.
21347 This can be turned off for a slight performance gain at the cost of precision.
21349 Defaults to @code{1}.
21351 @item smooth_strength
21352 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21354 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21356 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21358 Defaults to @code{0.0}.
21360 @item smooth_window_multiplier
21361 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21363 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21365 Acceptable values range from @code{0.1} to @code{10.0}.
21367 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21368 potentially improving smoothness, but also increase latency and memory usage.
21370 Defaults to @code{2.0}.
21374 @subsection Examples
21378 Stabilize a video with a fixed, medium smoothing strength:
21380 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21384 Stabilize a video with debugging (both in console and in rendered video):
21386 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21390 @section dilation_opencl
21392 Apply dilation effect to the video.
21394 This filter replaces the pixel by the local(3x3) maximum.
21396 It accepts the following options:
21403 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21404 If @code{0}, plane will remain unchanged.
21407 Flag which specifies the pixel to refer to.
21408 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21410 Flags to local 3x3 coordinates region centered on @code{x}:
21419 @subsection Example
21423 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.
21425 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21429 @section nlmeans_opencl
21431 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21433 @section overlay_opencl
21435 Overlay one video on top of another.
21437 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21438 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21440 The filter accepts the following options:
21445 Set the x coordinate of the overlaid video on the main video.
21446 Default value is @code{0}.
21449 Set the y coordinate of the overlaid video on the main video.
21450 Default value is @code{0}.
21454 @subsection Examples
21458 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21460 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21463 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21465 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21470 @section pad_opencl
21472 Add paddings to the input image, and place the original input at the
21473 provided @var{x}, @var{y} coordinates.
21475 It accepts the following options:
21480 Specify an expression for the size of the output image with the
21481 paddings added. If the value for @var{width} or @var{height} is 0, the
21482 corresponding input size is used for the output.
21484 The @var{width} expression can reference the value set by the
21485 @var{height} expression, and vice versa.
21487 The default value of @var{width} and @var{height} is 0.
21491 Specify the offsets to place the input image at within the padded area,
21492 with respect to the top/left border of the output image.
21494 The @var{x} expression can reference the value set by the @var{y}
21495 expression, and vice versa.
21497 The default value of @var{x} and @var{y} is 0.
21499 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
21500 so the input image is centered on the padded area.
21503 Specify the color of the padded area. For the syntax of this option,
21504 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
21505 manual,ffmpeg-utils}.
21508 Pad to an aspect instead to a resolution.
21511 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
21512 options are expressions containing the following constants:
21517 The input video width and height.
21521 These are the same as @var{in_w} and @var{in_h}.
21525 The output width and height (the size of the padded area), as
21526 specified by the @var{width} and @var{height} expressions.
21530 These are the same as @var{out_w} and @var{out_h}.
21534 The x and y offsets as specified by the @var{x} and @var{y}
21535 expressions, or NAN if not yet specified.
21538 same as @var{iw} / @var{ih}
21541 input sample aspect ratio
21544 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
21547 @section prewitt_opencl
21549 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
21551 The filter accepts the following option:
21555 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21558 Set value which will be multiplied with filtered result.
21559 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21562 Set value which will be added to filtered result.
21563 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21566 @subsection Example
21570 Apply the Prewitt operator with scale set to 2 and delta set to 10.
21572 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
21576 @anchor{program_opencl}
21577 @section program_opencl
21579 Filter video using an OpenCL program.
21584 OpenCL program source file.
21587 Kernel name in program.
21590 Number of inputs to the filter. Defaults to 1.
21593 Size of output frames. Defaults to the same as the first input.
21597 The @code{program_opencl} filter also supports the @ref{framesync} options.
21599 The program source file must contain a kernel function with the given name,
21600 which will be run once for each plane of the output. Each run on a plane
21601 gets enqueued as a separate 2D global NDRange with one work-item for each
21602 pixel to be generated. The global ID offset for each work-item is therefore
21603 the coordinates of a pixel in the destination image.
21605 The kernel function needs to take the following arguments:
21608 Destination image, @var{__write_only image2d_t}.
21610 This image will become the output; the kernel should write all of it.
21612 Frame index, @var{unsigned int}.
21614 This is a counter starting from zero and increasing by one for each frame.
21616 Source images, @var{__read_only image2d_t}.
21618 These are the most recent images on each input. The kernel may read from
21619 them to generate the output, but they can't be written to.
21626 Copy the input to the output (output must be the same size as the input).
21628 __kernel void copy(__write_only image2d_t destination,
21629 unsigned int index,
21630 __read_only image2d_t source)
21632 const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
21634 int2 location = (int2)(get_global_id(0), get_global_id(1));
21636 float4 value = read_imagef(source, sampler, location);
21638 write_imagef(destination, location, value);
21643 Apply a simple transformation, rotating the input by an amount increasing
21644 with the index counter. Pixel values are linearly interpolated by the
21645 sampler, and the output need not have the same dimensions as the input.
21647 __kernel void rotate_image(__write_only image2d_t dst,
21648 unsigned int index,
21649 __read_only image2d_t src)
21651 const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21652 CLK_FILTER_LINEAR);
21654 float angle = (float)index / 100.0f;
21656 float2 dst_dim = convert_float2(get_image_dim(dst));
21657 float2 src_dim = convert_float2(get_image_dim(src));
21659 float2 dst_cen = dst_dim / 2.0f;
21660 float2 src_cen = src_dim / 2.0f;
21662 int2 dst_loc = (int2)(get_global_id(0), get_global_id(1));
21664 float2 dst_pos = convert_float2(dst_loc) - dst_cen;
21666 cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
21667 sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
21669 src_pos = src_pos * src_dim / dst_dim;
21671 float2 src_loc = src_pos + src_cen;
21673 if (src_loc.x < 0.0f || src_loc.y < 0.0f ||
21674 src_loc.x > src_dim.x || src_loc.y > src_dim.y)
21675 write_imagef(dst, dst_loc, 0.5f);
21677 write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
21682 Blend two inputs together, with the amount of each input used varying
21683 with the index counter.
21685 __kernel void blend_images(__write_only image2d_t dst,
21686 unsigned int index,
21687 __read_only image2d_t src1,
21688 __read_only image2d_t src2)
21690 const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21691 CLK_FILTER_LINEAR);
21693 float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
21695 int2 dst_loc = (int2)(get_global_id(0), get_global_id(1));
21696 int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
21697 int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
21699 float4 val1 = read_imagef(src1, sampler, src1_loc);
21700 float4 val2 = read_imagef(src2, sampler, src2_loc);
21702 write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
21708 @section roberts_opencl
21709 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
21711 The filter accepts the following option:
21715 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21718 Set value which will be multiplied with filtered result.
21719 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21722 Set value which will be added to filtered result.
21723 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21726 @subsection Example
21730 Apply the Roberts cross operator with scale set to 2 and delta set to 10
21732 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
21736 @section sobel_opencl
21738 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
21740 The filter accepts the following option:
21744 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21747 Set value which will be multiplied with filtered result.
21748 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21751 Set value which will be added to filtered result.
21752 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21755 @subsection Example
21759 Apply sobel operator with scale set to 2 and delta set to 10
21761 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
21765 @section tonemap_opencl
21767 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
21769 It accepts the following parameters:
21773 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
21776 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
21779 Apply desaturation for highlights that exceed this level of brightness. The
21780 higher the parameter, the more color information will be preserved. This
21781 setting helps prevent unnaturally blown-out colors for super-highlights, by
21782 (smoothly) turning into white instead. This makes images feel more natural,
21783 at the cost of reducing information about out-of-range colors.
21785 The default value is 0.5, and the algorithm here is a little different from
21786 the cpu version tonemap currently. A setting of 0.0 disables this option.
21789 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
21790 is used to detect whether the scene has changed or not. If the distance between
21791 the current frame average brightness and the current running average exceeds
21792 a threshold value, we would re-calculate scene average and peak brightness.
21793 The default value is 0.2.
21796 Specify the output pixel format.
21798 Currently supported formats are:
21805 Set the output color range.
21807 Possible values are:
21813 Default is same as input.
21816 Set the output color primaries.
21818 Possible values are:
21824 Default is same as input.
21827 Set the output transfer characteristics.
21829 Possible values are:
21838 Set the output colorspace matrix.
21840 Possible value are:
21846 Default is same as input.
21850 @subsection Example
21854 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
21856 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
21860 @section unsharp_opencl
21862 Sharpen or blur the input video.
21864 It accepts the following parameters:
21867 @item luma_msize_x, lx
21868 Set the luma matrix horizontal size.
21869 Range is @code{[1, 23]} and default value is @code{5}.
21871 @item luma_msize_y, ly
21872 Set the luma matrix vertical size.
21873 Range is @code{[1, 23]} and default value is @code{5}.
21875 @item luma_amount, la
21876 Set the luma effect strength.
21877 Range is @code{[-10, 10]} and default value is @code{1.0}.
21879 Negative values will blur the input video, while positive values will
21880 sharpen it, a value of zero will disable the effect.
21882 @item chroma_msize_x, cx
21883 Set the chroma matrix horizontal size.
21884 Range is @code{[1, 23]} and default value is @code{5}.
21886 @item chroma_msize_y, cy
21887 Set the chroma matrix vertical size.
21888 Range is @code{[1, 23]} and default value is @code{5}.
21890 @item chroma_amount, ca
21891 Set the chroma effect strength.
21892 Range is @code{[-10, 10]} and default value is @code{0.0}.
21894 Negative values will blur the input video, while positive values will
21895 sharpen it, a value of zero will disable the effect.
21899 All parameters are optional and default to the equivalent of the
21900 string '5:5:1.0:5:5:0.0'.
21902 @subsection Examples
21906 Apply strong luma sharpen effect:
21908 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
21912 Apply a strong blur of both luma and chroma parameters:
21914 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
21918 @section xfade_opencl
21920 Cross fade two videos with custom transition effect by using OpenCL.
21922 It accepts the following options:
21926 Set one of possible transition effects.
21930 Select custom transition effect, the actual transition description
21931 will be picked from source and kernel options.
21943 Default transition is fade.
21947 OpenCL program source file for custom transition.
21950 Set name of kernel to use for custom transition from program source file.
21953 Set duration of video transition.
21956 Set time of start of transition relative to first video.
21959 The program source file must contain a kernel function with the given name,
21960 which will be run once for each plane of the output. Each run on a plane
21961 gets enqueued as a separate 2D global NDRange with one work-item for each
21962 pixel to be generated. The global ID offset for each work-item is therefore
21963 the coordinates of a pixel in the destination image.
21965 The kernel function needs to take the following arguments:
21968 Destination image, @var{__write_only image2d_t}.
21970 This image will become the output; the kernel should write all of it.
21973 First Source image, @var{__read_only image2d_t}.
21974 Second Source image, @var{__read_only image2d_t}.
21976 These are the most recent images on each input. The kernel may read from
21977 them to generate the output, but they can't be written to.
21980 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
21987 Apply dots curtain transition effect:
21989 __kernel void blend_images(__write_only image2d_t dst,
21990 __read_only image2d_t src1,
21991 __read_only image2d_t src2,
21994 const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21995 CLK_FILTER_LINEAR);
21996 int2 p = (int2)(get_global_id(0), get_global_id(1));
21997 float2 rp = (float2)(get_global_id(0), get_global_id(1));
21998 float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22001 float2 dots = (float2)(20.0, 20.0);
22002 float2 center = (float2)(0,0);
22005 float4 val1 = read_imagef(src1, sampler, p);
22006 float4 val2 = read_imagef(src2, sampler, p);
22007 bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22009 write_imagef(dst, p, next ? val1 : val2);
22015 @c man end OPENCL VIDEO FILTERS
22017 @chapter VAAPI Video Filters
22018 @c man begin VAAPI VIDEO FILTERS
22020 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22022 To enable compilation of these filters you need to configure FFmpeg with
22023 @code{--enable-vaapi}.
22025 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}
22027 @section tonemap_vaapi
22029 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22030 It maps the dynamic range of HDR10 content to the SDR content.
22031 It currently only accepts HDR10 as input.
22033 It accepts the following parameters:
22037 Specify the output pixel format.
22039 Currently supported formats are:
22048 Set the output color primaries.
22050 Default is same as input.
22053 Set the output transfer characteristics.
22058 Set the output colorspace matrix.
22060 Default is same as input.
22064 @subsection Example
22068 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22070 tonemap_vaapi=format=p010:t=bt2020-10
22074 @c man end VAAPI VIDEO FILTERS
22076 @chapter Video Sources
22077 @c man begin VIDEO SOURCES
22079 Below is a description of the currently available video sources.
22083 Buffer video frames, and make them available to the filter chain.
22085 This source is mainly intended for a programmatic use, in particular
22086 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
22088 It accepts the following parameters:
22093 Specify the size (width and height) of the buffered video frames. For the
22094 syntax of this option, check the
22095 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22098 The input video width.
22101 The input video height.
22104 A string representing the pixel format of the buffered video frames.
22105 It may be a number corresponding to a pixel format, or a pixel format
22109 Specify the timebase assumed by the timestamps of the buffered frames.
22112 Specify the frame rate expected for the video stream.
22114 @item pixel_aspect, sar
22115 The sample (pixel) aspect ratio of the input video.
22118 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22119 to the filtergraph description to specify swscale flags for automatically
22120 inserted scalers. See @ref{Filtergraph syntax}.
22122 @item hw_frames_ctx
22123 When using a hardware pixel format, this should be a reference to an
22124 AVHWFramesContext describing input frames.
22129 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22132 will instruct the source to accept video frames with size 320x240 and
22133 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22134 square pixels (1:1 sample aspect ratio).
22135 Since the pixel format with name "yuv410p" corresponds to the number 6
22136 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22137 this example corresponds to:
22139 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22142 Alternatively, the options can be specified as a flat string, but this
22143 syntax is deprecated:
22145 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22149 Create a pattern generated by an elementary cellular automaton.
22151 The initial state of the cellular automaton can be defined through the
22152 @option{filename} and @option{pattern} options. If such options are
22153 not specified an initial state is created randomly.
22155 At each new frame a new row in the video is filled with the result of
22156 the cellular automaton next generation. The behavior when the whole
22157 frame is filled is defined by the @option{scroll} option.
22159 This source accepts the following options:
22163 Read the initial cellular automaton state, i.e. the starting row, from
22164 the specified file.
22165 In the file, each non-whitespace character is considered an alive
22166 cell, a newline will terminate the row, and further characters in the
22167 file will be ignored.
22170 Read the initial cellular automaton state, i.e. the starting row, from
22171 the specified string.
22173 Each non-whitespace character in the string is considered an alive
22174 cell, a newline will terminate the row, and further characters in the
22175 string will be ignored.
22178 Set the video rate, that is the number of frames generated per second.
22181 @item random_fill_ratio, ratio
22182 Set the random fill ratio for the initial cellular automaton row. It
22183 is a floating point number value ranging from 0 to 1, defaults to
22186 This option is ignored when a file or a pattern is specified.
22188 @item random_seed, seed
22189 Set the seed for filling randomly the initial row, must be an integer
22190 included between 0 and UINT32_MAX. If not specified, or if explicitly
22191 set to -1, the filter will try to use a good random seed on a best
22195 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22196 Default value is 110.
22199 Set the size of the output video. For the syntax of this option, check the
22200 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22202 If @option{filename} or @option{pattern} is specified, the size is set
22203 by default to the width of the specified initial state row, and the
22204 height is set to @var{width} * PHI.
22206 If @option{size} is set, it must contain the width of the specified
22207 pattern string, and the specified pattern will be centered in the
22210 If a filename or a pattern string is not specified, the size value
22211 defaults to "320x518" (used for a randomly generated initial state).
22214 If set to 1, scroll the output upward when all the rows in the output
22215 have been already filled. If set to 0, the new generated row will be
22216 written over the top row just after the bottom row is filled.
22219 @item start_full, full
22220 If set to 1, completely fill the output with generated rows before
22221 outputting the first frame.
22222 This is the default behavior, for disabling set the value to 0.
22225 If set to 1, stitch the left and right row edges together.
22226 This is the default behavior, for disabling set the value to 0.
22229 @subsection Examples
22233 Read the initial state from @file{pattern}, and specify an output of
22236 cellauto=f=pattern:s=200x400
22240 Generate a random initial row with a width of 200 cells, with a fill
22243 cellauto=ratio=2/3:s=200x200
22247 Create a pattern generated by rule 18 starting by a single alive cell
22248 centered on an initial row with width 100:
22250 cellauto=p=@@:s=100x400:full=0:rule=18
22254 Specify a more elaborated initial pattern:
22256 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22261 @anchor{coreimagesrc}
22262 @section coreimagesrc
22263 Video source generated on GPU using Apple's CoreImage API on OSX.
22265 This video source is a specialized version of the @ref{coreimage} video filter.
22266 Use a core image generator at the beginning of the applied filterchain to
22267 generate the content.
22269 The coreimagesrc video source accepts the following options:
22271 @item list_generators
22272 List all available generators along with all their respective options as well as
22273 possible minimum and maximum values along with the default values.
22275 list_generators=true
22279 Specify the size of the sourced video. For the syntax of this option, check the
22280 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22281 The default value is @code{320x240}.
22284 Specify the frame rate of the sourced video, as the number of frames
22285 generated per second. It has to be a string in the format
22286 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22287 number or a valid video frame rate abbreviation. The default value is
22291 Set the sample aspect ratio of the sourced video.
22294 Set the duration of the sourced video. See
22295 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22296 for the accepted syntax.
22298 If not specified, or the expressed duration is negative, the video is
22299 supposed to be generated forever.
22302 Additionally, all options of the @ref{coreimage} video filter are accepted.
22303 A complete filterchain can be used for further processing of the
22304 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22305 and examples for details.
22307 @subsection Examples
22312 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22313 given as complete and escaped command-line for Apple's standard bash shell:
22315 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22317 This example is equivalent to the QRCode example of @ref{coreimage} without the
22318 need for a nullsrc video source.
22323 Generate several gradients.
22327 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22328 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22331 Set frame rate, expressed as number of frames per second. Default
22334 @item c0, c1, c2, c3, c4, c5, c6, c7
22335 Set 8 colors. Default values for colors is to pick random one.
22337 @item x0, y0, y0, y1
22338 Set gradient line source and destination points. If negative or out of range, random ones
22342 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22345 Set seed for picking gradient line points.
22349 @section mandelbrot
22351 Generate a Mandelbrot set fractal, and progressively zoom towards the
22352 point specified with @var{start_x} and @var{start_y}.
22354 This source accepts the following options:
22359 Set the terminal pts value. Default value is 400.
22362 Set the terminal scale value.
22363 Must be a floating point value. Default value is 0.3.
22366 Set the inner coloring mode, that is the algorithm used to draw the
22367 Mandelbrot fractal internal region.
22369 It shall assume one of the following values:
22374 Show time until convergence.
22376 Set color based on point closest to the origin of the iterations.
22381 Default value is @var{mincol}.
22384 Set the bailout value. Default value is 10.0.
22387 Set the maximum of iterations performed by the rendering
22388 algorithm. Default value is 7189.
22391 Set outer coloring mode.
22392 It shall assume one of following values:
22394 @item iteration_count
22395 Set iteration count mode.
22396 @item normalized_iteration_count
22397 set normalized iteration count mode.
22399 Default value is @var{normalized_iteration_count}.
22402 Set frame rate, expressed as number of frames per second. Default
22406 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22407 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22410 Set the initial scale value. Default value is 3.0.
22413 Set the initial x position. Must be a floating point value between
22414 -100 and 100. Default value is -0.743643887037158704752191506114774.
22417 Set the initial y position. Must be a floating point value between
22418 -100 and 100. Default value is -0.131825904205311970493132056385139.
22423 Generate various test patterns, as generated by the MPlayer test filter.
22425 The size of the generated video is fixed, and is 256x256.
22426 This source is useful in particular for testing encoding features.
22428 This source accepts the following options:
22433 Specify the frame rate of the sourced video, as the number of frames
22434 generated per second. It has to be a string in the format
22435 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22436 number or a valid video frame rate abbreviation. The default value is
22440 Set the duration of the sourced video. See
22441 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22442 for the accepted syntax.
22444 If not specified, or the expressed duration is negative, the video is
22445 supposed to be generated forever.
22449 Set the number or the name of the test to perform. Supported tests are:
22463 @item max_frames, m
22464 Set the maximum number of frames generated for each test, default value is 30.
22468 Default value is "all", which will cycle through the list of all tests.
22473 mptestsrc=t=dc_luma
22476 will generate a "dc_luma" test pattern.
22478 @section frei0r_src
22480 Provide a frei0r source.
22482 To enable compilation of this filter you need to install the frei0r
22483 header and configure FFmpeg with @code{--enable-frei0r}.
22485 This source accepts the following parameters:
22490 The size of the video to generate. For the syntax of this option, check the
22491 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22494 The framerate of the generated video. It may be a string of the form
22495 @var{num}/@var{den} or a frame rate abbreviation.
22498 The name to the frei0r source to load. For more information regarding frei0r and
22499 how to set the parameters, read the @ref{frei0r} section in the video filters
22502 @item filter_params
22503 A '|'-separated list of parameters to pass to the frei0r source.
22507 For example, to generate a frei0r partik0l source with size 200x200
22508 and frame rate 10 which is overlaid on the overlay filter main input:
22510 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
22515 Generate a life pattern.
22517 This source is based on a generalization of John Conway's life game.
22519 The sourced input represents a life grid, each pixel represents a cell
22520 which can be in one of two possible states, alive or dead. Every cell
22521 interacts with its eight neighbours, which are the cells that are
22522 horizontally, vertically, or diagonally adjacent.
22524 At each interaction the grid evolves according to the adopted rule,
22525 which specifies the number of neighbor alive cells which will make a
22526 cell stay alive or born. The @option{rule} option allows one to specify
22529 This source accepts the following options:
22533 Set the file from which to read the initial grid state. In the file,
22534 each non-whitespace character is considered an alive cell, and newline
22535 is used to delimit the end of each row.
22537 If this option is not specified, the initial grid is generated
22541 Set the video rate, that is the number of frames generated per second.
22544 @item random_fill_ratio, ratio
22545 Set the random fill ratio for the initial random grid. It is a
22546 floating point number value ranging from 0 to 1, defaults to 1/PHI.
22547 It is ignored when a file is specified.
22549 @item random_seed, seed
22550 Set the seed for filling the initial random grid, must be an integer
22551 included between 0 and UINT32_MAX. If not specified, or if explicitly
22552 set to -1, the filter will try to use a good random seed on a best
22558 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
22559 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
22560 @var{NS} specifies the number of alive neighbor cells which make a
22561 live cell stay alive, and @var{NB} the number of alive neighbor cells
22562 which make a dead cell to become alive (i.e. to "born").
22563 "s" and "b" can be used in place of "S" and "B", respectively.
22565 Alternatively a rule can be specified by an 18-bits integer. The 9
22566 high order bits are used to encode the next cell state if it is alive
22567 for each number of neighbor alive cells, the low order bits specify
22568 the rule for "borning" new cells. Higher order bits encode for an
22569 higher number of neighbor cells.
22570 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
22571 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
22573 Default value is "S23/B3", which is the original Conway's game of life
22574 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
22575 cells, and will born a new cell if there are three alive cells around
22579 Set the size of the output video. For the syntax of this option, check the
22580 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22582 If @option{filename} is specified, the size is set by default to the
22583 same size of the input file. If @option{size} is set, it must contain
22584 the size specified in the input file, and the initial grid defined in
22585 that file is centered in the larger resulting area.
22587 If a filename is not specified, the size value defaults to "320x240"
22588 (used for a randomly generated initial grid).
22591 If set to 1, stitch the left and right grid edges together, and the
22592 top and bottom edges also. Defaults to 1.
22595 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
22596 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
22597 value from 0 to 255.
22600 Set the color of living (or new born) cells.
22603 Set the color of dead cells. If @option{mold} is set, this is the first color
22604 used to represent a dead cell.
22607 Set mold color, for definitely dead and moldy cells.
22609 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
22610 ffmpeg-utils manual,ffmpeg-utils}.
22613 @subsection Examples
22617 Read a grid from @file{pattern}, and center it on a grid of size
22620 life=f=pattern:s=300x300
22624 Generate a random grid of size 200x200, with a fill ratio of 2/3:
22626 life=ratio=2/3:s=200x200
22630 Specify a custom rule for evolving a randomly generated grid:
22636 Full example with slow death effect (mold) using @command{ffplay}:
22638 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
22645 @anchor{haldclutsrc}
22648 @anchor{pal100bars}
22649 @anchor{rgbtestsrc}
22651 @anchor{smptehdbars}
22654 @anchor{yuvtestsrc}
22655 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
22657 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
22659 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
22661 The @code{color} source provides an uniformly colored input.
22663 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
22664 @ref{haldclut} filter.
22666 The @code{nullsrc} source returns unprocessed video frames. It is
22667 mainly useful to be employed in analysis / debugging tools, or as the
22668 source for filters which ignore the input data.
22670 The @code{pal75bars} source generates a color bars pattern, based on
22671 EBU PAL recommendations with 75% color levels.
22673 The @code{pal100bars} source generates a color bars pattern, based on
22674 EBU PAL recommendations with 100% color levels.
22676 The @code{rgbtestsrc} source generates an RGB test pattern useful for
22677 detecting RGB vs BGR issues. You should see a red, green and blue
22678 stripe from top to bottom.
22680 The @code{smptebars} source generates a color bars pattern, based on
22681 the SMPTE Engineering Guideline EG 1-1990.
22683 The @code{smptehdbars} source generates a color bars pattern, based on
22684 the SMPTE RP 219-2002.
22686 The @code{testsrc} source generates a test video pattern, showing a
22687 color pattern, a scrolling gradient and a timestamp. This is mainly
22688 intended for testing purposes.
22690 The @code{testsrc2} source is similar to testsrc, but supports more
22691 pixel formats instead of just @code{rgb24}. This allows using it as an
22692 input for other tests without requiring a format conversion.
22694 The @code{yuvtestsrc} source generates an YUV test pattern. You should
22695 see a y, cb and cr stripe from top to bottom.
22697 The sources accept the following parameters:
22702 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
22703 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
22704 pixels to be used as identity matrix for 3D lookup tables. Each component is
22705 coded on a @code{1/(N*N)} scale.
22708 Specify the color of the source, only available in the @code{color}
22709 source. For the syntax of this option, check the
22710 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
22713 Specify the size of the sourced video. For the syntax of this option, check the
22714 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22715 The default value is @code{320x240}.
22717 This option is not available with the @code{allrgb}, @code{allyuv}, and
22718 @code{haldclutsrc} filters.
22721 Specify the frame rate of the sourced video, as the number of frames
22722 generated per second. It has to be a string in the format
22723 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22724 number or a valid video frame rate abbreviation. The default value is
22728 Set the duration of the sourced video. See
22729 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22730 for the accepted syntax.
22732 If not specified, or the expressed duration is negative, the video is
22733 supposed to be generated forever.
22736 Set the sample aspect ratio of the sourced video.
22739 Specify the alpha (opacity) of the background, only available in the
22740 @code{testsrc2} source. The value must be between 0 (fully transparent) and
22741 255 (fully opaque, the default).
22744 Set the number of decimals to show in the timestamp, only available in the
22745 @code{testsrc} source.
22747 The displayed timestamp value will correspond to the original
22748 timestamp value multiplied by the power of 10 of the specified
22749 value. Default value is 0.
22752 @subsection Examples
22756 Generate a video with a duration of 5.3 seconds, with size
22757 176x144 and a frame rate of 10 frames per second:
22759 testsrc=duration=5.3:size=qcif:rate=10
22763 The following graph description will generate a red source
22764 with an opacity of 0.2, with size "qcif" and a frame rate of 10
22767 color=c=red@@0.2:s=qcif:r=10
22771 If the input content is to be ignored, @code{nullsrc} can be used. The
22772 following command generates noise in the luminance plane by employing
22773 the @code{geq} filter:
22775 nullsrc=s=256x256, geq=random(1)*255:128:128
22779 @subsection Commands
22781 The @code{color} source supports the following commands:
22785 Set the color of the created image. Accepts the same syntax of the
22786 corresponding @option{color} option.
22791 Generate video using an OpenCL program.
22796 OpenCL program source file.
22799 Kernel name in program.
22802 Size of frames to generate. This must be set.
22805 Pixel format to use for the generated frames. This must be set.
22808 Number of frames generated every second. Default value is '25'.
22812 For details of how the program loading works, see the @ref{program_opencl}
22819 Generate a colour ramp by setting pixel values from the position of the pixel
22820 in the output image. (Note that this will work with all pixel formats, but
22821 the generated output will not be the same.)
22823 __kernel void ramp(__write_only image2d_t dst,
22824 unsigned int index)
22826 int2 loc = (int2)(get_global_id(0), get_global_id(1));
22829 val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
22831 write_imagef(dst, loc, val);
22836 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
22838 __kernel void sierpinski_carpet(__write_only image2d_t dst,
22839 unsigned int index)
22841 int2 loc = (int2)(get_global_id(0), get_global_id(1));
22843 float4 value = 0.0f;
22844 int x = loc.x + index;
22845 int y = loc.y + index;
22846 while (x > 0 || y > 0) {
22847 if (x % 3 == 1 && y % 3 == 1) {
22855 write_imagef(dst, loc, value);
22861 @section sierpinski
22863 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
22865 This source accepts the following options:
22869 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22870 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22873 Set frame rate, expressed as number of frames per second. Default
22877 Set seed which is used for random panning.
22880 Set max jump for single pan destination. Allowed range is from 1 to 10000.
22883 Set fractal type, can be default @code{carpet} or @code{triangle}.
22886 @c man end VIDEO SOURCES
22888 @chapter Video Sinks
22889 @c man begin VIDEO SINKS
22891 Below is a description of the currently available video sinks.
22893 @section buffersink
22895 Buffer video frames, and make them available to the end of the filter
22898 This sink is mainly intended for programmatic use, in particular
22899 through the interface defined in @file{libavfilter/buffersink.h}
22900 or the options system.
22902 It accepts a pointer to an AVBufferSinkContext structure, which
22903 defines the incoming buffers' formats, to be passed as the opaque
22904 parameter to @code{avfilter_init_filter} for initialization.
22908 Null video sink: do absolutely nothing with the input video. It is
22909 mainly useful as a template and for use in analysis / debugging
22912 @c man end VIDEO SINKS
22914 @chapter Multimedia Filters
22915 @c man begin MULTIMEDIA FILTERS
22917 Below is a description of the currently available multimedia filters.
22921 Convert input audio to a video output, displaying the audio bit scope.
22923 The filter accepts the following options:
22927 Set frame rate, expressed as number of frames per second. Default
22931 Specify the video size for the output. For the syntax of this option, check the
22932 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22933 Default value is @code{1024x256}.
22936 Specify list of colors separated by space or by '|' which will be used to
22937 draw channels. Unrecognized or missing colors will be replaced
22941 @section adrawgraph
22942 Draw a graph using input audio metadata.
22944 See @ref{drawgraph}
22946 @section agraphmonitor
22948 See @ref{graphmonitor}.
22950 @section ahistogram
22952 Convert input audio to a video output, displaying the volume histogram.
22954 The filter accepts the following options:
22958 Specify how histogram is calculated.
22960 It accepts the following values:
22963 Use single histogram for all channels.
22965 Use separate histogram for each channel.
22967 Default is @code{single}.
22970 Set frame rate, expressed as number of frames per second. Default
22974 Specify the video size for the output. For the syntax of this option, check the
22975 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22976 Default value is @code{hd720}.
22981 It accepts the following values:
22992 reverse logarithmic
22994 Default is @code{log}.
22997 Set amplitude scale.
22999 It accepts the following values:
23006 Default is @code{log}.
23009 Set how much frames to accumulate in histogram.
23010 Default is 1. Setting this to -1 accumulates all frames.
23013 Set histogram ratio of window height.
23016 Set sonogram sliding.
23018 It accepts the following values:
23021 replace old rows with new ones.
23023 scroll from top to bottom.
23025 Default is @code{replace}.
23028 @section aphasemeter
23030 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23031 representing mean phase of current audio frame. A video output can also be produced and is
23032 enabled by default. The audio is passed through as first output.
23034 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23035 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23036 and @code{1} means channels are in phase.
23038 The filter accepts the following options, all related to its video output:
23042 Set the output frame rate. Default value is @code{25}.
23045 Set the video size for the output. For the syntax of this option, check the
23046 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23047 Default value is @code{800x400}.
23052 Specify the red, green, blue contrast. Default values are @code{2},
23053 @code{7} and @code{1}.
23054 Allowed range is @code{[0, 255]}.
23057 Set color which will be used for drawing median phase. If color is
23058 @code{none} which is default, no median phase value will be drawn.
23061 Enable video output. Default is enabled.
23064 @section avectorscope
23066 Convert input audio to a video output, representing the audio vector
23069 The filter is used to measure the difference between channels of stereo
23070 audio stream. A monaural signal, consisting of identical left and right
23071 signal, results in straight vertical line. Any stereo separation is visible
23072 as a deviation from this line, creating a Lissajous figure.
23073 If the straight (or deviation from it) but horizontal line appears this
23074 indicates that the left and right channels are out of phase.
23076 The filter accepts the following options:
23080 Set the vectorscope mode.
23082 Available values are:
23085 Lissajous rotated by 45 degrees.
23088 Same as above but not rotated.
23091 Shape resembling half of circle.
23094 Default value is @samp{lissajous}.
23097 Set the video size for the output. For the syntax of this option, check the
23098 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23099 Default value is @code{400x400}.
23102 Set the output frame rate. Default value is @code{25}.
23108 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23109 @code{160}, @code{80} and @code{255}.
23110 Allowed range is @code{[0, 255]}.
23116 Specify the red, green, blue and alpha fade. Default values are @code{15},
23117 @code{10}, @code{5} and @code{5}.
23118 Allowed range is @code{[0, 255]}.
23121 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23122 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23125 Set the vectorscope drawing mode.
23127 Available values are:
23130 Draw dot for each sample.
23133 Draw line between previous and current sample.
23136 Default value is @samp{dot}.
23139 Specify amplitude scale of audio samples.
23141 Available values are:
23157 Swap left channel axis with right channel axis.
23167 Mirror only x axis.
23170 Mirror only y axis.
23178 @subsection Examples
23182 Complete example using @command{ffplay}:
23184 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23185 [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23189 @section bench, abench
23191 Benchmark part of a filtergraph.
23193 The filter accepts the following options:
23197 Start or stop a timer.
23199 Available values are:
23202 Get the current time, set it as frame metadata (using the key
23203 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23206 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23207 the input frame metadata to get the time difference. Time difference, average,
23208 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23209 @code{min}) are then printed. The timestamps are expressed in seconds.
23213 @subsection Examples
23217 Benchmark @ref{selectivecolor} filter:
23219 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23225 Concatenate audio and video streams, joining them together one after the
23228 The filter works on segments of synchronized video and audio streams. All
23229 segments must have the same number of streams of each type, and that will
23230 also be the number of streams at output.
23232 The filter accepts the following options:
23237 Set the number of segments. Default is 2.
23240 Set the number of output video streams, that is also the number of video
23241 streams in each segment. Default is 1.
23244 Set the number of output audio streams, that is also the number of audio
23245 streams in each segment. Default is 0.
23248 Activate unsafe mode: do not fail if segments have a different format.
23252 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23253 @var{a} audio outputs.
23255 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23256 segment, in the same order as the outputs, then the inputs for the second
23259 Related streams do not always have exactly the same duration, for various
23260 reasons including codec frame size or sloppy authoring. For that reason,
23261 related synchronized streams (e.g. a video and its audio track) should be
23262 concatenated at once. The concat filter will use the duration of the longest
23263 stream in each segment (except the last one), and if necessary pad shorter
23264 audio streams with silence.
23266 For this filter to work correctly, all segments must start at timestamp 0.
23268 All corresponding streams must have the same parameters in all segments; the
23269 filtering system will automatically select a common pixel format for video
23270 streams, and a common sample format, sample rate and channel layout for
23271 audio streams, but other settings, such as resolution, must be converted
23272 explicitly by the user.
23274 Different frame rates are acceptable but will result in variable frame rate
23275 at output; be sure to configure the output file to handle it.
23277 @subsection Examples
23281 Concatenate an opening, an episode and an ending, all in bilingual version
23282 (video in stream 0, audio in streams 1 and 2):
23284 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23285 '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23286 concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23287 -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23291 Concatenate two parts, handling audio and video separately, using the
23292 (a)movie sources, and adjusting the resolution:
23294 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23295 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23296 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23298 Note that a desync will happen at the stitch if the audio and video streams
23299 do not have exactly the same duration in the first file.
23303 @subsection Commands
23305 This filter supports the following commands:
23308 Close the current segment and step to the next one
23314 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23315 level. By default, it logs a message at a frequency of 10Hz with the
23316 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23317 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23319 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23320 sample format is double-precision floating point. The input stream will be converted to
23321 this specification, if needed. Users may need to insert aformat and/or aresample filters
23322 after this filter to obtain the original parameters.
23324 The filter also has a video output (see the @var{video} option) with a real
23325 time graph to observe the loudness evolution. The graphic contains the logged
23326 message mentioned above, so it is not printed anymore when this option is set,
23327 unless the verbose logging is set. The main graphing area contains the
23328 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23329 the momentary loudness (400 milliseconds), but can optionally be configured
23330 to instead display short-term loudness (see @var{gauge}).
23332 The green area marks a +/- 1LU target range around the target loudness
23333 (-23LUFS by default, unless modified through @var{target}).
23335 More information about the Loudness Recommendation EBU R128 on
23336 @url{http://tech.ebu.ch/loudness}.
23338 The filter accepts the following options:
23343 Activate the video output. The audio stream is passed unchanged whether this
23344 option is set or no. The video stream will be the first output stream if
23345 activated. Default is @code{0}.
23348 Set the video size. This option is for video only. For the syntax of this
23350 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23351 Default and minimum resolution is @code{640x480}.
23354 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23355 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23356 other integer value between this range is allowed.
23359 Set metadata injection. If set to @code{1}, the audio input will be segmented
23360 into 100ms output frames, each of them containing various loudness information
23361 in metadata. All the metadata keys are prefixed with @code{lavfi.r128.}.
23363 Default is @code{0}.
23366 Force the frame logging level.
23368 Available values are:
23371 information logging level
23373 verbose logging level
23376 By default, the logging level is set to @var{info}. If the @option{video} or
23377 the @option{metadata} options are set, it switches to @var{verbose}.
23382 Available modes can be cumulated (the option is a @code{flag} type). Possible
23386 Disable any peak mode (default).
23388 Enable sample-peak mode.
23390 Simple peak mode looking for the higher sample value. It logs a message
23391 for sample-peak (identified by @code{SPK}).
23393 Enable true-peak mode.
23395 If enabled, the peak lookup is done on an over-sampled version of the input
23396 stream for better peak accuracy. It logs a message for true-peak.
23397 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
23398 This mode requires a build with @code{libswresample}.
23402 Treat mono input files as "dual mono". If a mono file is intended for playback
23403 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
23404 If set to @code{true}, this option will compensate for this effect.
23405 Multi-channel input files are not affected by this option.
23408 Set a specific pan law to be used for the measurement of dual mono files.
23409 This parameter is optional, and has a default value of -3.01dB.
23412 Set a specific target level (in LUFS) used as relative zero in the visualization.
23413 This parameter is optional and has a default value of -23LUFS as specified
23414 by EBU R128. However, material published online may prefer a level of -16LUFS
23415 (e.g. for use with podcasts or video platforms).
23418 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23419 @code{shortterm}. By default the momentary value will be used, but in certain
23420 scenarios it may be more useful to observe the short term value instead (e.g.
23424 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23425 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23426 video output, not the summary or continuous log output.
23429 @subsection Examples
23433 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23435 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23439 Run an analysis with @command{ffmpeg}:
23441 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
23445 @section interleave, ainterleave
23447 Temporally interleave frames from several inputs.
23449 @code{interleave} works with video inputs, @code{ainterleave} with audio.
23451 These filters read frames from several inputs and send the oldest
23452 queued frame to the output.
23454 Input streams must have well defined, monotonically increasing frame
23457 In order to submit one frame to output, these filters need to enqueue
23458 at least one frame for each input, so they cannot work in case one
23459 input is not yet terminated and will not receive incoming frames.
23461 For example consider the case when one input is a @code{select} filter
23462 which always drops input frames. The @code{interleave} filter will keep
23463 reading from that input, but it will never be able to send new frames
23464 to output until the input sends an end-of-stream signal.
23466 Also, depending on inputs synchronization, the filters will drop
23467 frames in case one input receives more frames than the other ones, and
23468 the queue is already filled.
23470 These filters accept the following options:
23474 Set the number of different inputs, it is 2 by default.
23477 How to determine the end-of-stream.
23481 The duration of the longest input. (default)
23484 The duration of the shortest input.
23487 The duration of the first input.
23492 @subsection Examples
23496 Interleave frames belonging to different streams using @command{ffmpeg}:
23498 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
23502 Add flickering blur effect:
23504 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
23508 @section metadata, ametadata
23510 Manipulate frame metadata.
23512 This filter accepts the following options:
23516 Set mode of operation of the filter.
23518 Can be one of the following:
23522 If both @code{value} and @code{key} is set, select frames
23523 which have such metadata. If only @code{key} is set, select
23524 every frame that has such key in metadata.
23527 Add new metadata @code{key} and @code{value}. If key is already available
23531 Modify value of already present key.
23534 If @code{value} is set, delete only keys that have such value.
23535 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
23539 Print key and its value if metadata was found. If @code{key} is not set print all
23540 metadata values available in frame.
23544 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
23547 Set metadata value which will be used. This option is mandatory for
23548 @code{modify} and @code{add} mode.
23551 Which function to use when comparing metadata value and @code{value}.
23553 Can be one of following:
23557 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
23560 Values are interpreted as strings, returns true if metadata value starts with
23561 the @code{value} option string.
23564 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
23567 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
23570 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
23573 Values are interpreted as floats, returns true if expression from option @code{expr}
23577 Values are interpreted as strings, returns true if metadata value ends with
23578 the @code{value} option string.
23582 Set expression which is used when @code{function} is set to @code{expr}.
23583 The expression is evaluated through the eval API and can contain the following
23588 Float representation of @code{value} from metadata key.
23591 Float representation of @code{value} as supplied by user in @code{value} option.
23595 If specified in @code{print} mode, output is written to the named file. Instead of
23596 plain filename any writable url can be specified. Filename ``-'' is a shorthand
23597 for standard output. If @code{file} option is not set, output is written to the log
23598 with AV_LOG_INFO loglevel.
23601 Reduces buffering in print mode when output is written to a URL set using @var{file}.
23605 @subsection Examples
23609 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
23612 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
23615 Print silencedetect output to file @file{metadata.txt}.
23617 silencedetect,ametadata=mode=print:file=metadata.txt
23620 Direct all metadata to a pipe with file descriptor 4.
23622 metadata=mode=print:file='pipe\:4'
23626 @section perms, aperms
23628 Set read/write permissions for the output frames.
23630 These filters are mainly aimed at developers to test direct path in the
23631 following filter in the filtergraph.
23633 The filters accept the following options:
23637 Select the permissions mode.
23639 It accepts the following values:
23642 Do nothing. This is the default.
23644 Set all the output frames read-only.
23646 Set all the output frames directly writable.
23648 Make the frame read-only if writable, and writable if read-only.
23650 Set each output frame read-only or writable randomly.
23654 Set the seed for the @var{random} mode, must be an integer included between
23655 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
23656 @code{-1}, the filter will try to use a good random seed on a best effort
23660 Note: in case of auto-inserted filter between the permission filter and the
23661 following one, the permission might not be received as expected in that
23662 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
23663 perms/aperms filter can avoid this problem.
23665 @section realtime, arealtime
23667 Slow down filtering to match real time approximately.
23669 These filters will pause the filtering for a variable amount of time to
23670 match the output rate with the input timestamps.
23671 They are similar to the @option{re} option to @code{ffmpeg}.
23673 They accept the following options:
23677 Time limit for the pauses. Any pause longer than that will be considered
23678 a timestamp discontinuity and reset the timer. Default is 2 seconds.
23680 Speed factor for processing. The value must be a float larger than zero.
23681 Values larger than 1.0 will result in faster than realtime processing,
23682 smaller will slow processing down. The @var{limit} is automatically adapted
23683 accordingly. Default is 1.0.
23685 A processing speed faster than what is possible without these filters cannot
23690 @section select, aselect
23692 Select frames to pass in output.
23694 This filter accepts the following options:
23699 Set expression, which is evaluated for each input frame.
23701 If the expression is evaluated to zero, the frame is discarded.
23703 If the evaluation result is negative or NaN, the frame is sent to the
23704 first output; otherwise it is sent to the output with index
23705 @code{ceil(val)-1}, assuming that the input index starts from 0.
23707 For example a value of @code{1.2} corresponds to the output with index
23708 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
23711 Set the number of outputs. The output to which to send the selected
23712 frame is based on the result of the evaluation. Default value is 1.
23715 The expression can contain the following constants:
23719 The (sequential) number of the filtered frame, starting from 0.
23722 The (sequential) number of the selected frame, starting from 0.
23724 @item prev_selected_n
23725 The sequential number of the last selected frame. It's NAN if undefined.
23728 The timebase of the input timestamps.
23731 The PTS (Presentation TimeStamp) of the filtered video frame,
23732 expressed in @var{TB} units. It's NAN if undefined.
23735 The PTS of the filtered video frame,
23736 expressed in seconds. It's NAN if undefined.
23739 The PTS of the previously filtered video frame. It's NAN if undefined.
23741 @item prev_selected_pts
23742 The PTS of the last previously filtered video frame. It's NAN if undefined.
23744 @item prev_selected_t
23745 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
23748 The PTS of the first video frame in the video. It's NAN if undefined.
23751 The time of the first video frame in the video. It's NAN if undefined.
23753 @item pict_type @emph{(video only)}
23754 The type of the filtered frame. It can assume one of the following
23766 @item interlace_type @emph{(video only)}
23767 The frame interlace type. It can assume one of the following values:
23770 The frame is progressive (not interlaced).
23772 The frame is top-field-first.
23774 The frame is bottom-field-first.
23777 @item consumed_sample_n @emph{(audio only)}
23778 the number of selected samples before the current frame
23780 @item samples_n @emph{(audio only)}
23781 the number of samples in the current frame
23783 @item sample_rate @emph{(audio only)}
23784 the input sample rate
23787 This is 1 if the filtered frame is a key-frame, 0 otherwise.
23790 the position in the file of the filtered frame, -1 if the information
23791 is not available (e.g. for synthetic video)
23793 @item scene @emph{(video only)}
23794 value between 0 and 1 to indicate a new scene; a low value reflects a low
23795 probability for the current frame to introduce a new scene, while a higher
23796 value means the current frame is more likely to be one (see the example below)
23798 @item concatdec_select
23799 The concat demuxer can select only part of a concat input file by setting an
23800 inpoint and an outpoint, but the output packets may not be entirely contained
23801 in the selected interval. By using this variable, it is possible to skip frames
23802 generated by the concat demuxer which are not exactly contained in the selected
23805 This works by comparing the frame pts against the @var{lavf.concat.start_time}
23806 and the @var{lavf.concat.duration} packet metadata values which are also
23807 present in the decoded frames.
23809 The @var{concatdec_select} variable is -1 if the frame pts is at least
23810 start_time and either the duration metadata is missing or the frame pts is less
23811 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
23814 That basically means that an input frame is selected if its pts is within the
23815 interval set by the concat demuxer.
23819 The default value of the select expression is "1".
23821 @subsection Examples
23825 Select all frames in input:
23830 The example above is the same as:
23842 Select only I-frames:
23844 select='eq(pict_type\,I)'
23848 Select one frame every 100:
23850 select='not(mod(n\,100))'
23854 Select only frames contained in the 10-20 time interval:
23856 select=between(t\,10\,20)
23860 Select only I-frames contained in the 10-20 time interval:
23862 select=between(t\,10\,20)*eq(pict_type\,I)
23866 Select frames with a minimum distance of 10 seconds:
23868 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
23872 Use aselect to select only audio frames with samples number > 100:
23874 aselect='gt(samples_n\,100)'
23878 Create a mosaic of the first scenes:
23880 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
23883 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
23887 Send even and odd frames to separate outputs, and compose them:
23889 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
23893 Select useful frames from an ffconcat file which is using inpoints and
23894 outpoints but where the source files are not intra frame only.
23896 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
23900 @section sendcmd, asendcmd
23902 Send commands to filters in the filtergraph.
23904 These filters read commands to be sent to other filters in the
23907 @code{sendcmd} must be inserted between two video filters,
23908 @code{asendcmd} must be inserted between two audio filters, but apart
23909 from that they act the same way.
23911 The specification of commands can be provided in the filter arguments
23912 with the @var{commands} option, or in a file specified by the
23913 @var{filename} option.
23915 These filters accept the following options:
23918 Set the commands to be read and sent to the other filters.
23920 Set the filename of the commands to be read and sent to the other
23924 @subsection Commands syntax
23926 A commands description consists of a sequence of interval
23927 specifications, comprising a list of commands to be executed when a
23928 particular event related to that interval occurs. The occurring event
23929 is typically the current frame time entering or leaving a given time
23932 An interval is specified by the following syntax:
23934 @var{START}[-@var{END}] @var{COMMANDS};
23937 The time interval is specified by the @var{START} and @var{END} times.
23938 @var{END} is optional and defaults to the maximum time.
23940 The current frame time is considered within the specified interval if
23941 it is included in the interval [@var{START}, @var{END}), that is when
23942 the time is greater or equal to @var{START} and is lesser than
23945 @var{COMMANDS} consists of a sequence of one or more command
23946 specifications, separated by ",", relating to that interval. The
23947 syntax of a command specification is given by:
23949 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
23952 @var{FLAGS} is optional and specifies the type of events relating to
23953 the time interval which enable sending the specified command, and must
23954 be a non-null sequence of identifier flags separated by "+" or "|" and
23955 enclosed between "[" and "]".
23957 The following flags are recognized:
23960 The command is sent when the current frame timestamp enters the
23961 specified interval. In other words, the command is sent when the
23962 previous frame timestamp was not in the given interval, and the
23966 The command is sent when the current frame timestamp leaves the
23967 specified interval. In other words, the command is sent when the
23968 previous frame timestamp was in the given interval, and the
23972 The command @var{ARG} is interpreted as expression and result of
23973 expression is passed as @var{ARG}.
23975 The expression is evaluated through the eval API and can contain the following
23980 Original position in the file of the frame, or undefined if undefined
23981 for the current frame.
23984 The presentation timestamp in input.
23987 The count of the input frame for video or audio, starting from 0.
23990 The time in seconds of the current frame.
23993 The start time in seconds of the current command interval.
23996 The end time in seconds of the current command interval.
23999 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24004 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24007 @var{TARGET} specifies the target of the command, usually the name of
24008 the filter class or a specific filter instance name.
24010 @var{COMMAND} specifies the name of the command for the target filter.
24012 @var{ARG} is optional and specifies the optional list of argument for
24013 the given @var{COMMAND}.
24015 Between one interval specification and another, whitespaces, or
24016 sequences of characters starting with @code{#} until the end of line,
24017 are ignored and can be used to annotate comments.
24019 A simplified BNF description of the commands specification syntax
24022 @var{COMMAND_FLAG} ::= "enter" | "leave"
24023 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24024 @var{COMMAND} ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24025 @var{COMMANDS} ::= @var{COMMAND} [,@var{COMMANDS}]
24026 @var{INTERVAL} ::= @var{START}[-@var{END}] @var{COMMANDS}
24027 @var{INTERVALS} ::= @var{INTERVAL}[;@var{INTERVALS}]
24030 @subsection Examples
24034 Specify audio tempo change at second 4:
24036 asendcmd=c='4.0 atempo tempo 1.5',atempo
24040 Target a specific filter instance:
24042 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24046 Specify a list of drawtext and hue commands in a file.
24048 # show text in the interval 5-10
24049 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24050 [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24052 # desaturate the image in the interval 15-20
24053 15.0-20.0 [enter] hue s 0,
24054 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24056 [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24058 # apply an exponential saturation fade-out effect, starting from time 25
24059 25 [enter] hue s exp(25-t)
24062 A filtergraph allowing to read and process the above command list
24063 stored in a file @file{test.cmd}, can be specified with:
24065 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24070 @section setpts, asetpts
24072 Change the PTS (presentation timestamp) of the input frames.
24074 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24076 This filter accepts the following options:
24081 The expression which is evaluated for each frame to construct its timestamp.
24085 The expression is evaluated through the eval API and can contain the following
24089 @item FRAME_RATE, FR
24090 frame rate, only defined for constant frame-rate video
24093 The presentation timestamp in input
24096 The count of the input frame for video or the number of consumed samples,
24097 not including the current frame for audio, starting from 0.
24099 @item NB_CONSUMED_SAMPLES
24100 The number of consumed samples, not including the current frame (only
24103 @item NB_SAMPLES, S
24104 The number of samples in the current frame (only audio)
24106 @item SAMPLE_RATE, SR
24107 The audio sample rate.
24110 The PTS of the first frame.
24113 the time in seconds of the first frame
24116 State whether the current frame is interlaced.
24119 the time in seconds of the current frame
24122 original position in the file of the frame, or undefined if undefined
24123 for the current frame
24126 The previous input PTS.
24129 previous input time in seconds
24132 The previous output PTS.
24135 previous output time in seconds
24138 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24142 The wallclock (RTC) time at the start of the movie in microseconds.
24145 The timebase of the input timestamps.
24149 @subsection Examples
24153 Start counting PTS from zero
24155 setpts=PTS-STARTPTS
24159 Apply fast motion effect:
24165 Apply slow motion effect:
24171 Set fixed rate of 25 frames per second:
24177 Set fixed rate 25 fps with some jitter:
24179 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24183 Apply an offset of 10 seconds to the input PTS:
24189 Generate timestamps from a "live source" and rebase onto the current timebase:
24191 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24195 Generate timestamps by counting samples:
24204 Force color range for the output video frame.
24206 The @code{setrange} filter marks the color range property for the
24207 output frames. It does not change the input frame, but only sets the
24208 corresponding property, which affects how the frame is treated by
24211 The filter accepts the following options:
24216 Available values are:
24220 Keep the same color range property.
24222 @item unspecified, unknown
24223 Set the color range as unspecified.
24225 @item limited, tv, mpeg
24226 Set the color range as limited.
24228 @item full, pc, jpeg
24229 Set the color range as full.
24233 @section settb, asettb
24235 Set the timebase to use for the output frames timestamps.
24236 It is mainly useful for testing timebase configuration.
24238 It accepts the following parameters:
24243 The expression which is evaluated into the output timebase.
24247 The value for @option{tb} is an arithmetic expression representing a
24248 rational. The expression can contain the constants "AVTB" (the default
24249 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24250 audio only). Default value is "intb".
24252 @subsection Examples
24256 Set the timebase to 1/25:
24262 Set the timebase to 1/10:
24268 Set the timebase to 1001/1000:
24274 Set the timebase to 2*intb:
24280 Set the default timebase value:
24287 Convert input audio to a video output representing frequency spectrum
24288 logarithmically using Brown-Puckette constant Q transform algorithm with
24289 direct frequency domain coefficient calculation (but the transform itself
24290 is not really constant Q, instead the Q factor is actually variable/clamped),
24291 with musical tone scale, from E0 to D#10.
24293 The filter accepts the following options:
24297 Specify the video size for the output. It must be even. For the syntax of this option,
24298 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24299 Default value is @code{1920x1080}.
24302 Set the output frame rate. Default value is @code{25}.
24305 Set the bargraph height. It must be even. Default value is @code{-1} which
24306 computes the bargraph height automatically.
24309 Set the axis height. It must be even. Default value is @code{-1} which computes
24310 the axis height automatically.
24313 Set the sonogram height. It must be even. Default value is @code{-1} which
24314 computes the sonogram height automatically.
24317 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24318 instead. Default value is @code{1}.
24320 @item sono_v, volume
24321 Specify the sonogram volume expression. It can contain variables:
24324 the @var{bar_v} evaluated expression
24325 @item frequency, freq, f
24326 the frequency where it is evaluated
24327 @item timeclamp, tc
24328 the value of @var{timeclamp} option
24332 @item a_weighting(f)
24333 A-weighting of equal loudness
24334 @item b_weighting(f)
24335 B-weighting of equal loudness
24336 @item c_weighting(f)
24337 C-weighting of equal loudness.
24339 Default value is @code{16}.
24341 @item bar_v, volume2
24342 Specify the bargraph volume expression. It can contain variables:
24345 the @var{sono_v} evaluated expression
24346 @item frequency, freq, f
24347 the frequency where it is evaluated
24348 @item timeclamp, tc
24349 the value of @var{timeclamp} option
24353 @item a_weighting(f)
24354 A-weighting of equal loudness
24355 @item b_weighting(f)
24356 B-weighting of equal loudness
24357 @item c_weighting(f)
24358 C-weighting of equal loudness.
24360 Default value is @code{sono_v}.
24362 @item sono_g, gamma
24363 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24364 higher gamma makes the spectrum having more range. Default value is @code{3}.
24365 Acceptable range is @code{[1, 7]}.
24367 @item bar_g, gamma2
24368 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24372 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24373 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24375 @item timeclamp, tc
24376 Specify the transform timeclamp. At low frequency, there is trade-off between
24377 accuracy in time domain and frequency domain. If timeclamp is lower,
24378 event in time domain is represented more accurately (such as fast bass drum),
24379 otherwise event in frequency domain is represented more accurately
24380 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24383 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24384 limits future samples by applying asymmetric windowing in time domain, useful
24385 when low latency is required. Accepted range is @code{[0, 1]}.
24388 Specify the transform base frequency. Default value is @code{20.01523126408007475},
24389 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
24392 Specify the transform end frequency. Default value is @code{20495.59681441799654},
24393 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
24396 This option is deprecated and ignored.
24399 Specify the transform length in time domain. Use this option to control accuracy
24400 trade-off between time domain and frequency domain at every frequency sample.
24401 It can contain variables:
24403 @item frequency, freq, f
24404 the frequency where it is evaluated
24405 @item timeclamp, tc
24406 the value of @var{timeclamp} option.
24408 Default value is @code{384*tc/(384+tc*f)}.
24411 Specify the transform count for every video frame. Default value is @code{6}.
24412 Acceptable range is @code{[1, 30]}.
24415 Specify the transform count for every single pixel. Default value is @code{0},
24416 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
24419 Specify font file for use with freetype to draw the axis. If not specified,
24420 use embedded font. Note that drawing with font file or embedded font is not
24421 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
24425 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
24426 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
24430 Specify font color expression. This is arithmetic expression that should return
24431 integer value 0xRRGGBB. It can contain variables:
24433 @item frequency, freq, f
24434 the frequency where it is evaluated
24435 @item timeclamp, tc
24436 the value of @var{timeclamp} option
24441 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
24442 @item r(x), g(x), b(x)
24443 red, green, and blue value of intensity x.
24445 Default value is @code{st(0, (midi(f)-59.5)/12);
24446 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
24447 r(1-ld(1)) + b(ld(1))}.
24450 Specify image file to draw the axis. This option override @var{fontfile} and
24451 @var{fontcolor} option.
24454 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
24455 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
24456 Default value is @code{1}.
24459 Set colorspace. The accepted values are:
24462 Unspecified (default)
24471 BT.470BG or BT.601-6 625
24474 SMPTE-170M or BT.601-6 525
24480 BT.2020 with non-constant luminance
24485 Set spectrogram color scheme. This is list of floating point values with format
24486 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
24487 The default is @code{1|0.5|0|0|0.5|1}.
24491 @subsection Examples
24495 Playing audio while showing the spectrum:
24497 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
24501 Same as above, but with frame rate 30 fps:
24503 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
24507 Playing at 1280x720:
24509 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
24513 Disable sonogram display:
24519 A1 and its harmonics: A1, A2, (near)E3, A3:
24521 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),
24522 asplit[a][out1]; [a] showcqt [out0]'
24526 Same as above, but with more accuracy in frequency domain:
24528 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),
24529 asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
24535 bar_v=10:sono_v=bar_v*a_weighting(f)
24539 Custom gamma, now spectrum is linear to the amplitude.
24545 Custom tlength equation:
24547 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)))'
24551 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
24553 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
24557 Custom font using fontconfig:
24559 font='Courier New,Monospace,mono|bold'
24563 Custom frequency range with custom axis using image file:
24565 axisfile=myaxis.png:basefreq=40:endfreq=10000
24571 Convert input audio to video output representing the audio power spectrum.
24572 Audio amplitude is on Y-axis while frequency is on X-axis.
24574 The filter accepts the following options:
24578 Specify size of video. For the syntax of this option, check the
24579 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24580 Default is @code{1024x512}.
24584 This set how each frequency bin will be represented.
24586 It accepts the following values:
24592 Default is @code{bar}.
24595 Set amplitude scale.
24597 It accepts the following values:
24611 Default is @code{log}.
24614 Set frequency scale.
24616 It accepts the following values:
24625 Reverse logarithmic scale.
24627 Default is @code{lin}.
24630 Set window size. Allowed range is from 16 to 65536.
24632 Default is @code{2048}
24635 Set windowing function.
24637 It accepts the following values:
24660 Default is @code{hanning}.
24663 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24664 which means optimal overlap for selected window function will be picked.
24667 Set time averaging. Setting this to 0 will display current maximal peaks.
24668 Default is @code{1}, which means time averaging is disabled.
24671 Specify list of colors separated by space or by '|' which will be used to
24672 draw channel frequencies. Unrecognized or missing colors will be replaced
24676 Set channel display mode.
24678 It accepts the following values:
24683 Default is @code{combined}.
24686 Set minimum amplitude used in @code{log} amplitude scaler.
24690 @section showspatial
24692 Convert stereo input audio to a video output, representing the spatial relationship
24693 between two channels.
24695 The filter accepts the following options:
24699 Specify the video size for the output. For the syntax of this option, check the
24700 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24701 Default value is @code{512x512}.
24704 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
24707 Set window function.
24709 It accepts the following values:
24734 Default value is @code{hann}.
24737 Set ratio of overlap window. Default value is @code{0.5}.
24738 When value is @code{1} overlap is set to recommended size for specific
24739 window function currently used.
24742 @anchor{showspectrum}
24743 @section showspectrum
24745 Convert input audio to a video output, representing the audio frequency
24748 The filter accepts the following options:
24752 Specify the video size for the output. For the syntax of this option, check the
24753 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24754 Default value is @code{640x512}.
24757 Specify how the spectrum should slide along the window.
24759 It accepts the following values:
24762 the samples start again on the left when they reach the right
24764 the samples scroll from right to left
24766 frames are only produced when the samples reach the right
24768 the samples scroll from left to right
24771 Default value is @code{replace}.
24774 Specify display mode.
24776 It accepts the following values:
24779 all channels are displayed in the same row
24781 all channels are displayed in separate rows
24784 Default value is @samp{combined}.
24787 Specify display color mode.
24789 It accepts the following values:
24792 each channel is displayed in a separate color
24794 each channel is displayed using the same color scheme
24796 each channel is displayed using the rainbow color scheme
24798 each channel is displayed using the moreland color scheme
24800 each channel is displayed using the nebulae color scheme
24802 each channel is displayed using the fire color scheme
24804 each channel is displayed using the fiery color scheme
24806 each channel is displayed using the fruit color scheme
24808 each channel is displayed using the cool color scheme
24810 each channel is displayed using the magma color scheme
24812 each channel is displayed using the green color scheme
24814 each channel is displayed using the viridis color scheme
24816 each channel is displayed using the plasma color scheme
24818 each channel is displayed using the cividis color scheme
24820 each channel is displayed using the terrain color scheme
24823 Default value is @samp{channel}.
24826 Specify scale used for calculating intensity color values.
24828 It accepts the following values:
24833 square root, default
24844 Default value is @samp{sqrt}.
24847 Specify frequency scale.
24849 It accepts the following values:
24857 Default value is @samp{lin}.
24860 Set saturation modifier for displayed colors. Negative values provide
24861 alternative color scheme. @code{0} is no saturation at all.
24862 Saturation must be in [-10.0, 10.0] range.
24863 Default value is @code{1}.
24866 Set window function.
24868 It accepts the following values:
24893 Default value is @code{hann}.
24896 Set orientation of time vs frequency axis. Can be @code{vertical} or
24897 @code{horizontal}. Default is @code{vertical}.
24900 Set ratio of overlap window. Default value is @code{0}.
24901 When value is @code{1} overlap is set to recommended size for specific
24902 window function currently used.
24905 Set scale gain for calculating intensity color values.
24906 Default value is @code{1}.
24909 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
24912 Set color rotation, must be in [-1.0, 1.0] range.
24913 Default value is @code{0}.
24916 Set start frequency from which to display spectrogram. Default is @code{0}.
24919 Set stop frequency to which to display spectrogram. Default is @code{0}.
24922 Set upper frame rate limit. Default is @code{auto}, unlimited.
24925 Draw time and frequency axes and legends. Default is disabled.
24928 The usage is very similar to the showwaves filter; see the examples in that
24931 @subsection Examples
24935 Large window with logarithmic color scaling:
24937 showspectrum=s=1280x480:scale=log
24941 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
24943 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24944 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
24948 @section showspectrumpic
24950 Convert input audio to a single video frame, representing the audio frequency
24953 The filter accepts the following options:
24957 Specify the video size for the output. For the syntax of this option, check the
24958 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24959 Default value is @code{4096x2048}.
24962 Specify display mode.
24964 It accepts the following values:
24967 all channels are displayed in the same row
24969 all channels are displayed in separate rows
24971 Default value is @samp{combined}.
24974 Specify display color mode.
24976 It accepts the following values:
24979 each channel is displayed in a separate color
24981 each channel is displayed using the same color scheme
24983 each channel is displayed using the rainbow color scheme
24985 each channel is displayed using the moreland color scheme
24987 each channel is displayed using the nebulae color scheme
24989 each channel is displayed using the fire color scheme
24991 each channel is displayed using the fiery color scheme
24993 each channel is displayed using the fruit color scheme
24995 each channel is displayed using the cool color scheme
24997 each channel is displayed using the magma color scheme
24999 each channel is displayed using the green color scheme
25001 each channel is displayed using the viridis color scheme
25003 each channel is displayed using the plasma color scheme
25005 each channel is displayed using the cividis color scheme
25007 each channel is displayed using the terrain color scheme
25009 Default value is @samp{intensity}.
25012 Specify scale used for calculating intensity color values.
25014 It accepts the following values:
25019 square root, default
25029 Default value is @samp{log}.
25032 Specify frequency scale.
25034 It accepts the following values:
25042 Default value is @samp{lin}.
25045 Set saturation modifier for displayed colors. Negative values provide
25046 alternative color scheme. @code{0} is no saturation at all.
25047 Saturation must be in [-10.0, 10.0] range.
25048 Default value is @code{1}.
25051 Set window function.
25053 It accepts the following values:
25077 Default value is @code{hann}.
25080 Set orientation of time vs frequency axis. Can be @code{vertical} or
25081 @code{horizontal}. Default is @code{vertical}.
25084 Set scale gain for calculating intensity color values.
25085 Default value is @code{1}.
25088 Draw time and frequency axes and legends. Default is enabled.
25091 Set color rotation, must be in [-1.0, 1.0] range.
25092 Default value is @code{0}.
25095 Set start frequency from which to display spectrogram. Default is @code{0}.
25098 Set stop frequency to which to display spectrogram. Default is @code{0}.
25101 @subsection Examples
25105 Extract an audio spectrogram of a whole audio track
25106 in a 1024x1024 picture using @command{ffmpeg}:
25108 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25112 @section showvolume
25114 Convert input audio volume to a video output.
25116 The filter accepts the following options:
25123 Set border width, allowed range is [0, 5]. Default is 1.
25126 Set channel width, allowed range is [80, 8192]. Default is 400.
25129 Set channel height, allowed range is [1, 900]. Default is 20.
25132 Set fade, allowed range is [0, 1]. Default is 0.95.
25135 Set volume color expression.
25137 The expression can use the following variables:
25141 Current max volume of channel in dB.
25147 Current channel number, starting from 0.
25151 If set, displays channel names. Default is enabled.
25154 If set, displays volume values. Default is enabled.
25157 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25158 default is @code{h}.
25161 Set step size, allowed range is [0, 5]. Default is 0, which means
25165 Set background opacity, allowed range is [0, 1]. Default is 0.
25168 Set metering mode, can be peak: @code{p} or rms: @code{r},
25169 default is @code{p}.
25172 Set display scale, can be linear: @code{lin} or log: @code{log},
25173 default is @code{lin}.
25177 If set to > 0., display a line for the max level
25178 in the previous seconds.
25179 default is disabled: @code{0.}
25182 The color of the max line. Use when @code{dm} option is set to > 0.
25183 default is: @code{orange}
25188 Convert input audio to a video output, representing the samples waves.
25190 The filter accepts the following options:
25194 Specify the video size for the output. For the syntax of this option, check the
25195 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25196 Default value is @code{600x240}.
25201 Available values are:
25204 Draw a point for each sample.
25207 Draw a vertical line for each sample.
25210 Draw a point for each sample and a line between them.
25213 Draw a centered vertical line for each sample.
25216 Default value is @code{point}.
25219 Set the number of samples which are printed on the same column. A
25220 larger value will decrease the frame rate. Must be a positive
25221 integer. This option can be set only if the value for @var{rate}
25222 is not explicitly specified.
25225 Set the (approximate) output frame rate. This is done by setting the
25226 option @var{n}. Default value is "25".
25228 @item split_channels
25229 Set if channels should be drawn separately or overlap. Default value is 0.
25232 Set colors separated by '|' which are going to be used for drawing of each channel.
25235 Set amplitude scale.
25237 Available values are:
25255 Set the draw mode. This is mostly useful to set for high @var{n}.
25257 Available values are:
25260 Scale pixel values for each drawn sample.
25263 Draw every sample directly.
25266 Default value is @code{scale}.
25269 @subsection Examples
25273 Output the input file audio and the corresponding video representation
25276 amovie=a.mp3,asplit[out0],showwaves[out1]
25280 Create a synthetic signal and show it with showwaves, forcing a
25281 frame rate of 30 frames per second:
25283 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25287 @section showwavespic
25289 Convert input audio to a single video frame, representing the samples waves.
25291 The filter accepts the following options:
25295 Specify the video size for the output. For the syntax of this option, check the
25296 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25297 Default value is @code{600x240}.
25299 @item split_channels
25300 Set if channels should be drawn separately or overlap. Default value is 0.
25303 Set colors separated by '|' which are going to be used for drawing of each channel.
25306 Set amplitude scale.
25308 Available values are:
25328 Available values are:
25331 Scale pixel values for each drawn sample.
25334 Draw every sample directly.
25337 Default value is @code{scale}.
25340 @subsection Examples
25344 Extract a channel split representation of the wave form of a whole audio track
25345 in a 1024x800 picture using @command{ffmpeg}:
25347 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25351 @section sidedata, asidedata
25353 Delete frame side data, or select frames based on it.
25355 This filter accepts the following options:
25359 Set mode of operation of the filter.
25361 Can be one of the following:
25365 Select every frame with side data of @code{type}.
25368 Delete side data of @code{type}. If @code{type} is not set, delete all side
25374 Set side data type used with all modes. Must be set for @code{select} mode. For
25375 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
25376 in @file{libavutil/frame.h}. For example, to choose
25377 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
25381 @section spectrumsynth
25383 Synthesize audio from 2 input video spectrums, first input stream represents
25384 magnitude across time and second represents phase across time.
25385 The filter will transform from frequency domain as displayed in videos back
25386 to time domain as presented in audio output.
25388 This filter is primarily created for reversing processed @ref{showspectrum}
25389 filter outputs, but can synthesize sound from other spectrograms too.
25390 But in such case results are going to be poor if the phase data is not
25391 available, because in such cases phase data need to be recreated, usually
25392 it's just recreated from random noise.
25393 For best results use gray only output (@code{channel} color mode in
25394 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
25395 @code{lin} scale for phase video. To produce phase, for 2nd video, use
25396 @code{data} option. Inputs videos should generally use @code{fullframe}
25397 slide mode as that saves resources needed for decoding video.
25399 The filter accepts the following options:
25403 Specify sample rate of output audio, the sample rate of audio from which
25404 spectrum was generated may differ.
25407 Set number of channels represented in input video spectrums.
25410 Set scale which was used when generating magnitude input spectrum.
25411 Can be @code{lin} or @code{log}. Default is @code{log}.
25414 Set slide which was used when generating inputs spectrums.
25415 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
25416 Default is @code{fullframe}.
25419 Set window function used for resynthesis.
25422 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25423 which means optimal overlap for selected window function will be picked.
25426 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
25427 Default is @code{vertical}.
25430 @subsection Examples
25434 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
25435 then resynthesize videos back to audio with spectrumsynth:
25437 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
25438 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
25439 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
25443 @section split, asplit
25445 Split input into several identical outputs.
25447 @code{asplit} works with audio input, @code{split} with video.
25449 The filter accepts a single parameter which specifies the number of outputs. If
25450 unspecified, it defaults to 2.
25452 @subsection Examples
25456 Create two separate outputs from the same input:
25458 [in] split [out0][out1]
25462 To create 3 or more outputs, you need to specify the number of
25465 [in] asplit=3 [out0][out1][out2]
25469 Create two separate outputs from the same input, one cropped and
25472 [in] split [splitout1][splitout2];
25473 [splitout1] crop=100:100:0:0 [cropout];
25474 [splitout2] pad=200:200:100:100 [padout];
25478 Create 5 copies of the input audio with @command{ffmpeg}:
25480 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
25486 Receive commands sent through a libzmq client, and forward them to
25487 filters in the filtergraph.
25489 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
25490 must be inserted between two video filters, @code{azmq} between two
25491 audio filters. Both are capable to send messages to any filter type.
25493 To enable these filters you need to install the libzmq library and
25494 headers and configure FFmpeg with @code{--enable-libzmq}.
25496 For more information about libzmq see:
25497 @url{http://www.zeromq.org/}
25499 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
25500 receives messages sent through a network interface defined by the
25501 @option{bind_address} (or the abbreviation "@option{b}") option.
25502 Default value of this option is @file{tcp://localhost:5555}. You may
25503 want to alter this value to your needs, but do not forget to escape any
25504 ':' signs (see @ref{filtergraph escaping}).
25506 The received message must be in the form:
25508 @var{TARGET} @var{COMMAND} [@var{ARG}]
25511 @var{TARGET} specifies the target of the command, usually the name of
25512 the filter class or a specific filter instance name. The default
25513 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
25514 but you can override this by using the @samp{filter_name@@id} syntax
25515 (see @ref{Filtergraph syntax}).
25517 @var{COMMAND} specifies the name of the command for the target filter.
25519 @var{ARG} is optional and specifies the optional argument list for the
25520 given @var{COMMAND}.
25522 Upon reception, the message is processed and the corresponding command
25523 is injected into the filtergraph. Depending on the result, the filter
25524 will send a reply to the client, adopting the format:
25526 @var{ERROR_CODE} @var{ERROR_REASON}
25530 @var{MESSAGE} is optional.
25532 @subsection Examples
25534 Look at @file{tools/zmqsend} for an example of a zmq client which can
25535 be used to send commands processed by these filters.
25537 Consider the following filtergraph generated by @command{ffplay}.
25538 In this example the last overlay filter has an instance name. All other
25539 filters will have default instance names.
25542 ffplay -dumpgraph 1 -f lavfi "
25543 color=s=100x100:c=red [l];
25544 color=s=100x100:c=blue [r];
25545 nullsrc=s=200x100, zmq [bg];
25546 [bg][l] overlay [bg+l];
25547 [bg+l][r] overlay@@my=x=100 "
25550 To change the color of the left side of the video, the following
25551 command can be used:
25553 echo Parsed_color_0 c yellow | tools/zmqsend
25556 To change the right side:
25558 echo Parsed_color_1 c pink | tools/zmqsend
25561 To change the position of the right side:
25563 echo overlay@@my x 150 | tools/zmqsend
25567 @c man end MULTIMEDIA FILTERS
25569 @chapter Multimedia Sources
25570 @c man begin MULTIMEDIA SOURCES
25572 Below is a description of the currently available multimedia sources.
25576 This is the same as @ref{movie} source, except it selects an audio
25582 Read audio and/or video stream(s) from a movie container.
25584 It accepts the following parameters:
25588 The name of the resource to read (not necessarily a file; it can also be a
25589 device or a stream accessed through some protocol).
25591 @item format_name, f
25592 Specifies the format assumed for the movie to read, and can be either
25593 the name of a container or an input device. If not specified, the
25594 format is guessed from @var{movie_name} or by probing.
25596 @item seek_point, sp
25597 Specifies the seek point in seconds. The frames will be output
25598 starting from this seek point. The parameter is evaluated with
25599 @code{av_strtod}, so the numerical value may be suffixed by an IS
25600 postfix. The default value is "0".
25603 Specifies the streams to read. Several streams can be specified,
25604 separated by "+". The source will then have as many outputs, in the
25605 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
25606 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
25607 respectively the default (best suited) video and audio stream. Default
25608 is "dv", or "da" if the filter is called as "amovie".
25610 @item stream_index, si
25611 Specifies the index of the video stream to read. If the value is -1,
25612 the most suitable video stream will be automatically selected. The default
25613 value is "-1". Deprecated. If the filter is called "amovie", it will select
25614 audio instead of video.
25617 Specifies how many times to read the stream in sequence.
25618 If the value is 0, the stream will be looped infinitely.
25619 Default value is "1".
25621 Note that when the movie is looped the source timestamps are not
25622 changed, so it will generate non monotonically increasing timestamps.
25624 @item discontinuity
25625 Specifies the time difference between frames above which the point is
25626 considered a timestamp discontinuity which is removed by adjusting the later
25630 It allows overlaying a second video on top of the main input of
25631 a filtergraph, as shown in this graph:
25633 input -----------> deltapts0 --> overlay --> output
25636 movie --> scale--> deltapts1 -------+
25638 @subsection Examples
25642 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
25643 on top of the input labelled "in":
25645 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
25646 [in] setpts=PTS-STARTPTS [main];
25647 [main][over] overlay=16:16 [out]
25651 Read from a video4linux2 device, and overlay it on top of the input
25654 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
25655 [in] setpts=PTS-STARTPTS [main];
25656 [main][over] overlay=16:16 [out]
25660 Read the first video stream and the audio stream with id 0x81 from
25661 dvd.vob; the video is connected to the pad named "video" and the audio is
25662 connected to the pad named "audio":
25664 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
25668 @subsection Commands
25670 Both movie and amovie support the following commands:
25673 Perform seek using "av_seek_frame".
25674 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
25677 @var{stream_index}: If stream_index is -1, a default
25678 stream is selected, and @var{timestamp} is automatically converted
25679 from AV_TIME_BASE units to the stream specific time_base.
25681 @var{timestamp}: Timestamp in AVStream.time_base units
25682 or, if no stream is specified, in AV_TIME_BASE units.
25684 @var{flags}: Flags which select direction and seeking mode.
25688 Get movie duration in AV_TIME_BASE units.
25692 @c man end MULTIMEDIA SOURCES