doc/filters: mention rubberband supported commands
[ffmpeg.git] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
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:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
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]}.
38
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.
45
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
48 by a colon.
49
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
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
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.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
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
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
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:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
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.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
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.
106
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.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
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}.
123
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.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
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}]
134
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
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
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}.
155
156 @item
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.
161
162 @end itemize
163
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
166 @samp{|}.
167
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.
173
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.
181
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
184 created.
185
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
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
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.
197
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.
201
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.
205
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.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
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}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
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.
231
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{\'}.
235
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.
239
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.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
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:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
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:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
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.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
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:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{framesync}
316 @chapter Options for filters with several inputs (framesync)
317 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
318
319 Some filters with several inputs support a common set of options.
320 These options can only be set by name, not with the short notation.
321
322 @table @option
323 @item eof_action
324 The action to take when EOF is encountered on the secondary input; it accepts
325 one of the following values:
326
327 @table @option
328 @item repeat
329 Repeat the last frame (the default).
330 @item endall
331 End both streams.
332 @item pass
333 Pass the main input through.
334 @end table
335
336 @item shortest
337 If set to 1, force the output to terminate when the shortest input
338 terminates. Default value is 0.
339
340 @item repeatlast
341 If set to 1, force the filter to extend the last frame of secondary streams
342 until the end of the primary stream. A value of 0 disables this behavior.
343 Default value is 1.
344 @end table
345
346 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
347
348 @chapter Audio Filters
349 @c man begin AUDIO FILTERS
350
351 When you configure your FFmpeg build, you can disable any of the
352 existing filters using @code{--disable-filters}.
353 The configure output will show the audio filters included in your
354 build.
355
356 Below is a description of the currently available audio filters.
357
358 @section acompressor
359
360 A compressor is mainly used to reduce the dynamic range of a signal.
361 Especially modern music is mostly compressed at a high ratio to
362 improve the overall loudness. It's done to get the highest attention
363 of a listener, "fatten" the sound and bring more "power" to the track.
364 If a signal is compressed too much it may sound dull or "dead"
365 afterwards or it may start to "pump" (which could be a powerful effect
366 but can also destroy a track completely).
367 The right compression is the key to reach a professional sound and is
368 the high art of mixing and mastering. Because of its complex settings
369 it may take a long time to get the right feeling for this kind of effect.
370
371 Compression is done by detecting the volume above a chosen level
372 @code{threshold} and dividing it by the factor set with @code{ratio}.
373 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
374 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
375 the signal would cause distortion of the waveform the reduction can be
376 levelled over the time. This is done by setting "Attack" and "Release".
377 @code{attack} determines how long the signal has to rise above the threshold
378 before any reduction will occur and @code{release} sets the time the signal
379 has to fall below the threshold to reduce the reduction again. Shorter signals
380 than the chosen attack time will be left untouched.
381 The overall reduction of the signal can be made up afterwards with the
382 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
383 raising the makeup to this level results in a signal twice as loud than the
384 source. To gain a softer entry in the compression the @code{knee} flattens the
385 hard edge at the threshold in the range of the chosen decibels.
386
387 The filter accepts the following options:
388
389 @table @option
390 @item level_in
391 Set input gain. Default is 1. Range is between 0.015625 and 64.
392
393 @item mode
394 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
395 Default is @code{downward}.
396
397 @item threshold
398 If a signal of stream rises above this level it will affect the gain
399 reduction.
400 By default it is 0.125. Range is between 0.00097563 and 1.
401
402 @item ratio
403 Set a ratio by which the signal is reduced. 1:2 means that if the level
404 rose 4dB above the threshold, it will be only 2dB above after the reduction.
405 Default is 2. Range is between 1 and 20.
406
407 @item attack
408 Amount of milliseconds the signal has to rise above the threshold before gain
409 reduction starts. Default is 20. Range is between 0.01 and 2000.
410
411 @item release
412 Amount of milliseconds the signal has to fall below the threshold before
413 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
414
415 @item makeup
416 Set the amount by how much signal will be amplified after processing.
417 Default is 1. Range is from 1 to 64.
418
419 @item knee
420 Curve the sharp knee around the threshold to enter gain reduction more softly.
421 Default is 2.82843. Range is between 1 and 8.
422
423 @item link
424 Choose if the @code{average} level between all channels of input stream
425 or the louder(@code{maximum}) channel of input stream affects the
426 reduction. Default is @code{average}.
427
428 @item detection
429 Should the exact signal be taken in case of @code{peak} or an RMS one in case
430 of @code{rms}. Default is @code{rms} which is mostly smoother.
431
432 @item mix
433 How much to use compressed signal in output. Default is 1.
434 Range is between 0 and 1.
435 @end table
436
437 @section acontrast
438 Simple audio dynamic range compression/expansion filter.
439
440 The filter accepts the following options:
441
442 @table @option
443 @item contrast
444 Set contrast. Default is 33. Allowed range is between 0 and 100.
445 @end table
446
447 @section acopy
448
449 Copy the input audio source unchanged to the output. This is mainly useful for
450 testing purposes.
451
452 @section acrossfade
453
454 Apply cross fade from one input audio stream to another input audio stream.
455 The cross fade is applied for specified duration near the end of first stream.
456
457 The filter accepts the following options:
458
459 @table @option
460 @item nb_samples, ns
461 Specify the number of samples for which the cross fade effect has to last.
462 At the end of the cross fade effect the first input audio will be completely
463 silent. Default is 44100.
464
465 @item duration, d
466 Specify the duration of the cross fade effect. See
467 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
468 for the accepted syntax.
469 By default the duration is determined by @var{nb_samples}.
470 If set this option is used instead of @var{nb_samples}.
471
472 @item overlap, o
473 Should first stream end overlap with second stream start. Default is enabled.
474
475 @item curve1
476 Set curve for cross fade transition for first stream.
477
478 @item curve2
479 Set curve for cross fade transition for second stream.
480
481 For description of available curve types see @ref{afade} filter description.
482 @end table
483
484 @subsection Examples
485
486 @itemize
487 @item
488 Cross fade from one input to another:
489 @example
490 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
491 @end example
492
493 @item
494 Cross fade from one input to another but without overlapping:
495 @example
496 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
497 @end example
498 @end itemize
499
500 @section acrossover
501 Split audio stream into several bands.
502
503 This filter splits audio stream into two or more frequency ranges.
504 Summing all streams back will give flat output.
505
506 The filter accepts the following options:
507
508 @table @option
509 @item split
510 Set split frequencies. Those must be positive and increasing.
511
512 @item order
513 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
514 Default is @var{4th}.
515 @end table
516
517 @section acrusher
518
519 Reduce audio bit resolution.
520
521 This filter is bit crusher with enhanced functionality. A bit crusher
522 is used to audibly reduce number of bits an audio signal is sampled
523 with. This doesn't change the bit depth at all, it just produces the
524 effect. Material reduced in bit depth sounds more harsh and "digital".
525 This filter is able to even round to continuous values instead of discrete
526 bit depths.
527 Additionally it has a D/C offset which results in different crushing of
528 the lower and the upper half of the signal.
529 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
530
531 Another feature of this filter is the logarithmic mode.
532 This setting switches from linear distances between bits to logarithmic ones.
533 The result is a much more "natural" sounding crusher which doesn't gate low
534 signals for example. The human ear has a logarithmic perception,
535 so this kind of crushing is much more pleasant.
536 Logarithmic crushing is also able to get anti-aliased.
537
538 The filter accepts the following options:
539
540 @table @option
541 @item level_in
542 Set level in.
543
544 @item level_out
545 Set level out.
546
547 @item bits
548 Set bit reduction.
549
550 @item mix
551 Set mixing amount.
552
553 @item mode
554 Can be linear: @code{lin} or logarithmic: @code{log}.
555
556 @item dc
557 Set DC.
558
559 @item aa
560 Set anti-aliasing.
561
562 @item samples
563 Set sample reduction.
564
565 @item lfo
566 Enable LFO. By default disabled.
567
568 @item lforange
569 Set LFO range.
570
571 @item lforate
572 Set LFO rate.
573 @end table
574
575 @section acue
576
577 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
578 filter.
579
580 @section adeclick
581 Remove impulsive noise from input audio.
582
583 Samples detected as impulsive noise are replaced by interpolated samples using
584 autoregressive modelling.
585
586 @table @option
587 @item w
588 Set window size, in milliseconds. Allowed range is from @code{10} to
589 @code{100}. Default value is @code{55} milliseconds.
590 This sets size of window which will be processed at once.
591
592 @item o
593 Set window overlap, in percentage of window size. Allowed range is from
594 @code{50} to @code{95}. Default value is @code{75} percent.
595 Setting this to a very high value increases impulsive noise removal but makes
596 whole process much slower.
597
598 @item a
599 Set autoregression order, in percentage of window size. Allowed range is from
600 @code{0} to @code{25}. Default value is @code{2} percent. This option also
601 controls quality of interpolated samples using neighbour good samples.
602
603 @item t
604 Set threshold value. Allowed range is from @code{1} to @code{100}.
605 Default value is @code{2}.
606 This controls the strength of impulsive noise which is going to be removed.
607 The lower value, the more samples will be detected as impulsive noise.
608
609 @item b
610 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
611 @code{10}. Default value is @code{2}.
612 If any two samples detected as noise are spaced less than this value then any
613 sample between those two samples will be also detected as noise.
614
615 @item m
616 Set overlap method.
617
618 It accepts the following values:
619 @table @option
620 @item a
621 Select overlap-add method. Even not interpolated samples are slightly
622 changed with this method.
623
624 @item s
625 Select overlap-save method. Not interpolated samples remain unchanged.
626 @end table
627
628 Default value is @code{a}.
629 @end table
630
631 @section adeclip
632 Remove clipped samples from input audio.
633
634 Samples detected as clipped are replaced by interpolated samples using
635 autoregressive modelling.
636
637 @table @option
638 @item w
639 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
640 Default value is @code{55} milliseconds.
641 This sets size of window which will be processed at once.
642
643 @item o
644 Set window overlap, in percentage of window size. Allowed range is from @code{50}
645 to @code{95}. Default value is @code{75} percent.
646
647 @item a
648 Set autoregression order, in percentage of window size. Allowed range is from
649 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
650 quality of interpolated samples using neighbour good samples.
651
652 @item t
653 Set threshold value. Allowed range is from @code{1} to @code{100}.
654 Default value is @code{10}. Higher values make clip detection less aggressive.
655
656 @item n
657 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
658 Default value is @code{1000}. Higher values make clip detection less aggressive.
659
660 @item m
661 Set overlap method.
662
663 It accepts the following values:
664 @table @option
665 @item a
666 Select overlap-add method. Even not interpolated samples are slightly changed
667 with this method.
668
669 @item s
670 Select overlap-save method. Not interpolated samples remain unchanged.
671 @end table
672
673 Default value is @code{a}.
674 @end table
675
676 @section adelay
677
678 Delay one or more audio channels.
679
680 Samples in delayed channel are filled with silence.
681
682 The filter accepts the following option:
683
684 @table @option
685 @item delays
686 Set list of delays in milliseconds for each channel separated by '|'.
687 Unused delays will be silently ignored. If number of given delays is
688 smaller than number of channels all remaining channels will not be delayed.
689 If you want to delay exact number of samples, append 'S' to number.
690 If you want instead to delay in seconds, append 's' to number.
691
692 @item all
693 Use last set delay for all remaining channels. By default is disabled.
694 This option if enabled changes how option @code{delays} is interpreted.
695 @end table
696
697 @subsection Examples
698
699 @itemize
700 @item
701 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
702 the second channel (and any other channels that may be present) unchanged.
703 @example
704 adelay=1500|0|500
705 @end example
706
707 @item
708 Delay second channel by 500 samples, the third channel by 700 samples and leave
709 the first channel (and any other channels that may be present) unchanged.
710 @example
711 adelay=0|500S|700S
712 @end example
713
714 @item
715 Delay all channels by same number of samples:
716 @example
717 adelay=delays=64S:all=1
718 @end example
719 @end itemize
720
721 @section aderivative, aintegral
722
723 Compute derivative/integral of audio stream.
724
725 Applying both filters one after another produces original audio.
726
727 @section aecho
728
729 Apply echoing to the input audio.
730
731 Echoes are reflected sound and can occur naturally amongst mountains
732 (and sometimes large buildings) when talking or shouting; digital echo
733 effects emulate this behaviour and are often used to help fill out the
734 sound of a single instrument or vocal. The time difference between the
735 original signal and the reflection is the @code{delay}, and the
736 loudness of the reflected signal is the @code{decay}.
737 Multiple echoes can have different delays and decays.
738
739 A description of the accepted parameters follows.
740
741 @table @option
742 @item in_gain
743 Set input gain of reflected signal. Default is @code{0.6}.
744
745 @item out_gain
746 Set output gain of reflected signal. Default is @code{0.3}.
747
748 @item delays
749 Set list of time intervals in milliseconds between original signal and reflections
750 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
751 Default is @code{1000}.
752
753 @item decays
754 Set list of loudness of reflected signals separated by '|'.
755 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
756 Default is @code{0.5}.
757 @end table
758
759 @subsection Examples
760
761 @itemize
762 @item
763 Make it sound as if there are twice as many instruments as are actually playing:
764 @example
765 aecho=0.8:0.88:60:0.4
766 @end example
767
768 @item
769 If delay is very short, then it sounds like a (metallic) robot playing music:
770 @example
771 aecho=0.8:0.88:6:0.4
772 @end example
773
774 @item
775 A longer delay will sound like an open air concert in the mountains:
776 @example
777 aecho=0.8:0.9:1000:0.3
778 @end example
779
780 @item
781 Same as above but with one more mountain:
782 @example
783 aecho=0.8:0.9:1000|1800:0.3|0.25
784 @end example
785 @end itemize
786
787 @section aemphasis
788 Audio emphasis filter creates or restores material directly taken from LPs or
789 emphased CDs with different filter curves. E.g. to store music on vinyl the
790 signal has to be altered by a filter first to even out the disadvantages of
791 this recording medium.
792 Once the material is played back the inverse filter has to be applied to
793 restore the distortion of the frequency response.
794
795 The filter accepts the following options:
796
797 @table @option
798 @item level_in
799 Set input gain.
800
801 @item level_out
802 Set output gain.
803
804 @item mode
805 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
806 use @code{production} mode. Default is @code{reproduction} mode.
807
808 @item type
809 Set filter type. Selects medium. Can be one of the following:
810
811 @table @option
812 @item col
813 select Columbia.
814 @item emi
815 select EMI.
816 @item bsi
817 select BSI (78RPM).
818 @item riaa
819 select RIAA.
820 @item cd
821 select Compact Disc (CD).
822 @item 50fm
823 select 50µs (FM).
824 @item 75fm
825 select 75µs (FM).
826 @item 50kf
827 select 50µs (FM-KF).
828 @item 75kf
829 select 75µs (FM-KF).
830 @end table
831 @end table
832
833 @section aeval
834
835 Modify an audio signal according to the specified expressions.
836
837 This filter accepts one or more expressions (one for each channel),
838 which are evaluated and used to modify a corresponding audio signal.
839
840 It accepts the following parameters:
841
842 @table @option
843 @item exprs
844 Set the '|'-separated expressions list for each separate channel. If
845 the number of input channels is greater than the number of
846 expressions, the last specified expression is used for the remaining
847 output channels.
848
849 @item channel_layout, c
850 Set output channel layout. If not specified, the channel layout is
851 specified by the number of expressions. If set to @samp{same}, it will
852 use by default the same input channel layout.
853 @end table
854
855 Each expression in @var{exprs} can contain the following constants and functions:
856
857 @table @option
858 @item ch
859 channel number of the current expression
860
861 @item n
862 number of the evaluated sample, starting from 0
863
864 @item s
865 sample rate
866
867 @item t
868 time of the evaluated sample expressed in seconds
869
870 @item nb_in_channels
871 @item nb_out_channels
872 input and output number of channels
873
874 @item val(CH)
875 the value of input channel with number @var{CH}
876 @end table
877
878 Note: this filter is slow. For faster processing you should use a
879 dedicated filter.
880
881 @subsection Examples
882
883 @itemize
884 @item
885 Half volume:
886 @example
887 aeval=val(ch)/2:c=same
888 @end example
889
890 @item
891 Invert phase of the second channel:
892 @example
893 aeval=val(0)|-val(1)
894 @end example
895 @end itemize
896
897 @anchor{afade}
898 @section afade
899
900 Apply fade-in/out effect to input audio.
901
902 A description of the accepted parameters follows.
903
904 @table @option
905 @item type, t
906 Specify the effect type, can be either @code{in} for fade-in, or
907 @code{out} for a fade-out effect. Default is @code{in}.
908
909 @item start_sample, ss
910 Specify the number of the start sample for starting to apply the fade
911 effect. Default is 0.
912
913 @item nb_samples, ns
914 Specify the number of samples for which the fade effect has to last. At
915 the end of the fade-in effect the output audio will have the same
916 volume as the input audio, at the end of the fade-out transition
917 the output audio will be silence. Default is 44100.
918
919 @item start_time, st
920 Specify the start time of the fade effect. Default is 0.
921 The value must be specified as a time duration; see
922 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
923 for the accepted syntax.
924 If set this option is used instead of @var{start_sample}.
925
926 @item duration, d
927 Specify the duration of the fade effect. See
928 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
929 for the accepted syntax.
930 At the end of the fade-in effect the output audio will have the same
931 volume as the input audio, at the end of the fade-out transition
932 the output audio will be silence.
933 By default the duration is determined by @var{nb_samples}.
934 If set this option is used instead of @var{nb_samples}.
935
936 @item curve
937 Set curve for fade transition.
938
939 It accepts the following values:
940 @table @option
941 @item tri
942 select triangular, linear slope (default)
943 @item qsin
944 select quarter of sine wave
945 @item hsin
946 select half of sine wave
947 @item esin
948 select exponential sine wave
949 @item log
950 select logarithmic
951 @item ipar
952 select inverted parabola
953 @item qua
954 select quadratic
955 @item cub
956 select cubic
957 @item squ
958 select square root
959 @item cbr
960 select cubic root
961 @item par
962 select parabola
963 @item exp
964 select exponential
965 @item iqsin
966 select inverted quarter of sine wave
967 @item ihsin
968 select inverted half of sine wave
969 @item dese
970 select double-exponential seat
971 @item desi
972 select double-exponential sigmoid
973 @item losi
974 select logistic sigmoid
975 @item nofade
976 no fade applied
977 @end table
978 @end table
979
980 @subsection Examples
981
982 @itemize
983 @item
984 Fade in first 15 seconds of audio:
985 @example
986 afade=t=in:ss=0:d=15
987 @end example
988
989 @item
990 Fade out last 25 seconds of a 900 seconds audio:
991 @example
992 afade=t=out:st=875:d=25
993 @end example
994 @end itemize
995
996 @section afftdn
997 Denoise audio samples with FFT.
998
999 A description of the accepted parameters follows.
1000
1001 @table @option
1002 @item nr
1003 Set the noise reduction in dB, allowed range is 0.01 to 97.
1004 Default value is 12 dB.
1005
1006 @item nf
1007 Set the noise floor in dB, allowed range is -80 to -20.
1008 Default value is -50 dB.
1009
1010 @item nt
1011 Set the noise type.
1012
1013 It accepts the following values:
1014 @table @option
1015 @item w
1016 Select white noise.
1017
1018 @item v
1019 Select vinyl noise.
1020
1021 @item s
1022 Select shellac noise.
1023
1024 @item c
1025 Select custom noise, defined in @code{bn} option.
1026
1027 Default value is white noise.
1028 @end table
1029
1030 @item bn
1031 Set custom band noise for every one of 15 bands.
1032 Bands are separated by ' ' or '|'.
1033
1034 @item rf
1035 Set the residual floor in dB, allowed range is -80 to -20.
1036 Default value is -38 dB.
1037
1038 @item tn
1039 Enable noise tracking. By default is disabled.
1040 With this enabled, noise floor is automatically adjusted.
1041
1042 @item tr
1043 Enable residual tracking. By default is disabled.
1044
1045 @item om
1046 Set the output mode.
1047
1048 It accepts the following values:
1049 @table @option
1050 @item i
1051 Pass input unchanged.
1052
1053 @item o
1054 Pass noise filtered out.
1055
1056 @item n
1057 Pass only noise.
1058
1059 Default value is @var{o}.
1060 @end table
1061 @end table
1062
1063 @subsection Commands
1064
1065 This filter supports the following commands:
1066 @table @option
1067 @item sample_noise, sn
1068 Start or stop measuring noise profile.
1069 Syntax for the command is : "start" or "stop" string.
1070 After measuring noise profile is stopped it will be
1071 automatically applied in filtering.
1072
1073 @item noise_reduction, nr
1074 Change noise reduction. Argument is single float number.
1075 Syntax for the command is : "@var{noise_reduction}"
1076
1077 @item noise_floor, nf
1078 Change noise floor. Argument is single float number.
1079 Syntax for the command is : "@var{noise_floor}"
1080
1081 @item output_mode, om
1082 Change output mode operation.
1083 Syntax for the command is : "i", "o" or "n" string.
1084 @end table
1085
1086 @section afftfilt
1087 Apply arbitrary expressions to samples in frequency domain.
1088
1089 @table @option
1090 @item real
1091 Set frequency domain real expression for each separate channel separated
1092 by '|'. Default is "re".
1093 If the number of input channels is greater than the number of
1094 expressions, the last specified expression is used for the remaining
1095 output channels.
1096
1097 @item imag
1098 Set frequency domain imaginary expression for each separate channel
1099 separated by '|'. Default is "im".
1100
1101 Each expression in @var{real} and @var{imag} can contain the following
1102 constants and functions:
1103
1104 @table @option
1105 @item sr
1106 sample rate
1107
1108 @item b
1109 current frequency bin number
1110
1111 @item nb
1112 number of available bins
1113
1114 @item ch
1115 channel number of the current expression
1116
1117 @item chs
1118 number of channels
1119
1120 @item pts
1121 current frame pts
1122
1123 @item re
1124 current real part of frequency bin of current channel
1125
1126 @item im
1127 current imaginary part of frequency bin of current channel
1128
1129 @item real(b, ch)
1130 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1131
1132 @item imag(b, ch)
1133 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1134 @end table
1135
1136 @item win_size
1137 Set window size. Allowed range is from 16 to 131072.
1138 Default is @code{4096}
1139
1140 @item win_func
1141 Set window function. Default is @code{hann}.
1142
1143 @item overlap
1144 Set window overlap. If set to 1, the recommended overlap for selected
1145 window function will be picked. Default is @code{0.75}.
1146 @end table
1147
1148 @subsection Examples
1149
1150 @itemize
1151 @item
1152 Leave almost only low frequencies in audio:
1153 @example
1154 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1155 @end example
1156 @end itemize
1157
1158 @anchor{afir}
1159 @section afir
1160
1161 Apply an arbitrary Frequency Impulse Response filter.
1162
1163 This filter is designed for applying long FIR filters,
1164 up to 60 seconds long.
1165
1166 It can be used as component for digital crossover filters,
1167 room equalization, cross talk cancellation, wavefield synthesis,
1168 auralization, ambiophonics, ambisonics and spatialization.
1169
1170 This filter uses the second stream as FIR coefficients.
1171 If the second stream holds a single channel, it will be used
1172 for all input channels in the first stream, otherwise
1173 the number of channels in the second stream must be same as
1174 the number of channels in the first stream.
1175
1176 It accepts the following parameters:
1177
1178 @table @option
1179 @item dry
1180 Set dry gain. This sets input gain.
1181
1182 @item wet
1183 Set wet gain. This sets final output gain.
1184
1185 @item length
1186 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1187
1188 @item gtype
1189 Enable applying gain measured from power of IR.
1190
1191 Set which approach to use for auto gain measurement.
1192
1193 @table @option
1194 @item none
1195 Do not apply any gain.
1196
1197 @item peak
1198 select peak gain, very conservative approach. This is default value.
1199
1200 @item dc
1201 select DC gain, limited application.
1202
1203 @item gn
1204 select gain to noise approach, this is most popular one.
1205 @end table
1206
1207 @item irgain
1208 Set gain to be applied to IR coefficients before filtering.
1209 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1210
1211 @item irfmt
1212 Set format of IR stream. Can be @code{mono} or @code{input}.
1213 Default is @code{input}.
1214
1215 @item maxir
1216 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1217 Allowed range is 0.1 to 60 seconds.
1218
1219 @item response
1220 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1221 By default it is disabled.
1222
1223 @item channel
1224 Set for which IR channel to display frequency response. By default is first channel
1225 displayed. This option is used only when @var{response} is enabled.
1226
1227 @item size
1228 Set video stream size. This option is used only when @var{response} is enabled.
1229
1230 @item rate
1231 Set video stream frame rate. This option is used only when @var{response} is enabled.
1232
1233 @item minp
1234 Set minimal partition size used for convolution. Default is @var{8192}.
1235 Allowed range is from @var{8} to @var{32768}.
1236 Lower values decreases latency at cost of higher CPU usage.
1237
1238 @item maxp
1239 Set maximal partition size used for convolution. Default is @var{8192}.
1240 Allowed range is from @var{8} to @var{32768}.
1241 Lower values may increase CPU usage.
1242 @end table
1243
1244 @subsection Examples
1245
1246 @itemize
1247 @item
1248 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1249 @example
1250 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1251 @end example
1252 @end itemize
1253
1254 @anchor{aformat}
1255 @section aformat
1256
1257 Set output format constraints for the input audio. The framework will
1258 negotiate the most appropriate format to minimize conversions.
1259
1260 It accepts the following parameters:
1261 @table @option
1262
1263 @item sample_fmts
1264 A '|'-separated list of requested sample formats.
1265
1266 @item sample_rates
1267 A '|'-separated list of requested sample rates.
1268
1269 @item channel_layouts
1270 A '|'-separated list of requested channel layouts.
1271
1272 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1273 for the required syntax.
1274 @end table
1275
1276 If a parameter is omitted, all values are allowed.
1277
1278 Force the output to either unsigned 8-bit or signed 16-bit stereo
1279 @example
1280 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1281 @end example
1282
1283 @section agate
1284
1285 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1286 processing reduces disturbing noise between useful signals.
1287
1288 Gating is done by detecting the volume below a chosen level @var{threshold}
1289 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1290 floor is set via @var{range}. Because an exact manipulation of the signal
1291 would cause distortion of the waveform the reduction can be levelled over
1292 time. This is done by setting @var{attack} and @var{release}.
1293
1294 @var{attack} determines how long the signal has to fall below the threshold
1295 before any reduction will occur and @var{release} sets the time the signal
1296 has to rise above the threshold to reduce the reduction again.
1297 Shorter signals than the chosen attack time will be left untouched.
1298
1299 @table @option
1300 @item level_in
1301 Set input level before filtering.
1302 Default is 1. Allowed range is from 0.015625 to 64.
1303
1304 @item mode
1305 Set the mode of operation. Can be @code{upward} or @code{downward}.
1306 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1307 will be amplified, expanding dynamic range in upward direction.
1308 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1309
1310 @item range
1311 Set the level of gain reduction when the signal is below the threshold.
1312 Default is 0.06125. Allowed range is from 0 to 1.
1313 Setting this to 0 disables reduction and then filter behaves like expander.
1314
1315 @item threshold
1316 If a signal rises above this level the gain reduction is released.
1317 Default is 0.125. Allowed range is from 0 to 1.
1318
1319 @item ratio
1320 Set a ratio by which the signal is reduced.
1321 Default is 2. Allowed range is from 1 to 9000.
1322
1323 @item attack
1324 Amount of milliseconds the signal has to rise above the threshold before gain
1325 reduction stops.
1326 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1327
1328 @item release
1329 Amount of milliseconds the signal has to fall below the threshold before the
1330 reduction is increased again. Default is 250 milliseconds.
1331 Allowed range is from 0.01 to 9000.
1332
1333 @item makeup
1334 Set amount of amplification of signal after processing.
1335 Default is 1. Allowed range is from 1 to 64.
1336
1337 @item knee
1338 Curve the sharp knee around the threshold to enter gain reduction more softly.
1339 Default is 2.828427125. Allowed range is from 1 to 8.
1340
1341 @item detection
1342 Choose if exact signal should be taken for detection or an RMS like one.
1343 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1344
1345 @item link
1346 Choose if the average level between all channels or the louder channel affects
1347 the reduction.
1348 Default is @code{average}. Can be @code{average} or @code{maximum}.
1349 @end table
1350
1351 @section aiir
1352
1353 Apply an arbitrary Infinite Impulse Response filter.
1354
1355 It accepts the following parameters:
1356
1357 @table @option
1358 @item z
1359 Set numerator/zeros coefficients.
1360
1361 @item p
1362 Set denominator/poles coefficients.
1363
1364 @item k
1365 Set channels gains.
1366
1367 @item dry_gain
1368 Set input gain.
1369
1370 @item wet_gain
1371 Set output gain.
1372
1373 @item f
1374 Set coefficients format.
1375
1376 @table @samp
1377 @item tf
1378 transfer function
1379 @item zp
1380 Z-plane zeros/poles, cartesian (default)
1381 @item pr
1382 Z-plane zeros/poles, polar radians
1383 @item pd
1384 Z-plane zeros/poles, polar degrees
1385 @end table
1386
1387 @item r
1388 Set kind of processing.
1389 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1390
1391 @item e
1392 Set filtering precision.
1393
1394 @table @samp
1395 @item dbl
1396 double-precision floating-point (default)
1397 @item flt
1398 single-precision floating-point
1399 @item i32
1400 32-bit integers
1401 @item i16
1402 16-bit integers
1403 @end table
1404
1405 @item mix
1406 How much to use filtered signal in output. Default is 1.
1407 Range is between 0 and 1.
1408
1409 @item response
1410 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1411 By default it is disabled.
1412
1413 @item channel
1414 Set for which IR channel to display frequency response. By default is first channel
1415 displayed. This option is used only when @var{response} is enabled.
1416
1417 @item size
1418 Set video stream size. This option is used only when @var{response} is enabled.
1419 @end table
1420
1421 Coefficients in @code{tf} format are separated by spaces and are in ascending
1422 order.
1423
1424 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1425 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1426 imaginary unit.
1427
1428 Different coefficients and gains can be provided for every channel, in such case
1429 use '|' to separate coefficients or gains. Last provided coefficients will be
1430 used for all remaining channels.
1431
1432 @subsection Examples
1433
1434 @itemize
1435 @item
1436 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1437 @example
1438 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
1439 @end example
1440
1441 @item
1442 Same as above but in @code{zp} format:
1443 @example
1444 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
1445 @end example
1446 @end itemize
1447
1448 @section alimiter
1449
1450 The limiter prevents an input signal from rising over a desired threshold.
1451 This limiter uses lookahead technology to prevent your signal from distorting.
1452 It means that there is a small delay after the signal is processed. Keep in mind
1453 that the delay it produces is the attack time you set.
1454
1455 The filter accepts the following options:
1456
1457 @table @option
1458 @item level_in
1459 Set input gain. Default is 1.
1460
1461 @item level_out
1462 Set output gain. Default is 1.
1463
1464 @item limit
1465 Don't let signals above this level pass the limiter. Default is 1.
1466
1467 @item attack
1468 The limiter will reach its attenuation level in this amount of time in
1469 milliseconds. Default is 5 milliseconds.
1470
1471 @item release
1472 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1473 Default is 50 milliseconds.
1474
1475 @item asc
1476 When gain reduction is always needed ASC takes care of releasing to an
1477 average reduction level rather than reaching a reduction of 0 in the release
1478 time.
1479
1480 @item asc_level
1481 Select how much the release time is affected by ASC, 0 means nearly no changes
1482 in release time while 1 produces higher release times.
1483
1484 @item level
1485 Auto level output signal. Default is enabled.
1486 This normalizes audio back to 0dB if enabled.
1487 @end table
1488
1489 Depending on picked setting it is recommended to upsample input 2x or 4x times
1490 with @ref{aresample} before applying this filter.
1491
1492 @section allpass
1493
1494 Apply a two-pole all-pass filter with central frequency (in Hz)
1495 @var{frequency}, and filter-width @var{width}.
1496 An all-pass filter changes the audio's frequency to phase relationship
1497 without changing its frequency to amplitude relationship.
1498
1499 The filter accepts the following options:
1500
1501 @table @option
1502 @item frequency, f
1503 Set frequency in Hz.
1504
1505 @item width_type, t
1506 Set method to specify band-width of filter.
1507 @table @option
1508 @item h
1509 Hz
1510 @item q
1511 Q-Factor
1512 @item o
1513 octave
1514 @item s
1515 slope
1516 @item k
1517 kHz
1518 @end table
1519
1520 @item width, w
1521 Specify the band-width of a filter in width_type units.
1522
1523 @item mix, m
1524 How much to use filtered signal in output. Default is 1.
1525 Range is between 0 and 1.
1526
1527 @item channels, c
1528 Specify which channels to filter, by default all available are filtered.
1529 @end table
1530
1531 @subsection Commands
1532
1533 This filter supports the following commands:
1534 @table @option
1535 @item frequency, f
1536 Change allpass frequency.
1537 Syntax for the command is : "@var{frequency}"
1538
1539 @item width_type, t
1540 Change allpass width_type.
1541 Syntax for the command is : "@var{width_type}"
1542
1543 @item width, w
1544 Change allpass width.
1545 Syntax for the command is : "@var{width}"
1546
1547 @item mix, m
1548 Change allpass mix.
1549 Syntax for the command is : "@var{mix}"
1550 @end table
1551
1552 @section aloop
1553
1554 Loop audio samples.
1555
1556 The filter accepts the following options:
1557
1558 @table @option
1559 @item loop
1560 Set the number of loops. Setting this value to -1 will result in infinite loops.
1561 Default is 0.
1562
1563 @item size
1564 Set maximal number of samples. Default is 0.
1565
1566 @item start
1567 Set first sample of loop. Default is 0.
1568 @end table
1569
1570 @anchor{amerge}
1571 @section amerge
1572
1573 Merge two or more audio streams into a single multi-channel stream.
1574
1575 The filter accepts the following options:
1576
1577 @table @option
1578
1579 @item inputs
1580 Set the number of inputs. Default is 2.
1581
1582 @end table
1583
1584 If the channel layouts of the inputs are disjoint, and therefore compatible,
1585 the channel layout of the output will be set accordingly and the channels
1586 will be reordered as necessary. If the channel layouts of the inputs are not
1587 disjoint, the output will have all the channels of the first input then all
1588 the channels of the second input, in that order, and the channel layout of
1589 the output will be the default value corresponding to the total number of
1590 channels.
1591
1592 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1593 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1594 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1595 first input, b1 is the first channel of the second input).
1596
1597 On the other hand, if both input are in stereo, the output channels will be
1598 in the default order: a1, a2, b1, b2, and the channel layout will be
1599 arbitrarily set to 4.0, which may or may not be the expected value.
1600
1601 All inputs must have the same sample rate, and format.
1602
1603 If inputs do not have the same duration, the output will stop with the
1604 shortest.
1605
1606 @subsection Examples
1607
1608 @itemize
1609 @item
1610 Merge two mono files into a stereo stream:
1611 @example
1612 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1613 @end example
1614
1615 @item
1616 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1617 @example
1618 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
1619 @end example
1620 @end itemize
1621
1622 @section amix
1623
1624 Mixes multiple audio inputs into a single output.
1625
1626 Note that this filter only supports float samples (the @var{amerge}
1627 and @var{pan} audio filters support many formats). If the @var{amix}
1628 input has integer samples then @ref{aresample} will be automatically
1629 inserted to perform the conversion to float samples.
1630
1631 For example
1632 @example
1633 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1634 @end example
1635 will mix 3 input audio streams to a single output with the same duration as the
1636 first input and a dropout transition time of 3 seconds.
1637
1638 It accepts the following parameters:
1639 @table @option
1640
1641 @item inputs
1642 The number of inputs. If unspecified, it defaults to 2.
1643
1644 @item duration
1645 How to determine the end-of-stream.
1646 @table @option
1647
1648 @item longest
1649 The duration of the longest input. (default)
1650
1651 @item shortest
1652 The duration of the shortest input.
1653
1654 @item first
1655 The duration of the first input.
1656
1657 @end table
1658
1659 @item dropout_transition
1660 The transition time, in seconds, for volume renormalization when an input
1661 stream ends. The default value is 2 seconds.
1662
1663 @item weights
1664 Specify weight of each input audio stream as sequence.
1665 Each weight is separated by space. By default all inputs have same weight.
1666 @end table
1667
1668 @section amultiply
1669
1670 Multiply first audio stream with second audio stream and store result
1671 in output audio stream. Multiplication is done by multiplying each
1672 sample from first stream with sample at same position from second stream.
1673
1674 With this element-wise multiplication one can create amplitude fades and
1675 amplitude modulations.
1676
1677 @section anequalizer
1678
1679 High-order parametric multiband equalizer for each channel.
1680
1681 It accepts the following parameters:
1682 @table @option
1683 @item params
1684
1685 This option string is in format:
1686 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1687 Each equalizer band is separated by '|'.
1688
1689 @table @option
1690 @item chn
1691 Set channel number to which equalization will be applied.
1692 If input doesn't have that channel the entry is ignored.
1693
1694 @item f
1695 Set central frequency for band.
1696 If input doesn't have that frequency the entry is ignored.
1697
1698 @item w
1699 Set band width in hertz.
1700
1701 @item g
1702 Set band gain in dB.
1703
1704 @item t
1705 Set filter type for band, optional, can be:
1706
1707 @table @samp
1708 @item 0
1709 Butterworth, this is default.
1710
1711 @item 1
1712 Chebyshev type 1.
1713
1714 @item 2
1715 Chebyshev type 2.
1716 @end table
1717 @end table
1718
1719 @item curves
1720 With this option activated frequency response of anequalizer is displayed
1721 in video stream.
1722
1723 @item size
1724 Set video stream size. Only useful if curves option is activated.
1725
1726 @item mgain
1727 Set max gain that will be displayed. Only useful if curves option is activated.
1728 Setting this to a reasonable value makes it possible to display gain which is derived from
1729 neighbour bands which are too close to each other and thus produce higher gain
1730 when both are activated.
1731
1732 @item fscale
1733 Set frequency scale used to draw frequency response in video output.
1734 Can be linear or logarithmic. Default is logarithmic.
1735
1736 @item colors
1737 Set color for each channel curve which is going to be displayed in video stream.
1738 This is list of color names separated by space or by '|'.
1739 Unrecognised or missing colors will be replaced by white color.
1740 @end table
1741
1742 @subsection Examples
1743
1744 @itemize
1745 @item
1746 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1747 for first 2 channels using Chebyshev type 1 filter:
1748 @example
1749 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1750 @end example
1751 @end itemize
1752
1753 @subsection Commands
1754
1755 This filter supports the following commands:
1756 @table @option
1757 @item change
1758 Alter existing filter parameters.
1759 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1760
1761 @var{fN} is existing filter number, starting from 0, if no such filter is available
1762 error is returned.
1763 @var{freq} set new frequency parameter.
1764 @var{width} set new width parameter in herz.
1765 @var{gain} set new gain parameter in dB.
1766
1767 Full filter invocation with asendcmd may look like this:
1768 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1769 @end table
1770
1771 @section anlmdn
1772
1773 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1774
1775 Each sample is adjusted by looking for other samples with similar contexts. This
1776 context similarity is defined by comparing their surrounding patches of size
1777 @option{p}. Patches are searched in an area of @option{r} around the sample.
1778
1779 The filter accepts the following options:
1780
1781 @table @option
1782 @item s
1783 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1784
1785 @item p
1786 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1787 Default value is 2 milliseconds.
1788
1789 @item r
1790 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1791 Default value is 6 milliseconds.
1792
1793 @item o
1794 Set the output mode.
1795
1796 It accepts the following values:
1797 @table @option
1798 @item i
1799 Pass input unchanged.
1800
1801 @item o
1802 Pass noise filtered out.
1803
1804 @item n
1805 Pass only noise.
1806
1807 Default value is @var{o}.
1808 @end table
1809
1810 @item m
1811 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1812 @end table
1813
1814 @subsection Commands
1815
1816 This filter supports the following commands:
1817 @table @option
1818 @item s
1819 Change denoise strength. Argument is single float number.
1820 Syntax for the command is : "@var{s}"
1821
1822 @item o
1823 Change output mode.
1824 Syntax for the command is : "i", "o" or "n" string.
1825 @end table
1826
1827 @section anlms
1828 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1829
1830 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1831 relate to producing the least mean square of the error signal (difference between the desired,
1832 2nd input audio stream and the actual signal, the 1st input audio stream).
1833
1834 A description of the accepted options follows.
1835
1836 @table @option
1837 @item order
1838 Set filter order.
1839
1840 @item mu
1841 Set filter mu.
1842
1843 @item eps
1844 Set the filter eps.
1845
1846 @item leakage
1847 Set the filter leakage.
1848
1849 @item out_mode
1850 It accepts the following values:
1851 @table @option
1852 @item i
1853 Pass the 1st input.
1854
1855 @item d
1856 Pass the 2nd input.
1857
1858 @item o
1859 Pass filtered samples.
1860
1861 @item n
1862 Pass difference between desired and filtered samples.
1863
1864 Default value is @var{o}.
1865 @end table
1866 @end table
1867
1868 @subsection Examples
1869
1870 @itemize
1871 @item
1872 One of many usages of this filter is noise reduction, input audio is filtered
1873 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1874 @example
1875 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1876 @end example
1877 @end itemize
1878
1879 @subsection Commands
1880
1881 This filter supports the same commands as options, excluding option @code{order}.
1882
1883 @section anull
1884
1885 Pass the audio source unchanged to the output.
1886
1887 @section apad
1888
1889 Pad the end of an audio stream with silence.
1890
1891 This can be used together with @command{ffmpeg} @option{-shortest} to
1892 extend audio streams to the same length as the video stream.
1893
1894 A description of the accepted options follows.
1895
1896 @table @option
1897 @item packet_size
1898 Set silence packet size. Default value is 4096.
1899
1900 @item pad_len
1901 Set the number of samples of silence to add to the end. After the
1902 value is reached, the stream is terminated. This option is mutually
1903 exclusive with @option{whole_len}.
1904
1905 @item whole_len
1906 Set the minimum total number of samples in the output audio stream. If
1907 the value is longer than the input audio length, silence is added to
1908 the end, until the value is reached. This option is mutually exclusive
1909 with @option{pad_len}.
1910
1911 @item pad_dur
1912 Specify the duration of samples of silence to add. See
1913 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1914 for the accepted syntax. Used only if set to non-zero value.
1915
1916 @item whole_dur
1917 Specify the minimum total duration in the output audio stream. See
1918 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1919 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1920 the input audio length, silence is added to the end, until the value is reached.
1921 This option is mutually exclusive with @option{pad_dur}
1922 @end table
1923
1924 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1925 nor @option{whole_dur} option is set, the filter will add silence to the end of
1926 the input stream indefinitely.
1927
1928 @subsection Examples
1929
1930 @itemize
1931 @item
1932 Add 1024 samples of silence to the end of the input:
1933 @example
1934 apad=pad_len=1024
1935 @end example
1936
1937 @item
1938 Make sure the audio output will contain at least 10000 samples, pad
1939 the input with silence if required:
1940 @example
1941 apad=whole_len=10000
1942 @end example
1943
1944 @item
1945 Use @command{ffmpeg} to pad the audio input with silence, so that the
1946 video stream will always result the shortest and will be converted
1947 until the end in the output file when using the @option{shortest}
1948 option:
1949 @example
1950 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1951 @end example
1952 @end itemize
1953
1954 @section aphaser
1955 Add a phasing effect to the input audio.
1956
1957 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1958 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1959
1960 A description of the accepted parameters follows.
1961
1962 @table @option
1963 @item in_gain
1964 Set input gain. Default is 0.4.
1965
1966 @item out_gain
1967 Set output gain. Default is 0.74
1968
1969 @item delay
1970 Set delay in milliseconds. Default is 3.0.
1971
1972 @item decay
1973 Set decay. Default is 0.4.
1974
1975 @item speed
1976 Set modulation speed in Hz. Default is 0.5.
1977
1978 @item type
1979 Set modulation type. Default is triangular.
1980
1981 It accepts the following values:
1982 @table @samp
1983 @item triangular, t
1984 @item sinusoidal, s
1985 @end table
1986 @end table
1987
1988 @section apulsator
1989
1990 Audio pulsator is something between an autopanner and a tremolo.
1991 But it can produce funny stereo effects as well. Pulsator changes the volume
1992 of the left and right channel based on a LFO (low frequency oscillator) with
1993 different waveforms and shifted phases.
1994 This filter have the ability to define an offset between left and right
1995 channel. An offset of 0 means that both LFO shapes match each other.
1996 The left and right channel are altered equally - a conventional tremolo.
1997 An offset of 50% means that the shape of the right channel is exactly shifted
1998 in phase (or moved backwards about half of the frequency) - pulsator acts as
1999 an autopanner. At 1 both curves match again. Every setting in between moves the
2000 phase shift gapless between all stages and produces some "bypassing" sounds with
2001 sine and triangle waveforms. The more you set the offset near 1 (starting from
2002 the 0.5) the faster the signal passes from the left to the right speaker.
2003
2004 The filter accepts the following options:
2005
2006 @table @option
2007 @item level_in
2008 Set input gain. By default it is 1. Range is [0.015625 - 64].
2009
2010 @item level_out
2011 Set output gain. By default it is 1. Range is [0.015625 - 64].
2012
2013 @item mode
2014 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2015 sawup or sawdown. Default is sine.
2016
2017 @item amount
2018 Set modulation. Define how much of original signal is affected by the LFO.
2019
2020 @item offset_l
2021 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2022
2023 @item offset_r
2024 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2025
2026 @item width
2027 Set pulse width. Default is 1. Allowed range is [0 - 2].
2028
2029 @item timing
2030 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2031
2032 @item bpm
2033 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2034 is set to bpm.
2035
2036 @item ms
2037 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2038 is set to ms.
2039
2040 @item hz
2041 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2042 if timing is set to hz.
2043 @end table
2044
2045 @anchor{aresample}
2046 @section aresample
2047
2048 Resample the input audio to the specified parameters, using the
2049 libswresample library. If none are specified then the filter will
2050 automatically convert between its input and output.
2051
2052 This filter is also able to stretch/squeeze the audio data to make it match
2053 the timestamps or to inject silence / cut out audio to make it match the
2054 timestamps, do a combination of both or do neither.
2055
2056 The filter accepts the syntax
2057 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2058 expresses a sample rate and @var{resampler_options} is a list of
2059 @var{key}=@var{value} pairs, separated by ":". See the
2060 @ref{Resampler Options,,"Resampler Options" section in the
2061 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2062 for the complete list of supported options.
2063
2064 @subsection Examples
2065
2066 @itemize
2067 @item
2068 Resample the input audio to 44100Hz:
2069 @example
2070 aresample=44100
2071 @end example
2072
2073 @item
2074 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2075 samples per second compensation:
2076 @example
2077 aresample=async=1000
2078 @end example
2079 @end itemize
2080
2081 @section areverse
2082
2083 Reverse an audio clip.
2084
2085 Warning: This filter requires memory to buffer the entire clip, so trimming
2086 is suggested.
2087
2088 @subsection Examples
2089
2090 @itemize
2091 @item
2092 Take the first 5 seconds of a clip, and reverse it.
2093 @example
2094 atrim=end=5,areverse
2095 @end example
2096 @end itemize
2097
2098 @section asetnsamples
2099
2100 Set the number of samples per each output audio frame.
2101
2102 The last output packet may contain a different number of samples, as
2103 the filter will flush all the remaining samples when the input audio
2104 signals its end.
2105
2106 The filter accepts the following options:
2107
2108 @table @option
2109
2110 @item nb_out_samples, n
2111 Set the number of frames per each output audio frame. The number is
2112 intended as the number of samples @emph{per each channel}.
2113 Default value is 1024.
2114
2115 @item pad, p
2116 If set to 1, the filter will pad the last audio frame with zeroes, so
2117 that the last frame will contain the same number of samples as the
2118 previous ones. Default value is 1.
2119 @end table
2120
2121 For example, to set the number of per-frame samples to 1234 and
2122 disable padding for the last frame, use:
2123 @example
2124 asetnsamples=n=1234:p=0
2125 @end example
2126
2127 @section asetrate
2128
2129 Set the sample rate without altering the PCM data.
2130 This will result in a change of speed and pitch.
2131
2132 The filter accepts the following options:
2133
2134 @table @option
2135 @item sample_rate, r
2136 Set the output sample rate. Default is 44100 Hz.
2137 @end table
2138
2139 @section ashowinfo
2140
2141 Show a line containing various information for each input audio frame.
2142 The input audio is not modified.
2143
2144 The shown line contains a sequence of key/value pairs of the form
2145 @var{key}:@var{value}.
2146
2147 The following values are shown in the output:
2148
2149 @table @option
2150 @item n
2151 The (sequential) number of the input frame, starting from 0.
2152
2153 @item pts
2154 The presentation timestamp of the input frame, in time base units; the time base
2155 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2156
2157 @item pts_time
2158 The presentation timestamp of the input frame in seconds.
2159
2160 @item pos
2161 position of the frame in the input stream, -1 if this information in
2162 unavailable and/or meaningless (for example in case of synthetic audio)
2163
2164 @item fmt
2165 The sample format.
2166
2167 @item chlayout
2168 The channel layout.
2169
2170 @item rate
2171 The sample rate for the audio frame.
2172
2173 @item nb_samples
2174 The number of samples (per channel) in the frame.
2175
2176 @item checksum
2177 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2178 audio, the data is treated as if all the planes were concatenated.
2179
2180 @item plane_checksums
2181 A list of Adler-32 checksums for each data plane.
2182 @end table
2183
2184 @section asoftclip
2185 Apply audio soft clipping.
2186
2187 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2188 along a smooth curve, rather than the abrupt shape of hard-clipping.
2189
2190 This filter accepts the following options:
2191
2192 @table @option
2193 @item type
2194 Set type of soft-clipping.
2195
2196 It accepts the following values:
2197 @table @option
2198 @item tanh
2199 @item atan
2200 @item cubic
2201 @item exp
2202 @item alg
2203 @item quintic
2204 @item sin
2205 @end table
2206
2207 @item param
2208 Set additional parameter which controls sigmoid function.
2209 @end table
2210
2211 @section asr
2212 Automatic Speech Recognition
2213
2214 This filter uses PocketSphinx for speech recognition. To enable
2215 compilation of this filter, you need to configure FFmpeg with
2216 @code{--enable-pocketsphinx}.
2217
2218 It accepts the following options:
2219
2220 @table @option
2221 @item rate
2222 Set sampling rate of input audio. Defaults is @code{16000}.
2223 This need to match speech models, otherwise one will get poor results.
2224
2225 @item hmm
2226 Set dictionary containing acoustic model files.
2227
2228 @item dict
2229 Set pronunciation dictionary.
2230
2231 @item lm
2232 Set language model file.
2233
2234 @item lmctl
2235 Set language model set.
2236
2237 @item lmname
2238 Set which language model to use.
2239
2240 @item logfn
2241 Set output for log messages.
2242 @end table
2243
2244 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2245
2246 @anchor{astats}
2247 @section astats
2248
2249 Display time domain statistical information about the audio channels.
2250 Statistics are calculated and displayed for each audio channel and,
2251 where applicable, an overall figure is also given.
2252
2253 It accepts the following option:
2254 @table @option
2255 @item length
2256 Short window length in seconds, used for peak and trough RMS measurement.
2257 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2258
2259 @item metadata
2260
2261 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2262 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2263 disabled.
2264
2265 Available keys for each channel are:
2266 DC_offset
2267 Min_level
2268 Max_level
2269 Min_difference
2270 Max_difference
2271 Mean_difference
2272 RMS_difference
2273 Peak_level
2274 RMS_peak
2275 RMS_trough
2276 Crest_factor
2277 Flat_factor
2278 Peak_count
2279 Bit_depth
2280 Dynamic_range
2281 Zero_crossings
2282 Zero_crossings_rate
2283 Number_of_NaNs
2284 Number_of_Infs
2285 Number_of_denormals
2286
2287 and for Overall:
2288 DC_offset
2289 Min_level
2290 Max_level
2291 Min_difference
2292 Max_difference
2293 Mean_difference
2294 RMS_difference
2295 Peak_level
2296 RMS_level
2297 RMS_peak
2298 RMS_trough
2299 Flat_factor
2300 Peak_count
2301 Bit_depth
2302 Number_of_samples
2303 Number_of_NaNs
2304 Number_of_Infs
2305 Number_of_denormals
2306
2307 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2308 this @code{lavfi.astats.Overall.Peak_count}.
2309
2310 For description what each key means read below.
2311
2312 @item reset
2313 Set number of frame after which stats are going to be recalculated.
2314 Default is disabled.
2315
2316 @item measure_perchannel
2317 Select the entries which need to be measured per channel. The metadata keys can
2318 be used as flags, default is @option{all} which measures everything.
2319 @option{none} disables all per channel measurement.
2320
2321 @item measure_overall
2322 Select the entries which need to be measured overall. The metadata keys can
2323 be used as flags, default is @option{all} which measures everything.
2324 @option{none} disables all overall measurement.
2325
2326 @end table
2327
2328 A description of each shown parameter follows:
2329
2330 @table @option
2331 @item DC offset
2332 Mean amplitude displacement from zero.
2333
2334 @item Min level
2335 Minimal sample level.
2336
2337 @item Max level
2338 Maximal sample level.
2339
2340 @item Min difference
2341 Minimal difference between two consecutive samples.
2342
2343 @item Max difference
2344 Maximal difference between two consecutive samples.
2345
2346 @item Mean difference
2347 Mean difference between two consecutive samples.
2348 The average of each difference between two consecutive samples.
2349
2350 @item RMS difference
2351 Root Mean Square difference between two consecutive samples.
2352
2353 @item Peak level dB
2354 @item RMS level dB
2355 Standard peak and RMS level measured in dBFS.
2356
2357 @item RMS peak dB
2358 @item RMS trough dB
2359 Peak and trough values for RMS level measured over a short window.
2360
2361 @item Crest factor
2362 Standard ratio of peak to RMS level (note: not in dB).
2363
2364 @item Flat factor
2365 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2366 (i.e. either @var{Min level} or @var{Max level}).
2367
2368 @item Peak count
2369 Number of occasions (not the number of samples) that the signal attained either
2370 @var{Min level} or @var{Max level}.
2371
2372 @item Bit depth
2373 Overall bit depth of audio. Number of bits used for each sample.
2374
2375 @item Dynamic range
2376 Measured dynamic range of audio in dB.
2377
2378 @item Zero crossings
2379 Number of points where the waveform crosses the zero level axis.
2380
2381 @item Zero crossings rate
2382 Rate of Zero crossings and number of audio samples.
2383 @end table
2384
2385 @section atempo
2386
2387 Adjust audio tempo.
2388
2389 The filter accepts exactly one parameter, the audio tempo. If not
2390 specified then the filter will assume nominal 1.0 tempo. Tempo must
2391 be in the [0.5, 100.0] range.
2392
2393 Note that tempo greater than 2 will skip some samples rather than
2394 blend them in.  If for any reason this is a concern it is always
2395 possible to daisy-chain several instances of atempo to achieve the
2396 desired product tempo.
2397
2398 @subsection Examples
2399
2400 @itemize
2401 @item
2402 Slow down audio to 80% tempo:
2403 @example
2404 atempo=0.8
2405 @end example
2406
2407 @item
2408 To speed up audio to 300% tempo:
2409 @example
2410 atempo=3
2411 @end example
2412
2413 @item
2414 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2415 @example
2416 atempo=sqrt(3),atempo=sqrt(3)
2417 @end example
2418 @end itemize
2419
2420 @section atrim
2421
2422 Trim the input so that the output contains one continuous subpart of the input.
2423
2424 It accepts the following parameters:
2425 @table @option
2426 @item start
2427 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2428 sample with the timestamp @var{start} will be the first sample in the output.
2429
2430 @item end
2431 Specify time of the first audio sample that will be dropped, i.e. the
2432 audio sample immediately preceding the one with the timestamp @var{end} will be
2433 the last sample in the output.
2434
2435 @item start_pts
2436 Same as @var{start}, except this option sets the start timestamp in samples
2437 instead of seconds.
2438
2439 @item end_pts
2440 Same as @var{end}, except this option sets the end timestamp in samples instead
2441 of seconds.
2442
2443 @item duration
2444 The maximum duration of the output in seconds.
2445
2446 @item start_sample
2447 The number of the first sample that should be output.
2448
2449 @item end_sample
2450 The number of the first sample that should be dropped.
2451 @end table
2452
2453 @option{start}, @option{end}, and @option{duration} are expressed as time
2454 duration specifications; see
2455 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2456
2457 Note that the first two sets of the start/end options and the @option{duration}
2458 option look at the frame timestamp, while the _sample options simply count the
2459 samples that pass through the filter. So start/end_pts and start/end_sample will
2460 give different results when the timestamps are wrong, inexact or do not start at
2461 zero. Also note that this filter does not modify the timestamps. If you wish
2462 to have the output timestamps start at zero, insert the asetpts filter after the
2463 atrim filter.
2464
2465 If multiple start or end options are set, this filter tries to be greedy and
2466 keep all samples that match at least one of the specified constraints. To keep
2467 only the part that matches all the constraints at once, chain multiple atrim
2468 filters.
2469
2470 The defaults are such that all the input is kept. So it is possible to set e.g.
2471 just the end values to keep everything before the specified time.
2472
2473 Examples:
2474 @itemize
2475 @item
2476 Drop everything except the second minute of input:
2477 @example
2478 ffmpeg -i INPUT -af atrim=60:120
2479 @end example
2480
2481 @item
2482 Keep only the first 1000 samples:
2483 @example
2484 ffmpeg -i INPUT -af atrim=end_sample=1000
2485 @end example
2486
2487 @end itemize
2488
2489 @section bandpass
2490
2491 Apply a two-pole Butterworth band-pass filter with central
2492 frequency @var{frequency}, and (3dB-point) band-width width.
2493 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2494 instead of the default: constant 0dB peak gain.
2495 The filter roll off at 6dB per octave (20dB per decade).
2496
2497 The filter accepts the following options:
2498
2499 @table @option
2500 @item frequency, f
2501 Set the filter's central frequency. Default is @code{3000}.
2502
2503 @item csg
2504 Constant skirt gain if set to 1. Defaults to 0.
2505
2506 @item width_type, t
2507 Set method to specify band-width of filter.
2508 @table @option
2509 @item h
2510 Hz
2511 @item q
2512 Q-Factor
2513 @item o
2514 octave
2515 @item s
2516 slope
2517 @item k
2518 kHz
2519 @end table
2520
2521 @item width, w
2522 Specify the band-width of a filter in width_type units.
2523
2524 @item mix, m
2525 How much to use filtered signal in output. Default is 1.
2526 Range is between 0 and 1.
2527
2528 @item channels, c
2529 Specify which channels to filter, by default all available are filtered.
2530 @end table
2531
2532 @subsection Commands
2533
2534 This filter supports the following commands:
2535 @table @option
2536 @item frequency, f
2537 Change bandpass frequency.
2538 Syntax for the command is : "@var{frequency}"
2539
2540 @item width_type, t
2541 Change bandpass width_type.
2542 Syntax for the command is : "@var{width_type}"
2543
2544 @item width, w
2545 Change bandpass width.
2546 Syntax for the command is : "@var{width}"
2547
2548 @item mix, m
2549 Change bandpass mix.
2550 Syntax for the command is : "@var{mix}"
2551 @end table
2552
2553 @section bandreject
2554
2555 Apply a two-pole Butterworth band-reject filter with central
2556 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2557 The filter roll off at 6dB per octave (20dB per decade).
2558
2559 The filter accepts the following options:
2560
2561 @table @option
2562 @item frequency, f
2563 Set the filter's central frequency. Default is @code{3000}.
2564
2565 @item width_type, t
2566 Set method to specify band-width of filter.
2567 @table @option
2568 @item h
2569 Hz
2570 @item q
2571 Q-Factor
2572 @item o
2573 octave
2574 @item s
2575 slope
2576 @item k
2577 kHz
2578 @end table
2579
2580 @item width, w
2581 Specify the band-width of a filter in width_type units.
2582
2583 @item mix, m
2584 How much to use filtered signal in output. Default is 1.
2585 Range is between 0 and 1.
2586
2587 @item channels, c
2588 Specify which channels to filter, by default all available are filtered.
2589 @end table
2590
2591 @subsection Commands
2592
2593 This filter supports the following commands:
2594 @table @option
2595 @item frequency, f
2596 Change bandreject frequency.
2597 Syntax for the command is : "@var{frequency}"
2598
2599 @item width_type, t
2600 Change bandreject width_type.
2601 Syntax for the command is : "@var{width_type}"
2602
2603 @item width, w
2604 Change bandreject width.
2605 Syntax for the command is : "@var{width}"
2606
2607 @item mix, m
2608 Change bandreject mix.
2609 Syntax for the command is : "@var{mix}"
2610 @end table
2611
2612 @section bass, lowshelf
2613
2614 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2615 shelving filter with a response similar to that of a standard
2616 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2617
2618 The filter accepts the following options:
2619
2620 @table @option
2621 @item gain, g
2622 Give the gain at 0 Hz. Its useful range is about -20
2623 (for a large cut) to +20 (for a large boost).
2624 Beware of clipping when using a positive gain.
2625
2626 @item frequency, f
2627 Set the filter's central frequency and so can be used
2628 to extend or reduce the frequency range to be boosted or cut.
2629 The default value is @code{100} Hz.
2630
2631 @item width_type, t
2632 Set method to specify band-width of filter.
2633 @table @option
2634 @item h
2635 Hz
2636 @item q
2637 Q-Factor
2638 @item o
2639 octave
2640 @item s
2641 slope
2642 @item k
2643 kHz
2644 @end table
2645
2646 @item width, w
2647 Determine how steep is the filter's shelf transition.
2648
2649 @item mix, m
2650 How much to use filtered signal in output. Default is 1.
2651 Range is between 0 and 1.
2652
2653 @item channels, c
2654 Specify which channels to filter, by default all available are filtered.
2655 @end table
2656
2657 @subsection Commands
2658
2659 This filter supports the following commands:
2660 @table @option
2661 @item frequency, f
2662 Change bass frequency.
2663 Syntax for the command is : "@var{frequency}"
2664
2665 @item width_type, t
2666 Change bass width_type.
2667 Syntax for the command is : "@var{width_type}"
2668
2669 @item width, w
2670 Change bass width.
2671 Syntax for the command is : "@var{width}"
2672
2673 @item gain, g
2674 Change bass gain.
2675 Syntax for the command is : "@var{gain}"
2676
2677 @item mix, m
2678 Change bass mix.
2679 Syntax for the command is : "@var{mix}"
2680 @end table
2681
2682 @section biquad
2683
2684 Apply a biquad IIR filter with the given coefficients.
2685 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2686 are the numerator and denominator coefficients respectively.
2687 and @var{channels}, @var{c} specify which channels to filter, by default all
2688 available are filtered.
2689
2690 @subsection Commands
2691
2692 This filter supports the following commands:
2693 @table @option
2694 @item a0
2695 @item a1
2696 @item a2
2697 @item b0
2698 @item b1
2699 @item b2
2700 Change biquad parameter.
2701 Syntax for the command is : "@var{value}"
2702
2703 @item mix, m
2704 How much to use filtered signal in output. Default is 1.
2705 Range is between 0 and 1.
2706 @end table
2707
2708 @section bs2b
2709 Bauer stereo to binaural transformation, which improves headphone listening of
2710 stereo audio records.
2711
2712 To enable compilation of this filter you need to configure FFmpeg with
2713 @code{--enable-libbs2b}.
2714
2715 It accepts the following parameters:
2716 @table @option
2717
2718 @item profile
2719 Pre-defined crossfeed level.
2720 @table @option
2721
2722 @item default
2723 Default level (fcut=700, feed=50).
2724
2725 @item cmoy
2726 Chu Moy circuit (fcut=700, feed=60).
2727
2728 @item jmeier
2729 Jan Meier circuit (fcut=650, feed=95).
2730
2731 @end table
2732
2733 @item fcut
2734 Cut frequency (in Hz).
2735
2736 @item feed
2737 Feed level (in Hz).
2738
2739 @end table
2740
2741 @section channelmap
2742
2743 Remap input channels to new locations.
2744
2745 It accepts the following parameters:
2746 @table @option
2747 @item map
2748 Map channels from input to output. The argument is a '|'-separated list of
2749 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2750 @var{in_channel} form. @var{in_channel} can be either the name of the input
2751 channel (e.g. FL for front left) or its index in the input channel layout.
2752 @var{out_channel} is the name of the output channel or its index in the output
2753 channel layout. If @var{out_channel} is not given then it is implicitly an
2754 index, starting with zero and increasing by one for each mapping.
2755
2756 @item channel_layout
2757 The channel layout of the output stream.
2758 @end table
2759
2760 If no mapping is present, the filter will implicitly map input channels to
2761 output channels, preserving indices.
2762
2763 @subsection Examples
2764
2765 @itemize
2766 @item
2767 For example, assuming a 5.1+downmix input MOV file,
2768 @example
2769 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2770 @end example
2771 will create an output WAV file tagged as stereo from the downmix channels of
2772 the input.
2773
2774 @item
2775 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2776 @example
2777 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2778 @end example
2779 @end itemize
2780
2781 @section channelsplit
2782
2783 Split each channel from an input audio stream into a separate output stream.
2784
2785 It accepts the following parameters:
2786 @table @option
2787 @item channel_layout
2788 The channel layout of the input stream. The default is "stereo".
2789 @item channels
2790 A channel layout describing the channels to be extracted as separate output streams
2791 or "all" to extract each input channel as a separate stream. The default is "all".
2792
2793 Choosing channels not present in channel layout in the input will result in an error.
2794 @end table
2795
2796 @subsection Examples
2797
2798 @itemize
2799 @item
2800 For example, assuming a stereo input MP3 file,
2801 @example
2802 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2803 @end example
2804 will create an output Matroska file with two audio streams, one containing only
2805 the left channel and the other the right channel.
2806
2807 @item
2808 Split a 5.1 WAV file into per-channel files:
2809 @example
2810 ffmpeg -i in.wav -filter_complex
2811 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2812 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2813 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2814 side_right.wav
2815 @end example
2816
2817 @item
2818 Extract only LFE from a 5.1 WAV file:
2819 @example
2820 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2821 -map '[LFE]' lfe.wav
2822 @end example
2823 @end itemize
2824
2825 @section chorus
2826 Add a chorus effect to the audio.
2827
2828 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2829
2830 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2831 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2832 The modulation depth defines the range the modulated delay is played before or after
2833 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2834 sound tuned around the original one, like in a chorus where some vocals are slightly
2835 off key.
2836
2837 It accepts the following parameters:
2838 @table @option
2839 @item in_gain
2840 Set input gain. Default is 0.4.
2841
2842 @item out_gain
2843 Set output gain. Default is 0.4.
2844
2845 @item delays
2846 Set delays. A typical delay is around 40ms to 60ms.
2847
2848 @item decays
2849 Set decays.
2850
2851 @item speeds
2852 Set speeds.
2853
2854 @item depths
2855 Set depths.
2856 @end table
2857
2858 @subsection Examples
2859
2860 @itemize
2861 @item
2862 A single delay:
2863 @example
2864 chorus=0.7:0.9:55:0.4:0.25:2
2865 @end example
2866
2867 @item
2868 Two delays:
2869 @example
2870 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2871 @end example
2872
2873 @item
2874 Fuller sounding chorus with three delays:
2875 @example
2876 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
2877 @end example
2878 @end itemize
2879
2880 @section compand
2881 Compress or expand the audio's dynamic range.
2882
2883 It accepts the following parameters:
2884
2885 @table @option
2886
2887 @item attacks
2888 @item decays
2889 A list of times in seconds for each channel over which the instantaneous level
2890 of the input signal is averaged to determine its volume. @var{attacks} refers to
2891 increase of volume and @var{decays} refers to decrease of volume. For most
2892 situations, the attack time (response to the audio getting louder) should be
2893 shorter than the decay time, because the human ear is more sensitive to sudden
2894 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2895 a typical value for decay is 0.8 seconds.
2896 If specified number of attacks & decays is lower than number of channels, the last
2897 set attack/decay will be used for all remaining channels.
2898
2899 @item points
2900 A list of points for the transfer function, specified in dB relative to the
2901 maximum possible signal amplitude. Each key points list must be defined using
2902 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2903 @code{x0/y0 x1/y1 x2/y2 ....}
2904
2905 The input values must be in strictly increasing order but the transfer function
2906 does not have to be monotonically rising. The point @code{0/0} is assumed but
2907 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2908 function are @code{-70/-70|-60/-20|1/0}.
2909
2910 @item soft-knee
2911 Set the curve radius in dB for all joints. It defaults to 0.01.
2912
2913 @item gain
2914 Set the additional gain in dB to be applied at all points on the transfer
2915 function. This allows for easy adjustment of the overall gain.
2916 It defaults to 0.
2917
2918 @item volume
2919 Set an initial volume, in dB, to be assumed for each channel when filtering
2920 starts. This permits the user to supply a nominal level initially, so that, for
2921 example, a very large gain is not applied to initial signal levels before the
2922 companding has begun to operate. A typical value for audio which is initially
2923 quiet is -90 dB. It defaults to 0.
2924
2925 @item delay
2926 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2927 delayed before being fed to the volume adjuster. Specifying a delay
2928 approximately equal to the attack/decay times allows the filter to effectively
2929 operate in predictive rather than reactive mode. It defaults to 0.
2930
2931 @end table
2932
2933 @subsection Examples
2934
2935 @itemize
2936 @item
2937 Make music with both quiet and loud passages suitable for listening to in a
2938 noisy environment:
2939 @example
2940 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2941 @end example
2942
2943 Another example for audio with whisper and explosion parts:
2944 @example
2945 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2946 @end example
2947
2948 @item
2949 A noise gate for when the noise is at a lower level than the signal:
2950 @example
2951 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2952 @end example
2953
2954 @item
2955 Here is another noise gate, this time for when the noise is at a higher level
2956 than the signal (making it, in some ways, similar to squelch):
2957 @example
2958 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2959 @end example
2960
2961 @item
2962 2:1 compression starting at -6dB:
2963 @example
2964 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2965 @end example
2966
2967 @item
2968 2:1 compression starting at -9dB:
2969 @example
2970 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2971 @end example
2972
2973 @item
2974 2:1 compression starting at -12dB:
2975 @example
2976 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2977 @end example
2978
2979 @item
2980 2:1 compression starting at -18dB:
2981 @example
2982 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2983 @end example
2984
2985 @item
2986 3:1 compression starting at -15dB:
2987 @example
2988 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2989 @end example
2990
2991 @item
2992 Compressor/Gate:
2993 @example
2994 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2995 @end example
2996
2997 @item
2998 Expander:
2999 @example
3000 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
3001 @end example
3002
3003 @item
3004 Hard limiter at -6dB:
3005 @example
3006 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3007 @end example
3008
3009 @item
3010 Hard limiter at -12dB:
3011 @example
3012 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3013 @end example
3014
3015 @item
3016 Hard noise gate at -35 dB:
3017 @example
3018 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3019 @end example
3020
3021 @item
3022 Soft limiter:
3023 @example
3024 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3025 @end example
3026 @end itemize
3027
3028 @section compensationdelay
3029
3030 Compensation Delay Line is a metric based delay to compensate differing
3031 positions of microphones or speakers.
3032
3033 For example, you have recorded guitar with two microphones placed in
3034 different locations. Because the front of sound wave has fixed speed in
3035 normal conditions, the phasing of microphones can vary and depends on
3036 their location and interposition. The best sound mix can be achieved when
3037 these microphones are in phase (synchronized). Note that a distance of
3038 ~30 cm between microphones makes one microphone capture the signal in
3039 antiphase to the other microphone. That makes the final mix sound moody.
3040 This filter helps to solve phasing problems by adding different delays
3041 to each microphone track and make them synchronized.
3042
3043 The best result can be reached when you take one track as base and
3044 synchronize other tracks one by one with it.
3045 Remember that synchronization/delay tolerance depends on sample rate, too.
3046 Higher sample rates will give more tolerance.
3047
3048 The filter accepts the following parameters:
3049
3050 @table @option
3051 @item mm
3052 Set millimeters distance. This is compensation distance for fine tuning.
3053 Default is 0.
3054
3055 @item cm
3056 Set cm distance. This is compensation distance for tightening distance setup.
3057 Default is 0.
3058
3059 @item m
3060 Set meters distance. This is compensation distance for hard distance setup.
3061 Default is 0.
3062
3063 @item dry
3064 Set dry amount. Amount of unprocessed (dry) signal.
3065 Default is 0.
3066
3067 @item wet
3068 Set wet amount. Amount of processed (wet) signal.
3069 Default is 1.
3070
3071 @item temp
3072 Set temperature in degrees Celsius. This is the temperature of the environment.
3073 Default is 20.
3074 @end table
3075
3076 @section crossfeed
3077 Apply headphone crossfeed filter.
3078
3079 Crossfeed is the process of blending the left and right channels of stereo
3080 audio recording.
3081 It is mainly used to reduce extreme stereo separation of low frequencies.
3082
3083 The intent is to produce more speaker like sound to the listener.
3084
3085 The filter accepts the following options:
3086
3087 @table @option
3088 @item strength
3089 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3090 This sets gain of low shelf filter for side part of stereo image.
3091 Default is -6dB. Max allowed is -30db when strength is set to 1.
3092
3093 @item range
3094 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3095 This sets cut off frequency of low shelf filter. Default is cut off near
3096 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3097
3098 @item level_in
3099 Set input gain. Default is 0.9.
3100
3101 @item level_out
3102 Set output gain. Default is 1.
3103 @end table
3104
3105 @section crystalizer
3106 Simple algorithm to expand audio dynamic range.
3107
3108 The filter accepts the following options:
3109
3110 @table @option
3111 @item i
3112 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3113 (unchanged sound) to 10.0 (maximum effect).
3114
3115 @item c
3116 Enable clipping. By default is enabled.
3117 @end table
3118
3119 @section dcshift
3120 Apply a DC shift to the audio.
3121
3122 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3123 in the recording chain) from the audio. The effect of a DC offset is reduced
3124 headroom and hence volume. The @ref{astats} filter can be used to determine if
3125 a signal has a DC offset.
3126
3127 @table @option
3128 @item shift
3129 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3130 the audio.
3131
3132 @item limitergain
3133 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3134 used to prevent clipping.
3135 @end table
3136
3137 @section deesser
3138
3139 Apply de-essing to the audio samples.
3140
3141 @table @option
3142 @item i
3143 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3144 Default is 0.
3145
3146 @item m
3147 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3148 Default is 0.5.
3149
3150 @item f
3151 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3152 Default is 0.5.
3153
3154 @item s
3155 Set the output mode.
3156
3157 It accepts the following values:
3158 @table @option
3159 @item i
3160 Pass input unchanged.
3161
3162 @item o
3163 Pass ess filtered out.
3164
3165 @item e
3166 Pass only ess.
3167
3168 Default value is @var{o}.
3169 @end table
3170
3171 @end table
3172
3173 @section drmeter
3174 Measure audio dynamic range.
3175
3176 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3177 is found in transition material. And anything less that 8 have very poor dynamics
3178 and is very compressed.
3179
3180 The filter accepts the following options:
3181
3182 @table @option
3183 @item length
3184 Set window length in seconds used to split audio into segments of equal length.
3185 Default is 3 seconds.
3186 @end table
3187
3188 @section dynaudnorm
3189 Dynamic Audio Normalizer.
3190
3191 This filter applies a certain amount of gain to the input audio in order
3192 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3193 contrast to more "simple" normalization algorithms, the Dynamic Audio
3194 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3195 This allows for applying extra gain to the "quiet" sections of the audio
3196 while avoiding distortions or clipping the "loud" sections. In other words:
3197 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3198 sections, in the sense that the volume of each section is brought to the
3199 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3200 this goal *without* applying "dynamic range compressing". It will retain 100%
3201 of the dynamic range *within* each section of the audio file.
3202
3203 @table @option
3204 @item framelen, f
3205 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3206 Default is 500 milliseconds.
3207 The Dynamic Audio Normalizer processes the input audio in small chunks,
3208 referred to as frames. This is required, because a peak magnitude has no
3209 meaning for just a single sample value. Instead, we need to determine the
3210 peak magnitude for a contiguous sequence of sample values. While a "standard"
3211 normalizer would simply use the peak magnitude of the complete file, the
3212 Dynamic Audio Normalizer determines the peak magnitude individually for each
3213 frame. The length of a frame is specified in milliseconds. By default, the
3214 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3215 been found to give good results with most files.
3216 Note that the exact frame length, in number of samples, will be determined
3217 automatically, based on the sampling rate of the individual input audio file.
3218
3219 @item gausssize, g
3220 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3221 number. Default is 31.
3222 Probably the most important parameter of the Dynamic Audio Normalizer is the
3223 @code{window size} of the Gaussian smoothing filter. The filter's window size
3224 is specified in frames, centered around the current frame. For the sake of
3225 simplicity, this must be an odd number. Consequently, the default value of 31
3226 takes into account the current frame, as well as the 15 preceding frames and
3227 the 15 subsequent frames. Using a larger window results in a stronger
3228 smoothing effect and thus in less gain variation, i.e. slower gain
3229 adaptation. Conversely, using a smaller window results in a weaker smoothing
3230 effect and thus in more gain variation, i.e. faster gain adaptation.
3231 In other words, the more you increase this value, the more the Dynamic Audio
3232 Normalizer will behave like a "traditional" normalization filter. On the
3233 contrary, the more you decrease this value, the more the Dynamic Audio
3234 Normalizer will behave like a dynamic range compressor.
3235
3236 @item peak, p
3237 Set the target peak value. This specifies the highest permissible magnitude
3238 level for the normalized audio input. This filter will try to approach the
3239 target peak magnitude as closely as possible, but at the same time it also
3240 makes sure that the normalized signal will never exceed the peak magnitude.
3241 A frame's maximum local gain factor is imposed directly by the target peak
3242 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3243 It is not recommended to go above this value.
3244
3245 @item maxgain, m
3246 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3247 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3248 factor for each input frame, i.e. the maximum gain factor that does not
3249 result in clipping or distortion. The maximum gain factor is determined by
3250 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3251 additionally bounds the frame's maximum gain factor by a predetermined
3252 (global) maximum gain factor. This is done in order to avoid excessive gain
3253 factors in "silent" or almost silent frames. By default, the maximum gain
3254 factor is 10.0, For most inputs the default value should be sufficient and
3255 it usually is not recommended to increase this value. Though, for input
3256 with an extremely low overall volume level, it may be necessary to allow even
3257 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3258 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3259 Instead, a "sigmoid" threshold function will be applied. This way, the
3260 gain factors will smoothly approach the threshold value, but never exceed that
3261 value.
3262
3263 @item targetrms, r
3264 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3265 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3266 This means that the maximum local gain factor for each frame is defined
3267 (only) by the frame's highest magnitude sample. This way, the samples can
3268 be amplified as much as possible without exceeding the maximum signal
3269 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3270 Normalizer can also take into account the frame's root mean square,
3271 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3272 determine the power of a time-varying signal. It is therefore considered
3273 that the RMS is a better approximation of the "perceived loudness" than
3274 just looking at the signal's peak magnitude. Consequently, by adjusting all
3275 frames to a constant RMS value, a uniform "perceived loudness" can be
3276 established. If a target RMS value has been specified, a frame's local gain
3277 factor is defined as the factor that would result in exactly that RMS value.
3278 Note, however, that the maximum local gain factor is still restricted by the
3279 frame's highest magnitude sample, in order to prevent clipping.
3280
3281 @item coupling, n
3282 Enable channels coupling. By default is enabled.
3283 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3284 amount. This means the same gain factor will be applied to all channels, i.e.
3285 the maximum possible gain factor is determined by the "loudest" channel.
3286 However, in some recordings, it may happen that the volume of the different
3287 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3288 In this case, this option can be used to disable the channel coupling. This way,
3289 the gain factor will be determined independently for each channel, depending
3290 only on the individual channel's highest magnitude sample. This allows for
3291 harmonizing the volume of the different channels.
3292
3293 @item correctdc, c
3294 Enable DC bias correction. By default is disabled.
3295 An audio signal (in the time domain) is a sequence of sample values.
3296 In the Dynamic Audio Normalizer these sample values are represented in the
3297 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3298 audio signal, or "waveform", should be centered around the zero point.
3299 That means if we calculate the mean value of all samples in a file, or in a
3300 single frame, then the result should be 0.0 or at least very close to that
3301 value. If, however, there is a significant deviation of the mean value from
3302 0.0, in either positive or negative direction, this is referred to as a
3303 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3304 Audio Normalizer provides optional DC bias correction.
3305 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3306 the mean value, or "DC correction" offset, of each input frame and subtract
3307 that value from all of the frame's sample values which ensures those samples
3308 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3309 boundaries, the DC correction offset values will be interpolated smoothly
3310 between neighbouring frames.
3311
3312 @item altboundary, b
3313 Enable alternative boundary mode. By default is disabled.
3314 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3315 around each frame. This includes the preceding frames as well as the
3316 subsequent frames. However, for the "boundary" frames, located at the very
3317 beginning and at the very end of the audio file, not all neighbouring
3318 frames are available. In particular, for the first few frames in the audio
3319 file, the preceding frames are not known. And, similarly, for the last few
3320 frames in the audio file, the subsequent frames are not known. Thus, the
3321 question arises which gain factors should be assumed for the missing frames
3322 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3323 to deal with this situation. The default boundary mode assumes a gain factor
3324 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3325 "fade out" at the beginning and at the end of the input, respectively.
3326
3327 @item compress, s
3328 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3329 By default, the Dynamic Audio Normalizer does not apply "traditional"
3330 compression. This means that signal peaks will not be pruned and thus the
3331 full dynamic range will be retained within each local neighbourhood. However,
3332 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3333 normalization algorithm with a more "traditional" compression.
3334 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3335 (thresholding) function. If (and only if) the compression feature is enabled,
3336 all input frames will be processed by a soft knee thresholding function prior
3337 to the actual normalization process. Put simply, the thresholding function is
3338 going to prune all samples whose magnitude exceeds a certain threshold value.
3339 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3340 value. Instead, the threshold value will be adjusted for each individual
3341 frame.
3342 In general, smaller parameters result in stronger compression, and vice versa.
3343 Values below 3.0 are not recommended, because audible distortion may appear.
3344 @end table
3345
3346 @section earwax
3347
3348 Make audio easier to listen to on headphones.
3349
3350 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3351 so that when listened to on headphones the stereo image is moved from
3352 inside your head (standard for headphones) to outside and in front of
3353 the listener (standard for speakers).
3354
3355 Ported from SoX.
3356
3357 @section equalizer
3358
3359 Apply a two-pole peaking equalisation (EQ) filter. With this
3360 filter, the signal-level at and around a selected frequency can
3361 be increased or decreased, whilst (unlike bandpass and bandreject
3362 filters) that at all other frequencies is unchanged.
3363
3364 In order to produce complex equalisation curves, this filter can
3365 be given several times, each with a different central frequency.
3366
3367 The filter accepts the following options:
3368
3369 @table @option
3370 @item frequency, f
3371 Set the filter's central frequency in Hz.
3372
3373 @item width_type, t
3374 Set method to specify band-width of filter.
3375 @table @option
3376 @item h
3377 Hz
3378 @item q
3379 Q-Factor
3380 @item o
3381 octave
3382 @item s
3383 slope
3384 @item k
3385 kHz
3386 @end table
3387
3388 @item width, w
3389 Specify the band-width of a filter in width_type units.
3390
3391 @item gain, g
3392 Set the required gain or attenuation in dB.
3393 Beware of clipping when using a positive gain.
3394
3395 @item mix, m
3396 How much to use filtered signal in output. Default is 1.
3397 Range is between 0 and 1.
3398
3399 @item channels, c
3400 Specify which channels to filter, by default all available are filtered.
3401 @end table
3402
3403 @subsection Examples
3404 @itemize
3405 @item
3406 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3407 @example
3408 equalizer=f=1000:t=h:width=200:g=-10
3409 @end example
3410
3411 @item
3412 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3413 @example
3414 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3415 @end example
3416 @end itemize
3417
3418 @subsection Commands
3419
3420 This filter supports the following commands:
3421 @table @option
3422 @item frequency, f
3423 Change equalizer frequency.
3424 Syntax for the command is : "@var{frequency}"
3425
3426 @item width_type, t
3427 Change equalizer width_type.
3428 Syntax for the command is : "@var{width_type}"
3429
3430 @item width, w
3431 Change equalizer width.
3432 Syntax for the command is : "@var{width}"
3433
3434 @item gain, g
3435 Change equalizer gain.
3436 Syntax for the command is : "@var{gain}"
3437
3438 @item mix, m
3439 Change equalizer mix.
3440 Syntax for the command is : "@var{mix}"
3441 @end table
3442
3443 @section extrastereo
3444
3445 Linearly increases the difference between left and right channels which
3446 adds some sort of "live" effect to playback.
3447
3448 The filter accepts the following options:
3449
3450 @table @option
3451 @item m
3452 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3453 (average of both channels), with 1.0 sound will be unchanged, with
3454 -1.0 left and right channels will be swapped.
3455
3456 @item c
3457 Enable clipping. By default is enabled.
3458 @end table
3459
3460 @section firequalizer
3461 Apply FIR Equalization using arbitrary frequency response.
3462
3463 The filter accepts the following option:
3464
3465 @table @option
3466 @item gain
3467 Set gain curve equation (in dB). The expression can contain variables:
3468 @table @option
3469 @item f
3470 the evaluated frequency
3471 @item sr
3472 sample rate
3473 @item ch
3474 channel number, set to 0 when multichannels evaluation is disabled
3475 @item chid
3476 channel id, see libavutil/channel_layout.h, set to the first channel id when
3477 multichannels evaluation is disabled
3478 @item chs
3479 number of channels
3480 @item chlayout
3481 channel_layout, see libavutil/channel_layout.h
3482
3483 @end table
3484 and functions:
3485 @table @option
3486 @item gain_interpolate(f)
3487 interpolate gain on frequency f based on gain_entry
3488 @item cubic_interpolate(f)
3489 same as gain_interpolate, but smoother
3490 @end table
3491 This option is also available as command. Default is @code{gain_interpolate(f)}.
3492
3493 @item gain_entry
3494 Set gain entry for gain_interpolate function. The expression can
3495 contain functions:
3496 @table @option
3497 @item entry(f, g)
3498 store gain entry at frequency f with value g
3499 @end table
3500 This option is also available as command.
3501
3502 @item delay
3503 Set filter delay in seconds. Higher value means more accurate.
3504 Default is @code{0.01}.
3505
3506 @item accuracy
3507 Set filter accuracy in Hz. Lower value means more accurate.
3508 Default is @code{5}.
3509
3510 @item wfunc
3511 Set window function. Acceptable values are:
3512 @table @option
3513 @item rectangular
3514 rectangular window, useful when gain curve is already smooth
3515 @item hann
3516 hann window (default)
3517 @item hamming
3518 hamming window
3519 @item blackman
3520 blackman window
3521 @item nuttall3
3522 3-terms continuous 1st derivative nuttall window
3523 @item mnuttall3
3524 minimum 3-terms discontinuous nuttall window
3525 @item nuttall
3526 4-terms continuous 1st derivative nuttall window
3527 @item bnuttall
3528 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3529 @item bharris
3530 blackman-harris window
3531 @item tukey
3532 tukey window
3533 @end table
3534
3535 @item fixed
3536 If enabled, use fixed number of audio samples. This improves speed when
3537 filtering with large delay. Default is disabled.
3538
3539 @item multi
3540 Enable multichannels evaluation on gain. Default is disabled.
3541
3542 @item zero_phase
3543 Enable zero phase mode by subtracting timestamp to compensate delay.
3544 Default is disabled.
3545
3546 @item scale
3547 Set scale used by gain. Acceptable values are:
3548 @table @option
3549 @item linlin
3550 linear frequency, linear gain
3551 @item linlog
3552 linear frequency, logarithmic (in dB) gain (default)
3553 @item loglin
3554 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3555 @item loglog
3556 logarithmic frequency, logarithmic gain
3557 @end table
3558
3559 @item dumpfile
3560 Set file for dumping, suitable for gnuplot.
3561
3562 @item dumpscale
3563 Set scale for dumpfile. Acceptable values are same with scale option.
3564 Default is linlog.
3565
3566 @item fft2
3567 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3568 Default is disabled.
3569
3570 @item min_phase
3571 Enable minimum phase impulse response. Default is disabled.
3572 @end table
3573
3574 @subsection Examples
3575 @itemize
3576 @item
3577 lowpass at 1000 Hz:
3578 @example
3579 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3580 @end example
3581 @item
3582 lowpass at 1000 Hz with gain_entry:
3583 @example
3584 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3585 @end example
3586 @item
3587 custom equalization:
3588 @example
3589 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3590 @end example
3591 @item
3592 higher delay with zero phase to compensate delay:
3593 @example
3594 firequalizer=delay=0.1:fixed=on:zero_phase=on
3595 @end example
3596 @item
3597 lowpass on left channel, highpass on right channel:
3598 @example
3599 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3600 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3601 @end example
3602 @end itemize
3603
3604 @section flanger
3605 Apply a flanging effect to the audio.
3606
3607 The filter accepts the following options:
3608
3609 @table @option
3610 @item delay
3611 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3612
3613 @item depth
3614 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3615
3616 @item regen
3617 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3618 Default value is 0.
3619
3620 @item width
3621 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3622 Default value is 71.
3623
3624 @item speed
3625 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3626
3627 @item shape
3628 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3629 Default value is @var{sinusoidal}.
3630
3631 @item phase
3632 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3633 Default value is 25.
3634
3635 @item interp
3636 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3637 Default is @var{linear}.
3638 @end table
3639
3640 @section haas
3641 Apply Haas effect to audio.
3642
3643 Note that this makes most sense to apply on mono signals.
3644 With this filter applied to mono signals it give some directionality and
3645 stretches its stereo image.
3646
3647 The filter accepts the following options:
3648
3649 @table @option
3650 @item level_in
3651 Set input level. By default is @var{1}, or 0dB
3652
3653 @item level_out
3654 Set output level. By default is @var{1}, or 0dB.
3655
3656 @item side_gain
3657 Set gain applied to side part of signal. By default is @var{1}.
3658
3659 @item middle_source
3660 Set kind of middle source. Can be one of the following:
3661
3662 @table @samp
3663 @item left
3664 Pick left channel.
3665
3666 @item right
3667 Pick right channel.
3668
3669 @item mid
3670 Pick middle part signal of stereo image.
3671
3672 @item side
3673 Pick side part signal of stereo image.
3674 @end table
3675
3676 @item middle_phase
3677 Change middle phase. By default is disabled.
3678
3679 @item left_delay
3680 Set left channel delay. By default is @var{2.05} milliseconds.
3681
3682 @item left_balance
3683 Set left channel balance. By default is @var{-1}.
3684
3685 @item left_gain
3686 Set left channel gain. By default is @var{1}.
3687
3688 @item left_phase
3689 Change left phase. By default is disabled.
3690
3691 @item right_delay
3692 Set right channel delay. By defaults is @var{2.12} milliseconds.
3693
3694 @item right_balance
3695 Set right channel balance. By default is @var{1}.
3696
3697 @item right_gain
3698 Set right channel gain. By default is @var{1}.
3699
3700 @item right_phase
3701 Change right phase. By default is enabled.
3702 @end table
3703
3704 @section hdcd
3705
3706 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3707 embedded HDCD codes is expanded into a 20-bit PCM stream.
3708
3709 The filter supports the Peak Extend and Low-level Gain Adjustment features
3710 of HDCD, and detects the Transient Filter flag.
3711
3712 @example
3713 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3714 @end example
3715
3716 When using the filter with wav, note the default encoding for wav is 16-bit,
3717 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3718 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3719 @example
3720 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3721 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3722 @end example
3723
3724 The filter accepts the following options:
3725
3726 @table @option
3727 @item disable_autoconvert
3728 Disable any automatic format conversion or resampling in the filter graph.
3729
3730 @item process_stereo
3731 Process the stereo channels together. If target_gain does not match between
3732 channels, consider it invalid and use the last valid target_gain.
3733
3734 @item cdt_ms
3735 Set the code detect timer period in ms.
3736
3737 @item force_pe
3738 Always extend peaks above -3dBFS even if PE isn't signaled.
3739
3740 @item analyze_mode
3741 Replace audio with a solid tone and adjust the amplitude to signal some
3742 specific aspect of the decoding process. The output file can be loaded in
3743 an audio editor alongside the original to aid analysis.
3744
3745 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3746
3747 Modes are:
3748 @table @samp
3749 @item 0, off
3750 Disabled
3751 @item 1, lle
3752 Gain adjustment level at each sample
3753 @item 2, pe
3754 Samples where peak extend occurs
3755 @item 3, cdt
3756 Samples where the code detect timer is active
3757 @item 4, tgm
3758 Samples where the target gain does not match between channels
3759 @end table
3760 @end table
3761
3762 @section headphone
3763
3764 Apply head-related transfer functions (HRTFs) to create virtual
3765 loudspeakers around the user for binaural listening via headphones.
3766 The HRIRs are provided via additional streams, for each channel
3767 one stereo input stream is needed.
3768
3769 The filter accepts the following options:
3770
3771 @table @option
3772 @item map
3773 Set mapping of input streams for convolution.
3774 The argument is a '|'-separated list of channel names in order as they
3775 are given as additional stream inputs for filter.
3776 This also specify number of input streams. Number of input streams
3777 must be not less than number of channels in first stream plus one.
3778
3779 @item gain
3780 Set gain applied to audio. Value is in dB. Default is 0.
3781
3782 @item type
3783 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3784 processing audio in time domain which is slow.
3785 @var{freq} is processing audio in frequency domain which is fast.
3786 Default is @var{freq}.
3787
3788 @item lfe
3789 Set custom gain for LFE channels. Value is in dB. Default is 0.
3790
3791 @item size
3792 Set size of frame in number of samples which will be processed at once.
3793 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3794
3795 @item hrir
3796 Set format of hrir stream.
3797 Default value is @var{stereo}. Alternative value is @var{multich}.
3798 If value is set to @var{stereo}, number of additional streams should
3799 be greater or equal to number of input channels in first input stream.
3800 Also each additional stream should have stereo number of channels.
3801 If value is set to @var{multich}, number of additional streams should
3802 be exactly one. Also number of input channels of additional stream
3803 should be equal or greater than twice number of channels of first input
3804 stream.
3805 @end table
3806
3807 @subsection Examples
3808
3809 @itemize
3810 @item
3811 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3812 each amovie filter use stereo file with IR coefficients as input.
3813 The files give coefficients for each position of virtual loudspeaker:
3814 @example
3815 ffmpeg -i input.wav
3816 -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"
3817 output.wav
3818 @end example
3819
3820 @item
3821 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3822 but now in @var{multich} @var{hrir} format.
3823 @example
3824 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"
3825 output.wav
3826 @end example
3827 @end itemize
3828
3829 @section highpass
3830
3831 Apply a high-pass filter with 3dB point frequency.
3832 The filter can be either single-pole, or double-pole (the default).
3833 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3834
3835 The filter accepts the following options:
3836
3837 @table @option
3838 @item frequency, f
3839 Set frequency in Hz. Default is 3000.
3840
3841 @item poles, p
3842 Set number of poles. Default is 2.
3843
3844 @item width_type, t
3845 Set method to specify band-width of filter.
3846 @table @option
3847 @item h
3848 Hz
3849 @item q
3850 Q-Factor
3851 @item o
3852 octave
3853 @item s
3854 slope
3855 @item k
3856 kHz
3857 @end table
3858
3859 @item width, w
3860 Specify the band-width of a filter in width_type units.
3861 Applies only to double-pole filter.
3862 The default is 0.707q and gives a Butterworth response.
3863
3864 @item mix, m
3865 How much to use filtered signal in output. Default is 1.
3866 Range is between 0 and 1.
3867
3868 @item channels, c
3869 Specify which channels to filter, by default all available are filtered.
3870 @end table
3871
3872 @subsection Commands
3873
3874 This filter supports the following commands:
3875 @table @option
3876 @item frequency, f
3877 Change highpass frequency.
3878 Syntax for the command is : "@var{frequency}"
3879
3880 @item width_type, t
3881 Change highpass width_type.
3882 Syntax for the command is : "@var{width_type}"
3883
3884 @item width, w
3885 Change highpass width.
3886 Syntax for the command is : "@var{width}"
3887
3888 @item mix, m
3889 Change highpass mix.
3890 Syntax for the command is : "@var{mix}"
3891 @end table
3892
3893 @section join
3894
3895 Join multiple input streams into one multi-channel stream.
3896
3897 It accepts the following parameters:
3898 @table @option
3899
3900 @item inputs
3901 The number of input streams. It defaults to 2.
3902
3903 @item channel_layout
3904 The desired output channel layout. It defaults to stereo.
3905
3906 @item map
3907 Map channels from inputs to output. The argument is a '|'-separated list of
3908 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3909 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3910 can be either the name of the input channel (e.g. FL for front left) or its
3911 index in the specified input stream. @var{out_channel} is the name of the output
3912 channel.
3913 @end table
3914
3915 The filter will attempt to guess the mappings when they are not specified
3916 explicitly. It does so by first trying to find an unused matching input channel
3917 and if that fails it picks the first unused input channel.
3918
3919 Join 3 inputs (with properly set channel layouts):
3920 @example
3921 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3922 @end example
3923
3924 Build a 5.1 output from 6 single-channel streams:
3925 @example
3926 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3927 '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'
3928 out
3929 @end example
3930
3931 @section ladspa
3932
3933 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3934
3935 To enable compilation of this filter you need to configure FFmpeg with
3936 @code{--enable-ladspa}.
3937
3938 @table @option
3939 @item file, f
3940 Specifies the name of LADSPA plugin library to load. If the environment
3941 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3942 each one of the directories specified by the colon separated list in
3943 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3944 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3945 @file{/usr/lib/ladspa/}.
3946
3947 @item plugin, p
3948 Specifies the plugin within the library. Some libraries contain only
3949 one plugin, but others contain many of them. If this is not set filter
3950 will list all available plugins within the specified library.
3951
3952 @item controls, c
3953 Set the '|' separated list of controls which are zero or more floating point
3954 values that determine the behavior of the loaded plugin (for example delay,
3955 threshold or gain).
3956 Controls need to be defined using the following syntax:
3957 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3958 @var{valuei} is the value set on the @var{i}-th control.
3959 Alternatively they can be also defined using the following syntax:
3960 @var{value0}|@var{value1}|@var{value2}|..., where
3961 @var{valuei} is the value set on the @var{i}-th control.
3962 If @option{controls} is set to @code{help}, all available controls and
3963 their valid ranges are printed.
3964
3965 @item sample_rate, s
3966 Specify the sample rate, default to 44100. Only used if plugin have
3967 zero inputs.
3968
3969 @item nb_samples, n
3970 Set the number of samples per channel per each output frame, default
3971 is 1024. Only used if plugin have zero inputs.
3972
3973 @item duration, d
3974 Set the minimum duration of the sourced audio. See
3975 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3976 for the accepted syntax.
3977 Note that the resulting duration may be greater than the specified duration,
3978 as the generated audio is always cut at the end of a complete frame.
3979 If not specified, or the expressed duration is negative, the audio is
3980 supposed to be generated forever.
3981 Only used if plugin have zero inputs.
3982
3983 @end table
3984
3985 @subsection Examples
3986
3987 @itemize
3988 @item
3989 List all available plugins within amp (LADSPA example plugin) library:
3990 @example
3991 ladspa=file=amp
3992 @end example
3993
3994 @item
3995 List all available controls and their valid ranges for @code{vcf_notch}
3996 plugin from @code{VCF} library:
3997 @example
3998 ladspa=f=vcf:p=vcf_notch:c=help
3999 @end example
4000
4001 @item
4002 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4003 plugin library:
4004 @example
4005 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4006 @end example
4007
4008 @item
4009 Add reverberation to the audio using TAP-plugins
4010 (Tom's Audio Processing plugins):
4011 @example
4012 ladspa=file=tap_reverb:tap_reverb
4013 @end example
4014
4015 @item
4016 Generate white noise, with 0.2 amplitude:
4017 @example
4018 ladspa=file=cmt:noise_source_white:c=c0=.2
4019 @end example
4020
4021 @item
4022 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4023 @code{C* Audio Plugin Suite} (CAPS) library:
4024 @example
4025 ladspa=file=caps:Click:c=c1=20'
4026 @end example
4027
4028 @item
4029 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4030 @example
4031 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4032 @end example
4033
4034 @item
4035 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4036 @code{SWH Plugins} collection:
4037 @example
4038 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4039 @end example
4040
4041 @item
4042 Attenuate low frequencies using Multiband EQ from Steve Harris
4043 @code{SWH Plugins} collection:
4044 @example
4045 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4046 @end example
4047
4048 @item
4049 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4050 (CAPS) library:
4051 @example
4052 ladspa=caps:Narrower
4053 @end example
4054
4055 @item
4056 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4057 @example
4058 ladspa=caps:White:.2
4059 @end example
4060
4061 @item
4062 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4063 @example
4064 ladspa=caps:Fractal:c=c1=1
4065 @end example
4066
4067 @item
4068 Dynamic volume normalization using @code{VLevel} plugin:
4069 @example
4070 ladspa=vlevel-ladspa:vlevel_mono
4071 @end example
4072 @end itemize
4073
4074 @subsection Commands
4075
4076 This filter supports the following commands:
4077 @table @option
4078 @item cN
4079 Modify the @var{N}-th control value.
4080
4081 If the specified value is not valid, it is ignored and prior one is kept.
4082 @end table
4083
4084 @section loudnorm
4085
4086 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4087 Support for both single pass (livestreams, files) and double pass (files) modes.
4088 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
4089 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
4090 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4091
4092 The filter accepts the following options:
4093
4094 @table @option
4095 @item I, i
4096 Set integrated loudness target.
4097 Range is -70.0 - -5.0. Default value is -24.0.
4098
4099 @item LRA, lra
4100 Set loudness range target.
4101 Range is 1.0 - 20.0. Default value is 7.0.
4102
4103 @item TP, tp
4104 Set maximum true peak.
4105 Range is -9.0 - +0.0. Default value is -2.0.
4106
4107 @item measured_I, measured_i
4108 Measured IL of input file.
4109 Range is -99.0 - +0.0.
4110
4111 @item measured_LRA, measured_lra
4112 Measured LRA of input file.
4113 Range is  0.0 - 99.0.
4114
4115 @item measured_TP, measured_tp
4116 Measured true peak of input file.
4117 Range is  -99.0 - +99.0.
4118
4119 @item measured_thresh
4120 Measured threshold of input file.
4121 Range is -99.0 - +0.0.
4122
4123 @item offset
4124 Set offset gain. Gain is applied before the true-peak limiter.
4125 Range is  -99.0 - +99.0. Default is +0.0.
4126
4127 @item linear
4128 Normalize linearly if possible.
4129 measured_I, measured_LRA, measured_TP, and measured_thresh must also
4130 to be specified in order to use this mode.
4131 Options are true or false. Default is true.
4132
4133 @item dual_mono
4134 Treat mono input files as "dual-mono". If a mono file is intended for playback
4135 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4136 If set to @code{true}, this option will compensate for this effect.
4137 Multi-channel input files are not affected by this option.
4138 Options are true or false. Default is false.
4139
4140 @item print_format
4141 Set print format for stats. Options are summary, json, or none.
4142 Default value is none.
4143 @end table
4144
4145 @section lowpass
4146
4147 Apply a low-pass filter with 3dB point frequency.
4148 The filter can be either single-pole or double-pole (the default).
4149 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4150
4151 The filter accepts the following options:
4152
4153 @table @option
4154 @item frequency, f
4155 Set frequency in Hz. Default is 500.
4156
4157 @item poles, p
4158 Set number of poles. Default is 2.
4159
4160 @item width_type, t
4161 Set method to specify band-width of filter.
4162 @table @option
4163 @item h
4164 Hz
4165 @item q
4166 Q-Factor
4167 @item o
4168 octave
4169 @item s
4170 slope
4171 @item k
4172 kHz
4173 @end table
4174
4175 @item width, w
4176 Specify the band-width of a filter in width_type units.
4177 Applies only to double-pole filter.
4178 The default is 0.707q and gives a Butterworth response.
4179
4180 @item mix, m
4181 How much to use filtered signal in output. Default is 1.
4182 Range is between 0 and 1.
4183
4184 @item channels, c
4185 Specify which channels to filter, by default all available are filtered.
4186 @end table
4187
4188 @subsection Examples
4189 @itemize