avfilter/af_adelay: add option which changes how unset channels are delayed
[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 ammount, 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 @section anull
1880
1881 Pass the audio source unchanged to the output.
1882
1883 @section apad
1884
1885 Pad the end of an audio stream with silence.
1886
1887 This can be used together with @command{ffmpeg} @option{-shortest} to
1888 extend audio streams to the same length as the video stream.
1889
1890 A description of the accepted options follows.
1891
1892 @table @option
1893 @item packet_size
1894 Set silence packet size. Default value is 4096.
1895
1896 @item pad_len
1897 Set the number of samples of silence to add to the end. After the
1898 value is reached, the stream is terminated. This option is mutually
1899 exclusive with @option{whole_len}.
1900
1901 @item whole_len
1902 Set the minimum total number of samples in the output audio stream. If
1903 the value is longer than the input audio length, silence is added to
1904 the end, until the value is reached. This option is mutually exclusive
1905 with @option{pad_len}.
1906
1907 @item pad_dur
1908 Specify the duration of samples of silence to add. See
1909 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1910 for the accepted syntax. Used only if set to non-zero value.
1911
1912 @item whole_dur
1913 Specify the minimum total duration in the output audio stream. See
1914 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1915 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1916 the input audio length, silence is added to the end, until the value is reached.
1917 This option is mutually exclusive with @option{pad_dur}
1918 @end table
1919
1920 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1921 nor @option{whole_dur} option is set, the filter will add silence to the end of
1922 the input stream indefinitely.
1923
1924 @subsection Examples
1925
1926 @itemize
1927 @item
1928 Add 1024 samples of silence to the end of the input:
1929 @example
1930 apad=pad_len=1024
1931 @end example
1932
1933 @item
1934 Make sure the audio output will contain at least 10000 samples, pad
1935 the input with silence if required:
1936 @example
1937 apad=whole_len=10000
1938 @end example
1939
1940 @item
1941 Use @command{ffmpeg} to pad the audio input with silence, so that the
1942 video stream will always result the shortest and will be converted
1943 until the end in the output file when using the @option{shortest}
1944 option:
1945 @example
1946 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1947 @end example
1948 @end itemize
1949
1950 @section aphaser
1951 Add a phasing effect to the input audio.
1952
1953 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1954 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1955
1956 A description of the accepted parameters follows.
1957
1958 @table @option
1959 @item in_gain
1960 Set input gain. Default is 0.4.
1961
1962 @item out_gain
1963 Set output gain. Default is 0.74
1964
1965 @item delay
1966 Set delay in milliseconds. Default is 3.0.
1967
1968 @item decay
1969 Set decay. Default is 0.4.
1970
1971 @item speed
1972 Set modulation speed in Hz. Default is 0.5.
1973
1974 @item type
1975 Set modulation type. Default is triangular.
1976
1977 It accepts the following values:
1978 @table @samp
1979 @item triangular, t
1980 @item sinusoidal, s
1981 @end table
1982 @end table
1983
1984 @section apulsator
1985
1986 Audio pulsator is something between an autopanner and a tremolo.
1987 But it can produce funny stereo effects as well. Pulsator changes the volume
1988 of the left and right channel based on a LFO (low frequency oscillator) with
1989 different waveforms and shifted phases.
1990 This filter have the ability to define an offset between left and right
1991 channel. An offset of 0 means that both LFO shapes match each other.
1992 The left and right channel are altered equally - a conventional tremolo.
1993 An offset of 50% means that the shape of the right channel is exactly shifted
1994 in phase (or moved backwards about half of the frequency) - pulsator acts as
1995 an autopanner. At 1 both curves match again. Every setting in between moves the
1996 phase shift gapless between all stages and produces some "bypassing" sounds with
1997 sine and triangle waveforms. The more you set the offset near 1 (starting from
1998 the 0.5) the faster the signal passes from the left to the right speaker.
1999
2000 The filter accepts the following options:
2001
2002 @table @option
2003 @item level_in
2004 Set input gain. By default it is 1. Range is [0.015625 - 64].
2005
2006 @item level_out
2007 Set output gain. By default it is 1. Range is [0.015625 - 64].
2008
2009 @item mode
2010 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2011 sawup or sawdown. Default is sine.
2012
2013 @item amount
2014 Set modulation. Define how much of original signal is affected by the LFO.
2015
2016 @item offset_l
2017 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2018
2019 @item offset_r
2020 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2021
2022 @item width
2023 Set pulse width. Default is 1. Allowed range is [0 - 2].
2024
2025 @item timing
2026 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2027
2028 @item bpm
2029 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2030 is set to bpm.
2031
2032 @item ms
2033 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2034 is set to ms.
2035
2036 @item hz
2037 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2038 if timing is set to hz.
2039 @end table
2040
2041 @anchor{aresample}
2042 @section aresample
2043
2044 Resample the input audio to the specified parameters, using the
2045 libswresample library. If none are specified then the filter will
2046 automatically convert between its input and output.
2047
2048 This filter is also able to stretch/squeeze the audio data to make it match
2049 the timestamps or to inject silence / cut out audio to make it match the
2050 timestamps, do a combination of both or do neither.
2051
2052 The filter accepts the syntax
2053 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2054 expresses a sample rate and @var{resampler_options} is a list of
2055 @var{key}=@var{value} pairs, separated by ":". See the
2056 @ref{Resampler Options,,"Resampler Options" section in the
2057 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2058 for the complete list of supported options.
2059
2060 @subsection Examples
2061
2062 @itemize
2063 @item
2064 Resample the input audio to 44100Hz:
2065 @example
2066 aresample=44100
2067 @end example
2068
2069 @item
2070 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2071 samples per second compensation:
2072 @example
2073 aresample=async=1000
2074 @end example
2075 @end itemize
2076
2077 @section areverse
2078
2079 Reverse an audio clip.
2080
2081 Warning: This filter requires memory to buffer the entire clip, so trimming
2082 is suggested.
2083
2084 @subsection Examples
2085
2086 @itemize
2087 @item
2088 Take the first 5 seconds of a clip, and reverse it.
2089 @example
2090 atrim=end=5,areverse
2091 @end example
2092 @end itemize
2093
2094 @section asetnsamples
2095
2096 Set the number of samples per each output audio frame.
2097
2098 The last output packet may contain a different number of samples, as
2099 the filter will flush all the remaining samples when the input audio
2100 signals its end.
2101
2102 The filter accepts the following options:
2103
2104 @table @option
2105
2106 @item nb_out_samples, n
2107 Set the number of frames per each output audio frame. The number is
2108 intended as the number of samples @emph{per each channel}.
2109 Default value is 1024.
2110
2111 @item pad, p
2112 If set to 1, the filter will pad the last audio frame with zeroes, so
2113 that the last frame will contain the same number of samples as the
2114 previous ones. Default value is 1.
2115 @end table
2116
2117 For example, to set the number of per-frame samples to 1234 and
2118 disable padding for the last frame, use:
2119 @example
2120 asetnsamples=n=1234:p=0
2121 @end example
2122
2123 @section asetrate
2124
2125 Set the sample rate without altering the PCM data.
2126 This will result in a change of speed and pitch.
2127
2128 The filter accepts the following options:
2129
2130 @table @option
2131 @item sample_rate, r
2132 Set the output sample rate. Default is 44100 Hz.
2133 @end table
2134
2135 @section ashowinfo
2136
2137 Show a line containing various information for each input audio frame.
2138 The input audio is not modified.
2139
2140 The shown line contains a sequence of key/value pairs of the form
2141 @var{key}:@var{value}.
2142
2143 The following values are shown in the output:
2144
2145 @table @option
2146 @item n
2147 The (sequential) number of the input frame, starting from 0.
2148
2149 @item pts
2150 The presentation timestamp of the input frame, in time base units; the time base
2151 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2152
2153 @item pts_time
2154 The presentation timestamp of the input frame in seconds.
2155
2156 @item pos
2157 position of the frame in the input stream, -1 if this information in
2158 unavailable and/or meaningless (for example in case of synthetic audio)
2159
2160 @item fmt
2161 The sample format.
2162
2163 @item chlayout
2164 The channel layout.
2165
2166 @item rate
2167 The sample rate for the audio frame.
2168
2169 @item nb_samples
2170 The number of samples (per channel) in the frame.
2171
2172 @item checksum
2173 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2174 audio, the data is treated as if all the planes were concatenated.
2175
2176 @item plane_checksums
2177 A list of Adler-32 checksums for each data plane.
2178 @end table
2179
2180 @section asoftclip
2181 Apply audio soft clipping.
2182
2183 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2184 along a smooth curve, rather than the abrupt shape of hard-clipping.
2185
2186 This filter accepts the following options:
2187
2188 @table @option
2189 @item type
2190 Set type of soft-clipping.
2191
2192 It accepts the following values:
2193 @table @option
2194 @item tanh
2195 @item atan
2196 @item cubic
2197 @item exp
2198 @item alg
2199 @item quintic
2200 @item sin
2201 @end table
2202
2203 @item param
2204 Set additional parameter which controls sigmoid function.
2205 @end table
2206
2207 @section asr
2208 Automatic Speech Recognition
2209
2210 This filter uses PocketSphinx for speech recognition. To enable
2211 compilation of this filter, you need to configure FFmpeg with
2212 @code{--enable-pocketsphinx}.
2213
2214 It accepts the following options:
2215
2216 @table @option
2217 @item rate
2218 Set sampling rate of input audio. Defaults is @code{16000}.
2219 This need to match speech models, otherwise one will get poor results.
2220
2221 @item hmm
2222 Set dictionary containing acoustic model files.
2223
2224 @item dict
2225 Set pronunciation dictionary.
2226
2227 @item lm
2228 Set language model file.
2229
2230 @item lmctl
2231 Set language model set.
2232
2233 @item lmname
2234 Set which language model to use.
2235
2236 @item logfn
2237 Set output for log messages.
2238 @end table
2239
2240 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2241
2242 @anchor{astats}
2243 @section astats
2244
2245 Display time domain statistical information about the audio channels.
2246 Statistics are calculated and displayed for each audio channel and,
2247 where applicable, an overall figure is also given.
2248
2249 It accepts the following option:
2250 @table @option
2251 @item length
2252 Short window length in seconds, used for peak and trough RMS measurement.
2253 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2254
2255 @item metadata
2256
2257 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2258 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2259 disabled.
2260
2261 Available keys for each channel are:
2262 DC_offset
2263 Min_level
2264 Max_level
2265 Min_difference
2266 Max_difference
2267 Mean_difference
2268 RMS_difference
2269 Peak_level
2270 RMS_peak
2271 RMS_trough
2272 Crest_factor
2273 Flat_factor
2274 Peak_count
2275 Bit_depth
2276 Dynamic_range
2277 Zero_crossings
2278 Zero_crossings_rate
2279 Number_of_NaNs
2280 Number_of_Infs
2281 Number_of_denormals
2282
2283 and for Overall:
2284 DC_offset
2285 Min_level
2286 Max_level
2287 Min_difference
2288 Max_difference
2289 Mean_difference
2290 RMS_difference
2291 Peak_level
2292 RMS_level
2293 RMS_peak
2294 RMS_trough
2295 Flat_factor
2296 Peak_count
2297 Bit_depth
2298 Number_of_samples
2299 Number_of_NaNs
2300 Number_of_Infs
2301 Number_of_denormals
2302
2303 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2304 this @code{lavfi.astats.Overall.Peak_count}.
2305
2306 For description what each key means read below.
2307
2308 @item reset
2309 Set number of frame after which stats are going to be recalculated.
2310 Default is disabled.
2311
2312 @item measure_perchannel
2313 Select the entries which need to be measured per channel. The metadata keys can
2314 be used as flags, default is @option{all} which measures everything.
2315 @option{none} disables all per channel measurement.
2316
2317 @item measure_overall
2318 Select the entries which need to be measured overall. The metadata keys can
2319 be used as flags, default is @option{all} which measures everything.
2320 @option{none} disables all overall measurement.
2321
2322 @end table
2323
2324 A description of each shown parameter follows:
2325
2326 @table @option
2327 @item DC offset
2328 Mean amplitude displacement from zero.
2329
2330 @item Min level
2331 Minimal sample level.
2332
2333 @item Max level
2334 Maximal sample level.
2335
2336 @item Min difference
2337 Minimal difference between two consecutive samples.
2338
2339 @item Max difference
2340 Maximal difference between two consecutive samples.
2341
2342 @item Mean difference
2343 Mean difference between two consecutive samples.
2344 The average of each difference between two consecutive samples.
2345
2346 @item RMS difference
2347 Root Mean Square difference between two consecutive samples.
2348
2349 @item Peak level dB
2350 @item RMS level dB
2351 Standard peak and RMS level measured in dBFS.
2352
2353 @item RMS peak dB
2354 @item RMS trough dB
2355 Peak and trough values for RMS level measured over a short window.
2356
2357 @item Crest factor
2358 Standard ratio of peak to RMS level (note: not in dB).
2359
2360 @item Flat factor
2361 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2362 (i.e. either @var{Min level} or @var{Max level}).
2363
2364 @item Peak count
2365 Number of occasions (not the number of samples) that the signal attained either
2366 @var{Min level} or @var{Max level}.
2367
2368 @item Bit depth
2369 Overall bit depth of audio. Number of bits used for each sample.
2370
2371 @item Dynamic range
2372 Measured dynamic range of audio in dB.
2373
2374 @item Zero crossings
2375 Number of points where the waveform crosses the zero level axis.
2376
2377 @item Zero crossings rate
2378 Rate of Zero crossings and number of audio samples.
2379 @end table
2380
2381 @section atempo
2382
2383 Adjust audio tempo.
2384
2385 The filter accepts exactly one parameter, the audio tempo. If not
2386 specified then the filter will assume nominal 1.0 tempo. Tempo must
2387 be in the [0.5, 100.0] range.
2388
2389 Note that tempo greater than 2 will skip some samples rather than
2390 blend them in.  If for any reason this is a concern it is always
2391 possible to daisy-chain several instances of atempo to achieve the
2392 desired product tempo.
2393
2394 @subsection Examples
2395
2396 @itemize
2397 @item
2398 Slow down audio to 80% tempo:
2399 @example
2400 atempo=0.8
2401 @end example
2402
2403 @item
2404 To speed up audio to 300% tempo:
2405 @example
2406 atempo=3
2407 @end example
2408
2409 @item
2410 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2411 @example
2412 atempo=sqrt(3),atempo=sqrt(3)
2413 @end example
2414 @end itemize
2415
2416 @section atrim
2417
2418 Trim the input so that the output contains one continuous subpart of the input.
2419
2420 It accepts the following parameters:
2421 @table @option
2422 @item start
2423 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2424 sample with the timestamp @var{start} will be the first sample in the output.
2425
2426 @item end
2427 Specify time of the first audio sample that will be dropped, i.e. the
2428 audio sample immediately preceding the one with the timestamp @var{end} will be
2429 the last sample in the output.
2430
2431 @item start_pts
2432 Same as @var{start}, except this option sets the start timestamp in samples
2433 instead of seconds.
2434
2435 @item end_pts
2436 Same as @var{end}, except this option sets the end timestamp in samples instead
2437 of seconds.
2438
2439 @item duration
2440 The maximum duration of the output in seconds.
2441
2442 @item start_sample
2443 The number of the first sample that should be output.
2444
2445 @item end_sample
2446 The number of the first sample that should be dropped.
2447 @end table
2448
2449 @option{start}, @option{end}, and @option{duration} are expressed as time
2450 duration specifications; see
2451 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2452
2453 Note that the first two sets of the start/end options and the @option{duration}
2454 option look at the frame timestamp, while the _sample options simply count the
2455 samples that pass through the filter. So start/end_pts and start/end_sample will
2456 give different results when the timestamps are wrong, inexact or do not start at
2457 zero. Also note that this filter does not modify the timestamps. If you wish
2458 to have the output timestamps start at zero, insert the asetpts filter after the
2459 atrim filter.
2460
2461 If multiple start or end options are set, this filter tries to be greedy and
2462 keep all samples that match at least one of the specified constraints. To keep
2463 only the part that matches all the constraints at once, chain multiple atrim
2464 filters.
2465
2466 The defaults are such that all the input is kept. So it is possible to set e.g.
2467 just the end values to keep everything before the specified time.
2468
2469 Examples:
2470 @itemize
2471 @item
2472 Drop everything except the second minute of input:
2473 @example
2474 ffmpeg -i INPUT -af atrim=60:120
2475 @end example
2476
2477 @item
2478 Keep only the first 1000 samples:
2479 @example
2480 ffmpeg -i INPUT -af atrim=end_sample=1000
2481 @end example
2482
2483 @end itemize
2484
2485 @section bandpass
2486
2487 Apply a two-pole Butterworth band-pass filter with central
2488 frequency @var{frequency}, and (3dB-point) band-width width.
2489 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2490 instead of the default: constant 0dB peak gain.
2491 The filter roll off at 6dB per octave (20dB per decade).
2492
2493 The filter accepts the following options:
2494
2495 @table @option
2496 @item frequency, f
2497 Set the filter's central frequency. Default is @code{3000}.
2498
2499 @item csg
2500 Constant skirt gain if set to 1. Defaults to 0.
2501
2502 @item width_type, t
2503 Set method to specify band-width of filter.
2504 @table @option
2505 @item h
2506 Hz
2507 @item q
2508 Q-Factor
2509 @item o
2510 octave
2511 @item s
2512 slope
2513 @item k
2514 kHz
2515 @end table
2516
2517 @item width, w
2518 Specify the band-width of a filter in width_type units.
2519
2520 @item mix, m
2521 How much to use filtered signal in output. Default is 1.
2522 Range is between 0 and 1.
2523
2524 @item channels, c
2525 Specify which channels to filter, by default all available are filtered.
2526 @end table
2527
2528 @subsection Commands
2529
2530 This filter supports the following commands:
2531 @table @option
2532 @item frequency, f
2533 Change bandpass frequency.
2534 Syntax for the command is : "@var{frequency}"
2535
2536 @item width_type, t
2537 Change bandpass width_type.
2538 Syntax for the command is : "@var{width_type}"
2539
2540 @item width, w
2541 Change bandpass width.
2542 Syntax for the command is : "@var{width}"
2543
2544 @item mix, m
2545 Change bandpass mix.
2546 Syntax for the command is : "@var{mix}"
2547 @end table
2548
2549 @section bandreject
2550
2551 Apply a two-pole Butterworth band-reject filter with central
2552 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2553 The filter roll off at 6dB per octave (20dB per decade).
2554
2555 The filter accepts the following options:
2556
2557 @table @option
2558 @item frequency, f
2559 Set the filter's central frequency. Default is @code{3000}.
2560
2561 @item width_type, t
2562 Set method to specify band-width of filter.
2563 @table @option
2564 @item h
2565 Hz
2566 @item q
2567 Q-Factor
2568 @item o
2569 octave
2570 @item s
2571 slope
2572 @item k
2573 kHz
2574 @end table
2575
2576 @item width, w
2577 Specify the band-width of a filter in width_type units.
2578
2579 @item mix, m
2580 How much to use filtered signal in output. Default is 1.
2581 Range is between 0 and 1.
2582
2583 @item channels, c
2584 Specify which channels to filter, by default all available are filtered.
2585 @end table
2586
2587 @subsection Commands
2588
2589 This filter supports the following commands:
2590 @table @option
2591 @item frequency, f
2592 Change bandreject frequency.
2593 Syntax for the command is : "@var{frequency}"
2594
2595 @item width_type, t
2596 Change bandreject width_type.
2597 Syntax for the command is : "@var{width_type}"
2598
2599 @item width, w
2600 Change bandreject width.
2601 Syntax for the command is : "@var{width}"
2602
2603 @item mix, m
2604 Change bandreject mix.
2605 Syntax for the command is : "@var{mix}"
2606 @end table
2607
2608 @section bass, lowshelf
2609
2610 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2611 shelving filter with a response similar to that of a standard
2612 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2613
2614 The filter accepts the following options:
2615
2616 @table @option
2617 @item gain, g
2618 Give the gain at 0 Hz. Its useful range is about -20
2619 (for a large cut) to +20 (for a large boost).
2620 Beware of clipping when using a positive gain.
2621
2622 @item frequency, f
2623 Set the filter's central frequency and so can be used
2624 to extend or reduce the frequency range to be boosted or cut.
2625 The default value is @code{100} Hz.
2626
2627 @item width_type, t
2628 Set method to specify band-width of filter.
2629 @table @option
2630 @item h
2631 Hz
2632 @item q
2633 Q-Factor
2634 @item o
2635 octave
2636 @item s
2637 slope
2638 @item k
2639 kHz
2640 @end table
2641
2642 @item width, w
2643 Determine how steep is the filter's shelf transition.
2644
2645 @item mix, m
2646 How much to use filtered signal in output. Default is 1.
2647 Range is between 0 and 1.
2648
2649 @item channels, c
2650 Specify which channels to filter, by default all available are filtered.
2651 @end table
2652
2653 @subsection Commands
2654
2655 This filter supports the following commands:
2656 @table @option
2657 @item frequency, f
2658 Change bass frequency.
2659 Syntax for the command is : "@var{frequency}"
2660
2661 @item width_type, t
2662 Change bass width_type.
2663 Syntax for the command is : "@var{width_type}"
2664
2665 @item width, w
2666 Change bass width.
2667 Syntax for the command is : "@var{width}"
2668
2669 @item gain, g
2670 Change bass gain.
2671 Syntax for the command is : "@var{gain}"
2672
2673 @item mix, m
2674 Change bass mix.
2675 Syntax for the command is : "@var{mix}"
2676 @end table
2677
2678 @section biquad
2679
2680 Apply a biquad IIR filter with the given coefficients.
2681 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2682 are the numerator and denominator coefficients respectively.
2683 and @var{channels}, @var{c} specify which channels to filter, by default all
2684 available are filtered.
2685
2686 @subsection Commands
2687
2688 This filter supports the following commands:
2689 @table @option
2690 @item a0
2691 @item a1
2692 @item a2
2693 @item b0
2694 @item b1
2695 @item b2
2696 Change biquad parameter.
2697 Syntax for the command is : "@var{value}"
2698
2699 @item mix, m
2700 How much to use filtered signal in output. Default is 1.
2701 Range is between 0 and 1.
2702 @end table
2703
2704 @section bs2b
2705 Bauer stereo to binaural transformation, which improves headphone listening of
2706 stereo audio records.
2707
2708 To enable compilation of this filter you need to configure FFmpeg with
2709 @code{--enable-libbs2b}.
2710
2711 It accepts the following parameters:
2712 @table @option
2713
2714 @item profile
2715 Pre-defined crossfeed level.
2716 @table @option
2717
2718 @item default
2719 Default level (fcut=700, feed=50).
2720
2721 @item cmoy
2722 Chu Moy circuit (fcut=700, feed=60).
2723
2724 @item jmeier
2725 Jan Meier circuit (fcut=650, feed=95).
2726
2727 @end table
2728
2729 @item fcut
2730 Cut frequency (in Hz).
2731
2732 @item feed
2733 Feed level (in Hz).
2734
2735 @end table
2736
2737 @section channelmap
2738
2739 Remap input channels to new locations.
2740
2741 It accepts the following parameters:
2742 @table @option
2743 @item map
2744 Map channels from input to output. The argument is a '|'-separated list of
2745 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2746 @var{in_channel} form. @var{in_channel} can be either the name of the input
2747 channel (e.g. FL for front left) or its index in the input channel layout.
2748 @var{out_channel} is the name of the output channel or its index in the output
2749 channel layout. If @var{out_channel} is not given then it is implicitly an
2750 index, starting with zero and increasing by one for each mapping.
2751
2752 @item channel_layout
2753 The channel layout of the output stream.
2754 @end table
2755
2756 If no mapping is present, the filter will implicitly map input channels to
2757 output channels, preserving indices.
2758
2759 @subsection Examples
2760
2761 @itemize
2762 @item
2763 For example, assuming a 5.1+downmix input MOV file,
2764 @example
2765 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2766 @end example
2767 will create an output WAV file tagged as stereo from the downmix channels of
2768 the input.
2769
2770 @item
2771 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2772 @example
2773 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2774 @end example
2775 @end itemize
2776
2777 @section channelsplit
2778
2779 Split each channel from an input audio stream into a separate output stream.
2780
2781 It accepts the following parameters:
2782 @table @option
2783 @item channel_layout
2784 The channel layout of the input stream. The default is "stereo".
2785 @item channels
2786 A channel layout describing the channels to be extracted as separate output streams
2787 or "all" to extract each input channel as a separate stream. The default is "all".
2788
2789 Choosing channels not present in channel layout in the input will result in an error.
2790 @end table
2791
2792 @subsection Examples
2793
2794 @itemize
2795 @item
2796 For example, assuming a stereo input MP3 file,
2797 @example
2798 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2799 @end example
2800 will create an output Matroska file with two audio streams, one containing only
2801 the left channel and the other the right channel.
2802
2803 @item
2804 Split a 5.1 WAV file into per-channel files:
2805 @example
2806 ffmpeg -i in.wav -filter_complex
2807 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2808 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2809 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2810 side_right.wav
2811 @end example
2812
2813 @item
2814 Extract only LFE from a 5.1 WAV file:
2815 @example
2816 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2817 -map '[LFE]' lfe.wav
2818 @end example
2819 @end itemize
2820
2821 @section chorus
2822 Add a chorus effect to the audio.
2823
2824 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2825
2826 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2827 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2828 The modulation depth defines the range the modulated delay is played before or after
2829 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2830 sound tuned around the original one, like in a chorus where some vocals are slightly
2831 off key.
2832
2833 It accepts the following parameters:
2834 @table @option
2835 @item in_gain
2836 Set input gain. Default is 0.4.
2837
2838 @item out_gain
2839 Set output gain. Default is 0.4.
2840
2841 @item delays
2842 Set delays. A typical delay is around 40ms to 60ms.
2843
2844 @item decays
2845 Set decays.
2846
2847 @item speeds
2848 Set speeds.
2849
2850 @item depths
2851 Set depths.
2852 @end table
2853
2854 @subsection Examples
2855
2856 @itemize
2857 @item
2858 A single delay:
2859 @example
2860 chorus=0.7:0.9:55:0.4:0.25:2
2861 @end example
2862
2863 @item
2864 Two delays:
2865 @example
2866 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2867 @end example
2868
2869 @item
2870 Fuller sounding chorus with three delays:
2871 @example
2872 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
2873 @end example
2874 @end itemize
2875
2876 @section compand
2877 Compress or expand the audio's dynamic range.
2878
2879 It accepts the following parameters:
2880
2881 @table @option
2882
2883 @item attacks
2884 @item decays
2885 A list of times in seconds for each channel over which the instantaneous level
2886 of the input signal is averaged to determine its volume. @var{attacks} refers to
2887 increase of volume and @var{decays} refers to decrease of volume. For most
2888 situations, the attack time (response to the audio getting louder) should be
2889 shorter than the decay time, because the human ear is more sensitive to sudden
2890 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2891 a typical value for decay is 0.8 seconds.
2892 If specified number of attacks & decays is lower than number of channels, the last
2893 set attack/decay will be used for all remaining channels.
2894
2895 @item points
2896 A list of points for the transfer function, specified in dB relative to the
2897 maximum possible signal amplitude. Each key points list must be defined using
2898 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2899 @code{x0/y0 x1/y1 x2/y2 ....}
2900
2901 The input values must be in strictly increasing order but the transfer function
2902 does not have to be monotonically rising. The point @code{0/0} is assumed but
2903 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2904 function are @code{-70/-70|-60/-20|1/0}.
2905
2906 @item soft-knee
2907 Set the curve radius in dB for all joints. It defaults to 0.01.
2908
2909 @item gain
2910 Set the additional gain in dB to be applied at all points on the transfer
2911 function. This allows for easy adjustment of the overall gain.
2912 It defaults to 0.
2913
2914 @item volume
2915 Set an initial volume, in dB, to be assumed for each channel when filtering
2916 starts. This permits the user to supply a nominal level initially, so that, for
2917 example, a very large gain is not applied to initial signal levels before the
2918 companding has begun to operate. A typical value for audio which is initially
2919 quiet is -90 dB. It defaults to 0.
2920
2921 @item delay
2922 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2923 delayed before being fed to the volume adjuster. Specifying a delay
2924 approximately equal to the attack/decay times allows the filter to effectively
2925 operate in predictive rather than reactive mode. It defaults to 0.
2926
2927 @end table
2928
2929 @subsection Examples
2930
2931 @itemize
2932 @item
2933 Make music with both quiet and loud passages suitable for listening to in a
2934 noisy environment:
2935 @example
2936 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2937 @end example
2938
2939 Another example for audio with whisper and explosion parts:
2940 @example
2941 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2942 @end example
2943
2944 @item
2945 A noise gate for when the noise is at a lower level than the signal:
2946 @example
2947 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2948 @end example
2949
2950 @item
2951 Here is another noise gate, this time for when the noise is at a higher level
2952 than the signal (making it, in some ways, similar to squelch):
2953 @example
2954 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2955 @end example
2956
2957 @item
2958 2:1 compression starting at -6dB:
2959 @example
2960 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2961 @end example
2962
2963 @item
2964 2:1 compression starting at -9dB:
2965 @example
2966 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2967 @end example
2968
2969 @item
2970 2:1 compression starting at -12dB:
2971 @example
2972 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2973 @end example
2974
2975 @item
2976 2:1 compression starting at -18dB:
2977 @example
2978 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2979 @end example
2980
2981 @item
2982 3:1 compression starting at -15dB:
2983 @example
2984 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2985 @end example
2986
2987 @item
2988 Compressor/Gate:
2989 @example
2990 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2991 @end example
2992
2993 @item
2994 Expander:
2995 @example
2996 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
2997 @end example
2998
2999 @item
3000 Hard limiter at -6dB:
3001 @example
3002 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3003 @end example
3004
3005 @item
3006 Hard limiter at -12dB:
3007 @example
3008 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3009 @end example
3010
3011 @item
3012 Hard noise gate at -35 dB:
3013 @example
3014 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3015 @end example
3016
3017 @item
3018 Soft limiter:
3019 @example
3020 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3021 @end example
3022 @end itemize
3023
3024 @section compensationdelay
3025
3026 Compensation Delay Line is a metric based delay to compensate differing
3027 positions of microphones or speakers.
3028
3029 For example, you have recorded guitar with two microphones placed in
3030 different locations. Because the front of sound wave has fixed speed in
3031 normal conditions, the phasing of microphones can vary and depends on
3032 their location and interposition. The best sound mix can be achieved when
3033 these microphones are in phase (synchronized). Note that a distance of
3034 ~30 cm between microphones makes one microphone capture the signal in
3035 antiphase to the other microphone. That makes the final mix sound moody.
3036 This filter helps to solve phasing problems by adding different delays
3037 to each microphone track and make them synchronized.
3038
3039 The best result can be reached when you take one track as base and
3040 synchronize other tracks one by one with it.
3041 Remember that synchronization/delay tolerance depends on sample rate, too.
3042 Higher sample rates will give more tolerance.
3043
3044 The filter accepts the following parameters:
3045
3046 @table @option
3047 @item mm
3048 Set millimeters distance. This is compensation distance for fine tuning.
3049 Default is 0.
3050
3051 @item cm
3052 Set cm distance. This is compensation distance for tightening distance setup.
3053 Default is 0.
3054
3055 @item m
3056 Set meters distance. This is compensation distance for hard distance setup.
3057 Default is 0.
3058
3059 @item dry
3060 Set dry amount. Amount of unprocessed (dry) signal.
3061 Default is 0.
3062
3063 @item wet
3064 Set wet amount. Amount of processed (wet) signal.
3065 Default is 1.
3066
3067 @item temp
3068 Set temperature in degrees Celsius. This is the temperature of the environment.
3069 Default is 20.
3070 @end table
3071
3072 @section crossfeed
3073 Apply headphone crossfeed filter.
3074
3075 Crossfeed is the process of blending the left and right channels of stereo
3076 audio recording.
3077 It is mainly used to reduce extreme stereo separation of low frequencies.
3078
3079 The intent is to produce more speaker like sound to the listener.
3080
3081 The filter accepts the following options:
3082
3083 @table @option
3084 @item strength
3085 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3086 This sets gain of low shelf filter for side part of stereo image.
3087 Default is -6dB. Max allowed is -30db when strength is set to 1.
3088
3089 @item range
3090 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3091 This sets cut off frequency of low shelf filter. Default is cut off near
3092 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3093
3094 @item level_in
3095 Set input gain. Default is 0.9.
3096
3097 @item level_out
3098 Set output gain. Default is 1.
3099 @end table
3100
3101 @section crystalizer
3102 Simple algorithm to expand audio dynamic range.
3103
3104 The filter accepts the following options:
3105
3106 @table @option
3107 @item i
3108 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3109 (unchanged sound) to 10.0 (maximum effect).
3110
3111 @item c
3112 Enable clipping. By default is enabled.
3113 @end table
3114
3115 @section dcshift
3116 Apply a DC shift to the audio.
3117
3118 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3119 in the recording chain) from the audio. The effect of a DC offset is reduced
3120 headroom and hence volume. The @ref{astats} filter can be used to determine if
3121 a signal has a DC offset.
3122
3123 @table @option
3124 @item shift
3125 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3126 the audio.
3127
3128 @item limitergain
3129 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3130 used to prevent clipping.
3131 @end table
3132
3133 @section deesser
3134
3135 Apply de-essing to the audio samples.
3136
3137 @table @option
3138 @item i
3139 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3140 Default is 0.
3141
3142 @item m
3143 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3144 Default is 0.5.
3145
3146 @item f
3147 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3148 Default is 0.5.
3149
3150 @item s
3151 Set the output mode.
3152
3153 It accepts the following values:
3154 @table @option
3155 @item i
3156 Pass input unchanged.
3157
3158 @item o
3159 Pass ess filtered out.
3160
3161 @item e
3162 Pass only ess.
3163
3164 Default value is @var{o}.
3165 @end table
3166
3167 @end table
3168
3169 @section drmeter
3170 Measure audio dynamic range.
3171
3172 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3173 is found in transition material. And anything less that 8 have very poor dynamics
3174 and is very compressed.
3175
3176 The filter accepts the following options:
3177
3178 @table @option
3179 @item length
3180 Set window length in seconds used to split audio into segments of equal length.
3181 Default is 3 seconds.
3182 @end table
3183
3184 @section dynaudnorm
3185 Dynamic Audio Normalizer.
3186
3187 This filter applies a certain amount of gain to the input audio in order
3188 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3189 contrast to more "simple" normalization algorithms, the Dynamic Audio
3190 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3191 This allows for applying extra gain to the "quiet" sections of the audio
3192 while avoiding distortions or clipping the "loud" sections. In other words:
3193 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3194 sections, in the sense that the volume of each section is brought to the
3195 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3196 this goal *without* applying "dynamic range compressing". It will retain 100%
3197 of the dynamic range *within* each section of the audio file.
3198
3199 @table @option
3200 @item framelen, f
3201 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3202 Default is 500 milliseconds.
3203 The Dynamic Audio Normalizer processes the input audio in small chunks,
3204 referred to as frames. This is required, because a peak magnitude has no
3205 meaning for just a single sample value. Instead, we need to determine the
3206 peak magnitude for a contiguous sequence of sample values. While a "standard"
3207 normalizer would simply use the peak magnitude of the complete file, the
3208 Dynamic Audio Normalizer determines the peak magnitude individually for each
3209 frame. The length of a frame is specified in milliseconds. By default, the
3210 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3211 been found to give good results with most files.
3212 Note that the exact frame length, in number of samples, will be determined
3213 automatically, based on the sampling rate of the individual input audio file.
3214
3215 @item gausssize, g
3216 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3217 number. Default is 31.
3218 Probably the most important parameter of the Dynamic Audio Normalizer is the
3219 @code{window size} of the Gaussian smoothing filter. The filter's window size
3220 is specified in frames, centered around the current frame. For the sake of
3221 simplicity, this must be an odd number. Consequently, the default value of 31
3222 takes into account the current frame, as well as the 15 preceding frames and
3223 the 15 subsequent frames. Using a larger window results in a stronger
3224 smoothing effect and thus in less gain variation, i.e. slower gain
3225 adaptation. Conversely, using a smaller window results in a weaker smoothing
3226 effect and thus in more gain variation, i.e. faster gain adaptation.
3227 In other words, the more you increase this value, the more the Dynamic Audio
3228 Normalizer will behave like a "traditional" normalization filter. On the
3229 contrary, the more you decrease this value, the more the Dynamic Audio
3230 Normalizer will behave like a dynamic range compressor.
3231
3232 @item peak, p
3233 Set the target peak value. This specifies the highest permissible magnitude
3234 level for the normalized audio input. This filter will try to approach the
3235 target peak magnitude as closely as possible, but at the same time it also
3236 makes sure that the normalized signal will never exceed the peak magnitude.
3237 A frame's maximum local gain factor is imposed directly by the target peak
3238 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3239 It is not recommended to go above this value.
3240
3241 @item maxgain, m
3242 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3243 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3244 factor for each input frame, i.e. the maximum gain factor that does not
3245 result in clipping or distortion. The maximum gain factor is determined by
3246 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3247 additionally bounds the frame's maximum gain factor by a predetermined
3248 (global) maximum gain factor. This is done in order to avoid excessive gain
3249 factors in "silent" or almost silent frames. By default, the maximum gain
3250 factor is 10.0, For most inputs the default value should be sufficient and
3251 it usually is not recommended to increase this value. Though, for input
3252 with an extremely low overall volume level, it may be necessary to allow even
3253 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3254 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3255 Instead, a "sigmoid" threshold function will be applied. This way, the
3256 gain factors will smoothly approach the threshold value, but never exceed that
3257 value.
3258
3259 @item targetrms, r
3260 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3261 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3262 This means that the maximum local gain factor for each frame is defined
3263 (only) by the frame's highest magnitude sample. This way, the samples can
3264 be amplified as much as possible without exceeding the maximum signal
3265 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3266 Normalizer can also take into account the frame's root mean square,
3267 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3268 determine the power of a time-varying signal. It is therefore considered
3269 that the RMS is a better approximation of the "perceived loudness" than
3270 just looking at the signal's peak magnitude. Consequently, by adjusting all
3271 frames to a constant RMS value, a uniform "perceived loudness" can be
3272 established. If a target RMS value has been specified, a frame's local gain
3273 factor is defined as the factor that would result in exactly that RMS value.
3274 Note, however, that the maximum local gain factor is still restricted by the
3275 frame's highest magnitude sample, in order to prevent clipping.
3276
3277 @item coupling, n
3278 Enable channels coupling. By default is enabled.
3279 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3280 amount. This means the same gain factor will be applied to all channels, i.e.
3281 the maximum possible gain factor is determined by the "loudest" channel.
3282 However, in some recordings, it may happen that the volume of the different
3283 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3284 In this case, this option can be used to disable the channel coupling. This way,
3285 the gain factor will be determined independently for each channel, depending
3286 only on the individual channel's highest magnitude sample. This allows for
3287 harmonizing the volume of the different channels.
3288
3289 @item correctdc, c
3290 Enable DC bias correction. By default is disabled.
3291 An audio signal (in the time domain) is a sequence of sample values.
3292 In the Dynamic Audio Normalizer these sample values are represented in the
3293 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3294 audio signal, or "waveform", should be centered around the zero point.
3295 That means if we calculate the mean value of all samples in a file, or in a
3296 single frame, then the result should be 0.0 or at least very close to that
3297 value. If, however, there is a significant deviation of the mean value from
3298 0.0, in either positive or negative direction, this is referred to as a
3299 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3300 Audio Normalizer provides optional DC bias correction.
3301 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3302 the mean value, or "DC correction" offset, of each input frame and subtract
3303 that value from all of the frame's sample values which ensures those samples
3304 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3305 boundaries, the DC correction offset values will be interpolated smoothly
3306 between neighbouring frames.
3307
3308 @item altboundary, b
3309 Enable alternative boundary mode. By default is disabled.
3310 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3311 around each frame. This includes the preceding frames as well as the
3312 subsequent frames. However, for the "boundary" frames, located at the very
3313 beginning and at the very end of the audio file, not all neighbouring
3314 frames are available. In particular, for the first few frames in the audio
3315 file, the preceding frames are not known. And, similarly, for the last few
3316 frames in the audio file, the subsequent frames are not known. Thus, the
3317 question arises which gain factors should be assumed for the missing frames
3318 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3319 to deal with this situation. The default boundary mode assumes a gain factor
3320 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3321 "fade out" at the beginning and at the end of the input, respectively.
3322
3323 @item compress, s
3324 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3325 By default, the Dynamic Audio Normalizer does not apply "traditional"
3326 compression. This means that signal peaks will not be pruned and thus the
3327 full dynamic range will be retained within each local neighbourhood. However,
3328 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3329 normalization algorithm with a more "traditional" compression.
3330 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3331 (thresholding) function. If (and only if) the compression feature is enabled,
3332 all input frames will be processed by a soft knee thresholding function prior
3333 to the actual normalization process. Put simply, the thresholding function is
3334 going to prune all samples whose magnitude exceeds a certain threshold value.
3335 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3336 value. Instead, the threshold value will be adjusted for each individual
3337 frame.
3338 In general, smaller parameters result in stronger compression, and vice versa.
3339 Values below 3.0 are not recommended, because audible distortion may appear.
3340 @end table
3341
3342 @section earwax
3343
3344 Make audio easier to listen to on headphones.
3345
3346 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3347 so that when listened to on headphones the stereo image is moved from
3348 inside your head (standard for headphones) to outside and in front of
3349 the listener (standard for speakers).
3350
3351 Ported from SoX.
3352
3353 @section equalizer
3354
3355 Apply a two-pole peaking equalisation (EQ) filter. With this
3356 filter, the signal-level at and around a selected frequency can
3357 be increased or decreased, whilst (unlike bandpass and bandreject
3358 filters) that at all other frequencies is unchanged.
3359
3360 In order to produce complex equalisation curves, this filter can
3361 be given several times, each with a different central frequency.
3362
3363 The filter accepts the following options:
3364
3365 @table @option
3366 @item frequency, f
3367 Set the filter's central frequency in Hz.
3368
3369 @item width_type, t
3370 Set method to specify band-width of filter.
3371 @table @option
3372 @item h
3373 Hz
3374 @item q
3375 Q-Factor
3376 @item o
3377 octave
3378 @item s
3379 slope
3380 @item k
3381 kHz
3382 @end table
3383
3384 @item width, w
3385 Specify the band-width of a filter in width_type units.
3386
3387 @item gain, g
3388 Set the required gain or attenuation in dB.
3389 Beware of clipping when using a positive gain.
3390
3391 @item mix, m
3392 How much to use filtered signal in output. Default is 1.
3393 Range is between 0 and 1.
3394
3395 @item channels, c
3396 Specify which channels to filter, by default all available are filtered.
3397 @end table
3398
3399 @subsection Examples
3400 @itemize
3401 @item
3402 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3403 @example
3404 equalizer=f=1000:t=h:width=200:g=-10
3405 @end example
3406
3407 @item
3408 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3409 @example
3410 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3411 @end example
3412 @end itemize
3413
3414 @subsection Commands
3415
3416 This filter supports the following commands:
3417 @table @option
3418 @item frequency, f
3419 Change equalizer frequency.
3420 Syntax for the command is : "@var{frequency}"
3421
3422 @item width_type, t
3423 Change equalizer width_type.
3424 Syntax for the command is : "@var{width_type}"
3425
3426 @item width, w
3427 Change equalizer width.
3428 Syntax for the command is : "@var{width}"
3429
3430 @item gain, g
3431 Change equalizer gain.
3432 Syntax for the command is : "@var{gain}"
3433
3434 @item mix, m
3435 Change equalizer mix.
3436 Syntax for the command is : "@var{mix}"
3437 @end table
3438
3439 @section extrastereo
3440
3441 Linearly increases the difference between left and right channels which
3442 adds some sort of "live" effect to playback.
3443
3444 The filter accepts the following options:
3445
3446 @table @option
3447 @item m
3448 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3449 (average of both channels), with 1.0 sound will be unchanged, with
3450 -1.0 left and right channels will be swapped.
3451
3452 @item c
3453 Enable clipping. By default is enabled.
3454 @end table
3455
3456 @section firequalizer
3457 Apply FIR Equalization using arbitrary frequency response.
3458
3459 The filter accepts the following option:
3460
3461 @table @option
3462 @item gain
3463 Set gain curve equation (in dB). The expression can contain variables:
3464 @table @option
3465 @item f
3466 the evaluated frequency
3467 @item sr
3468 sample rate
3469 @item ch
3470 channel number, set to 0 when multichannels evaluation is disabled
3471 @item chid
3472 channel id, see libavutil/channel_layout.h, set to the first channel id when
3473 multichannels evaluation is disabled
3474 @item chs
3475 number of channels
3476 @item chlayout
3477 channel_layout, see libavutil/channel_layout.h
3478
3479 @end table
3480 and functions:
3481 @table @option
3482 @item gain_interpolate(f)
3483 interpolate gain on frequency f based on gain_entry
3484 @item cubic_interpolate(f)
3485 same as gain_interpolate, but smoother
3486 @end table
3487 This option is also available as command. Default is @code{gain_interpolate(f)}.
3488
3489 @item gain_entry
3490 Set gain entry for gain_interpolate function. The expression can
3491 contain functions:
3492 @table @option
3493 @item entry(f, g)
3494 store gain entry at frequency f with value g
3495 @end table
3496 This option is also available as command.
3497
3498 @item delay
3499 Set filter delay in seconds. Higher value means more accurate.
3500 Default is @code{0.01}.
3501
3502 @item accuracy
3503 Set filter accuracy in Hz. Lower value means more accurate.
3504 Default is @code{5}.
3505
3506 @item wfunc
3507 Set window function. Acceptable values are:
3508 @table @option
3509 @item rectangular
3510 rectangular window, useful when gain curve is already smooth
3511 @item hann
3512 hann window (default)
3513 @item hamming
3514 hamming window
3515 @item blackman
3516 blackman window
3517 @item nuttall3
3518 3-terms continuous 1st derivative nuttall window
3519 @item mnuttall3
3520 minimum 3-terms discontinuous nuttall window
3521 @item nuttall
3522 4-terms continuous 1st derivative nuttall window
3523 @item bnuttall
3524 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3525 @item bharris
3526 blackman-harris window
3527 @item tukey
3528 tukey window
3529 @end table
3530
3531 @item fixed
3532 If enabled, use fixed number of audio samples. This improves speed when
3533 filtering with large delay. Default is disabled.
3534
3535 @item multi
3536 Enable multichannels evaluation on gain. Default is disabled.
3537
3538 @item zero_phase
3539 Enable zero phase mode by subtracting timestamp to compensate delay.
3540 Default is disabled.
3541
3542 @item scale
3543 Set scale used by gain. Acceptable values are:
3544 @table @option
3545 @item linlin
3546 linear frequency, linear gain
3547 @item linlog
3548 linear frequency, logarithmic (in dB) gain (default)
3549 @item loglin
3550 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3551 @item loglog
3552 logarithmic frequency, logarithmic gain
3553 @end table
3554
3555 @item dumpfile
3556 Set file for dumping, suitable for gnuplot.
3557
3558 @item dumpscale
3559 Set scale for dumpfile. Acceptable values are same with scale option.
3560 Default is linlog.
3561
3562 @item fft2
3563 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3564 Default is disabled.
3565
3566 @item min_phase
3567 Enable minimum phase impulse response. Default is disabled.
3568 @end table
3569
3570 @subsection Examples
3571 @itemize
3572 @item
3573 lowpass at 1000 Hz:
3574 @example
3575 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3576 @end example
3577 @item
3578 lowpass at 1000 Hz with gain_entry:
3579 @example
3580 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3581 @end example
3582 @item
3583 custom equalization:
3584 @example
3585 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3586 @end example
3587 @item
3588 higher delay with zero phase to compensate delay:
3589 @example
3590 firequalizer=delay=0.1:fixed=on:zero_phase=on
3591 @end example
3592 @item
3593 lowpass on left channel, highpass on right channel:
3594 @example
3595 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3596 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3597 @end example
3598 @end itemize
3599
3600 @section flanger
3601 Apply a flanging effect to the audio.
3602
3603 The filter accepts the following options:
3604
3605 @table @option
3606 @item delay
3607 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3608
3609 @item depth
3610 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3611
3612 @item regen
3613 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3614 Default value is 0.
3615
3616 @item width
3617 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3618 Default value is 71.
3619
3620 @item speed
3621 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3622
3623 @item shape
3624 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3625 Default value is @var{sinusoidal}.
3626
3627 @item phase
3628 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3629 Default value is 25.
3630
3631 @item interp
3632 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3633 Default is @var{linear}.
3634 @end table
3635
3636 @section haas
3637 Apply Haas effect to audio.
3638
3639 Note that this makes most sense to apply on mono signals.
3640 With this filter applied to mono signals it give some directionality and
3641 stretches its stereo image.
3642
3643 The filter accepts the following options:
3644
3645 @table @option
3646 @item level_in
3647 Set input level. By default is @var{1}, or 0dB
3648
3649 @item level_out
3650 Set output level. By default is @var{1}, or 0dB.
3651
3652 @item side_gain
3653 Set gain applied to side part of signal. By default is @var{1}.
3654
3655 @item middle_source
3656 Set kind of middle source. Can be one of the following:
3657
3658 @table @samp
3659 @item left
3660 Pick left channel.
3661
3662 @item right
3663 Pick right channel.
3664
3665 @item mid
3666 Pick middle part signal of stereo image.
3667
3668 @item side
3669 Pick side part signal of stereo image.
3670 @end table
3671
3672 @item middle_phase
3673 Change middle phase. By default is disabled.
3674
3675 @item left_delay
3676 Set left channel delay. By default is @var{2.05} milliseconds.
3677
3678 @item left_balance
3679 Set left channel balance. By default is @var{-1}.
3680
3681 @item left_gain
3682 Set left channel gain. By default is @var{1}.
3683
3684 @item left_phase
3685 Change left phase. By default is disabled.
3686
3687 @item right_delay
3688 Set right channel delay. By defaults is @var{2.12} milliseconds.
3689
3690 @item right_balance
3691 Set right channel balance. By default is @var{1}.
3692
3693 @item right_gain
3694 Set right channel gain. By default is @var{1}.
3695
3696 @item right_phase
3697 Change right phase. By default is enabled.
3698 @end table
3699
3700 @section hdcd
3701
3702 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3703 embedded HDCD codes is expanded into a 20-bit PCM stream.
3704
3705 The filter supports the Peak Extend and Low-level Gain Adjustment features
3706 of HDCD, and detects the Transient Filter flag.
3707
3708 @example
3709 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3710 @end example
3711
3712 When using the filter with wav, note the default encoding for wav is 16-bit,
3713 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3714 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3715 @example
3716 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3717 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3718 @end example
3719
3720 The filter accepts the following options:
3721
3722 @table @option
3723 @item disable_autoconvert
3724 Disable any automatic format conversion or resampling in the filter graph.
3725
3726 @item process_stereo
3727 Process the stereo channels together. If target_gain does not match between
3728 channels, consider it invalid and use the last valid target_gain.
3729
3730 @item cdt_ms
3731 Set the code detect timer period in ms.
3732
3733 @item force_pe
3734 Always extend peaks above -3dBFS even if PE isn't signaled.
3735
3736 @item analyze_mode
3737 Replace audio with a solid tone and adjust the amplitude to signal some
3738 specific aspect of the decoding process. The output file can be loaded in
3739 an audio editor alongside the original to aid analysis.
3740
3741 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3742
3743 Modes are:
3744 @table @samp
3745 @item 0, off
3746 Disabled
3747 @item 1, lle
3748 Gain adjustment level at each sample
3749 @item 2, pe
3750 Samples where peak extend occurs
3751 @item 3, cdt
3752 Samples where the code detect timer is active
3753 @item 4, tgm
3754 Samples where the target gain does not match between channels
3755 @end table
3756 @end table
3757
3758 @section headphone
3759
3760 Apply head-related transfer functions (HRTFs) to create virtual
3761 loudspeakers around the user for binaural listening via headphones.
3762 The HRIRs are provided via additional streams, for each channel
3763 one stereo input stream is needed.
3764
3765 The filter accepts the following options:
3766
3767 @table @option
3768 @item map
3769 Set mapping of input streams for convolution.
3770 The argument is a '|'-separated list of channel names in order as they
3771 are given as additional stream inputs for filter.
3772 This also specify number of input streams. Number of input streams
3773 must be not less than number of channels in first stream plus one.
3774
3775 @item gain
3776 Set gain applied to audio. Value is in dB. Default is 0.
3777
3778 @item type
3779 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3780 processing audio in time domain which is slow.
3781 @var{freq} is processing audio in frequency domain which is fast.
3782 Default is @var{freq}.
3783
3784 @item lfe
3785 Set custom gain for LFE channels. Value is in dB. Default is 0.
3786
3787 @item size
3788 Set size of frame in number of samples which will be processed at once.
3789 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3790
3791 @item hrir
3792 Set format of hrir stream.
3793 Default value is @var{stereo}. Alternative value is @var{multich}.
3794 If value is set to @var{stereo}, number of additional streams should
3795 be greater or equal to number of input channels in first input stream.
3796 Also each additional stream should have stereo number of channels.
3797 If value is set to @var{multich}, number of additional streams should
3798 be exactly one. Also number of input channels of additional stream
3799 should be equal or greater than twice number of channels of first input
3800 stream.
3801 @end table
3802
3803 @subsection Examples
3804
3805 @itemize
3806 @item
3807 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3808 each amovie filter use stereo file with IR coefficients as input.
3809 The files give coefficients for each position of virtual loudspeaker:
3810 @example
3811 ffmpeg -i input.wav
3812 -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"
3813 output.wav
3814 @end example
3815
3816 @item
3817 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3818 but now in @var{multich} @var{hrir} format.
3819 @example
3820 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"
3821 output.wav
3822 @end example
3823 @end itemize
3824
3825 @section highpass
3826
3827 Apply a high-pass filter with 3dB point frequency.
3828 The filter can be either single-pole, or double-pole (the default).
3829 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3830
3831 The filter accepts the following options:
3832
3833 @table @option
3834 @item frequency, f
3835 Set frequency in Hz. Default is 3000.
3836
3837 @item poles, p
3838 Set number of poles. Default is 2.
3839
3840 @item width_type, t
3841 Set method to specify band-width of filter.
3842 @table @option
3843 @item h
3844 Hz
3845 @item q
3846 Q-Factor
3847 @item o
3848 octave
3849 @item s
3850 slope
3851 @item k
3852 kHz
3853 @end table
3854
3855 @item width, w
3856 Specify the band-width of a filter in width_type units.
3857 Applies only to double-pole filter.
3858 The default is 0.707q and gives a Butterworth response.
3859
3860 @item mix, m
3861 How much to use filtered signal in output. Default is 1.
3862 Range is between 0 and 1.
3863
3864 @item channels, c
3865 Specify which channels to filter, by default all available are filtered.
3866 @end table
3867
3868 @subsection Commands
3869
3870 This filter supports the following commands:
3871 @table @option
3872 @item frequency, f
3873 Change highpass frequency.
3874 Syntax for the command is : "@var{frequency}"
3875
3876 @item width_type, t
3877 Change highpass width_type.
3878 Syntax for the command is : "@var{width_type}"
3879
3880 @item width, w
3881 Change highpass width.
3882 Syntax for the command is : "@var{width}"
3883
3884 @item mix, m
3885 Change highpass mix.
3886 Syntax for the command is : "@var{mix}"
3887 @end table
3888
3889 @section join
3890
3891 Join multiple input streams into one multi-channel stream.
3892
3893 It accepts the following parameters:
3894 @table @option
3895
3896 @item inputs
3897 The number of input streams. It defaults to 2.
3898
3899 @item channel_layout
3900 The desired output channel layout. It defaults to stereo.
3901
3902 @item map
3903 Map channels from inputs to output. The argument is a '|'-separated list of
3904 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3905 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3906 can be either the name of the input channel (e.g. FL for front left) or its
3907 index in the specified input stream. @var{out_channel} is the name of the output
3908 channel.
3909 @end table
3910
3911 The filter will attempt to guess the mappings when they are not specified
3912 explicitly. It does so by first trying to find an unused matching input channel
3913 and if that fails it picks the first unused input channel.
3914
3915 Join 3 inputs (with properly set channel layouts):
3916 @example
3917 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3918 @end example
3919
3920 Build a 5.1 output from 6 single-channel streams:
3921 @example
3922 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3923 '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'
3924 out
3925 @end example
3926
3927 @section ladspa
3928
3929 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3930
3931 To enable compilation of this filter you need to configure FFmpeg with
3932 @code{--enable-ladspa}.
3933
3934 @table @option
3935 @item file, f
3936 Specifies the name of LADSPA plugin library to load. If the environment
3937 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3938 each one of the directories specified by the colon separated list in
3939 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3940 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3941 @file{/usr/lib/ladspa/}.
3942
3943 @item plugin, p
3944 Specifies the plugin within the library. Some libraries contain only
3945 one plugin, but others contain many of them. If this is not set filter
3946 will list all available plugins within the specified library.
3947
3948 @item controls, c
3949 Set the '|' separated list of controls which are zero or more floating point
3950 values that determine the behavior of the loaded plugin (for example delay,
3951 threshold or gain).
3952 Controls need to be defined using the following syntax:
3953 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3954 @var{valuei} is the value set on the @var{i}-th control.
3955 Alternatively they can be also defined using the following syntax:
3956 @var{value0}|@var{value1}|@var{value2}|..., where
3957 @var{valuei} is the value set on the @var{i}-th control.
3958 If @option{controls} is set to @code{help}, all available controls and
3959 their valid ranges are printed.
3960
3961 @item sample_rate, s
3962 Specify the sample rate, default to 44100. Only used if plugin have
3963 zero inputs.
3964
3965 @item nb_samples, n
3966 Set the number of samples per channel per each output frame, default
3967 is 1024. Only used if plugin have zero inputs.
3968
3969 @item duration, d
3970 Set the minimum duration of the sourced audio. See
3971 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3972 for the accepted syntax.
3973 Note that the resulting duration may be greater than the specified duration,
3974 as the generated audio is always cut at the end of a complete frame.
3975 If not specified, or the expressed duration is negative, the audio is
3976 supposed to be generated forever.
3977 Only used if plugin have zero inputs.
3978
3979 @end table
3980
3981 @subsection Examples
3982
3983 @itemize
3984 @item
3985 List all available plugins within amp (LADSPA example plugin) library:
3986 @example
3987 ladspa=file=amp
3988 @end example
3989
3990 @item
3991 List all available controls and their valid ranges for @code{vcf_notch}
3992 plugin from @code{VCF} library:
3993 @example
3994 ladspa=f=vcf:p=vcf_notch:c=help
3995 @end example
3996
3997 @item
3998 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3999 plugin library:
4000 @example
4001 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4002 @end example
4003
4004 @item
4005 Add reverberation to the audio using TAP-plugins
4006 (Tom's Audio Processing plugins):
4007 @example
4008 ladspa=file=tap_reverb:tap_reverb
4009 @end example
4010
4011 @item
4012 Generate white noise, with 0.2 amplitude:
4013 @example
4014 ladspa=file=cmt:noise_source_white:c=c0=.2
4015 @end example
4016
4017 @item
4018 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4019 @code{C* Audio Plugin Suite} (CAPS) library:
4020 @example
4021 ladspa=file=caps:Click:c=c1=20'
4022 @end example
4023
4024 @item
4025 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4026 @example
4027 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4028 @end example
4029
4030 @item
4031 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4032 @code{SWH Plugins} collection:
4033 @example
4034 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4035 @end example
4036
4037 @item
4038 Attenuate low frequencies using Multiband EQ from Steve Harris
4039 @code{SWH Plugins} collection:
4040 @example
4041 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4042 @end example
4043
4044 @item
4045 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4046 (CAPS) library:
4047 @example
4048 ladspa=caps:Narrower
4049 @end example
4050
4051 @item
4052 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4053 @example
4054 ladspa=caps:White:.2
4055 @end example
4056
4057 @item
4058 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4059 @example
4060 ladspa=caps:Fractal:c=c1=1
4061 @end example
4062
4063 @item
4064 Dynamic volume normalization using @code{VLevel} plugin:
4065 @example
4066 ladspa=vlevel-ladspa:vlevel_mono
4067 @end example
4068 @end itemize
4069
4070 @subsection Commands
4071
4072 This filter supports the following commands:
4073 @table @option
4074 @item cN
4075 Modify the @var{N}-th control value.
4076
4077 If the specified value is not valid, it is ignored and prior one is kept.
4078 @end table
4079
4080 @section loudnorm
4081
4082 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4083 Support for both single pass (livestreams, files) and double pass (files) modes.
4084 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
4085 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
4086 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4087
4088 The filter accepts the following options:
4089
4090 @table @option
4091 @item I, i
4092 Set integrated loudness target.
4093 Range is -70.0 - -5.0. Default value is -24.0.
4094
4095 @item LRA, lra
4096 Set loudness range target.
4097 Range is 1.0 - 20.0. Default value is 7.0.
4098
4099 @item TP, tp
4100 Set maximum true peak.
4101 Range is -9.0 - +0.0. Default value is -2.0.
4102
4103 @item measured_I, measured_i
4104 Measured IL of input file.
4105 Range is -99.0 - +0.0.
4106
4107 @item measured_LRA, measured_lra
4108 Measured LRA of input file.
4109 Range is  0.0 - 99.0.
4110
4111 @item measured_TP, measured_tp
4112 Measured true peak of input file.
4113 Range is  -99.0 - +99.0.
4114
4115 @item measured_thresh
4116 Measured threshold of input file.
4117 Range is -99.0 - +0.0.
4118
4119 @item offset
4120 Set offset gain. Gain is applied before the true-peak limiter.
4121 Range is  -99.0 - +99.0. Default is +0.0.
4122
4123 @item linear
4124 Normalize linearly if possible.
4125 measured_I, measured_LRA, measured_TP, and measured_thresh must also
4126 to be specified in order to use this mode.
4127 Options are true or false. Default is true.
4128
4129 @item dual_mono
4130 Treat mono input files as "dual-mono". If a mono file is intended for playback
4131 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4132 If set to @code{true}, this option will compensate for this effect.
4133 Multi-channel input files are not affected by this option.
4134 Options are true or false. Default is false.
4135
4136 @item print_format
4137 Set print format for stats. Options are summary, json, or none.
4138 Default value is none.
4139 @end table
4140
4141 @section lowpass
4142
4143 Apply a low-pass filter with 3dB point frequency.
4144 The filter can be either single-pole or double-pole (the default).
4145 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4146
4147 The filter accepts the following options:
4148
4149 @table @option
4150 @item frequency, f
4151 Set frequency in Hz. Default is 500.
4152
4153 @item poles, p
4154 Set number of poles. Default is 2.
4155
4156 @item width_type, t
4157 Set method to specify band-width of filter.
4158 @table @option
4159 @item h
4160 Hz
4161 @item q
4162 Q-Factor
4163 @item o
4164 octave
4165 @item s
4166 slope
4167 @item k
4168 kHz
4169 @end table
4170
4171 @item width, w
4172 Specify the band-width of a filter in width_type units.
4173 Applies only to double-pole filter.
4174 The default is 0.707q and gives a Butterworth response.
4175
4176 @item mix, m
4177 How much to use filtered signal in output. Default is 1.
4178 Range is between 0 and 1.
4179
4180 @item channels, c
4181 Specify which channels to filter, by default all available are filtered.
4182 @end table
4183
4184 @subsection Examples
4185 @itemize
4186 @item
4187 Lowpass only LFE channel, it LFE is not present it does nothing:
4188 @example
4189 lowpass=c=LFE
4190 @end example
4191 @end itemize
4192
4193 @subsection Commands
4194
4195 This filter supports the following commands:
4196 @table @option
4197 @item frequency, f
4198 Change lowpass frequency.
4199 Syntax for the command is : "@var{frequency}"
4200
4201 @item width_type, t
4202 Change lowpass width_type.
4203 Syntax for the command is : "@var{width_type}"
4204
4205 @item width, w
4206 Change lowpass width.
4207 Syntax for the command is : "@var{width}"
4208
4209 @item mix, m
4210 Change lowpass mix.
4211 Syntax for the command is : "@var{mix}"
4212 @end table
4213
4214 @section lv2
4215
4216 Load a LV2 (LADSPA Version 2) plugin.
4217
4218 To enable compilation of this filter you need to configure FFmpeg with
4219 @code{--enable-lv2}.
4220
4221 @table @option
4222 @item plugin, p
4223 Specifies the plugin URI. You may need to escape ':'.
4224
4225 @item controls, c
4226 Set the '|' separated list of controls which are zero or more floating point
4227 values that determine the behavior of the loaded plugin (for example delay,
4228 threshold or gain).
4229 If @option{controls} is set to @code{help}, all available controls and
4230 their valid ranges are printed.
4231
4232 @item sample_rate, s
4233 Specify the sample rate, default to 44100. Only used if plugin have
4234 zero inputs.
4235
4236 @item nb_samples, n
4237 Set the number of samples per channel per each output frame, default
4238 is 1024. Only used if plugin have zero inputs.
4239
4240 @item duration, d
4241 Set the minimum duration of the sourced audio. See
4242 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4243 for the accepted syntax.
4244 Note that the resulting duration may be greater than the specified duration,
4245 as the generated audio is always cut at the end of a complete frame.
4246 If not specified, or the expressed duration is negative, the audio is
4247 supposed to be generated forever.
4248 Only used if plugin have zero inputs.
4249 @end table
4250
4251 @subsection Examples
4252
4253 @itemize
4254 @item
4255 Apply bass enhancer plugin from Calf:
4256 @example
4257 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4258 @end example
4259
4260 @item
4261 Apply vinyl plugin from Calf:
4262 @example
4263 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4264 @end example
4265
4266 @item
4267 Apply bit crusher plugin from ArtyFX:
4268 @example
4269 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4270 @end example
4271 @end itemize
4272
4273 @section mcompand
4274 Multiband Compress or expand the audio's dynamic range.
4275
4276 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4277 This is akin to the crossover of a loudspeaker, and results in flat frequency
4278 response when absent compander action.
4279
4280 It accepts the following parameters:
4281
4282 @table @option
4283 @item args
4284 This option syntax is:
4285 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4286 For explanation of each item refer to compand filter documentation.
4287 @end table
4288
4289 @anchor{pan}
4290 @section pan
4291
4292 Mix channels with specific gain levels. The filter accepts the output
4293 channel layout followed by a set of channels definitions.
4294
4295 This filter is also designed to efficiently remap the channels of an audio
4296 stream.
4297
4298 The filter accepts parameters of the form:
4299 "@var{l}|@var{outdef}|@var{outdef}|..."
4300
4301 @table @option
4302 @item l
4303 output channel layout or number of channels
4304
4305 @item outdef
4306 output channel specification, of the form:
4307 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4308
4309 @item out_name
4310 output channel to define, either a channel name (FL, FR, etc.) or a channel
4311 number (c0, c1, etc.)
4312
4313 @item gain
4314 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4315
4316 @item in_name
4317 input channel to use, see out_name for details; it is not possible to mix
4318 named and numbered input channels
4319 @end table
4320
4321 If the `=' in a channel specification is replaced by `<', then the gains for
4322 that specification will be renormalized so that the total is 1, thus
4323 avoiding clipping noise.
4324
4325 @subsection Mixing examples
4326
4327 For example, if you want to down-mix from stereo to mono, but with a bigger
4328 factor for the left channel:
4329 @example
4330 pan=1c|c0=0.9*c0+0.1*c1
4331 @end example
4332
4333 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4334 7-channels surround:
4335 @example
4336 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4337 @end example
4338
4339 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4340 that should be preferred (see "-ac" option) unless you have very specific
4341 needs.
4342
4343 @subsection Remapping examples
4344
4345 The channel remapping will be effective if, and only if:
4346
4347 @itemize
4348 @item gain coefficients are zeroes or ones,
4349 @item only one input per channel output,
4350 @end itemize
4351
4352 If all these conditions are satisfied, the filter will notify the user ("Pure
4353 channel mapping detected"), and use an optimized and lossless method to do the
4354 remapping.
4355
4356 For example, if you have a 5.1 source and want a stereo audio stream by
4357 dropping the extra channels:
4358 @example
4359 pan="stereo| c0=FL | c1=FR"
4360 @end example
4361
4362 Given the same source, you can also switch front left and front right channels
4363 and keep the input channel layout:
4364 @example
4365 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4366 @end example
4367
4368 If the input is a stereo audio stream, you can mute the front left channel (and
4369 still keep the stereo channel layout) with:
4370 @example
4371 pan="stereo|c1=c1"
4372 @end example
4373
4374 Still with a stereo audio stream input, you can copy the right channel in both
4375 front left and right:
4376 @example
4377 pan="stereo| c0=FR | c1=FR"
4378 @end example
4379
4380 @section replaygain
4381
4382 ReplayGain scanner filter. This filter takes an audio stream as an input and
4383 outputs it unchanged.
4384 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4385
4386 @section resample
4387
4388 Convert the audio sample format, sample rate and channel layout. It is
4389 not meant to be used directly.
4390
4391 @section rubberband
4392 Apply time-stretching and pitch-shifting with librubberband.
4393
4394 To enable compilation of this filter, you need to configure FFmpeg with
4395 @code{--enable-librubberband}.
4396
4397 The filter accepts the following options:
4398
4399 @table @option
4400 @item tempo
4401 Set tempo scale factor.
4402
4403 @item pitch
4404 Set pitch scale factor.
4405
4406 @item transients
4407 Set transients detector.
4408 Possible values are:
4409 @table @var
4410 @item crisp
4411 @item mixed
4412 @item smooth
4413 @end table
4414
4415 @item detector
4416 Set detector.
4417 Possible values are:
4418 @table @var
4419 @item compound
4420 @item percussive
4421 @item soft
4422 @end table
4423
4424 @item phase
4425 Set phase.
4426 Possible values are:
4427 @table @var
4428 @item laminar
4429 @item independent
4430 @end table
4431
4432 @item window
4433 Set processing window size.
4434 Possible values are:
4435 @table @var
4436 @item standard
4437 @item short
4438 @item long
4439 @end table
4440
4441 @item smoothing
4442 Set smoothing.
4443 Possible values are:
4444 @table @var
4445 @item off
4446 @item on
4447 @end table
4448
4449 @item formant
4450 Enable formant preservation when shift pitching.
4451 Possible values are:
4452 @table @var
4453 @item shifted
4454 @item preserved
4455 @end table
4456
4457 @item pitchq
4458 Set pitch quality.
4459 Possible values are:
4460 @table @var
4461 @item quality
4462 @item speed
4463 @item consistency
4464 @end table
4465
4466 @item channels
4467 Set channels.
4468 Possible values are:
4469 @table @var
4470 @item apart
4471 @item together
4472 @end table
4473 @end table
4474
4475 @section sidechaincompress
4476
4477 This filter acts like normal compressor but has the ability to compress
4478 detected signal using second input signal.
4479 It needs two input streams and returns one output stream.
4480 First input stream will be processed depending on second stream signal.
4481 The filtered signal then can be filtered with other filters in later stages of
4482 processing. See @ref{pan} and @ref{amerge} filter.
4483
4484 The filter accepts the following options:
4485
4486 @table @option
4487 @item level_in
4488 Set input gain. Default is 1. Range is between 0.015625 and 64.
4489
4490 @item mode
4491 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4492 Default is @code{downward}.
4493
4494 @item threshold
4495 If a signal of second stream raises above this level it will affect the gain
4496 reduction of first stream.
4497 By default is 0.125. Range is between 0.00097563 and 1.
4498
4499 @item ratio
4500 Set a ratio about which the signal is reduced. 1:2 means that if the level
4501 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4502 Default is 2. Range is between 1 and 20.
4503
4504 @item attack
4505 Amount of milliseconds the signal has to rise above the threshold before gain
4506 reduction starts. Default is 20. Range is between 0.01 and 2000.
4507
4508 @item release
4509 Amount of milliseconds the signal has to fall below the threshold before
4510 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4511
4512 @item makeup
4513 Set the amount by how much signal will be amplified after processing.
4514 Default is 1. Range is from 1 to 64.
4515
4516 @item knee
4517 Curve the sharp knee around the threshold to enter gain reduction more softly.
4518 Default is 2.82843. Range is between 1 and 8.
4519
4520 @item link
4521 Choose if the @code{average} level between all channels of side-chain stream
4522 or the louder(@code{maximum}) channel of side-chain stream affects the
4523 reduction. Default is @code{average}.
4524
4525 @item detection
4526 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4527 of @code{rms}. Default is @code{rms} which is mainly smoother.
4528
4529 @item level_sc
4530 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4531
4532 @item mix
4533 How much to use compressed signal in output. Default is 1.
4534 Range is between 0 and 1.
4535 @end table
4536
4537 @subsection Examples
4538
4539 @itemize
4540 @item
4541 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4542 depending on the signal of 2nd input and later compressed signal to be
4543 merged with 2nd input:
4544 @example
4545 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4546 @end example
4547 @end itemize
4548
4549 @section sidechaingate
4550
4551 A sidechain gate acts like a normal (wideband) gate but has the ability to
4552 filter the detected signal before sending it to the gain reduction stage.
4553 Normally a gate uses the full range signal to detect a level above the
4554 threshold.
4555 For example: If you cut all lower frequencies from your sidechain signal
4556 the gate will decrease the volume of your track only if not enough highs
4557 appear. With this technique you are able to reduce the resonation of a
4558 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4559 guitar.
4560 It needs two input streams and returns one output stream.
4561 First input stream will be processed depending on second stream signal.
4562
4563 The filter accepts the following options:
4564
4565 @table @option
4566 @item level_in
4567 Set input level before filtering.
4568 Default is 1. Allowed range is from 0.015625 to 64.
4569
4570 @item mode
4571 Set the mode of operation. Can be @code{upward} or @code{downward}.
4572 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4573 will be amplified, expanding dynamic range in upward direction.
4574 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4575
4576 @item range
4577 Set the level of gain reduction when the signal is below the threshold.
4578 Default is 0.06125. Allowed range is from 0 to 1.
4579 Setting this to 0 disables reduction and then filter behaves like expander.
4580
4581 @item threshold
4582 If a signal rises above this level the gain reduction is released.
4583 Default is 0.125. Allowed range is from 0 to 1.
4584
4585 @item ratio
4586 Set a ratio about which the signal is reduced.
4587 Default is 2. Allowed range is from 1 to 9000.
4588
4589 @item attack
4590 Amount of milliseconds the signal has to rise above the threshold before gain
4591 reduction stops.
4592 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4593
4594 @item release
4595 Amount of milliseconds the signal has to fall below the threshold before the
4596 reduction is increased again. Default is 250 milliseconds.
4597 Allowed range is from 0.01 to 9000.
4598
4599 @item makeup
4600 Set amount of amplification of signal after processing.
4601 Default is 1. Allowed range is from 1 to 64.
4602
4603 @item knee
4604 Curve the sharp knee around the threshold to enter gain reduction more softly.
4605 Default is 2.828427125. Allowed range is from 1 to 8.
4606
4607 @item detection
4608 Choose if exact signal should be taken for detection or an RMS like one.
4609 Default is rms. Can be peak or rms.
4610
4611 @item link
4612 Choose if the average level between all channels or the louder channel affects
4613 the reduction.
4614 Default is average. Can be average or maximum.
4615
4616 @item level_sc
4617 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4618 @end table
4619
4620 @section silencedetect
4621
4622 Detect silence in an audio stream.
4623
4624 This filter logs a message when it detects that the input audio volume is less
4625 or equal to a noise tolerance value for a duration greater or equal to the
4626 minimum detected noise duration.
4627
4628 The printed times and duration are expressed in seconds.
4629
4630 The filter accepts the following options:
4631
4632 @table @option
4633 @item noise, n
4634 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4635 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4636
4637 @item duration, d
4638 Set silence duration until notification (default is 2 seconds).
4639
4640 @item mono, m
4641 Process each channel separately, instead of combined. By default is disabled.
4642 @end table
4643
4644 @subsection Examples
4645
4646 @itemize
4647 @item
4648 Detect 5 seconds of silence with -50dB noise tolerance:
4649 @example
4650 silencedetect=n=-50dB:d=5
4651 @end example
4652
4653 @item
4654 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4655 tolerance in @file{silence.mp3}:
4656 @example
4657 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4658 @end example
4659 @end itemize
4660
4661 @section silenceremove
4662
4663 Remove silence from the beginning, middle or end of the audio.
4664
4665 The filter accepts the following options:
4666
4667 @table @option
4668 @item start_periods
4669 This value is used to indicate if audio should be trimmed at beginning of
4670 the audio. A value of zero indicates no silence should be trimmed from the
4671 beginning. When specifying a non-zero value, it trims audio up until it
4672 finds non-silence. Normally, when trimming silence from beginning of audio
4673 the @var{start_periods} will be @code{1} but it can be increased to higher
4674 values to trim all audio up to specific count of non-silence periods.
4675 Default value is @code{0}.
4676
4677 @item start_duration
4678 Specify the amount of time that non-silence must be detected before it stops
4679 trimming audio. By increasing the duration, bursts of noises can be treated
4680 as silence and trimmed off. Default value is @code{0}.
4681
4682 @item start_threshold
4683 This indicates what sample value should be treated as silence. For digital
4684 audio, a value of @code{0} may be fine but for audio recorded from analog,
4685 you may wish to increase the value to account for background noise.
4686 Can be specified in dB (in case "dB" is appended to the specified value)
4687 or amplitude ratio. Default value is @code{0}.
4688
4689 @item start_silence
4690 Specify max duration of silence at beginning that will be kept after
4691 trimming. Default is 0, which is equal to trimming all samples detected
4692 as silence.
4693
4694 @item start_mode
4695 Specify mode of detection of silence end in start of multi-channel audio.
4696 Can be @var{any} or @var{all}. Default is @var{any}.
4697 With @var{any}, any sample that is detected as non-silence will cause
4698 stopped trimming of silence.
4699 With @var{all}, only if all channels are detected as non-silence will cause
4700 stopped trimming of silence.
4701
4702 @item stop_periods
4703 Set the count for trimming silence from the end of audio.
4704 To remove silence from the middle of a file, specify a @var{stop_periods}
4705 that is negative. This value is then treated as a positive value and is
4706 used to indicate the effect should restart processing as specified by
4707 @var{start_periods}, making it suitable for removing periods of silence
4708 in the middle of the audio.
4709 Default value is @code{0}.
4710
4711 @item stop_duration
4712 Specify a duration of silence that must exist before audio is not copied any
4713 more. By specifying a higher duration, silence that is wanted can be left in
4714 the audio.
4715 Default value is @code{0}.
4716
4717 @item stop_threshold
4718 This is the same as @option{start_threshold} but for trimming silence from
4719 the end of audio.
4720 Can be specified in dB (in case "dB" is appended to the specified value)
4721 or amplitude ratio. Default value is @code{0}.
4722
4723 @item stop_silence
4724 Specify max duration of silence at end that will be kept after
4725 trimming. Default is 0, which is equal to trimming all samples detected
4726 as silence.
4727
4728 @item stop_mode
4729 Specify mode of detection of silence start in end of multi-channel audio.
4730 Can be @var{any} or @var{all}. Default is @var{any}.
4731 With @var{any}, any sample that is detected as non-silence will cause
4732 stopped trimming of silence.
4733 With @var{all}, only if all channels are detected as non-silence will cause
4734 stopped trimming of silence.
4735
4736 @item detection
4737 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4738 and works better with digital silence which is exactly 0.
4739 Default value is @code{rms}.
4740
4741 @item window
4742 Set duration in number of seconds used to calculate size of window in number
4743 of samples for detecting silence.
4744 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4745 @end table
4746
4747 @subsection Examples
4748
4749 @itemize
4750 @item
4751 The following example shows how this filter can be used to start a recording
4752 that does not contain the delay at the start which usually occurs between
4753 pressing the record button and the start of the performance:
4754 @example
4755 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4756 @end example
4757
4758 @item
4759 Trim all silence encountered from beginning to end where there is more than 1
4760 second of silence in audio:
4761 @example
4762 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4763 @end example
4764
4765 @item
4766 Trim all digital silence samples, using peak detection, from beginning to end
4767 where there is more than 0 samples of digital silence in audio and digital
4768 silence is detected in all channels at same positions in stream:
4769 @example
4770 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
4771 @end example
4772 @end itemize
4773
4774 @section sofalizer
4775
4776 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4777 loudspeakers around the user for binaural listening via headphones (audio
4778 formats up to 9 channels supported).
4779 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4780 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4781 Austrian Academy of Sciences.
4782
4783 To enable compilation of this filter you need to configure FFmpeg with
4784 @code{--enable-libmysofa}.
4785
4786 The filter accepts the following options:
4787
4788 @table @option
4789 @item sofa
4790 Set the SOFA file used for rendering.
4791
4792 @item gain
4793 Set gain applied to audio. Value is in dB. Default is 0.
4794
4795 @item rotation
4796 Set rotation of virtual loudspeakers in deg. Default is 0.
4797
4798 @item elevation
4799 Set elevation of virtual speakers in deg. Default is 0.
4800
4801 @item radius
4802 Set distance in meters between loudspeakers and the listener with near-field
4803 HRTFs. Default is 1.
4804
4805 @item type
4806 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4807 processing audio in time domain which is slow.
4808 @var{freq} is processing audio in frequency domain which is fast.
4809 Default is @var{freq}.
4810
4811 @item speakers
4812 Set custom positions of virtual loudspeakers. Syntax for this option is:
4813 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4814 Each virtual loudspeaker is described with short channel name following with
4815 azimuth and elevation in degrees.
4816 Each virtual loudspeaker description is separated by '|'.
4817 For example to override front left and front right channel positions use:
4818 'speakers=FL 45 15|FR 345 15'.
4819 Descriptions with unrecognised channel names are ignored.
4820
4821 @item lfegain
4822 Set custom gain for LFE channels. Value is in dB. Default is 0.
4823
4824 @item framesize
4825 Set custom frame size in number of samples. Default is 1024.
4826 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4827 is set to @var{freq}.
4828
4829 @item normalize
4830 Should all IRs be normalized upon importing SOFA file.
4831 By default is enabled.
4832
4833 @item interpolate
4834 Should nearest IRs be interpolated with neighbor IRs if exact position
4835 does not match. By default is disabled.
4836
4837 @item minphase
4838 Minphase all IRs upon loading of SOFA file. By default is disabled.
4839
4840 @item anglestep
4841 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4842
4843 @item radstep
4844 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4845 @end table
4846
4847 @subsection Examples
4848
4849 @itemize
4850 @item
4851 Using ClubFritz6 sofa file:
4852 @example
4853 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4854 @end example
4855
4856 @item
4857 Using ClubFritz12 sofa file and bigger radius with small rotation:
4858 @example
4859 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4860 @end example
4861
4862 @item
4863 Similar as above but with custom speaker positions for front left, front right, back left and back right
4864 and also with custom gain:
4865 @example
4866 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4867 @end example
4868 @end itemize
4869
4870 @section stereotools
4871
4872 This filter has some handy utilities to manage stereo signals, for converting
4873 M/S stereo recordings to L/R signal while having control over the parameters
4874 or spreading the stereo image of master track.
4875
4876 The filter accepts the following options:
4877
4878 @table @option
4879 @item level_in
4880 Set input level before filtering for both channels. Defaults is 1.
4881 Allowed range is from 0.015625 to 64.
4882
4883 @item level_out
4884 Set output level after filtering for both channels. Defaults is 1.
4885 Allowed range is from 0.015625 to 64.
4886
4887 @item balance_in
4888 Set input balance between both channels. Default is 0.
4889 Allowed range is from -1 to 1.
4890
4891 @item balance_out
4892 Set output balance between both channels. Default is 0.
4893 Allowed range is from -1 to 1.
4894
4895 @item softclip
4896 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4897 clipping. Disabled by default.
4898
4899 @item mutel
4900 Mute the left channel. Disabled by default.
4901
4902 @item muter
4903 Mute the right channel. Disabled by default.
4904
4905 @item phasel
4906 Change the phase of the left channel. Disabled by default.
4907
4908 @item phaser
4909 Change the phase of the right channel. Disabled by default.
4910
4911 @item mode
4912 Set stereo mode. Available values are:
4913
4914 @table @samp
4915 @item lr>lr
4916 Left/Right to Left/Right, this is default.
4917
4918 @item lr>ms
4919 Left/Right to Mid/Side.
4920
4921 @item ms>lr
4922 Mid/Side to Left/Right.
4923
4924 @item lr>ll
4925 Left/Right to Left/Left.
4926
4927 @item lr>rr
4928 Left/Right to Right/Right.
4929
4930 @item lr>l+r
4931 Left/Right to Left + Right.
4932
4933 @item lr>rl
4934 Left/Right to Right/Left.
4935
4936 @item ms>ll
4937 Mid/Side to Left/Left.
4938
4939 @item ms>rr
4940 Mid/Side to Right/Right.
4941 @end table
4942
4943 @item slev
4944 Set level of side signal. Default is 1.
4945 Allowed range is from 0.015625 to 64.
4946
4947 @item sbal
4948 Set balance of side signal. Default is 0.
4949 Allowed range is from -1 to 1.
4950
4951 @item mlev
4952 Set level of the middle signal. Default is 1.
4953 Allowed range is from 0.015625 to 64.
4954
4955 @item mpan
4956 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4957
4958 @item base
4959 Set stereo base between mono and inversed channels. Default is 0.
4960 Allowed range is from -1 to 1.
4961
4962 @item delay
4963 Set delay in milliseconds how much to delay left from right channel and
4964 vice versa. Default is 0. Allowed range is from -20 to 20.
4965
4966 @item sclevel
4967 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4968
4969 @item phase
4970 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4971
4972 @item bmode_in, bmode_out
4973 Set balance mode for balance_in/balance_out option.
4974
4975 Can be one of the following:
4976
4977 @table @samp
4978 @item balance
4979 Classic balance mode. Attenuate one channel at time.
4980 Gain is raised up to 1.
4981
4982 @item amplitude
4983 Similar as classic mode above but gain is raised up to 2.
4984
4985 @item power
4986 Equal power distribution, from -6dB to +6dB range.
4987 @end table
4988 @end table
4989
4990 @subsection Examples
4991
4992 @itemize
4993 @item
4994 Apply karaoke like effect:
4995 @example
4996 stereotools=mlev=0.015625
4997 @end example
4998
4999 @item
5000 Convert M/S signal to L/R:
5001 @example
5002 "stereotools=mode=ms>lr"
5003 @end example
5004 @end itemize
5005
5006 @section stereowiden
5007
5008 This filter enhance the stereo effect by suppressing signal common to both
5009 channels and by delaying the signal of left into right and vice versa,
5010 thereby widening the stereo effect.
5011
5012 The filter accepts the following options:
5013
5014 @table @option
5015 @item delay
5016 Time in milliseconds of the delay of left signal into right and vice versa.
5017 Default is 20 milliseconds.
5018
5019 @item feedback
5020 Amount of gain in delayed signal into right and vice versa. Gives a delay
5021 effect of left signal in right output and vice versa which gives widening
5022 effect. Default is 0.3.
5023
5024 @item crossfeed
5025 Cross feed of left into right with inverted phase. This helps in suppressing
5026 the mono. If the value is 1 it will cancel all the signal common to both
5027 channels. Default is 0.3.
5028
5029 @item drymix
5030 Set level of input signal of original channel. Default is 0.8.
5031 @end table
5032
5033 @section superequalizer
5034 Apply 18 band equalizer.
5035
5036 The filter accepts the following options:
5037 @table @option
5038 @item 1b
5039 Set 65Hz band gain.
5040 @item 2b
5041 Set 92Hz band gain.
5042 @item 3b
5043 Set 131Hz band gain.
5044 @item 4b
5045 Set 185Hz band gain.
5046 @item 5b
5047 Set 262Hz band gain.
5048 @item 6b
5049 Set 370Hz band gain.
5050 @item 7b
5051 Set 523Hz band gain.
5052 @item 8b
5053 Set 740Hz band gain.
5054 @item 9b
5055 Set 1047Hz band gain.
5056 @item 10b
5057 Set 1480Hz band gain.
5058 @item 11b
5059 Set 2093Hz band gain.
5060 @item 12b
5061 Set 2960Hz band gain.
5062 @item 13b
5063 Set 4186Hz band gain.
5064 @item 14b
5065 Set 5920Hz band gain.
5066 @item 15b
5067 Set 8372Hz band gain.
5068 @item 16b
5069 Set 11840Hz band gain.
5070 @item 17b
5071 Set 16744Hz band gain.
5072 @item 18b
5073 Set 20000Hz band gain.
5074 @end table
5075
5076 @section surround
5077 Apply audio surround upmix filter.
5078
5079 This filter allows to produce multichannel output from audio stream.
5080
5081 The filter accepts the following options:
5082
5083 @table @option
5084 @item chl_out
5085 Set output channel layout. By default, this is @var{5.1}.
5086
5087 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5088 for the required syntax.
5089
5090 @item chl_in
5091 Set input channel layout. By default, this is @var{stereo}.
5092
5093 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5094 for the required syntax.
5095
5096 @item level_in
5097 Set input volume level. By default, this is @var{1}.
5098
5099 @item level_out
5100 Set output volume level. By default, this is @var{1}.
5101
5102 @item lfe
5103 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5104
5105 @item lfe_low
5106 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5107
5108 @item lfe_high
5109 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5110
5111 @item lfe_mode
5112 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5113 In @var{add} mode, LFE channel is created from input audio and added to output.
5114 In @var{sub} mode, LFE channel is created from input audio and added to output but
5115 also all non-LFE output channels are subtracted with output LFE channel.