]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
doc/filters: use common options introduction string.
[ffmpeg] / 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 @example
12 input --> split ---------------------> overlay --> output
13             |                             ^
14             |                             |
15             +-----> crop --> vflip -------+
16 @end example
17
18 This filtergraph splits the input stream in two streams, sends one
19 stream through the crop filter and the vflip filter before merging it
20 back with the other stream by overlaying it on top. You can use the
21 following command to achieve this:
22
23 @example
24 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
25 @end example
26
27 The result will be that in output the top half of the video is mirrored
28 onto the bottom half.
29
30 Filters in the same linear chain are separated by commas, and distinct
31 linear chains of filters are separated by semicolons. In our example,
32 @var{crop,vflip} are in one linear chain, @var{split} and
33 @var{overlay} are separately in another. The points where the linear
34 chains join are labelled by names enclosed in square brackets. In the
35 example, the split filter generates two outputs that are associated to
36 the labels @var{[main]} and @var{[tmp]}.
37
38 The stream sent to the second output of @var{split}, labelled as
39 @var{[tmp]}, is processed through the @var{crop} filter, which crops
40 away the lower half part of the video, and then vertically flipped. The
41 @var{overlay} filter takes in input the first unchanged output of the
42 split filter (which was labelled as @var{[main]}), and overlay on its
43 lower half the output generated by the @var{crop,vflip} filterchain.
44
45 Some filters take in input a list of parameters: they are specified
46 after the filter name and an equal sign, and are separated from each other
47 by a colon.
48
49 There exist so-called @var{source filters} that do not have an
50 audio/video input, and @var{sink filters} that will not have audio/video
51 output.
52
53 @c man end FILTERING INTRODUCTION
54
55 @chapter graph2dot
56 @c man begin GRAPH2DOT
57
58 The @file{graph2dot} program included in the FFmpeg @file{tools}
59 directory can be used to parse a filtergraph description and issue a
60 corresponding textual representation in the dot language.
61
62 Invoke the command:
63 @example
64 graph2dot -h
65 @end example
66
67 to see how to use @file{graph2dot}.
68
69 You can then pass the dot description to the @file{dot} program (from
70 the graphviz suite of programs) and obtain a graphical representation
71 of the filtergraph.
72
73 For example the sequence of commands:
74 @example
75 echo @var{GRAPH_DESCRIPTION} | \
76 tools/graph2dot -o graph.tmp && \
77 dot -Tpng graph.tmp -o graph.png && \
78 display graph.png
79 @end example
80
81 can be used to create and display an image representing the graph
82 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
83 a complete self-contained graph, with its inputs and outputs explicitly defined.
84 For example if your command line is of the form:
85 @example
86 ffmpeg -i infile -vf scale=640:360 outfile
87 @end example
88 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
89 @example
90 nullsrc,scale=640:360,nullsink
91 @end example
92 you may also need to set the @var{nullsrc} parameters and add a @var{format}
93 filter in order to simulate a specific input file.
94
95 @c man end GRAPH2DOT
96
97 @chapter Filtergraph description
98 @c man begin FILTERGRAPH DESCRIPTION
99
100 A filtergraph is a directed graph of connected filters. It can contain
101 cycles, and there can be multiple links between a pair of
102 filters. Each link has one input pad on one side connecting it to one
103 filter from which it takes its input, and one output pad on the other
104 side connecting it to the one filter accepting its output.
105
106 Each filter in a filtergraph is an instance of a filter class
107 registered in the application, which defines the features and the
108 number of input and output pads of the filter.
109
110 A filter with no input pads is called a "source", a filter with no
111 output pads is called a "sink".
112
113 @anchor{Filtergraph syntax}
114 @section Filtergraph syntax
115
116 A filtergraph can be represented using a textual representation, which is
117 recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}
118 options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the
119 @code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in
120 @file{libavfilter/avfilter.h}.
121
122 A filterchain consists of a sequence of connected filters, each one
123 connected to the previous one in the sequence. A filterchain is
124 represented by a list of ","-separated filter descriptions.
125
126 A filtergraph consists of a sequence of filterchains. A sequence of
127 filterchains is represented by a list of ";"-separated filterchain
128 descriptions.
129
130 A filter is represented by a string of the form:
131 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
132
133 @var{filter_name} is the name of the filter class of which the
134 described filter is an instance of, and has to be the name of one of
135 the filter classes registered in the program.
136 The name of the filter class is optionally followed by a string
137 "=@var{arguments}".
138
139 @var{arguments} is a string which contains the parameters used to
140 initialize the filter instance. It may have one of the following forms:
141 @itemize
142
143 @item
144 A ':'-separated list of @var{key=value} pairs.
145
146 @item
147 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
148 the option names in the order they are declared. E.g. the @code{fade} filter
149 declares three options in this order -- @option{type}, @option{start_frame} and
150 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
151 @var{in} is assigned to the option @option{type}, @var{0} to
152 @option{start_frame} and @var{30} to @option{nb_frames}.
153
154 @item
155 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
156 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
157 follow the same constraints order of the previous point. The following
158 @var{key=value} pairs can be set in any preferred order.
159
160 @end itemize
161
162 If the option value itself is a list of items (e.g. the @code{format} filter
163 takes a list of pixel formats), the items in the list are usually separated by
164 '|'.
165
166 The list of arguments can be quoted using the character "'" as initial
167 and ending mark, and the character '\' for escaping the characters
168 within the quoted text; otherwise the argument string is considered
169 terminated when the next special character (belonging to the set
170 "[]=;,") is encountered.
171
172 The name and arguments of the filter are optionally preceded and
173 followed by a list of link labels.
174 A link label allows to name a link and associate it to a filter output
175 or input pad. The preceding labels @var{in_link_1}
176 ... @var{in_link_N}, are associated to the filter input pads,
177 the following labels @var{out_link_1} ... @var{out_link_M}, are
178 associated to the output pads.
179
180 When two link labels with the same name are found in the
181 filtergraph, a link between the corresponding input and output pad is
182 created.
183
184 If an output pad is not labelled, it is linked by default to the first
185 unlabelled input pad of the next filter in the filterchain.
186 For example in the filterchain:
187 @example
188 nullsrc, split[L1], [L2]overlay, nullsink
189 @end example
190 the split filter instance has two output pads, and the overlay filter
191 instance two input pads. The first output pad of split is labelled
192 "L1", the first input pad of overlay is labelled "L2", and the second
193 output pad of split is linked to the second input pad of overlay,
194 which are both unlabelled.
195
196 In a complete filterchain all the unlabelled filter input and output
197 pads must be connected. A filtergraph is considered valid if all the
198 filter input and output pads of all the filterchains are connected.
199
200 Libavfilter will automatically insert scale filters where format
201 conversion is required. It is possible to specify swscale flags
202 for those automatically inserted scalers by prepending
203 @code{sws_flags=@var{flags};}
204 to the filtergraph description.
205
206 Follows a BNF description for the filtergraph syntax:
207 @example
208 @var{NAME}             ::= sequence of alphanumeric characters and '_'
209 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
210 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
211 @var{FILTER_ARGUMENTS} ::= sequence of chars (eventually quoted)
212 @var{FILTER}           ::= [@var{LINKLABELS}] @var{NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
213 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
214 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
215 @end example
216
217 @section Notes on filtergraph escaping
218
219 Some filter arguments require the use of special characters, typically
220 @code{:} to separate key=value pairs in a named options list. In this
221 case the user should perform a first level escaping when specifying
222 the filter arguments. For example, consider the following literal
223 string to be embedded in the @ref{drawtext} filter arguments:
224 @example
225 this is a 'string': may contain one, or more, special characters
226 @end example
227
228 Since @code{:} is special for the filter arguments syntax, it needs to
229 be escaped, so you get:
230 @example
231 text=this is a \'string\'\: may contain one, or more, special characters
232 @end example
233
234 A second level of escaping is required when embedding the filter
235 arguments in a filtergraph description, in order to escape all the
236 filtergraph special characters. Thus the example above becomes:
237 @example
238 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
239 @end example
240
241 Finally an additional level of escaping may be needed when writing the
242 filtergraph description in a shell command, which depends on the
243 escaping rules of the adopted shell. For example, assuming that
244 @code{\} is special and needs to be escaped with another @code{\}, the
245 previous string will finally result in:
246 @example
247 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
248 @end example
249
250 Sometimes, it might be more convenient to employ quoting in place of
251 escaping. For example the string:
252 @example
253 Caesar: tu quoque, Brute, fili mi
254 @end example
255
256 Can be quoted in the filter arguments as:
257 @example
258 text='Caesar: tu quoque, Brute, fili mi'
259 @end example
260
261 And finally inserted in a filtergraph like:
262 @example
263 drawtext=text=\'Caesar: tu quoque\, Brute\, fili mi\'
264 @end example
265
266 See the ``Quoting and escaping'' section in the ffmpeg-utils manual
267 for more information about the escaping and quoting rules adopted by
268 FFmpeg.
269
270 @c man end FILTERGRAPH DESCRIPTION
271
272 @chapter Audio Filters
273 @c man begin AUDIO FILTERS
274
275 When you configure your FFmpeg build, you can disable any of the
276 existing filters using @code{--disable-filters}.
277 The configure output will show the audio filters included in your
278 build.
279
280 Below is a description of the currently available audio filters.
281
282 @section aconvert
283
284 Convert the input audio format to the specified formats.
285
286 @emph{This filter is deprecated. Use @ref{aformat} instead.}
287
288 The filter accepts a string of the form:
289 "@var{sample_format}:@var{channel_layout}".
290
291 @var{sample_format} specifies the sample format, and can be a string or the
292 corresponding numeric value defined in @file{libavutil/samplefmt.h}. Use 'p'
293 suffix for a planar sample format.
294
295 @var{channel_layout} specifies the channel layout, and can be a string
296 or the corresponding number value defined in @file{libavutil/channel_layout.h}.
297
298 The special parameter "auto", signifies that the filter will
299 automatically select the output format depending on the output filter.
300
301 @subsection Examples
302
303 @itemize
304 @item
305 Convert input to float, planar, stereo:
306 @example
307 aconvert=fltp:stereo
308 @end example
309
310 @item
311 Convert input to unsigned 8-bit, automatically select out channel layout:
312 @example
313 aconvert=u8:auto
314 @end example
315 @end itemize
316
317 @section allpass
318
319 Apply a two-pole all-pass filter with central frequency (in Hz)
320 @var{frequency}, and filter-width @var{width}.
321 An all-pass filter changes the audio's frequency to phase relationship
322 without changing its frequency to amplitude relationship.
323
324 The filter accepts the following options:
325
326 @table @option
327 @item frequency, f
328 Set frequency in Hz.
329
330 @item width_type
331 Set method to specify band-width of filter.
332 @table @option
333 @item h
334 Hz
335 @item q
336 Q-Factor
337 @item o
338 octave
339 @item s
340 slope
341 @end table
342
343 @item width, w
344 Specify the band-width of a filter in width_type units.
345 @end table
346
347 @section highpass
348
349 Apply a high-pass filter with 3dB point frequency.
350 The filter can be either single-pole, or double-pole (the default).
351 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
352
353 The filter accepts the following options:
354
355 @table @option
356 @item frequency, f
357 Set frequency in Hz. Default is 3000.
358
359 @item poles, p
360 Set number of poles. Default is 2.
361
362 @item width_type
363 Set method to specify band-width of filter.
364 @table @option
365 @item h
366 Hz
367 @item q
368 Q-Factor
369 @item o
370 octave
371 @item s
372 slope
373 @end table
374
375 @item width, w
376 Specify the band-width of a filter in width_type units.
377 Applies only to double-pole filter.
378 The default is 0.707q and gives a Butterworth response.
379 @end table
380
381 @section lowpass
382
383 Apply a low-pass filter with 3dB point frequency.
384 The filter can be either single-pole or double-pole (the default).
385 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
386
387 The filter accepts the following options:
388
389 @table @option
390 @item frequency, f
391 Set frequency in Hz. Default is 500.
392
393 @item poles, p
394 Set number of poles. Default is 2.
395
396 @item width_type
397 Set method to specify band-width of filter.
398 @table @option
399 @item h
400 Hz
401 @item q
402 Q-Factor
403 @item o
404 octave
405 @item s
406 slope
407 @end table
408
409 @item width, w
410 Specify the band-width of a filter in width_type units.
411 Applies only to double-pole filter.
412 The default is 0.707q and gives a Butterworth response.
413 @end table
414
415 @section bass
416
417 Boost or cut the bass (lower) frequencies of the audio using a two-pole
418 shelving filter with a response similar to that of a standard
419 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
420
421 The filter accepts the following options:
422
423 @table @option
424 @item gain, g
425 Give the gain at 0 Hz. Its useful range is about -20
426 (for a large cut) to +20 (for a large boost).
427 Beware of clipping when using a positive gain.
428
429 @item frequency, f
430 Set the filter's central frequency and so can be used
431 to extend or reduce the frequency range to be boosted or cut.
432 The default value is @code{100} Hz.
433
434 @item width_type
435 Set method to specify band-width of filter.
436 @table @option
437 @item h
438 Hz
439 @item q
440 Q-Factor
441 @item o
442 octave
443 @item s
444 slope
445 @end table
446
447 @item width, w
448 Determine how steep is the filter's shelf transition.
449 @end table
450
451 @section telecine
452
453 Apply telecine process to the video.
454
455 This filter accepts the following options:
456
457 @table @option
458 @item first_field
459 @table @samp
460 @item top, t
461 top field first
462 @item bottom, b
463 bottom field first
464 The default value is @code{top}.
465 @end table
466
467 @item pattern
468 A string of numbers representing the pulldown pattern you wish to apply.
469 The default value is @code{23}.
470 @end table
471
472 @example
473 Some typical patterns:
474
475 NTSC output (30i):
476 27.5p: 32222
477 24p: 23 (classic)
478 24p: 2332 (preferred)
479 20p: 33
480 18p: 334
481 16p: 3444
482
483 PAL output (25i):
484 27.5p: 12222
485 24p: 222222222223 ("Euro pulldown")
486 16.67p: 33
487 16p: 33333334
488 @end example
489
490 @section treble
491
492 Boost or cut treble (upper) frequencies of the audio using a two-pole
493 shelving filter with a response similar to that of a standard
494 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
495
496 The filter accepts the following options:
497
498 @table @option
499 @item gain, g
500 Give the gain at whichever is the lower of ~22 kHz and the
501 Nyquist frequency. Its useful range is about -20 (for a large cut)
502 to +20 (for a large boost). Beware of clipping when using a positive gain.
503
504 @item frequency, f
505 Set the filter's central frequency and so can be used
506 to extend or reduce the frequency range to be boosted or cut.
507 The default value is @code{3000} Hz.
508
509 @item width_type
510 Set method to specify band-width of filter.
511 @table @option
512 @item h
513 Hz
514 @item q
515 Q-Factor
516 @item o
517 octave
518 @item s
519 slope
520 @end table
521
522 @item width, w
523 Determine how steep is the filter's shelf transition.
524 @end table
525
526 @section bandpass
527
528 Apply a two-pole Butterworth band-pass filter with central
529 frequency @var{frequency}, and (3dB-point) band-width width.
530 The @var{csg} option selects a constant skirt gain (peak gain = Q)
531 instead of the default: constant 0dB peak gain.
532 The filter roll off at 6dB per octave (20dB per decade).
533
534 The filter accepts the following options:
535
536 @table @option
537 @item frequency, f
538 Set the filter's central frequency. Default is @code{3000}.
539
540 @item csg
541 Constant skirt gain if set to 1. Defaults to 0.
542
543 @item width_type
544 Set method to specify band-width of filter.
545 @table @option
546 @item h
547 Hz
548 @item q
549 Q-Factor
550 @item o
551 octave
552 @item s
553 slope
554 @end table
555
556 @item width, w
557 Specify the band-width of a filter in width_type units.
558 @end table
559
560 @section bandreject
561
562 Apply a two-pole Butterworth band-reject filter with central
563 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
564 The filter roll off at 6dB per octave (20dB per decade).
565
566 The filter accepts the following options:
567
568 @table @option
569 @item frequency, f
570 Set the filter's central frequency. Default is @code{3000}.
571
572 @item width_type
573 Set method to specify band-width of filter.
574 @table @option
575 @item h
576 Hz
577 @item q
578 Q-Factor
579 @item o
580 octave
581 @item s
582 slope
583 @end table
584
585 @item width, w
586 Specify the band-width of a filter in width_type units.
587 @end table
588
589 @section biquad
590
591 Apply a biquad IIR filter with the given coefficients.
592 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
593 are the numerator and denominator coefficients respectively.
594
595 @section equalizer
596
597 Apply a two-pole peaking equalisation (EQ) filter. With this
598 filter, the signal-level at and around a selected frequency can
599 be increased or decreased, whilst (unlike bandpass and bandreject
600 filters) that at all other frequencies is unchanged.
601
602 In order to produce complex equalisation curves, this filter can
603 be given several times, each with a different central frequency.
604
605 The filter accepts the following options:
606
607 @table @option
608 @item frequency, f
609 Set the filter's central frequency in Hz.
610
611 @item width_type
612 Set method to specify band-width of filter.
613 @table @option
614 @item h
615 Hz
616 @item q
617 Q-Factor
618 @item o
619 octave
620 @item s
621 slope
622 @end table
623
624 @item width, w
625 Specify the band-width of a filter in width_type units.
626
627 @item gain, g
628 Set the required gain or attenuation in dB.
629 Beware of clipping when using a positive gain.
630 @end table
631
632 @section afade
633
634 Apply fade-in/out effect to input audio.
635
636 A description of the accepted parameters follows.
637
638 @table @option
639 @item type, t
640 Specify the effect type, can be either @code{in} for fade-in, or
641 @code{out} for a fade-out effect. Default is @code{in}.
642
643 @item start_sample, ss
644 Specify the number of the start sample for starting to apply the fade
645 effect. Default is 0.
646
647 @item nb_samples, ns
648 Specify the number of samples for which the fade effect has to last. At
649 the end of the fade-in effect the output audio will have the same
650 volume as the input audio, at the end of the fade-out transition
651 the output audio will be silence. Default is 44100.
652
653 @item start_time, st
654 Specify time in seconds for starting to apply the fade
655 effect. Default is 0.
656 If set this option is used instead of @var{start_sample} one.
657
658 @item duration, d
659 Specify the number of seconds for which the fade effect has to last. At
660 the end of the fade-in effect the output audio will have the same
661 volume as the input audio, at the end of the fade-out transition
662 the output audio will be silence. Default is 0.
663 If set this option is used instead of @var{nb_samples} one.
664
665 @item curve
666 Set curve for fade transition.
667
668 It accepts the following values:
669 @table @option
670 @item tri
671 select triangular, linear slope (default)
672 @item qsin
673 select quarter of sine wave
674 @item hsin
675 select half of sine wave
676 @item esin
677 select exponential sine wave
678 @item log
679 select logarithmic
680 @item par
681 select inverted parabola
682 @item qua
683 select quadratic
684 @item cub
685 select cubic
686 @item squ
687 select square root
688 @item cbr
689 select cubic root
690 @end table
691 @end table
692
693 @subsection Examples
694
695 @itemize
696 @item
697 Fade in first 15 seconds of audio:
698 @example
699 afade=t=in:ss=0:d=15
700 @end example
701
702 @item
703 Fade out last 25 seconds of a 900 seconds audio:
704 @example
705 afade=t=out:ss=875:d=25
706 @end example
707 @end itemize
708
709 @anchor{aformat}
710 @section aformat
711
712 Set output format constraints for the input audio. The framework will
713 negotiate the most appropriate format to minimize conversions.
714
715 The filter accepts the following named parameters:
716 @table @option
717
718 @item sample_fmts
719 A '|'-separated list of requested sample formats.
720
721 @item sample_rates
722 A '|'-separated list of requested sample rates.
723
724 @item channel_layouts
725 A '|'-separated list of requested channel layouts.
726
727 @end table
728
729 If a parameter is omitted, all values are allowed.
730
731 For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
732 @example
733 aformat=sample_fmts=u8|s16:channel_layouts=stereo
734 @end example
735
736 @section amerge
737
738 Merge two or more audio streams into a single multi-channel stream.
739
740 The filter accepts the following options:
741
742 @table @option
743
744 @item inputs
745 Set the number of inputs. Default is 2.
746
747 @end table
748
749 If the channel layouts of the inputs are disjoint, and therefore compatible,
750 the channel layout of the output will be set accordingly and the channels
751 will be reordered as necessary. If the channel layouts of the inputs are not
752 disjoint, the output will have all the channels of the first input then all
753 the channels of the second input, in that order, and the channel layout of
754 the output will be the default value corresponding to the total number of
755 channels.
756
757 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
758 is FC+BL+BR, then the output will be in 5.1, with the channels in the
759 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
760 first input, b1 is the first channel of the second input).
761
762 On the other hand, if both input are in stereo, the output channels will be
763 in the default order: a1, a2, b1, b2, and the channel layout will be
764 arbitrarily set to 4.0, which may or may not be the expected value.
765
766 All inputs must have the same sample rate, and format.
767
768 If inputs do not have the same duration, the output will stop with the
769 shortest.
770
771 @subsection Examples
772
773 @itemize
774 @item
775 Merge two mono files into a stereo stream:
776 @example
777 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
778 @end example
779
780 @item
781 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
782 @example
783 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
784 @end example
785 @end itemize
786
787 @section amix
788
789 Mixes multiple audio inputs into a single output.
790
791 For example
792 @example
793 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
794 @end example
795 will mix 3 input audio streams to a single output with the same duration as the
796 first input and a dropout transition time of 3 seconds.
797
798 The filter accepts the following named parameters:
799 @table @option
800
801 @item inputs
802 Number of inputs. If unspecified, it defaults to 2.
803
804 @item duration
805 How to determine the end-of-stream.
806 @table @option
807
808 @item longest
809 Duration of longest input. (default)
810
811 @item shortest
812 Duration of shortest input.
813
814 @item first
815 Duration of first input.
816
817 @end table
818
819 @item dropout_transition
820 Transition time, in seconds, for volume renormalization when an input
821 stream ends. The default value is 2 seconds.
822
823 @end table
824
825 @section anull
826
827 Pass the audio source unchanged to the output.
828
829 @section apad
830
831 Pad the end of a audio stream with silence, this can be used together with
832 -shortest to extend audio streams to the same length as the video stream.
833
834 @anchor{aresample}
835 @section aresample
836
837 Resample the input audio to the specified parameters, using the
838 libswresample library. If none are specified then the filter will
839 automatically convert between its input and output.
840
841 This filter is also able to stretch/squeeze the audio data to make it match
842 the timestamps or to inject silence / cut out audio to make it match the
843 timestamps, do a combination of both or do neither.
844
845 The filter accepts the syntax
846 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
847 expresses a sample rate and @var{resampler_options} is a list of
848 @var{key}=@var{value} pairs, separated by ":". See the
849 ffmpeg-resampler manual for the complete list of supported options.
850
851 @subsection Examples
852
853 @itemize
854 @item
855 Resample the input audio to 44100Hz:
856 @example
857 aresample=44100
858 @end example
859
860 @item
861 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
862 samples per second compensation:
863 @example
864 aresample=async=1000
865 @end example
866 @end itemize
867
868 @section asetnsamples
869
870 Set the number of samples per each output audio frame.
871
872 The last output packet may contain a different number of samples, as
873 the filter will flush all the remaining samples when the input audio
874 signal its end.
875
876 The filter accepts the following options:
877
878 @table @option
879
880 @item nb_out_samples, n
881 Set the number of frames per each output audio frame. The number is
882 intended as the number of samples @emph{per each channel}.
883 Default value is 1024.
884
885 @item pad, p
886 If set to 1, the filter will pad the last audio frame with zeroes, so
887 that the last frame will contain the same number of samples as the
888 previous ones. Default value is 1.
889 @end table
890
891 For example, to set the number of per-frame samples to 1234 and
892 disable padding for the last frame, use:
893 @example
894 asetnsamples=n=1234:p=0
895 @end example
896
897 @section ashowinfo
898
899 Show a line containing various information for each input audio frame.
900 The input audio is not modified.
901
902 The shown line contains a sequence of key/value pairs of the form
903 @var{key}:@var{value}.
904
905 A description of each shown parameter follows:
906
907 @table @option
908 @item n
909 sequential number of the input frame, starting from 0
910
911 @item pts
912 Presentation timestamp of the input frame, in time base units; the time base
913 depends on the filter input pad, and is usually 1/@var{sample_rate}.
914
915 @item pts_time
916 presentation timestamp of the input frame in seconds
917
918 @item pos
919 position of the frame in the input stream, -1 if this information in
920 unavailable and/or meaningless (for example in case of synthetic audio)
921
922 @item fmt
923 sample format
924
925 @item chlayout
926 channel layout
927
928 @item rate
929 sample rate for the audio frame
930
931 @item nb_samples
932 number of samples (per channel) in the frame
933
934 @item checksum
935 Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
936 the data is treated as if all the planes were concatenated.
937
938 @item plane_checksums
939 A list of Adler-32 checksums for each data plane.
940 @end table
941
942 @section asplit
943
944 Split input audio into several identical outputs.
945
946 The filter accepts a single parameter which specifies the number of outputs. If
947 unspecified, it defaults to 2.
948
949 For example:
950 @example
951 [in] asplit [out0][out1]
952 @end example
953
954 will create two separate outputs from the same input.
955
956 To create 3 or more outputs, you need to specify the number of
957 outputs, like in:
958 @example
959 [in] asplit=3 [out0][out1][out2]
960 @end example
961
962 @example
963 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
964 @end example
965 will create 5 copies of the input audio.
966
967
968 @section astreamsync
969
970 Forward two audio streams and control the order the buffers are forwarded.
971
972 The filter accepts the following options:
973
974 @table @option
975 @item expr, e
976 Set the expression deciding which stream should be
977 forwarded next: if the result is negative, the first stream is forwarded; if
978 the result is positive or zero, the second stream is forwarded. It can use
979 the following variables:
980
981 @table @var
982 @item b1 b2
983 number of buffers forwarded so far on each stream
984 @item s1 s2
985 number of samples forwarded so far on each stream
986 @item t1 t2
987 current timestamp of each stream
988 @end table
989
990 The default value is @code{t1-t2}, which means to always forward the stream
991 that has a smaller timestamp.
992 @end table
993
994 @subsection Examples
995
996 Stress-test @code{amerge} by randomly sending buffers on the wrong
997 input, while avoiding too much of a desynchronization:
998 @example
999 amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
1000 [a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
1001 [a2] [b2] amerge
1002 @end example
1003
1004 @section atempo
1005
1006 Adjust audio tempo.
1007
1008 The filter accepts exactly one parameter, the audio tempo. If not
1009 specified then the filter will assume nominal 1.0 tempo. Tempo must
1010 be in the [0.5, 2.0] range.
1011
1012 @subsection Examples
1013
1014 @itemize
1015 @item
1016 Slow down audio to 80% tempo:
1017 @example
1018 atempo=0.8
1019 @end example
1020
1021 @item
1022 To speed up audio to 125% tempo:
1023 @example
1024 atempo=1.25
1025 @end example
1026 @end itemize
1027
1028 @section earwax
1029
1030 Make audio easier to listen to on headphones.
1031
1032 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
1033 so that when listened to on headphones the stereo image is moved from
1034 inside your head (standard for headphones) to outside and in front of
1035 the listener (standard for speakers).
1036
1037 Ported from SoX.
1038
1039 @section pan
1040
1041 Mix channels with specific gain levels. The filter accepts the output
1042 channel layout followed by a set of channels definitions.
1043
1044 This filter is also designed to remap efficiently the channels of an audio
1045 stream.
1046
1047 The filter accepts parameters of the form:
1048 "@var{l}:@var{outdef}:@var{outdef}:..."
1049
1050 @table @option
1051 @item l
1052 output channel layout or number of channels
1053
1054 @item outdef
1055 output channel specification, of the form:
1056 "@var{out_name}=[@var{gain}*]@var{in_name}[+[@var{gain}*]@var{in_name}...]"
1057
1058 @item out_name
1059 output channel to define, either a channel name (FL, FR, etc.) or a channel
1060 number (c0, c1, etc.)
1061
1062 @item gain
1063 multiplicative coefficient for the channel, 1 leaving the volume unchanged
1064
1065 @item in_name
1066 input channel to use, see out_name for details; it is not possible to mix
1067 named and numbered input channels
1068 @end table
1069
1070 If the `=' in a channel specification is replaced by `<', then the gains for
1071 that specification will be renormalized so that the total is 1, thus
1072 avoiding clipping noise.
1073
1074 @subsection Mixing examples
1075
1076 For example, if you want to down-mix from stereo to mono, but with a bigger
1077 factor for the left channel:
1078 @example
1079 pan=1:c0=0.9*c0+0.1*c1
1080 @end example
1081
1082 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
1083 7-channels surround:
1084 @example
1085 pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
1086 @end example
1087
1088 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
1089 that should be preferred (see "-ac" option) unless you have very specific
1090 needs.
1091
1092 @subsection Remapping examples
1093
1094 The channel remapping will be effective if, and only if:
1095
1096 @itemize
1097 @item gain coefficients are zeroes or ones,
1098 @item only one input per channel output,
1099 @end itemize
1100
1101 If all these conditions are satisfied, the filter will notify the user ("Pure
1102 channel mapping detected"), and use an optimized and lossless method to do the
1103 remapping.
1104
1105 For example, if you have a 5.1 source and want a stereo audio stream by
1106 dropping the extra channels:
1107 @example
1108 pan="stereo: c0=FL : c1=FR"
1109 @end example
1110
1111 Given the same source, you can also switch front left and front right channels
1112 and keep the input channel layout:
1113 @example
1114 pan="5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5"
1115 @end example
1116
1117 If the input is a stereo audio stream, you can mute the front left channel (and
1118 still keep the stereo channel layout) with:
1119 @example
1120 pan="stereo:c1=c1"
1121 @end example
1122
1123 Still with a stereo audio stream input, you can copy the right channel in both
1124 front left and right:
1125 @example
1126 pan="stereo: c0=FR : c1=FR"
1127 @end example
1128
1129 @section silencedetect
1130
1131 Detect silence in an audio stream.
1132
1133 This filter logs a message when it detects that the input audio volume is less
1134 or equal to a noise tolerance value for a duration greater or equal to the
1135 minimum detected noise duration.
1136
1137 The printed times and duration are expressed in seconds.
1138
1139 The filter accepts the following options:
1140
1141 @table @option
1142 @item duration, d
1143 Set silence duration until notification (default is 2 seconds).
1144
1145 @item noise, n
1146 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
1147 specified value) or amplitude ratio. Default is -60dB, or 0.001.
1148 @end table
1149
1150 @subsection Examples
1151
1152 @itemize
1153 @item
1154 Detect 5 seconds of silence with -50dB noise tolerance:
1155 @example
1156 silencedetect=n=-50dB:d=5
1157 @end example
1158
1159 @item
1160 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
1161 tolerance in @file{silence.mp3}:
1162 @example
1163 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
1164 @end example
1165 @end itemize
1166
1167 @section asyncts
1168 Synchronize audio data with timestamps by squeezing/stretching it and/or
1169 dropping samples/adding silence when needed.
1170
1171 This filter is not built by default, please use @ref{aresample} to do squeezing/stretching.
1172
1173 The filter accepts the following named parameters:
1174 @table @option
1175
1176 @item compensate
1177 Enable stretching/squeezing the data to make it match the timestamps. Disabled
1178 by default. When disabled, time gaps are covered with silence.
1179
1180 @item min_delta
1181 Minimum difference between timestamps and audio data (in seconds) to trigger
1182 adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
1183 this filter, try setting this parameter to 0.
1184
1185 @item max_comp
1186 Maximum compensation in samples per second. Relevant only with compensate=1.
1187 Default value 500.
1188
1189 @item first_pts
1190 Assume the first pts should be this value. The time base is 1 / sample rate.
1191 This allows for padding/trimming at the start of stream. By default, no
1192 assumption is made about the first frame's expected pts, so no padding or
1193 trimming is done. For example, this could be set to 0 to pad the beginning with
1194 silence if an audio stream starts after the video stream or to trim any samples
1195 with a negative pts due to encoder delay.
1196
1197 @end table
1198
1199 @section channelsplit
1200 Split each channel in input audio stream into a separate output stream.
1201
1202 This filter accepts the following named parameters:
1203 @table @option
1204 @item channel_layout
1205 Channel layout of the input stream. Default is "stereo".
1206 @end table
1207
1208 For example, assuming a stereo input MP3 file
1209 @example
1210 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
1211 @end example
1212 will create an output Matroska file with two audio streams, one containing only
1213 the left channel and the other the right channel.
1214
1215 To split a 5.1 WAV file into per-channel files
1216 @example
1217 ffmpeg -i in.wav -filter_complex
1218 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
1219 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
1220 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
1221 side_right.wav
1222 @end example
1223
1224 @section channelmap
1225 Remap input channels to new locations.
1226
1227 This filter accepts the following named parameters:
1228 @table @option
1229 @item channel_layout
1230 Channel layout of the output stream.
1231
1232 @item map
1233 Map channels from input to output. The argument is a '|'-separated list of
1234 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
1235 @var{in_channel} form. @var{in_channel} can be either the name of the input
1236 channel (e.g. FL for front left) or its index in the input channel layout.
1237 @var{out_channel} is the name of the output channel or its index in the output
1238 channel layout. If @var{out_channel} is not given then it is implicitly an
1239 index, starting with zero and increasing by one for each mapping.
1240 @end table
1241
1242 If no mapping is present, the filter will implicitly map input channels to
1243 output channels preserving index.
1244
1245 For example, assuming a 5.1+downmix input MOV file
1246 @example
1247 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
1248 @end example
1249 will create an output WAV file tagged as stereo from the downmix channels of
1250 the input.
1251
1252 To fix a 5.1 WAV improperly encoded in AAC's native channel order
1253 @example
1254 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
1255 @end example
1256
1257 @section join
1258 Join multiple input streams into one multi-channel stream.
1259
1260 The filter accepts the following named parameters:
1261 @table @option
1262
1263 @item inputs
1264 Number of input streams. Defaults to 2.
1265
1266 @item channel_layout
1267 Desired output channel layout. Defaults to stereo.
1268
1269 @item map
1270 Map channels from inputs to output. The argument is a '|'-separated list of
1271 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
1272 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
1273 can be either the name of the input channel (e.g. FL for front left) or its
1274 index in the specified input stream. @var{out_channel} is the name of the output
1275 channel.
1276 @end table
1277
1278 The filter will attempt to guess the mappings when those are not specified
1279 explicitly. It does so by first trying to find an unused matching input channel
1280 and if that fails it picks the first unused input channel.
1281
1282 E.g. to join 3 inputs (with properly set channel layouts)
1283 @example
1284 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
1285 @end example
1286
1287 To build a 5.1 output from 6 single-channel streams:
1288 @example
1289 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
1290 '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'
1291 out
1292 @end example
1293
1294 @section resample
1295 Convert the audio sample format, sample rate and channel layout. This filter is
1296 not meant to be used directly.
1297
1298 @section volume
1299
1300 Adjust the input audio volume.
1301
1302 The filter accepts the following options:
1303
1304 @table @option
1305
1306 @item volume
1307 Expresses how the audio volume will be increased or decreased.
1308
1309 Output values are clipped to the maximum value.
1310
1311 The output audio volume is given by the relation:
1312 @example
1313 @var{output_volume} = @var{volume} * @var{input_volume}
1314 @end example
1315
1316 Default value for @var{volume} is 1.0.
1317
1318 @item precision
1319 Set the mathematical precision.
1320
1321 This determines which input sample formats will be allowed, which affects the
1322 precision of the volume scaling.
1323
1324 @table @option
1325 @item fixed
1326 8-bit fixed-point; limits input sample format to U8, S16, and S32.
1327 @item float
1328 32-bit floating-point; limits input sample format to FLT. (default)
1329 @item double
1330 64-bit floating-point; limits input sample format to DBL.
1331 @end table
1332 @end table
1333
1334 @subsection Examples
1335
1336 @itemize
1337 @item
1338 Halve the input audio volume:
1339 @example
1340 volume=volume=0.5
1341 volume=volume=1/2
1342 volume=volume=-6.0206dB
1343 @end example
1344
1345 In all the above example the named key for @option{volume} can be
1346 omitted, for example like in:
1347 @example
1348 volume=0.5
1349 @end example
1350
1351 @item
1352 Increase input audio power by 6 decibels using fixed-point precision:
1353 @example
1354 volume=volume=6dB:precision=fixed
1355 @end example
1356 @end itemize
1357
1358 @section volumedetect
1359
1360 Detect the volume of the input video.
1361
1362 The filter has no parameters. The input is not modified. Statistics about
1363 the volume will be printed in the log when the input stream end is reached.
1364
1365 In particular it will show the mean volume (root mean square), maximum
1366 volume (on a per-sample basis), and the beginning of an histogram of the
1367 registered volume values (from the maximum value to a cumulated 1/1000 of
1368 the samples).
1369
1370 All volumes are in decibels relative to the maximum PCM value.
1371
1372 @subsection Examples
1373
1374 Here is an excerpt of the output:
1375 @example
1376 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
1377 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
1378 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
1379 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
1380 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
1381 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
1382 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
1383 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
1384 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
1385 @end example
1386
1387 It means that:
1388 @itemize
1389 @item
1390 The mean square energy is approximately -27 dB, or 10^-2.7.
1391 @item
1392 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
1393 @item
1394 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
1395 @end itemize
1396
1397 In other words, raising the volume by +4 dB does not cause any clipping,
1398 raising it by +5 dB causes clipping for 6 samples, etc.
1399
1400 @c man end AUDIO FILTERS
1401
1402 @chapter Audio Sources
1403 @c man begin AUDIO SOURCES
1404
1405 Below is a description of the currently available audio sources.
1406
1407 @section abuffer
1408
1409 Buffer audio frames, and make them available to the filter chain.
1410
1411 This source is mainly intended for a programmatic use, in particular
1412 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
1413
1414 It accepts the following named parameters:
1415
1416 @table @option
1417
1418 @item time_base
1419 Timebase which will be used for timestamps of submitted frames. It must be
1420 either a floating-point number or in @var{numerator}/@var{denominator} form.
1421
1422 @item sample_rate
1423 The sample rate of the incoming audio buffers.
1424
1425 @item sample_fmt
1426 The sample format of the incoming audio buffers.
1427 Either a sample format name or its corresponging integer representation from
1428 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
1429
1430 @item channel_layout
1431 The channel layout of the incoming audio buffers.
1432 Either a channel layout name from channel_layout_map in
1433 @file{libavutil/channel_layout.c} or its corresponding integer representation
1434 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
1435
1436 @item channels
1437 The number of channels of the incoming audio buffers.
1438 If both @var{channels} and @var{channel_layout} are specified, then they
1439 must be consistent.
1440
1441 @end table
1442
1443 @subsection Examples
1444
1445 @example
1446 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
1447 @end example
1448
1449 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
1450 Since the sample format with name "s16p" corresponds to the number
1451 6 and the "stereo" channel layout corresponds to the value 0x3, this is
1452 equivalent to:
1453 @example
1454 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
1455 @end example
1456
1457 @section aevalsrc
1458
1459 Generate an audio signal specified by an expression.
1460
1461 This source accepts in input one or more expressions (one for each
1462 channel), which are evaluated and used to generate a corresponding
1463 audio signal.
1464
1465 This source accepts the following options:
1466
1467 @table @option
1468 @item exprs
1469 Set the '|'-separated expressions list for each separate channel. In case the
1470 @option{channel_layout} option is not specified, the selected channel layout
1471 depends on the number of provided expressions.
1472
1473 @item channel_layout, c
1474 Set the channel layout. The number of channels in the specified layout
1475 must be equal to the number of specified expressions.
1476
1477 @item duration, d
1478 Set the minimum duration of the sourced audio. See the function
1479 @code{av_parse_time()} for the accepted format.
1480 Note that the resulting duration may be greater than the specified
1481 duration, as the generated audio is always cut at the end of a
1482 complete frame.
1483
1484 If not specified, or the expressed duration is negative, the audio is
1485 supposed to be generated forever.
1486
1487 @item nb_samples, n
1488 Set the number of samples per channel per each output frame,
1489 default to 1024.
1490
1491 @item sample_rate, s
1492 Specify the sample rate, default to 44100.
1493 @end table
1494
1495 Each expression in @var{exprs} can contain the following constants:
1496
1497 @table @option
1498 @item n
1499 number of the evaluated sample, starting from 0
1500
1501 @item t
1502 time of the evaluated sample expressed in seconds, starting from 0
1503
1504 @item s
1505 sample rate
1506
1507 @end table
1508
1509 @subsection Examples
1510
1511 @itemize
1512 @item
1513 Generate silence:
1514 @example
1515 aevalsrc=0
1516 @end example
1517
1518 @item
1519 Generate a sin signal with frequency of 440 Hz, set sample rate to
1520 8000 Hz:
1521 @example
1522 aevalsrc="sin(440*2*PI*t):s=8000"
1523 @end example
1524
1525 @item
1526 Generate a two channels signal, specify the channel layout (Front
1527 Center + Back Center) explicitly:
1528 @example
1529 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
1530 @end example
1531
1532 @item
1533 Generate white noise:
1534 @example
1535 aevalsrc="-2+random(0)"
1536 @end example
1537
1538 @item
1539 Generate an amplitude modulated signal:
1540 @example
1541 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
1542 @end example
1543
1544 @item
1545 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
1546 @example
1547 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
1548 @end example
1549
1550 @end itemize
1551
1552 @section anullsrc
1553
1554 Null audio source, return unprocessed audio frames. It is mainly useful
1555 as a template and to be employed in analysis / debugging tools, or as
1556 the source for filters which ignore the input data (for example the sox
1557 synth filter).
1558
1559 This source accepts the following options:
1560
1561 @table @option
1562
1563 @item channel_layout, cl
1564
1565 Specify the channel layout, and can be either an integer or a string
1566 representing a channel layout. The default value of @var{channel_layout}
1567 is "stereo".
1568
1569 Check the channel_layout_map definition in
1570 @file{libavutil/channel_layout.c} for the mapping between strings and
1571 channel layout values.
1572
1573 @item sample_rate, r
1574 Specify the sample rate, and defaults to 44100.
1575
1576 @item nb_samples, n
1577 Set the number of samples per requested frames.
1578
1579 @end table
1580
1581 @subsection Examples
1582
1583 @itemize
1584 @item
1585 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
1586 @example
1587 anullsrc=r=48000:cl=4
1588 @end example
1589
1590 @item
1591 Do the same operation with a more obvious syntax:
1592 @example
1593 anullsrc=r=48000:cl=mono
1594 @end example
1595 @end itemize
1596
1597 @section abuffer
1598 Buffer audio frames, and make them available to the filter chain.
1599
1600 This source is not intended to be part of user-supplied graph descriptions but
1601 for insertion by calling programs through the interface defined in
1602 @file{libavfilter/buffersrc.h}.
1603
1604 It accepts the following named parameters:
1605 @table @option
1606
1607 @item time_base
1608 Timebase which will be used for timestamps of submitted frames. It must be
1609 either a floating-point number or in @var{numerator}/@var{denominator} form.
1610
1611 @item sample_rate
1612 Audio sample rate.
1613
1614 @item sample_fmt
1615 Name of the sample format, as returned by @code{av_get_sample_fmt_name()}.
1616
1617 @item channel_layout
1618 Channel layout of the audio data, in the form that can be accepted by
1619 @code{av_get_channel_layout()}.
1620 @end table
1621
1622 All the parameters need to be explicitly defined.
1623
1624 @section flite
1625
1626 Synthesize a voice utterance using the libflite library.
1627
1628 To enable compilation of this filter you need to configure FFmpeg with
1629 @code{--enable-libflite}.
1630
1631 Note that the flite library is not thread-safe.
1632
1633 The filter accepts the following options:
1634
1635 @table @option
1636
1637 @item list_voices
1638 If set to 1, list the names of the available voices and exit
1639 immediately. Default value is 0.
1640
1641 @item nb_samples, n
1642 Set the maximum number of samples per frame. Default value is 512.
1643
1644 @item textfile
1645 Set the filename containing the text to speak.
1646
1647 @item text
1648 Set the text to speak.
1649
1650 @item voice, v
1651 Set the voice to use for the speech synthesis. Default value is
1652 @code{kal}. See also the @var{list_voices} option.
1653 @end table
1654
1655 @subsection Examples
1656
1657 @itemize
1658 @item
1659 Read from file @file{speech.txt}, and synthetize the text using the
1660 standard flite voice:
1661 @example
1662 flite=textfile=speech.txt
1663 @end example
1664
1665 @item
1666 Read the specified text selecting the @code{slt} voice:
1667 @example
1668 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
1669 @end example
1670
1671 @item
1672 Input text to ffmpeg:
1673 @example
1674 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
1675 @end example
1676
1677 @item
1678 Make @file{ffplay} speak the specified text, using @code{flite} and
1679 the @code{lavfi} device:
1680 @example
1681 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
1682 @end example
1683 @end itemize
1684
1685 For more information about libflite, check:
1686 @url{http://www.speech.cs.cmu.edu/flite/}
1687
1688 @section sine
1689
1690 Generate an audio signal made of a sine wave with amplitude 1/8.
1691
1692 The audio signal is bit-exact.
1693
1694 The filter accepts the following options:
1695
1696 @table @option
1697
1698 @item frequency, f
1699 Set the carrier frequency. Default is 440 Hz.
1700
1701 @item beep_factor, b
1702 Enable a periodic beep every second with frequency @var{beep_factor} times
1703 the carrier frequency. Default is 0, meaning the beep is disabled.
1704
1705 @item sample_rate, s
1706 Specify the sample rate, default is 44100.
1707
1708 @item duration, d
1709 Specify the duration of the generated audio stream.
1710
1711 @item samples_per_frame
1712 Set the number of samples per output frame, default is 1024.
1713 @end table
1714
1715 @subsection Examples
1716
1717 @itemize
1718
1719 @item
1720 Generate a simple 440 Hz sine wave:
1721 @example
1722 sine
1723 @end example
1724
1725 @item
1726 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
1727 @example
1728 sine=220:4:d=5
1729 sine=f=220:b=4:d=5
1730 sine=frequency=220:beep_factor=4:duration=5
1731 @end example
1732
1733 @end itemize
1734
1735 @c man end AUDIO SOURCES
1736
1737 @chapter Audio Sinks
1738 @c man begin AUDIO SINKS
1739
1740 Below is a description of the currently available audio sinks.
1741
1742 @section abuffersink
1743
1744 Buffer audio frames, and make them available to the end of filter chain.
1745
1746 This sink is mainly intended for programmatic use, in particular
1747 through the interface defined in @file{libavfilter/buffersink.h}
1748 or the options system.
1749
1750 It accepts a pointer to an AVABufferSinkContext structure, which
1751 defines the incoming buffers' formats, to be passed as the opaque
1752 parameter to @code{avfilter_init_filter} for initialization.
1753
1754 @section anullsink
1755
1756 Null audio sink, do absolutely nothing with the input audio. It is
1757 mainly useful as a template and to be employed in analysis / debugging
1758 tools.
1759
1760 @c man end AUDIO SINKS
1761
1762 @chapter Video Filters
1763 @c man begin VIDEO FILTERS
1764
1765 When you configure your FFmpeg build, you can disable any of the
1766 existing filters using @code{--disable-filters}.
1767 The configure output will show the video filters included in your
1768 build.
1769
1770 Below is a description of the currently available video filters.
1771
1772 @section alphaextract
1773
1774 Extract the alpha component from the input as a grayscale video. This
1775 is especially useful with the @var{alphamerge} filter.
1776
1777 @section alphamerge
1778
1779 Add or replace the alpha component of the primary input with the
1780 grayscale value of a second input. This is intended for use with
1781 @var{alphaextract} to allow the transmission or storage of frame
1782 sequences that have alpha in a format that doesn't support an alpha
1783 channel.
1784
1785 For example, to reconstruct full frames from a normal YUV-encoded video
1786 and a separate video created with @var{alphaextract}, you might use:
1787 @example
1788 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
1789 @end example
1790
1791 Since this filter is designed for reconstruction, it operates on frame
1792 sequences without considering timestamps, and terminates when either
1793 input reaches end of stream. This will cause problems if your encoding
1794 pipeline drops frames. If you're trying to apply an image as an
1795 overlay to a video stream, consider the @var{overlay} filter instead.
1796
1797 @section ass
1798
1799 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
1800 and libavformat to work. On the other hand, it is limited to ASS (Advanced
1801 Substation Alpha) subtitles files.
1802
1803 @section bbox
1804
1805 Compute the bounding box for the non-black pixels in the input frame
1806 luminance plane.
1807
1808 This filter computes the bounding box containing all the pixels with a
1809 luminance value greater than the minimum allowed value.
1810 The parameters describing the bounding box are printed on the filter
1811 log.
1812
1813 @section blackdetect
1814
1815 Detect video intervals that are (almost) completely black. Can be
1816 useful to detect chapter transitions, commercials, or invalid
1817 recordings. Output lines contains the time for the start, end and
1818 duration of the detected black interval expressed in seconds.
1819
1820 In order to display the output lines, you need to set the loglevel at
1821 least to the AV_LOG_INFO value.
1822
1823 The filter accepts the following options:
1824
1825 @table @option
1826 @item black_min_duration, d
1827 Set the minimum detected black duration expressed in seconds. It must
1828 be a non-negative floating point number.
1829
1830 Default value is 2.0.
1831
1832 @item picture_black_ratio_th, pic_th
1833 Set the threshold for considering a picture "black".
1834 Express the minimum value for the ratio:
1835 @example
1836 @var{nb_black_pixels} / @var{nb_pixels}
1837 @end example
1838
1839 for which a picture is considered black.
1840 Default value is 0.98.
1841
1842 @item pixel_black_th, pix_th
1843 Set the threshold for considering a pixel "black".
1844
1845 The threshold expresses the maximum pixel luminance value for which a
1846 pixel is considered "black". The provided value is scaled according to
1847 the following equation:
1848 @example
1849 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
1850 @end example
1851
1852 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
1853 the input video format, the range is [0-255] for YUV full-range
1854 formats and [16-235] for YUV non full-range formats.
1855
1856 Default value is 0.10.
1857 @end table
1858
1859 The following example sets the maximum pixel threshold to the minimum
1860 value, and detects only black intervals of 2 or more seconds:
1861 @example
1862 blackdetect=d=2:pix_th=0.00
1863 @end example
1864
1865 @section blackframe
1866
1867 Detect frames that are (almost) completely black. Can be useful to
1868 detect chapter transitions or commercials. Output lines consist of
1869 the frame number of the detected frame, the percentage of blackness,
1870 the position in the file if known or -1 and the timestamp in seconds.
1871
1872 In order to display the output lines, you need to set the loglevel at
1873 least to the AV_LOG_INFO value.
1874
1875 The filter accepts the following options:
1876
1877 @table @option
1878
1879 @item amount
1880 Set the percentage of the pixels that have to be below the threshold, defaults
1881 to @code{98}.
1882
1883 @item threshold, thresh
1884 Set the threshold below which a pixel value is considered black, defaults to
1885 @code{32}.
1886
1887 @end table
1888
1889 @section blend
1890
1891 Blend two video frames into each other.
1892
1893 It takes two input streams and outputs one stream, the first input is the
1894 "top" layer and second input is "bottom" layer.
1895 Output terminates when shortest input terminates.
1896
1897 A description of the accepted options follows.
1898
1899 @table @option
1900 @item c0_mode
1901 @item c1_mode
1902 @item c2_mode
1903 @item c3_mode
1904 @item all_mode
1905 Set blend mode for specific pixel component or all pixel components in case
1906 of @var{all_mode}. Default value is @code{normal}.
1907
1908 Available values for component modes are:
1909 @table @samp
1910 @item addition
1911 @item and
1912 @item average
1913 @item burn
1914 @item darken
1915 @item difference
1916 @item divide
1917 @item dodge
1918 @item exclusion
1919 @item hardlight
1920 @item lighten
1921 @item multiply
1922 @item negation
1923 @item normal
1924 @item or
1925 @item overlay
1926 @item phoenix
1927 @item pinlight
1928 @item reflect
1929 @item screen
1930 @item softlight
1931 @item subtract
1932 @item vividlight
1933 @item xor
1934 @end table
1935
1936 @item c0_opacity
1937 @item c1_opacity
1938 @item c2_opacity
1939 @item c3_opacity
1940 @item all_opacity
1941 Set blend opacity for specific pixel component or all pixel components in case
1942 of @var{all_opacity}. Only used in combination with pixel component blend modes.
1943
1944 @item c0_expr
1945 @item c1_expr
1946 @item c2_expr
1947 @item c3_expr
1948 @item all_expr
1949 Set blend expression for specific pixel component or all pixel components in case
1950 of @var{all_expr}. Note that related mode options will be ignored if those are set.
1951
1952 The expressions can use the following variables:
1953
1954 @table @option
1955 @item N
1956 The sequential number of the filtered frame, starting from @code{0}.
1957
1958 @item X
1959 @item Y
1960 the coordinates of the current sample
1961
1962 @item W
1963 @item H
1964 the width and height of currently filtered plane
1965
1966 @item SW
1967 @item SH
1968 Width and height scale depending on the currently filtered plane. It is the
1969 ratio between the corresponding luma plane number of pixels and the current
1970 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
1971 @code{0.5,0.5} for chroma planes.
1972
1973 @item T
1974 Time of the current frame, expressed in seconds.
1975
1976 @item TOP, A
1977 Value of pixel component at current location for first video frame (top layer).
1978
1979 @item BOTTOM, B
1980 Value of pixel component at current location for second video frame (bottom layer).
1981 @end table
1982 @end table
1983
1984 @subsection Examples
1985
1986 @itemize
1987 @item
1988 Apply transition from bottom layer to top layer in first 10 seconds:
1989 @example
1990 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
1991 @end example
1992
1993 @item
1994 Apply 1x1 checkerboard effect:
1995 @example
1996 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
1997 @end example
1998 @end itemize
1999
2000 @section boxblur
2001
2002 Apply boxblur algorithm to the input video.
2003
2004 The filter accepts the following options:
2005
2006 @table @option
2007
2008 @item luma_radius, lr
2009 @item luma_power, lp
2010 @item chroma_radius, cr
2011 @item chroma_power, cp
2012 @item alpha_radius, ar
2013 @item alpha_power, ap
2014
2015 @end table
2016
2017 A description of the accepted options follows.
2018
2019 @table @option
2020 @item luma_radius, lr
2021 @item chroma_radius, cr
2022 @item alpha_radius, ar
2023 Set an expression for the box radius in pixels used for blurring the
2024 corresponding input plane.
2025
2026 The radius value must be a non-negative number, and must not be
2027 greater than the value of the expression @code{min(w,h)/2} for the
2028 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
2029 planes.
2030
2031 Default value for @option{luma_radius} is "2". If not specified,
2032 @option{chroma_radius} and @option{alpha_radius} default to the
2033 corresponding value set for @option{luma_radius}.
2034
2035 The expressions can contain the following constants:
2036 @table @option
2037 @item w, h
2038 the input width and height in pixels
2039
2040 @item cw, ch
2041 the input chroma image width and height in pixels
2042
2043 @item hsub, vsub
2044 horizontal and vertical chroma subsample values. For example for the
2045 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2046 @end table
2047
2048 @item luma_power, lp
2049 @item chroma_power, cp
2050 @item alpha_power, ap
2051 Specify how many times the boxblur filter is applied to the
2052 corresponding plane.
2053
2054 Default value for @option{luma_power} is 2. If not specified,
2055 @option{chroma_power} and @option{alpha_power} default to the
2056 corresponding value set for @option{luma_power}.
2057
2058 A value of 0 will disable the effect.
2059 @end table
2060
2061 @subsection Examples
2062
2063 @itemize
2064 @item
2065 Apply a boxblur filter with luma, chroma, and alpha radius
2066 set to 2:
2067 @example
2068 boxblur=luma_radius=2:luma_power=1
2069 boxblur=2:1
2070 @end example
2071
2072 @item
2073 Set luma radius to 2, alpha and chroma radius to 0:
2074 @example
2075 boxblur=2:1:cr=0:ar=0
2076 @end example
2077
2078 @item
2079 Set luma and chroma radius to a fraction of the video dimension:
2080 @example
2081 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
2082 @end example
2083 @end itemize
2084
2085 @section colormatrix
2086
2087 Convert color matrix.
2088
2089 The filter accepts the following options:
2090
2091 @table @option
2092 @item src
2093 @item dst
2094 Specify the source and destination color matrix. Both values must be
2095 specified.
2096
2097 The accepted values are:
2098 @table @samp
2099 @item bt709
2100 BT.709
2101
2102 @item bt601
2103 BT.601
2104
2105 @item smpte240m
2106 SMPTE-240M
2107
2108 @item fcc
2109 FCC
2110 @end table
2111 @end table
2112
2113 For example to convert from BT.601 to SMPTE-240M, use the command:
2114 @example
2115 colormatrix=bt601:smpte240m
2116 @end example
2117
2118 @section copy
2119
2120 Copy the input source unchanged to the output. Mainly useful for
2121 testing purposes.
2122
2123 @section crop
2124
2125 Crop the input video to given dimensions.
2126
2127 The filter accepts the following options:
2128
2129 @table @option
2130 @item w, out_w
2131 Width of the output video. It defaults to @code{iw}.
2132 This expression is evaluated only once during the filter
2133 configuration.
2134
2135 @item h, out_h
2136 Height of the output video. It defaults to @code{ih}.
2137 This expression is evaluated only once during the filter
2138 configuration.
2139
2140 @item x
2141 Horizontal position, in the input video, of the left edge of the output video.
2142 It defaults to @code{(in_w-out_w)/2}.
2143 This expression is evaluated per-frame.
2144
2145 @item y
2146 Vertical position, in the input video, of the top edge of the output video.
2147 It defaults to @code{(in_h-out_h)/2}.
2148 This expression is evaluated per-frame.
2149
2150 @item keep_aspect
2151 If set to 1 will force the output display aspect ratio
2152 to be the same of the input, by changing the output sample aspect
2153 ratio. It defaults to 0.
2154 @end table
2155
2156 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
2157 expressions containing the following constants:
2158
2159 @table @option
2160 @item x, y
2161 the computed values for @var{x} and @var{y}. They are evaluated for
2162 each new frame.
2163
2164 @item in_w, in_h
2165 the input width and height
2166
2167 @item iw, ih
2168 same as @var{in_w} and @var{in_h}
2169
2170 @item out_w, out_h
2171 the output (cropped) width and height
2172
2173 @item ow, oh
2174 same as @var{out_w} and @var{out_h}
2175
2176 @item a
2177 same as @var{iw} / @var{ih}
2178
2179 @item sar
2180 input sample aspect ratio
2181
2182 @item dar
2183 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
2184
2185 @item hsub, vsub
2186 horizontal and vertical chroma subsample values. For example for the
2187 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2188
2189 @item n
2190 the number of input frame, starting from 0
2191
2192 @item pos
2193 the position in the file of the input frame, NAN if unknown
2194
2195 @item t
2196 timestamp expressed in seconds, NAN if the input timestamp is unknown
2197
2198 @end table
2199
2200 The expression for @var{out_w} may depend on the value of @var{out_h},
2201 and the expression for @var{out_h} may depend on @var{out_w}, but they
2202 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
2203 evaluated after @var{out_w} and @var{out_h}.
2204
2205 The @var{x} and @var{y} parameters specify the expressions for the
2206 position of the top-left corner of the output (non-cropped) area. They
2207 are evaluated for each frame. If the evaluated value is not valid, it
2208 is approximated to the nearest valid value.
2209
2210 The expression for @var{x} may depend on @var{y}, and the expression
2211 for @var{y} may depend on @var{x}.
2212
2213 @subsection Examples
2214
2215 @itemize
2216 @item
2217 Crop area with size 100x100 at position (12,34).
2218 @example
2219 crop=100:100:12:34
2220 @end example
2221
2222 Using named options, the example above becomes:
2223 @example
2224 crop=w=100:h=100:x=12:y=34
2225 @end example
2226
2227 @item
2228 Crop the central input area with size 100x100:
2229 @example
2230 crop=100:100
2231 @end example
2232
2233 @item
2234 Crop the central input area with size 2/3 of the input video:
2235 @example
2236 crop=2/3*in_w:2/3*in_h
2237 @end example
2238
2239 @item
2240 Crop the input video central square:
2241 @example
2242 crop=out_w=in_h
2243 crop=in_h
2244 @end example
2245
2246 @item
2247 Delimit the rectangle with the top-left corner placed at position
2248 100:100 and the right-bottom corner corresponding to the right-bottom
2249 corner of the input image:
2250 @example
2251 crop=in_w-100:in_h-100:100:100
2252 @end example
2253
2254 @item
2255 Crop 10 pixels from the left and right borders, and 20 pixels from
2256 the top and bottom borders
2257 @example
2258 crop=in_w-2*10:in_h-2*20
2259 @end example
2260
2261 @item
2262 Keep only the bottom right quarter of the input image:
2263 @example
2264 crop=in_w/2:in_h/2:in_w/2:in_h/2
2265 @end example
2266
2267 @item
2268 Crop height for getting Greek harmony:
2269 @example
2270 crop=in_w:1/PHI*in_w
2271 @end example
2272
2273 @item
2274 Appply trembling effect:
2275 @example
2276 crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
2277 @end example
2278
2279 @item
2280 Apply erratic camera effect depending on timestamp:
2281 @example
2282 crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)"
2283 @end example
2284
2285 @item
2286 Set x depending on the value of y:
2287 @example
2288 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
2289 @end example
2290 @end itemize
2291
2292 @section cropdetect
2293
2294 Auto-detect crop size.
2295
2296 Calculate necessary cropping parameters and prints the recommended
2297 parameters through the logging system. The detected dimensions
2298 correspond to the non-black area of the input video.
2299
2300 The filter accepts the following options:
2301
2302 @table @option
2303
2304 @item limit
2305 Set higher black value threshold, which can be optionally specified
2306 from nothing (0) to everything (255). An intensity value greater
2307 to the set value is considered non-black. Default value is 24.
2308
2309 @item round
2310 Set the value for which the width/height should be divisible by. The
2311 offset is automatically adjusted to center the video. Use 2 to get
2312 only even dimensions (needed for 4:2:2 video). 16 is best when
2313 encoding to most video codecs. Default value is 16.
2314
2315 @item reset_count, reset
2316 Set the counter that determines after how many frames cropdetect will
2317 reset the previously detected largest video area and start over to
2318 detect the current optimal crop area. Default value is 0.
2319
2320 This can be useful when channel logos distort the video area. 0
2321 indicates never reset and return the largest area encountered during
2322 playback.
2323 @end table
2324
2325 @section curves
2326
2327 Apply color adjustments using curves.
2328
2329 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
2330 component (red, green and blue) has its values defined by @var{N} key points
2331 tied from each other using a smooth curve. The x-axis represents the pixel
2332 values from the input frame, and the y-axis the new pixel values to be set for
2333 the output frame.
2334
2335 By default, a component curve is defined by the two points @var{(0;0)} and
2336 @var{(1;1)}. This creates a straight line where each original pixel value is
2337 "adjusted" to its own value, which means no change to the image.
2338
2339 The filter allows you to redefine these two points and add some more. A new
2340 curve (using a natural cubic spline interpolation) will be define to pass
2341 smoothly through all these new coordinates. The new defined points needs to be
2342 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
2343 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
2344 the vector spaces, the values will be clipped accordingly.
2345
2346 If there is no key point defined in @code{x=0}, the filter will automatically
2347 insert a @var{(0;0)} point. In the same way, if there is no key point defined
2348 in @code{x=1}, the filter will automatically insert a @var{(1;1)} point.
2349
2350 The filter accepts the following options:
2351
2352 @table @option
2353 @item preset
2354 Select one of the available color presets. This option can be used in addition
2355 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
2356 options takes priority on the preset values.
2357 Available presets are:
2358 @table @samp
2359 @item none
2360 @item color_negative
2361 @item cross_process
2362 @item darker
2363 @item increase_contrast
2364 @item lighter
2365 @item linear_contrast
2366 @item medium_contrast
2367 @item negative
2368 @item strong_contrast
2369 @item vintage
2370 @end table
2371 Default is @code{none}.
2372 @item red, r
2373 Set the key points for the red component.
2374 @item green, g
2375 Set the key points for the green component.
2376 @item blue, b
2377 Set the key points for the blue component.
2378 @item all
2379 Set the key points for all components.
2380 Can be used in addition to the other key points component
2381 options. In this case, the unset component(s) will fallback on this
2382 @option{all} setting.
2383 @end table
2384
2385 To avoid some filtergraph syntax conflicts, each key points list need to be
2386 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
2387
2388 @subsection Examples
2389
2390 @itemize
2391 @item
2392 Increase slightly the middle level of blue:
2393 @example
2394 curves=blue='0.5/0.58'
2395 @end example
2396
2397 @item
2398 Vintage effect:
2399 @example
2400 curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
2401 @end example
2402 Here we obtain the following coordinates for each components:
2403 @table @var
2404 @item red
2405 @code{(0;0.11) (0.42;0.51) (1;0.95)}
2406 @item green
2407 @code{(0;0) (0.50;0.48) (1;1)}
2408 @item blue
2409 @code{(0;0.22) (0.49;0.44) (1;0.80)}
2410 @end table
2411
2412 @item
2413 The previous example can also be achieved with the associated built-in preset:
2414 @example
2415 curves=preset=vintage
2416 @end example
2417
2418 @item
2419 Or simply:
2420 @example
2421 curves=vintage
2422 @end example
2423 @end itemize
2424
2425 @section decimate
2426
2427 Drop frames that do not differ greatly from the previous frame in
2428 order to reduce frame rate.
2429
2430 The main use of this filter is for very-low-bitrate encoding
2431 (e.g. streaming over dialup modem), but it could in theory be used for
2432 fixing movies that were inverse-telecined incorrectly.
2433
2434 A description of the accepted options follows.
2435
2436 @table @option
2437 @item max
2438 Set the maximum number of consecutive frames which can be dropped (if
2439 positive), or the minimum interval between dropped frames (if
2440 negative). If the value is 0, the frame is dropped unregarding the
2441 number of previous sequentially dropped frames.
2442
2443 Default value is 0.
2444
2445 @item hi
2446 @item lo
2447 @item frac
2448 Set the dropping threshold values.
2449
2450 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
2451 represent actual pixel value differences, so a threshold of 64
2452 corresponds to 1 unit of difference for each pixel, or the same spread
2453 out differently over the block.
2454
2455 A frame is a candidate for dropping if no 8x8 blocks differ by more
2456 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
2457 meaning the whole image) differ by more than a threshold of @option{lo}.
2458
2459 Default value for @option{hi} is 64*12, default value for @option{lo} is
2460 64*5, and default value for @option{frac} is 0.33.
2461 @end table
2462
2463 @section delogo
2464
2465 Suppress a TV station logo by a simple interpolation of the surrounding
2466 pixels. Just set a rectangle covering the logo and watch it disappear
2467 (and sometimes something even uglier appear - your mileage may vary).
2468
2469 This filter accepts the following options:
2470 @table @option
2471
2472 @item x, y
2473 Specify the top left corner coordinates of the logo. They must be
2474 specified.
2475
2476 @item w, h
2477 Specify the width and height of the logo to clear. They must be
2478 specified.
2479
2480 @item band, t
2481 Specify the thickness of the fuzzy edge of the rectangle (added to
2482 @var{w} and @var{h}). The default value is 4.
2483
2484 @item show
2485 When set to 1, a green rectangle is drawn on the screen to simplify
2486 finding the right @var{x}, @var{y}, @var{w}, @var{h} parameters, and
2487 @var{band} is set to 4. The default value is 0.
2488
2489 @end table
2490
2491 @subsection Examples
2492
2493 @itemize
2494 @item
2495 Set a rectangle covering the area with top left corner coordinates 0,0
2496 and size 100x77, setting a band of size 10:
2497 @example
2498 delogo=x=0:y=0:w=100:h=77:band=10
2499 @end example
2500
2501 @end itemize
2502
2503 @section deshake
2504
2505 Attempt to fix small changes in horizontal and/or vertical shift. This
2506 filter helps remove camera shake from hand-holding a camera, bumping a
2507 tripod, moving on a vehicle, etc.
2508
2509 The filter accepts the following options:
2510
2511 @table @option
2512
2513 @item x
2514 @item y
2515 @item w
2516 @item h
2517 Specify a rectangular area where to limit the search for motion
2518 vectors.
2519 If desired the search for motion vectors can be limited to a
2520 rectangular area of the frame defined by its top left corner, width
2521 and height. These parameters have the same meaning as the drawbox
2522 filter which can be used to visualise the position of the bounding
2523 box.
2524
2525 This is useful when simultaneous movement of subjects within the frame
2526 might be confused for camera motion by the motion vector search.
2527
2528 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
2529 then the full frame is used. This allows later options to be set
2530 without specifying the bounding box for the motion vector search.
2531
2532 Default - search the whole frame.
2533
2534 @item rx
2535 @item ry
2536 Specify the maximum extent of movement in x and y directions in the
2537 range 0-64 pixels. Default 16.
2538
2539 @item edge
2540 Specify how to generate pixels to fill blanks at the edge of the
2541 frame. Available values are:
2542 @table @samp
2543 @item blank, 0
2544 Fill zeroes at blank locations
2545 @item original, 1
2546 Original image at blank locations
2547 @item clamp, 2
2548 Extruded edge value at blank locations
2549 @item mirror, 3
2550 Mirrored edge at blank locations
2551 @end table
2552 Default value is @samp{mirror}.
2553
2554 @item blocksize
2555 Specify the blocksize to use for motion search. Range 4-128 pixels,
2556 default 8.
2557
2558 @item contrast
2559 Specify the contrast threshold for blocks. Only blocks with more than
2560 the specified contrast (difference between darkest and lightest
2561 pixels) will be considered. Range 1-255, default 125.
2562
2563 @item search
2564 Specify the search strategy. Available values are:
2565 @table @samp
2566 @item exhaustive, 0
2567 Set exhaustive search
2568 @item less, 1
2569 Set less exhaustive search.
2570 @end table
2571 Default value is @samp{exhaustive}.
2572
2573 @item filename
2574 If set then a detailed log of the motion search is written to the
2575 specified file.
2576
2577 @item opencl
2578 If set to 1, specify using OpenCL capabilities, only available if
2579 FFmpeg was configured with @code{--enable-opencl}. Default value is 0.
2580
2581 @end table
2582
2583 @section drawbox
2584
2585 Draw a colored box on the input image.
2586
2587 This filter accepts the following options:
2588
2589 @table @option
2590 @item x, y
2591 Specify the top left corner coordinates of the box. Default to 0.
2592
2593 @item width, w
2594 @item height, h
2595 Specify the width and height of the box, if 0 they are interpreted as
2596 the input width and height. Default to 0.
2597
2598 @item color, c
2599 Specify the color of the box to write, it can be the name of a color
2600 (case insensitive match) or a 0xRRGGBB[AA] sequence. If the special
2601 value @code{invert} is used, the box edge color is the same as the
2602 video with inverted luma.
2603
2604 @item thickness, t
2605 Set the thickness of the box edge. Default value is @code{4}.
2606 @end table
2607
2608 @subsection Examples
2609
2610 @itemize
2611 @item
2612 Draw a black box around the edge of the input image:
2613 @example
2614 drawbox
2615 @end example
2616
2617 @item
2618 Draw a box with color red and an opacity of 50%:
2619 @example
2620 drawbox=10:20:200:60:red@@0.5
2621 @end example
2622
2623 The previous example can be specified as:
2624 @example
2625 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
2626 @end example
2627
2628 @item
2629 Fill the box with pink color:
2630 @example
2631 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=max
2632 @end example
2633 @end itemize
2634
2635 @anchor{drawtext}
2636 @section drawtext
2637
2638 Draw text string or text from specified file on top of video using the
2639 libfreetype library.
2640
2641 To enable compilation of this filter you need to configure FFmpeg with
2642 @code{--enable-libfreetype}.
2643
2644 @subsection Syntax
2645
2646 The description of the accepted parameters follows.
2647
2648 @table @option
2649
2650 @item box
2651 Used to draw a box around text using background color.
2652 Value should be either 1 (enable) or 0 (disable).
2653 The default value of @var{box} is 0.
2654
2655 @item boxcolor
2656 The color to be used for drawing box around text.
2657 Either a string (e.g. "yellow") or in 0xRRGGBB[AA] format
2658 (e.g. "0xff00ff"), possibly followed by an alpha specifier.
2659 The default value of @var{boxcolor} is "white".
2660
2661 @item draw
2662 Set an expression which specifies if the text should be drawn. If the
2663 expression evaluates to 0, the text is not drawn. This is useful for
2664 specifying that the text should be drawn only when specific conditions
2665 are met.
2666
2667 Default value is "1".
2668
2669 See below for the list of accepted constants and functions.
2670
2671 @item expansion
2672 Select how the @var{text} is expanded. Can be either @code{none},
2673 @code{strftime} (deprecated) or
2674 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
2675 below for details.
2676
2677 @item fix_bounds
2678 If true, check and fix text coords to avoid clipping.
2679
2680 @item fontcolor
2681 The color to be used for drawing fonts.
2682 Either a string (e.g. "red") or in 0xRRGGBB[AA] format
2683 (e.g. "0xff000033"), possibly followed by an alpha specifier.
2684 The default value of @var{fontcolor} is "black".
2685
2686 @item fontfile
2687 The font file to be used for drawing text. Path must be included.
2688 This parameter is mandatory.
2689
2690 @item fontsize
2691 The font size to be used for drawing text.
2692 The default value of @var{fontsize} is 16.
2693
2694 @item ft_load_flags
2695 Flags to be used for loading the fonts.
2696
2697 The flags map the corresponding flags supported by libfreetype, and are
2698 a combination of the following values:
2699 @table @var
2700 @item default
2701 @item no_scale
2702 @item no_hinting
2703 @item render
2704 @item no_bitmap
2705 @item vertical_layout
2706 @item force_autohint
2707 @item crop_bitmap
2708 @item pedantic
2709 @item ignore_global_advance_width
2710 @item no_recurse
2711 @item ignore_transform
2712 @item monochrome
2713 @item linear_design
2714 @item no_autohint
2715 @item end table
2716 @end table
2717
2718 Default value is "render".
2719
2720 For more information consult the documentation for the FT_LOAD_*
2721 libfreetype flags.
2722
2723 @item shadowcolor
2724 The color to be used for drawing a shadow behind the drawn text.  It
2725 can be a color name (e.g. "yellow") or a string in the 0xRRGGBB[AA]
2726 form (e.g. "0xff00ff"), possibly followed by an alpha specifier.
2727 The default value of @var{shadowcolor} is "black".
2728
2729 @item shadowx, shadowy
2730 The x and y offsets for the text shadow position with respect to the
2731 position of the text. They can be either positive or negative
2732 values. Default value for both is "0".
2733
2734 @item tabsize
2735 The size in number of spaces to use for rendering the tab.
2736 Default value is 4.
2737
2738 @item timecode
2739 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
2740 format. It can be used with or without text parameter. @var{timecode_rate}
2741 option must be specified.
2742
2743 @item timecode_rate, rate, r
2744 Set the timecode frame rate (timecode only).
2745
2746 @item text
2747 The text string to be drawn. The text must be a sequence of UTF-8
2748 encoded characters.
2749 This parameter is mandatory if no file is specified with the parameter
2750 @var{textfile}.
2751
2752 @item textfile
2753 A text file containing text to be drawn. The text must be a sequence
2754 of UTF-8 encoded characters.
2755
2756 This parameter is mandatory if no text string is specified with the
2757 parameter @var{text}.
2758
2759 If both @var{text} and @var{textfile} are specified, an error is thrown.
2760
2761 @item reload
2762 If set to 1, the @var{textfile} will be reloaded before each frame.
2763 Be sure to update it atomically, or it may be read partially, or even fail.
2764
2765 @item x, y
2766 The expressions which specify the offsets where text will be drawn
2767 within the video frame. They are relative to the top/left border of the
2768 output image.
2769
2770 The default value of @var{x} and @var{y} is "0".
2771
2772 See below for the list of accepted constants and functions.
2773 @end table
2774
2775 The parameters for @var{x} and @var{y} are expressions containing the
2776 following constants and functions:
2777
2778 @table @option
2779 @item dar
2780 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
2781
2782 @item hsub, vsub
2783 horizontal and vertical chroma subsample values. For example for the
2784 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
2785
2786 @item line_h, lh
2787 the height of each text line
2788
2789 @item main_h, h, H
2790 the input height
2791
2792 @item main_w, w, W
2793 the input width
2794
2795 @item max_glyph_a, ascent
2796 the maximum distance from the baseline to the highest/upper grid
2797 coordinate used to place a glyph outline point, for all the rendered
2798 glyphs.
2799 It is a positive value, due to the grid's orientation with the Y axis
2800 upwards.
2801
2802 @item max_glyph_d, descent
2803 the maximum distance from the baseline to the lowest grid coordinate
2804 used to place a glyph outline point, for all the rendered glyphs.
2805 This is a negative value, due to the grid's orientation, with the Y axis
2806 upwards.
2807
2808 @item max_glyph_h
2809 maximum glyph height, that is the maximum height for all the glyphs
2810 contained in the rendered text, it is equivalent to @var{ascent} -
2811 @var{descent}.
2812
2813 @item max_glyph_w
2814 maximum glyph width, that is the maximum width for all the glyphs
2815 contained in the rendered text
2816
2817 @item n
2818 the number of input frame, starting from 0
2819
2820 @item rand(min, max)
2821 return a random number included between @var{min} and @var{max}
2822
2823 @item sar
2824 input sample aspect ratio
2825
2826 @item t
2827 timestamp expressed in seconds, NAN if the input timestamp is unknown
2828
2829 @item text_h, th
2830 the height of the rendered text
2831
2832 @item text_w, tw
2833 the width of the rendered text
2834
2835 @item x, y
2836 the x and y offset coordinates where the text is drawn.
2837
2838 These parameters allow the @var{x} and @var{y} expressions to refer
2839 each other, so you can for example specify @code{y=x/dar}.
2840 @end table
2841
2842 If libavfilter was built with @code{--enable-fontconfig}, then
2843 @option{fontfile} can be a fontconfig pattern or omitted.
2844
2845 @anchor{drawtext_expansion}
2846 @subsection Text expansion
2847
2848 If @option{expansion} is set to @code{strftime},
2849 the filter recognizes strftime() sequences in the provided text and
2850 expands them accordingly. Check the documentation of strftime(). This
2851 feature is deprecated.
2852
2853 If @option{expansion} is set to @code{none}, the text is printed verbatim.
2854
2855 If @option{expansion} is set to @code{normal} (which is the default),
2856 the following expansion mechanism is used.
2857
2858 The backslash character '\', followed by any character, always expands to
2859 the second character.
2860
2861 Sequence of the form @code{%@{...@}} are expanded. The text between the
2862 braces is a function name, possibly followed by arguments separated by ':'.
2863 If the arguments contain special characters or delimiters (':' or '@}'),
2864 they should be escaped.
2865
2866 Note that they probably must also be escaped as the value for the
2867 @option{text} option in the filter argument string and as the filter
2868 argument in the filtergraph description, and possibly also for the shell,
2869 that makes up to four levels of escaping; using a text file avoids these
2870 problems.
2871
2872 The following functions are available:
2873
2874 @table @command
2875
2876 @item expr, e
2877 The expression evaluation result.
2878
2879 It must take one argument specifying the expression to be evaluated,
2880 which accepts the same constants and functions as the @var{x} and
2881 @var{y} values. Note that not all constants should be used, for
2882 example the text size is not known when evaluating the expression, so
2883 the constants @var{text_w} and @var{text_h} will have an undefined
2884 value.
2885
2886 @item gmtime
2887 The time at which the filter is running, expressed in UTC.
2888 It can accept an argument: a strftime() format string.
2889
2890 @item localtime
2891 The time at which the filter is running, expressed in the local time zone.
2892 It can accept an argument: a strftime() format string.
2893
2894 @item n, frame_num
2895 The frame number, starting from 0.
2896
2897 @item pts
2898 The timestamp of the current frame, in seconds, with microsecond accuracy.
2899
2900 @end table
2901
2902 @subsection Examples
2903
2904 @itemize
2905 @item
2906 Draw "Test Text" with font FreeSerif, using the default values for the
2907 optional parameters.
2908
2909 @example
2910 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
2911 @end example
2912
2913 @item
2914 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
2915 and y=50 (counting from the top-left corner of the screen), text is
2916 yellow with a red box around it. Both the text and the box have an
2917 opacity of 20%.
2918
2919 @example
2920 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
2921           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
2922 @end example
2923
2924 Note that the double quotes are not necessary if spaces are not used
2925 within the parameter list.
2926
2927 @item
2928 Show the text at the center of the video frame:
2929 @example
2930 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2"
2931 @end example
2932
2933 @item
2934 Show a text line sliding from right to left in the last row of the video
2935 frame. The file @file{LONG_LINE} is assumed to contain a single line
2936 with no newlines.
2937 @example
2938 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
2939 @end example
2940
2941 @item
2942 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
2943 @example
2944 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
2945 @end example
2946
2947 @item
2948 Draw a single green letter "g", at the center of the input video.
2949 The glyph baseline is placed at half screen height.
2950 @example
2951 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
2952 @end example
2953
2954 @item
2955 Show text for 1 second every 3 seconds:
2956 @example
2957 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:draw=lt(mod(t\,3)\,1):text='blink'"
2958 @end example
2959
2960 @item
2961 Use fontconfig to set the font. Note that the colons need to be escaped.
2962 @example
2963 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
2964 @end example
2965
2966 @item
2967 Print the date of a real-time encoding (see strftime(3)):
2968 @example
2969 drawtext='fontfile=FreeSans.ttf:text=%@{localtime:%a %b %d %Y@}'
2970 @end example
2971
2972 @end itemize
2973
2974 For more information about libfreetype, check:
2975 @url{http://www.freetype.org/}.
2976
2977 For more information about fontconfig, check:
2978 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
2979
2980 @section edgedetect
2981
2982 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
2983
2984 The filter accepts the following options:
2985
2986 @table @option
2987 @item low, high
2988 Set low and high threshold values used by the Canny thresholding
2989 algorithm.
2990
2991 The high threshold selects the "strong" edge pixels, which are then
2992 connected through 8-connectivity with the "weak" edge pixels selected
2993 by the low threshold.
2994
2995 @var{low} and @var{high} threshold values must be choosen in the range
2996 [0,1], and @var{low} should be lesser or equal to @var{high}.
2997
2998 Default value for @var{low} is @code{20/255}, and default value for @var{high}
2999 is @code{50/255}.
3000 @end table
3001
3002 Example:
3003 @example
3004 edgedetect=low=0.1:high=0.4
3005 @end example
3006
3007 @section fade
3008
3009 Apply fade-in/out effect to input video.
3010
3011 This filter accepts the following options:
3012
3013 @table @option
3014 @item type, t
3015 The effect type -- can be either "in" for fade-in, or "out" for a fade-out
3016 effect.
3017 Default is @code{in}.
3018
3019 @item start_frame, s
3020 Specify the number of the start frame for starting to apply the fade
3021 effect. Default is 0.
3022
3023 @item nb_frames, n
3024 The number of frames for which the fade effect has to last. At the end of the
3025 fade-in effect the output video will have the same intensity as the input video,
3026 at the end of the fade-out transition the output video will be completely black.
3027 Default is 25.
3028
3029 @item alpha
3030 If set to 1, fade only alpha channel, if one exists on the input.
3031 Default value is 0.
3032 @end table
3033
3034 @subsection Examples
3035
3036 @itemize
3037 @item
3038 Fade in first 30 frames of video:
3039 @example
3040 fade=in:0:30
3041 @end example
3042
3043 The command above is equivalent to:
3044 @example
3045 fade=t=in:s=0:n=30
3046 @end example
3047
3048 @item
3049 Fade out last 45 frames of a 200-frame video:
3050 @example
3051 fade=out:155:45
3052 fade=type=out:start_frame=155:nb_frames=45
3053 @end example
3054
3055 @item
3056 Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
3057 @example
3058 fade=in:0:25, fade=out:975:25
3059 @end example
3060
3061 @item
3062 Make first 5 frames black, then fade in from frame 5-24:
3063 @example
3064 fade=in:5:20
3065 @end example
3066
3067 @item
3068 Fade in alpha over first 25 frames of video:
3069 @example
3070 fade=in:0:25:alpha=1
3071 @end example
3072 @end itemize
3073
3074 @section field
3075
3076 Extract a single field from an interlaced image using stride
3077 arithmetic to avoid wasting CPU time. The output frames are marked as
3078 non-interlaced.
3079
3080 The filter accepts the following options:
3081
3082 @table @option
3083 @item type
3084 Specify whether to extract the top (if the value is @code{0} or
3085 @code{top}) or the bottom field (if the value is @code{1} or
3086 @code{bottom}).
3087 @end table
3088
3089 @section fieldorder
3090
3091 Transform the field order of the input video.
3092
3093 This filter accepts the following options:
3094
3095 @table @option
3096
3097 @item order
3098 Output field order. Valid values are @var{tff} for top field first or @var{bff}
3099 for bottom field first.
3100 @end table
3101
3102 Default value is @samp{tff}.
3103
3104 Transformation is achieved by shifting the picture content up or down
3105 by one line, and filling the remaining line with appropriate picture content.
3106 This method is consistent with most broadcast field order converters.
3107
3108 If the input video is not flagged as being interlaced, or it is already
3109 flagged as being of the required output field order then this filter does
3110 not alter the incoming video.
3111
3112 This filter is very useful when converting to or from PAL DV material,
3113 which is bottom field first.
3114
3115 For example:
3116 @example
3117 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
3118 @end example
3119
3120 @section fifo
3121
3122 Buffer input images and send them when they are requested.
3123
3124 This filter is mainly useful when auto-inserted by the libavfilter
3125 framework.
3126
3127 The filter does not take parameters.
3128
3129 @anchor{format}
3130 @section format
3131
3132 Convert the input video to one of the specified pixel formats.
3133 Libavfilter will try to pick one that is supported for the input to
3134 the next filter.
3135
3136 This filter accepts the following parameters:
3137 @table @option
3138
3139 @item pix_fmts
3140 A '|'-separated list of pixel format names, for example
3141 "pix_fmts=yuv420p|monow|rgb24".
3142
3143 @end table
3144
3145 @subsection Examples
3146
3147 @itemize
3148 @item
3149 Convert the input video to the format @var{yuv420p}
3150 @example
3151 format=pix_fmts=yuv420p
3152 @end example
3153
3154 Convert the input video to any of the formats in the list
3155 @example
3156 format=pix_fmts=yuv420p|yuv444p|yuv410p
3157 @end example
3158 @end itemize
3159
3160 @section fps
3161
3162 Convert the video to specified constant frame rate by duplicating or dropping
3163 frames as necessary.
3164
3165 This filter accepts the following named parameters:
3166 @table @option
3167
3168 @item fps
3169 Desired output frame rate. The default is @code{25}.
3170
3171 @item round
3172 Rounding method.
3173
3174 Possible values are:
3175 @table @option
3176 @item zero
3177 zero round towards 0
3178 @item inf
3179 round away from 0
3180 @item down
3181 round towards -infinity
3182 @item up
3183 round towards +infinity
3184 @item near
3185 round to nearest
3186 @end table
3187 The default is @code{near}.
3188
3189 @end table
3190
3191 Alternatively, the options can be specified as a flat string:
3192 @var{fps}[:@var{round}].
3193
3194 See also the @ref{setpts} filter.
3195
3196 @section framestep
3197
3198 Select one frame every N-th frame.
3199
3200 This filter accepts the following option:
3201 @table @option
3202 @item step
3203 Select frame after every @code{step} frames.
3204 Allowed values are positive integers higher than 0. Default value is @code{1}.
3205 @end table
3206
3207 @anchor{frei0r}
3208 @section frei0r
3209
3210 Apply a frei0r effect to the input video.
3211
3212 To enable compilation of this filter you need to install the frei0r
3213 header and configure FFmpeg with @code{--enable-frei0r}.
3214
3215 This filter accepts the following options:
3216
3217 @table @option
3218
3219 @item filter_name
3220 The name to the frei0r effect to load. If the environment variable
3221 @env{FREI0R_PATH} is defined, the frei0r effect is searched in each one of the
3222 directories specified by the colon separated list in @env{FREIOR_PATH},
3223 otherwise in the standard frei0r paths, which are in this order:
3224 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
3225 @file{/usr/lib/frei0r-1/}.
3226
3227 @item filter_params
3228 A '|'-separated list of parameters to pass to the frei0r effect.
3229
3230 @end table
3231
3232 A frei0r effect parameter can be a boolean (whose values are specified
3233 with "y" and "n"), a double, a color (specified by the syntax
3234 @var{R}/@var{G}/@var{B}, @var{R}, @var{G}, and @var{B} being float
3235 numbers from 0.0 to 1.0) or by an @code{av_parse_color()} color
3236 description), a position (specified by the syntax @var{X}/@var{Y},
3237 @var{X} and @var{Y} being float numbers) and a string.
3238
3239 The number and kind of parameters depend on the loaded effect. If an
3240 effect parameter is not specified the default value is set.
3241
3242 @subsection Examples
3243
3244 @itemize
3245 @item
3246 Apply the distort0r effect, set the first two double parameters:
3247 @example
3248 frei0r=filter_name=distort0r:filter_params=0.5|0.01
3249 @end example
3250
3251 @item
3252 Apply the colordistance effect, take a color as first parameter:
3253 @example
3254 frei0r=colordistance:0.2/0.3/0.4
3255 frei0r=colordistance:violet
3256 frei0r=colordistance:0x112233
3257 @end example
3258
3259 @item
3260 Apply the perspective effect, specify the top left and top right image
3261 positions:
3262 @example
3263 frei0r=perspective:0.2/0.2|0.8/0.2
3264 @end example
3265 @end itemize
3266
3267 For more information see:
3268 @url{http://frei0r.dyne.org}
3269
3270 @section geq
3271
3272 The filter accepts the following options:
3273
3274 @table @option
3275 @item lum_expr
3276 the luminance expression
3277 @item cb_expr
3278 the chrominance blue expression
3279 @item cr_expr
3280 the chrominance red expression
3281 @item alpha_expr
3282 the alpha expression
3283 @end table
3284
3285 If one of the chrominance expression is not defined, it falls back on the other
3286 one. If no alpha expression is specified it will evaluate to opaque value.
3287 If none of chrominance expressions are
3288 specified, they will evaluate the luminance expression.
3289
3290 The expressions can use the following variables and functions:
3291
3292 @table @option
3293 @item N
3294 The sequential number of the filtered frame, starting from @code{0}.
3295
3296 @item X
3297 @item Y
3298 The coordinates of the current sample.
3299
3300 @item W
3301 @item H
3302 The width and height of the image.
3303
3304 @item SW
3305 @item SH
3306 Width and height scale depending on the currently filtered plane. It is the
3307 ratio between the corresponding luma plane number of pixels and the current
3308 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
3309 @code{0.5,0.5} for chroma planes.
3310
3311 @item T
3312 Time of the current frame, expressed in seconds.
3313
3314 @item p(x, y)
3315 Return the value of the pixel at location (@var{x},@var{y}) of the current
3316 plane.
3317
3318 @item lum(x, y)
3319 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
3320 plane.
3321
3322 @item cb(x, y)
3323 Return the value of the pixel at location (@var{x},@var{y}) of the
3324 blue-difference chroma plane. Returns 0 if there is no such plane.
3325
3326 @item cr(x, y)
3327 Return the value of the pixel at location (@var{x},@var{y}) of the
3328 red-difference chroma plane. Returns 0 if there is no such plane.
3329
3330 @item alpha(x, y)
3331 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
3332 plane. Returns 0 if there is no such plane.
3333 @end table
3334
3335 For functions, if @var{x} and @var{y} are outside the area, the value will be
3336 automatically clipped to the closer edge.
3337
3338 @subsection Examples
3339
3340 @itemize
3341 @item
3342 Flip the image horizontally:
3343 @example
3344 geq=p(W-X\,Y)
3345 @end example
3346
3347 @item
3348 Generate a bidimensional sine wave, with angle @code{PI/3} and a
3349 wavelength of 100 pixels:
3350 @example
3351 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
3352 @end example
3353
3354 @item
3355 Generate a fancy enigmatic moving light:
3356 @example
3357 nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
3358 @end example
3359
3360 @item
3361 Generate a quick emboss effect:
3362 @example
3363 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
3364 @end example
3365 @end itemize
3366
3367 @section gradfun
3368
3369 Fix the banding artifacts that are sometimes introduced into nearly flat
3370 regions by truncation to 8bit color depth.
3371 Interpolate the gradients that should go where the bands are, and
3372 dither them.
3373
3374 This filter is designed for playback only.  Do not use it prior to
3375 lossy compression, because compression tends to lose the dither and
3376 bring back the bands.
3377
3378 This filter accepts the following options:
3379
3380 @table @option
3381
3382 @item strength
3383 The maximum amount by which the filter will change any one pixel. Also the
3384 threshold for detecting nearly flat regions. Acceptable values range from .51 to
3385 64, default value is 1.2, out-of-range values will be clipped to the valid
3386 range.
3387
3388 @item radius
3389 The neighborhood to fit the gradient to. A larger radius makes for smoother
3390 gradients, but also prevents the filter from modifying the pixels near detailed
3391 regions. Acceptable values are 8-32, default value is 16, out-of-range values
3392 will be clipped to the valid range.
3393
3394 @end table
3395
3396 Alternatively, the options can be specified as a flat string:
3397 @var{strength}[:@var{radius}]
3398
3399 @subsection Examples
3400
3401 @itemize
3402 @item
3403 Apply the filter with a @code{3.5} strength and radius of @code{8}:
3404 @example
3405 gradfun=3.5:8
3406 @end example
3407
3408 @item
3409 Specify radius, omitting the strength (which will fall-back to the default
3410 value):
3411 @example
3412 gradfun=radius=8
3413 @end example
3414
3415 @end itemize
3416
3417 @section hflip
3418
3419 Flip the input video horizontally.
3420
3421 For example to horizontally flip the input video with @command{ffmpeg}:
3422 @example
3423 ffmpeg -i in.avi -vf "hflip" out.avi
3424 @end example
3425
3426 @section histeq
3427 This filter applies a global color histogram equalization on a
3428 per-frame basis.
3429
3430 It can be used to correct video that has a compressed range of pixel
3431 intensities.  The filter redistributes the pixel intensities to
3432 equalize their distribution across the intensity range. It may be
3433 viewed as an "automatically adjusting contrast filter". This filter is
3434 useful only for correcting degraded or poorly captured source
3435 video.
3436
3437 The filter accepts the following options:
3438
3439 @table @option
3440 @item strength
3441 Determine the amount of equalization to be applied.  As the strength
3442 is reduced, the distribution of pixel intensities more-and-more
3443 approaches that of the input frame. The value must be a float number
3444 in the range [0,1] and defaults to 0.200.
3445
3446 @item intensity
3447 Set the maximum intensity that can generated and scale the output
3448 values appropriately.  The strength should be set as desired and then
3449 the intensity can be limited if needed to avoid washing-out. The value
3450 must be a float number in the range [0,1] and defaults to 0.210.
3451
3452 @item antibanding
3453 Set the antibanding level. If enabled the filter will randomly vary
3454 the luminance of output pixels by a small amount to avoid banding of
3455 the histogram. Possible values are @code{none}, @code{weak} or
3456 @code{strong}. It defaults to @code{none}.
3457 @end table
3458
3459 @section histogram
3460
3461 Compute and draw a color distribution histogram for the input video.
3462
3463 The computed histogram is a representation of distribution of color components
3464 in an image.
3465
3466 The filter accepts the following options:
3467
3468 @table @option
3469 @item mode
3470 Set histogram mode.
3471
3472 It accepts the following values:
3473 @table @samp
3474 @item levels
3475 standard histogram that display color components distribution in an image.
3476 Displays color graph for each color component. Shows distribution
3477 of the Y, U, V, A or G, B, R components, depending on input format,
3478 in current frame. Bellow each graph is color component scale meter.
3479
3480 @item color
3481 chroma values in vectorscope, if brighter more such chroma values are
3482 distributed in an image.
3483 Displays chroma values (U/V color placement) in two dimensional graph
3484 (which is called a vectorscope). It can be used to read of the hue and
3485 saturation of the current frame. At a same time it is a histogram.
3486 The whiter a pixel in the vectorscope, the more pixels of the input frame
3487 correspond to that pixel (that is the more pixels have this chroma value).
3488 The V component is displayed on the horizontal (X) axis, with the leftmost
3489 side being V = 0 and the rightmost side being V = 255.
3490 The U component is displayed on the vertical (Y) axis, with the top
3491 representing U = 0 and the bottom representing U = 255.
3492
3493 The position of a white pixel in the graph corresponds to the chroma value
3494 of a pixel of the input clip. So the graph can be used to read of the
3495 hue (color flavor) and the saturation (the dominance of the hue in the color).
3496 As the hue of a color changes, it moves around the square. At the center of
3497 the square, the saturation is zero, which means that the corresponding pixel
3498 has no color. If you increase the amount of a specific color, while leaving
3499 the other colors unchanged, the saturation increases, and you move towards
3500 the edge of the square.
3501
3502 @item color2
3503 chroma values in vectorscope, similar as @code{color} but actual chroma values
3504 are displayed.
3505
3506 @item waveform
3507 per row/column color component graph. In row mode graph in the left side represents
3508 color component value 0 and right side represents value = 255. In column mode top
3509 side represents color component value = 0 and bottom side represents value = 255.
3510 @end table
3511 Default value is @code{levels}.
3512
3513 @item level_height
3514 Set height of level in @code{levels}. Default value is @code{200}.
3515 Allowed range is [50, 2048].
3516
3517 @item scale_height
3518 Set height of color scale in @code{levels}. Default value is @code{12}.
3519 Allowed range is [0, 40].
3520
3521 @item step
3522 Set step for @code{waveform} mode. Smaller values are useful to find out how much
3523 of same luminance values across input rows/columns are distributed.
3524 Default value is @code{10}. Allowed range is [1, 255].
3525
3526 @item waveform_mode
3527 Set mode for @code{waveform}. Can be either @code{row}, or @code{column}.
3528 Default is @code{row}.
3529
3530 @item display_mode
3531 Set display mode for @code{waveform} and @code{levels}.
3532 It accepts the following values:
3533 @table @samp
3534 @item parade
3535 Display separate graph for the color components side by side in
3536 @code{row} waveform mode or one below other in @code{column} waveform mode
3537 for @code{waveform} histogram mode. For @code{levels} histogram mode
3538 per color component graphs are placed one bellow other.
3539
3540 This display mode in @code{waveform} histogram mode makes it easy to spot
3541 color casts in the highlights and shadows of an image, by comparing the
3542 contours of the top and the bottom of each waveform.
3543 Since whites, grays, and blacks are characterized by
3544 exactly equal amounts of red, green, and blue, neutral areas of the
3545 picture should display three waveforms of roughly equal width/height.
3546 If not, the correction is easy to make by making adjustments to level the
3547 three waveforms.
3548
3549 @item overlay
3550 Presents information that's identical to that in the @code{parade}, except
3551 that the graphs representing color components are superimposed directly
3552 over one another.
3553
3554 This display mode in @code{waveform} histogram mode can make it easier to spot
3555 the relative differences or similarities in overlapping areas of the color
3556 components that are supposed to be identical, such as neutral whites, grays,
3557 or blacks.
3558 @end table
3559 Default is @code{parade}.
3560 @end table
3561
3562 @subsection Examples
3563
3564 @itemize
3565
3566 @item
3567 Calculate and draw histogram:
3568 @example
3569 ffplay -i input -vf histogram
3570 @end example
3571
3572 @end itemize
3573
3574 @section hqdn3d
3575
3576 High precision/quality 3d denoise filter. This filter aims to reduce
3577 image noise producing smooth images and making still images really
3578 still. It should enhance compressibility.
3579
3580 It accepts the following optional parameters:
3581
3582 @table @option
3583 @item luma_spatial
3584 a non-negative float number which specifies spatial luma strength,
3585 defaults to 4.0
3586
3587 @item chroma_spatial
3588 a non-negative float number which specifies spatial chroma strength,
3589 defaults to 3.0*@var{luma_spatial}/4.0
3590
3591 @item luma_tmp
3592 a float number which specifies luma temporal strength, defaults to
3593 6.0*@var{luma_spatial}/4.0
3594
3595 @item chroma_tmp
3596 a float number which specifies chroma temporal strength, defaults to
3597 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}
3598 @end table
3599
3600 @section hue
3601
3602 Modify the hue and/or the saturation of the input.
3603
3604 This filter accepts the following options:
3605
3606 @table @option
3607 @item h
3608 Specify the hue angle as a number of degrees. It accepts an expression,
3609 and defaults to "0".
3610
3611 @item s
3612 Specify the saturation in the [-10,10] range. It accepts a float number and
3613 defaults to "1".
3614
3615 @item H
3616 Specify the hue angle as a number of radians. It accepts a float
3617 number or an expression, and defaults to "0".
3618 @end table
3619
3620 @option{h} and @option{H} are mutually exclusive, and can't be
3621 specified at the same time.
3622
3623 The @option{h}, @option{H} and @option{s} option values are
3624 expressions containing the following constants:
3625
3626 @table @option
3627 @item n
3628 frame count of the input frame starting from 0
3629
3630 @item pts
3631 presentation timestamp of the input frame expressed in time base units
3632
3633 @item r
3634 frame rate of the input video, NAN if the input frame rate is unknown
3635
3636 @item t
3637 timestamp expressed in seconds, NAN if the input timestamp is unknown
3638
3639 @item tb
3640 time base of the input video
3641 @end table
3642
3643 @subsection Examples
3644
3645 @itemize
3646 @item
3647 Set the hue to 90 degrees and the saturation to 1.0:
3648 @example
3649 hue=h=90:s=1
3650 @end example
3651
3652 @item
3653 Same command but expressing the hue in radians:
3654 @example
3655 hue=H=PI/2:s=1
3656 @end example
3657
3658 @item
3659 Rotate hue and make the saturation swing between 0
3660 and 2 over a period of 1 second:
3661 @example
3662 hue="H=2*PI*t: s=sin(2*PI*t)+1"
3663 @end example
3664
3665 @item
3666 Apply a 3 seconds saturation fade-in effect starting at 0:
3667 @example
3668 hue="s=min(t/3\,1)"
3669 @end example
3670
3671 The general fade-in expression can be written as:
3672 @example
3673 hue="s=min(0\, max((t-START)/DURATION\, 1))"
3674 @end example
3675
3676 @item
3677 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
3678 @example
3679 hue="s=max(0\, min(1\, (8-t)/3))"
3680 @end example
3681
3682 The general fade-out expression can be written as:
3683 @example
3684 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
3685 @end example
3686
3687 @end itemize
3688
3689 @subsection Commands
3690
3691 This filter supports the following commands:
3692 @table @option
3693 @item s
3694 @item h
3695 @item H
3696 Modify the hue and/or the saturation of the input video.
3697 The command accepts the same syntax of the corresponding option.
3698
3699 If the specified expression is not valid, it is kept at its current
3700 value.
3701 @end table
3702
3703 @section idet
3704
3705 Detect video interlacing type.
3706
3707 This filter tries to detect if the input is interlaced or progressive,
3708 top or bottom field first.
3709
3710 The filter accepts the following options:
3711
3712 @table @option
3713 @item intl_thres
3714 Set interlacing threshold.
3715 @item prog_thres
3716 Set progressive threshold.
3717 @end table
3718
3719 @section il
3720
3721 Deinterleave or interleave fields.
3722
3723 This filter allows to process interlaced images fields without
3724 deinterlacing them. Deinterleaving splits the input frame into 2
3725 fields (so called half pictures). Odd lines are moved to the top
3726 half of the output image, even lines to the bottom half.
3727 You can process (filter) them independently and then re-interleave them.
3728
3729 The filter accepts the following options:
3730
3731 @table @option
3732 @item luma_mode, l
3733 @item chroma_mode, s
3734 @item alpha_mode, a
3735 Available values for @var{luma_mode}, @var{chroma_mode} and
3736 @var{alpha_mode} are:
3737
3738 @table @samp
3739 @item none
3740 Do nothing.
3741
3742 @item deinterleave, d
3743 Deinterleave fields, placing one above the other.
3744
3745 @item interleave, i
3746 Interleave fields. Reverse the effect of deinterleaving.
3747 @end table
3748 Default value is @code{none}.
3749
3750 @item luma_swap, ls
3751 @item chroma_swap, cs
3752 @item alpha_swap, as
3753 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
3754 @end table
3755
3756 @section interlace
3757
3758 Simple interlacing filter from progressive contents. This interleaves upper (or
3759 lower) lines from odd frames with lower (or upper) lines from even frames,
3760 halving the frame rate and preserving image height.
3761
3762 @example
3763    Original        Original             New Frame
3764    Frame 'j'      Frame 'j+1'             (tff)
3765   ==========      ===========       ==================
3766     Line 0  -------------------->    Frame 'j' Line 0
3767     Line 1          Line 1  ---->   Frame 'j+1' Line 1
3768     Line 2 --------------------->    Frame 'j' Line 2
3769     Line 3          Line 3  ---->   Frame 'j+1' Line 3
3770      ...             ...                   ...
3771 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
3772 @end example
3773
3774 It accepts the following optional parameters:
3775
3776 @table @option
3777 @item scan
3778 determines whether the interlaced frame is taken from the even (tff - default)
3779 or odd (bff) lines of the progressive frame.
3780
3781 @item lowpass
3782 Enable (default) or disable the vertical lowpass filter to avoid twitter
3783 interlacing and reduce moire patterns.
3784 @end table
3785
3786 @section kerndeint
3787
3788 Deinterlace input video by applying Donald Graft's adaptive kernel
3789 deinterling. Work on interlaced parts of a video to produce
3790 progressive frames.
3791
3792 The description of the accepted parameters follows.
3793
3794 @table @option
3795 @item thresh
3796 Set the threshold which affects the filter's tolerance when
3797 determining if a pixel line must be processed. It must be an integer
3798 in the range [0,255] and defaults to 10. A value of 0 will result in
3799 applying the process on every pixels.
3800
3801 @item map
3802 Paint pixels exceeding the threshold value to white if set to 1.
3803 Default is 0.
3804
3805 @item order
3806 Set the fields order. Swap fields if set to 1, leave fields alone if
3807 0. Default is 0.
3808
3809 @item sharp
3810 Enable additional sharpening if set to 1. Default is 0.
3811
3812 @item twoway
3813 Enable twoway sharpening if set to 1. Default is 0.
3814 @end table
3815
3816 @subsection Examples
3817
3818 @itemize
3819 @item
3820 Apply default values:
3821 @example
3822 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
3823 @end example
3824
3825 @item
3826 Enable additional sharpening:
3827 @example
3828 kerndeint=sharp=1
3829 @end example
3830
3831 @item
3832 Paint processed pixels in white:
3833 @example
3834 kerndeint=map=1
3835 @end example
3836 @end itemize
3837
3838 @section lut, lutrgb, lutyuv
3839
3840 Compute a look-up table for binding each pixel component input value
3841 to an output value, and apply it to input video.
3842
3843 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
3844 to an RGB input video.
3845
3846 These filters accept the following options:
3847 @table @option
3848 @item c0
3849 set first pixel component expression
3850 @item c1
3851 set second pixel component expression
3852 @item c2
3853 set third pixel component expression
3854 @item c3
3855 set fourth pixel component expression, corresponds to the alpha component
3856
3857 @item r
3858 set red component expression
3859 @item g
3860 set green component expression
3861 @item b
3862 set blue component expression
3863 @item a
3864 alpha component expression
3865
3866 @item y
3867 set Y/luminance component expression
3868 @item u
3869 set U/Cb component expression
3870 @item v
3871 set V/Cr component expression
3872 @end table
3873
3874 Each of them specifies the expression to use for computing the lookup table for
3875 the corresponding pixel component values.
3876
3877 The exact component associated to each of the @var{c*} options depends on the
3878 format in input.
3879
3880 The @var{lut} filter requires either YUV or RGB pixel formats in input,
3881 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
3882
3883 The expressions can contain the following constants and functions:
3884
3885 @table @option
3886 @item w, h
3887 the input width and height
3888
3889 @item val
3890 input value for the pixel component
3891
3892 @item clipval
3893 the input value clipped in the @var{minval}-@var{maxval} range
3894
3895 @item maxval
3896 maximum value for the pixel component
3897
3898 @item minval
3899 minimum value for the pixel component
3900
3901 @item negval
3902 the negated value for the pixel component value clipped in the
3903 @var{minval}-@var{maxval} range , it corresponds to the expression
3904 "maxval-clipval+minval"
3905
3906 @item clip(val)
3907 the computed value in @var{val} clipped in the
3908 @var{minval}-@var{maxval} range
3909
3910 @item gammaval(gamma)
3911 the computed gamma correction value of the pixel component value
3912 clipped in the @var{minval}-@var{maxval} range, corresponds to the
3913 expression
3914 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
3915
3916 @end table
3917
3918 All expressions default to "val".
3919
3920 @subsection Examples
3921
3922 @itemize
3923 @item
3924 Negate input video:
3925 @example
3926 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
3927 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
3928 @end example
3929
3930 The above is the same as:
3931 @example
3932 lutrgb="r=negval:g=negval:b=negval"
3933 lutyuv="y=negval:u=negval:v=negval"
3934 @end example
3935
3936 @item
3937 Negate luminance:
3938 @example
3939 lutyuv=y=negval
3940 @end example
3941
3942 @item
3943 Remove chroma components, turns the video into a graytone image:
3944 @example
3945 lutyuv="u=128:v=128"
3946 @end example
3947
3948 @item
3949 Apply a luma burning effect:
3950 @example
3951 lutyuv="y=2*val"
3952 @end example
3953
3954 @item
3955 Remove green and blue components:
3956 @example
3957 lutrgb="g=0:b=0"
3958 @end example
3959
3960 @item
3961 Set a constant alpha channel value on input:
3962 @example
3963 format=rgba,lutrgb=a="maxval-minval/2"
3964 @end example
3965
3966 @item
3967 Correct luminance gamma by a 0.5 factor:
3968 @example
3969 lutyuv=y=gammaval(0.5)
3970 @end example
3971
3972 @item
3973 Discard least significant bits of luma:
3974 @example
3975 lutyuv=y='bitand(val, 128+64+32)'
3976 @end example
3977 @end itemize
3978
3979 @section mp
3980
3981 Apply an MPlayer filter to the input video.
3982
3983 This filter provides a wrapper around most of the filters of
3984 MPlayer/MEncoder.
3985
3986 This wrapper is considered experimental. Some of the wrapped filters
3987 may not work properly and we may drop support for them, as they will
3988 be implemented natively into FFmpeg. Thus you should avoid
3989 depending on them when writing portable scripts.
3990
3991 The filters accepts the parameters:
3992 @var{filter_name}[:=]@var{filter_params}
3993
3994 @var{filter_name} is the name of a supported MPlayer filter,
3995 @var{filter_params} is a string containing the parameters accepted by
3996 the named filter.
3997
3998 The list of the currently supported filters follows:
3999 @table @var
4000 @item detc
4001 @item dint
4002 @item divtc
4003 @item down3dright
4004 @item eq2
4005 @item eq
4006 @item fil
4007 @item fspp
4008 @item ilpack
4009 @item ivtc
4010 @item mcdeint
4011 @item ow
4012 @item perspective
4013 @item phase
4014 @item pp7
4015 @item pullup
4016 @item qp
4017 @item sab
4018 @item softpulldown
4019 @item spp
4020 @item telecine
4021 @item tinterlace
4022 @item uspp
4023 @end table
4024
4025 The parameter syntax and behavior for the listed filters are the same
4026 of the corresponding MPlayer filters. For detailed instructions check
4027 the "VIDEO FILTERS" section in the MPlayer manual.
4028
4029 @subsection Examples
4030
4031 @itemize
4032 @item
4033 Adjust gamma, brightness, contrast:
4034 @example
4035 mp=eq2=1.0:2:0.5
4036 @end example
4037 @end itemize
4038
4039 See also mplayer(1), @url{http://www.mplayerhq.hu/}.
4040
4041 @section negate
4042
4043 Negate input video.
4044
4045 This filter accepts an integer in input, if non-zero it negates the
4046 alpha component (if available). The default value in input is 0.
4047
4048 @section noformat
4049
4050 Force libavfilter not to use any of the specified pixel formats for the
4051 input to the next filter.
4052
4053 This filter accepts the following parameters:
4054 @table @option
4055
4056 @item pix_fmts
4057 A '|'-separated list of pixel format names, for example
4058 "pix_fmts=yuv420p|monow|rgb24".
4059
4060 @end table
4061
4062 @subsection Examples
4063
4064 @itemize
4065 @item
4066 Force libavfilter to use a format different from @var{yuv420p} for the
4067 input to the vflip filter:
4068 @example
4069 noformat=pix_fmts=yuv420p,vflip
4070 @end example
4071
4072 @item
4073 Convert the input video to any of the formats not contained in the list:
4074 @example
4075 noformat=yuv420p|yuv444p|yuv410p
4076 @end example
4077 @end itemize
4078
4079 @section noise
4080
4081 Add noise on video input frame.
4082
4083 The filter accepts the following options:
4084
4085 @table @option
4086 @item all_seed
4087 @item c0_seed
4088 @item c1_seed
4089 @item c2_seed
4090 @item c3_seed
4091 Set noise seed for specific pixel component or all pixel components in case
4092 of @var{all_seed}. Default value is @code{123457}.
4093
4094 @item all_strength, alls
4095 @item c0_strength, c0s
4096 @item c1_strength, c1s
4097 @item c2_strength, c2s
4098 @item c3_strength, c3s
4099 Set noise strength for specific pixel component or all pixel components in case
4100 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
4101
4102 @item all_flags, allf
4103 @item c0_flags, c0f
4104 @item c1_flags, c1f
4105 @item c2_flags, c2f
4106 @item c3_flags, c3f
4107 Set pixel component flags or set flags for all components if @var{all_flags}.
4108 Available values for component flags are:
4109 @table @samp
4110 @item a
4111 averaged temporal noise (smoother)
4112 @item p
4113 mix random noise with a (semi)regular pattern
4114 @item q
4115 higher quality (slightly better looking, slightly slower)
4116 @item t
4117 temporal noise (noise pattern changes between frames)
4118 @item u
4119 uniform noise (gaussian otherwise)
4120 @end table
4121 @end table
4122
4123 @subsection Examples
4124
4125 Add temporal and uniform noise to input video:
4126 @example
4127 noise=alls=20:allf=t+u
4128 @end example
4129
4130 @section null
4131
4132 Pass the video source unchanged to the output.
4133
4134 @section ocv
4135
4136 Apply video transform using libopencv.
4137
4138 To enable this filter install libopencv library and headers and
4139 configure FFmpeg with @code{--enable-libopencv}.
4140
4141 This filter accepts the following parameters:
4142
4143 @table @option
4144
4145 @item filter_name
4146 The name of the libopencv filter to apply.
4147
4148 @item filter_params
4149 The parameters to pass to the libopencv filter. If not specified the default
4150 values are assumed.
4151
4152 @end table
4153
4154 Refer to the official libopencv documentation for more precise
4155 information:
4156 @url{http://opencv.willowgarage.com/documentation/c/image_filtering.html}
4157
4158 Follows the list of supported libopencv filters.
4159
4160 @anchor{dilate}
4161 @subsection dilate
4162
4163 Dilate an image by using a specific structuring element.
4164 This filter corresponds to the libopencv function @code{cvDilate}.
4165
4166 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
4167
4168 @var{struct_el} represents a structuring element, and has the syntax:
4169 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
4170
4171 @var{cols} and @var{rows} represent the number of columns and rows of
4172 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
4173 point, and @var{shape} the shape for the structuring element, and
4174 can be one of the values "rect", "cross", "ellipse", "custom".
4175
4176 If the value for @var{shape} is "custom", it must be followed by a
4177 string of the form "=@var{filename}". The file with name
4178 @var{filename} is assumed to represent a binary image, with each
4179 printable character corresponding to a bright pixel. When a custom
4180 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
4181 or columns and rows of the read file are assumed instead.
4182
4183 The default value for @var{struct_el} is "3x3+0x0/rect".
4184
4185 @var{nb_iterations} specifies the number of times the transform is
4186 applied to the image, and defaults to 1.
4187
4188 Follow some example:
4189 @example
4190 # use the default values
4191 ocv=dilate
4192
4193 # dilate using a structuring element with a 5x5 cross, iterate two times
4194 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
4195
4196 # read the shape from the file diamond.shape, iterate two times
4197 # the file diamond.shape may contain a pattern of characters like this:
4198 #   *
4199 #  ***
4200 # *****
4201 #  ***
4202 #   *
4203 # the specified cols and rows are ignored (but not the anchor point coordinates)
4204 ocv=dilate:0x0+2x2/custom=diamond.shape|2
4205 @end example
4206
4207 @subsection erode
4208
4209 Erode an image by using a specific structuring element.
4210 This filter corresponds to the libopencv function @code{cvErode}.
4211
4212 The filter accepts the parameters: @var{struct_el}:@var{nb_iterations},
4213 with the same syntax and semantics as the @ref{dilate} filter.
4214
4215 @subsection smooth
4216
4217 Smooth the input video.
4218
4219 The filter takes the following parameters:
4220 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
4221
4222 @var{type} is the type of smooth filter to apply, and can be one of
4223 the following values: "blur", "blur_no_scale", "median", "gaussian",
4224 "bilateral". The default value is "gaussian".
4225
4226 @var{param1}, @var{param2}, @var{param3}, and @var{param4} are
4227 parameters whose meanings depend on smooth type. @var{param1} and
4228 @var{param2} accept integer positive values or 0, @var{param3} and
4229 @var{param4} accept float values.
4230
4231 The default value for @var{param1} is 3, the default value for the
4232 other parameters is 0.
4233
4234 These parameters correspond to the parameters assigned to the
4235 libopencv function @code{cvSmooth}.
4236
4237 @anchor{overlay}
4238 @section overlay
4239
4240 Overlay one video on top of another.
4241
4242 It takes two inputs and one output, the first input is the "main"
4243 video on which the second input is overlayed.
4244
4245 This filter accepts the following parameters:
4246
4247 A description of the accepted options follows.
4248
4249 @table @option
4250 @item x
4251 @item y
4252 Set the expression for the x and y coordinates of the overlayed video
4253 on the main video. Default value is "0" for both expressions. In case
4254 the expression is invalid, it is set to a huge value (meaning that the
4255 overlay will not be displayed within the output visible area).
4256
4257 @item enable
4258 Set the expression which enables the overlay. If the evaluation is
4259 different from 0, the overlay is displayed on top of the input
4260 frame. By default it is "1".
4261
4262 @item eval
4263 Set when the expressions for @option{x}, @option{y}, and
4264 @option{enable} are evaluated.
4265
4266 It accepts the following values:
4267 @table @samp
4268 @item init
4269 only evaluate expressions once during the filter initialization or
4270 when a command is processed
4271
4272 @item frame
4273 evaluate expressions for each incoming frame
4274 @end table
4275
4276 Default value is @samp{frame}.
4277
4278 @item shortest
4279 If set to 1, force the output to terminate when the shortest input
4280 terminates. Default value is 0.
4281
4282 @item format
4283 Set the format for the output video.
4284
4285 It accepts the following values:
4286 @table @samp
4287 @item yuv420
4288 force YUV420 output
4289
4290 @item yuv444
4291 force YUV444 output
4292
4293 @item rgb
4294 force RGB output
4295 @end table
4296
4297 Default value is @samp{yuv420}.
4298
4299 @item rgb @emph{(deprecated)}
4300 If set to 1, force the filter to accept inputs in the RGB
4301 color space. Default value is 0. This option is deprecated, use
4302 @option{format} instead.
4303
4304 @item repeatlast
4305 If set to 1, force the filter to draw the last overlay frame over the
4306 main input until the end of the stream. A value of 0 disables this
4307 behavior, which is enabled by default.
4308 @end table
4309
4310 The @option{x}, @option{y}, and @option{enable} expressions can
4311 contain the following parameters.
4312
4313 @table @option
4314 @item main_w, W
4315 @item main_h, H
4316 main input width and height
4317
4318 @item overlay_w, w
4319 @item overlay_h, h
4320 overlay input width and height
4321
4322 @item x
4323 @item y
4324 the computed values for @var{x} and @var{y}. They are evaluated for
4325 each new frame.
4326
4327 @item hsub
4328 @item vsub
4329 horizontal and vertical chroma subsample values of the output
4330 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
4331 @var{vsub} is 1.
4332
4333 @item n
4334 the number of input frame, starting from 0
4335
4336 @item pos
4337 the position in the file of the input frame, NAN if unknown
4338
4339 @item t
4340 timestamp expressed in seconds, NAN if the input timestamp is unknown
4341 @end table
4342
4343 Note that the @var{n}, @var{pos}, @var{t} variables are available only
4344 when evaluation is done @emph{per frame}, and will evaluate to NAN
4345 when @option{eval} is set to @samp{init}.
4346
4347 Be aware that frames are taken from each input video in timestamp
4348 order, hence, if their initial timestamps differ, it is a a good idea
4349 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
4350 have them begin in the same zero timestamp, as it does the example for
4351 the @var{movie} filter.
4352
4353 You can chain together more overlays but you should test the
4354 efficiency of such approach.
4355
4356 @subsection Commands
4357
4358 This filter supports the following commands:
4359 @table @option
4360 @item x
4361 @item y
4362 @item enable
4363 Modify the x/y and enable overlay of the overlay input.
4364 The command accepts the same syntax of the corresponding option.
4365
4366 If the specified expression is not valid, it is kept at its current
4367 value.
4368 @end table
4369
4370 @subsection Examples
4371
4372 @itemize
4373 @item
4374 Draw the overlay at 10 pixels from the bottom right corner of the main
4375 video:
4376 @example
4377 overlay=main_w-overlay_w-10:main_h-overlay_h-10
4378 @end example
4379
4380 Using named options the example above becomes:
4381 @example
4382 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
4383 @end example
4384
4385 @item
4386 Insert a transparent PNG logo in the bottom left corner of the input,
4387 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
4388 @example
4389 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
4390 @end example
4391
4392 @item
4393 Insert 2 different transparent PNG logos (second logo on bottom
4394 right corner) using the @command{ffmpeg} tool:
4395 @example
4396 ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
4397 @end example
4398
4399 @item
4400 Add a transparent color layer on top of the main video, @code{WxH}
4401 must specify the size of the main input to the overlay filter:
4402 @example
4403 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
4404 @end example
4405
4406 @item
4407 Play an original video and a filtered version (here with the deshake
4408 filter) side by side using the @command{ffplay} tool:
4409 @example
4410 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
4411 @end example
4412
4413 The above command is the same as:
4414 @example
4415 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
4416 @end example
4417
4418 @item
4419 Make a sliding overlay appearing from the left to the right top part of the
4420 screen starting since time 2:
4421 @example
4422 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
4423 @end example
4424
4425 @item
4426 Compose output by putting two input videos side to side:
4427 @example
4428 ffmpeg -i left.avi -i right.avi -filter_complex "
4429 nullsrc=size=200x100 [background];
4430 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
4431 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
4432 [background][left]       overlay=shortest=1       [background+left];
4433 [background+left][right] overlay=shortest=1:x=100 [left+right]
4434 "
4435 @end example
4436
4437 @item
4438 Chain several overlays in cascade:
4439 @example
4440 nullsrc=s=200x200 [bg];
4441 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
4442 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
4443 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
4444 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
4445 [in3] null,       [mid2] overlay=100:100 [out0]
4446 @end example
4447
4448 @end itemize
4449
4450 @section pad
4451
4452 Add paddings to the input image, and place the original input at the
4453 given coordinates @var{x}, @var{y}.
4454
4455 This filter accepts the following parameters:
4456
4457 @table @option
4458 @item width, w
4459 @item height, h
4460 Specify an expression for the size of the output image with the
4461 paddings added. If the value for @var{width} or @var{height} is 0, the
4462 corresponding input size is used for the output.
4463
4464 The @var{width} expression can reference the value set by the
4465 @var{height} expression, and vice versa.
4466
4467 The default value of @var{width} and @var{height} is 0.
4468
4469 @item x
4470 @item y
4471 Specify an expression for the offsets where to place the input image
4472 in the padded area with respect to the top/left border of the output
4473 image.
4474
4475 The @var{x} expression can reference the value set by the @var{y}
4476 expression, and vice versa.
4477
4478 The default value of @var{x} and @var{y} is 0.
4479
4480 @item color
4481 Specify the color of the padded area, it can be the name of a color
4482 (case insensitive match) or a 0xRRGGBB[AA] sequence.
4483
4484 The default value of @var{color} is "black".
4485 @end table
4486
4487 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
4488 options are expressions containing the following constants:
4489
4490 @table @option
4491 @item in_w, in_h
4492 the input video width and height
4493
4494 @item iw, ih
4495 same as @var{in_w} and @var{in_h}
4496
4497 @item out_w, out_h
4498 the output width and height, that is the size of the padded area as
4499 specified by the @var{width} and @var{height} expressions
4500
4501 @item ow, oh
4502 same as @var{out_w} and @var{out_h}
4503
4504 @item x, y
4505 x and y offsets as specified by the @var{x} and @var{y}
4506 expressions, or NAN if not yet specified
4507
4508 @item a
4509 same as @var{iw} / @var{ih}
4510
4511 @item sar
4512 input sample aspect ratio
4513
4514 @item dar
4515 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
4516
4517 @item hsub, vsub
4518 horizontal and vertical chroma subsample values. For example for the
4519 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
4520 @end table
4521
4522 @subsection Examples
4523
4524 @itemize
4525 @item
4526 Add paddings with color "violet" to the input video. Output video
4527 size is 640x480, the top-left corner of the input video is placed at
4528 column 0, row 40:
4529 @example
4530 pad=640:480:0:40:violet
4531 @end example
4532
4533 The example above is equivalent to the following command:
4534 @example
4535 pad=width=640:height=480:x=0:y=40:color=violet
4536 @end example
4537
4538 @item
4539 Pad the input to get an output with dimensions increased by 3/2,
4540 and put the input video at the center of the padded area:
4541 @example
4542 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
4543 @end example
4544
4545 @item
4546 Pad the input to get a squared output with size equal to the maximum
4547 value between the input width and height, and put the input video at
4548 the center of the padded area:
4549 @example
4550 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
4551 @end example
4552
4553 @item
4554 Pad the input to get a final w/h ratio of 16:9:
4555 @example
4556 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
4557 @end example
4558
4559 @item
4560 In case of anamorphic video, in order to set the output display aspect
4561 correctly, it is necessary to use @var{sar} in the expression,
4562 according to the relation:
4563 @example
4564 (ih * X / ih) * sar = output_dar
4565 X = output_dar / sar
4566 @end example
4567
4568 Thus the previous example needs to be modified to:
4569 @example
4570 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
4571 @end example
4572
4573 @item
4574 Double output size and put the input video in the bottom-right
4575 corner of the output padded area:
4576 @example
4577 pad="2*iw:2*ih:ow-iw:oh-ih"
4578 @end example
4579 @end itemize
4580
4581 @section pixdesctest
4582
4583 Pixel format descriptor test filter, mainly useful for internal
4584 testing. The output video should be equal to the input video.
4585
4586 For example:
4587 @example
4588 format=monow, pixdesctest
4589 @end example
4590
4591 can be used to test the monowhite pixel format descriptor definition.
4592
4593 @section pp
4594
4595 Enable the specified chain of postprocessing subfilters using libpostproc. This
4596 library should be automatically selected with a GPL build (@code{--enable-gpl}).
4597 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
4598 Each subfilter and some options have a short and a long name that can be used
4599 interchangeably, i.e. dr/dering are the same.
4600
4601 The filters accept the following options:
4602
4603 @table @option
4604 @item subfilters
4605 Set postprocessing subfilters string.
4606 @end table
4607
4608 All subfilters share common options to determine their scope:
4609
4610 @table @option
4611 @item a/autoq
4612 Honor the quality commands for this subfilter.
4613
4614 @item c/chrom
4615 Do chrominance filtering, too (default).
4616
4617 @item y/nochrom
4618 Do luminance filtering only (no chrominance).
4619
4620 @item n/noluma
4621 Do chrominance filtering only (no luminance).
4622 @end table
4623
4624 These options can be appended after the subfilter name, separated by a '|'.
4625
4626 Available subfilters are:
4627
4628 @table @option
4629 @item hb/hdeblock[|difference[|flatness]]
4630 Horizontal deblocking filter
4631 @table @option
4632 @item difference
4633 Difference factor where higher values mean more deblocking (default: @code{32}).
4634 @item flatness
4635 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4636 @end table
4637
4638 @item vb/vdeblock[|difference[|flatness]]
4639 Vertical deblocking filter
4640 @table @option
4641 @item difference
4642 Difference factor where higher values mean more deblocking (default: @code{32}).
4643 @item flatness
4644 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4645 @end table
4646
4647 @item ha/hadeblock[|difference[|flatness]]
4648 Accurate horizontal deblocking filter
4649 @table @option
4650 @item difference
4651 Difference factor where higher values mean more deblocking (default: @code{32}).
4652 @item flatness
4653 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4654 @end table
4655
4656 @item va/vadeblock[|difference[|flatness]]
4657 Accurate vertical deblocking filter
4658 @table @option
4659 @item difference
4660 Difference factor where higher values mean more deblocking (default: @code{32}).
4661 @item flatness
4662 Flatness threshold where lower values mean more deblocking (default: @code{39}).
4663 @end table
4664 @end table
4665
4666 The horizontal and vertical deblocking filters share the difference and
4667 flatness values so you cannot set different horizontal and vertical
4668 thresholds.
4669
4670 @table @option
4671 @item h1/x1hdeblock
4672 Experimental horizontal deblocking filter
4673
4674 @item v1/x1vdeblock
4675 Experimental vertical deblocking filter
4676
4677 @item dr/dering
4678 Deringing filter
4679
4680 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
4681 @table @option
4682 @item threshold1
4683 larger -> stronger filtering
4684 @item threshold2
4685 larger -> stronger filtering
4686 @item threshold3
4687 larger -> stronger filtering
4688 @end table
4689
4690 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
4691 @table @option
4692 @item f/fullyrange
4693 Stretch luminance to @code{0-255}.
4694 @end table
4695
4696 @item lb/linblenddeint
4697 Linear blend deinterlacing filter that deinterlaces the given block by
4698 filtering all lines with a @code{(1 2 1)} filter.
4699
4700 @item li/linipoldeint
4701 Linear interpolating deinterlacing filter that deinterlaces the given block by
4702 linearly interpolating every second line.
4703
4704 @item ci/cubicipoldeint
4705 Cubic interpolating deinterlacing filter deinterlaces the given block by
4706 cubically interpolating every second line.
4707
4708 @item md/mediandeint
4709 Median deinterlacing filter that deinterlaces the given block by applying a
4710 median filter to every second line.
4711
4712 @item fd/ffmpegdeint
4713 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
4714 second line with a @code{(-1 4 2 4 -1)} filter.
4715
4716 @item l5/lowpass5
4717 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
4718 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
4719
4720 @item fq/forceQuant[|quantizer]
4721 Overrides the quantizer table from the input with the constant quantizer you
4722 specify.
4723 @table @option
4724 @item quantizer
4725 Quantizer to use
4726 @end table
4727
4728 @item de/default
4729 Default pp filter combination (@code{hb|a,vb|a,dr|a})
4730
4731 @item fa/fast
4732 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
4733
4734 @item ac
4735 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
4736 @end table
4737
4738 @subsection Examples
4739
4740 @itemize
4741 @item
4742 Apply horizontal and vertical deblocking, deringing and automatic
4743 brightness/contrast:
4744 @example
4745 pp=hb/vb/dr/al
4746 @end example
4747
4748 @item
4749 Apply default filters without brightness/contrast correction:
4750 @example
4751 pp=de/-al
4752 @end example
4753
4754 @item
4755 Apply default filters and temporal denoiser:
4756 @example
4757 pp=default/tmpnoise|1|2|3
4758 @end example
4759
4760 @item
4761 Apply deblocking on luminance only, and switch vertical deblocking on or off
4762 automatically depending on available CPU time:
4763 @example
4764 pp=hb|y/vb|a
4765 @end example
4766 @end itemize
4767
4768 @section removelogo
4769
4770 Suppress a TV station logo, using an image file to determine which
4771 pixels comprise the logo. It works by filling in the pixels that
4772 comprise the logo with neighboring pixels.
4773
4774 The filters accept the following options:
4775
4776 @table @option
4777 @item filename, f
4778 Set the filter bitmap file, which can be any image format supported by
4779 libavformat. The width and height of the image file must match those of the
4780 video stream being processed.
4781 @end table
4782
4783 Pixels in the provided bitmap image with a value of zero are not
4784 considered part of the logo, non-zero pixels are considered part of
4785 the logo. If you use white (255) for the logo and black (0) for the
4786 rest, you will be safe. For making the filter bitmap, it is
4787 recommended to take a screen capture of a black frame with the logo
4788 visible, and then using a threshold filter followed by the erode
4789 filter once or twice.
4790
4791 If needed, little splotches can be fixed manually. Remember that if
4792 logo pixels are not covered, the filter quality will be much
4793 reduced. Marking too many pixels as part of the logo does not hurt as
4794 much, but it will increase the amount of blurring needed to cover over
4795 the image and will destroy more information than necessary, and extra
4796 pixels will slow things down on a large logo.
4797
4798 @section scale
4799
4800 Scale (resize) the input video, using the libswscale library.
4801
4802 The scale filter forces the output display aspect ratio to be the same
4803 of the input, by changing the output sample aspect ratio.
4804
4805 The filter accepts the following options:
4806
4807 @table @option
4808 @item width, w
4809 Output video width.
4810 default value is @code{iw}. See below
4811 for the list of accepted constants.
4812
4813 @item height, h
4814 Output video height.
4815 default value is @code{ih}.
4816 See below for the list of accepted constants.
4817
4818 @item interl
4819 Set the interlacing. It accepts the following values:
4820
4821 @table @option
4822 @item 1
4823 force interlaced aware scaling
4824
4825 @item 0
4826 do not apply interlaced scaling
4827
4828 @item -1
4829 select interlaced aware scaling depending on whether the source frames
4830 are flagged as interlaced or not
4831 @end table
4832
4833 Default value is @code{0}.
4834
4835 @item flags
4836 Set libswscale scaling flags. If not explictly specified the filter
4837 applies a bilinear scaling algorithm.
4838
4839 @item size, s
4840 Set the video size, the value must be a valid abbreviation or in the
4841 form @var{width}x@var{height}.
4842 @end table
4843
4844 The values of the @var{w} and @var{h} options are expressions
4845 containing the following constants:
4846
4847 @table @option
4848 @item in_w, in_h
4849 the input width and height
4850
4851 @item iw, ih
4852 same as @var{in_w} and @var{in_h}
4853
4854 @item out_w, out_h
4855 the output (cropped) width and height
4856
4857 @item ow, oh
4858 same as @var{out_w} and @var{out_h}
4859
4860 @item a
4861 same as @var{iw} / @var{ih}
4862
4863 @item sar
4864 input sample aspect ratio
4865
4866 @item dar
4867 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
4868
4869 @item hsub, vsub
4870 horizontal and vertical chroma subsample values. For example for the
4871 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
4872 @end table
4873
4874 If the input image format is different from the format requested by
4875 the next filter, the scale filter will convert the input to the
4876 requested format.
4877
4878 If the value for @var{w} or @var{h} is 0, the respective input
4879 size is used for the output.
4880
4881 If the value for @var{w} or @var{h} is -1, the scale filter will use, for the
4882 respective output size, a value that maintains the aspect ratio of the input
4883 image.
4884
4885 @subsection Examples
4886
4887 @itemize
4888 @item
4889 Scale the input video to a size of 200x100:
4890 @example
4891 scale=w=200:h=100
4892 @end example
4893
4894 This is equivalent to:
4895 @example
4896 scale=w=200:h=100
4897 @end example
4898
4899 or:
4900 @example
4901 scale=200x100
4902 @end example
4903
4904 @item
4905 Specify a size abbreviation for the output size:
4906 @example
4907 scale=qcif
4908 @end example
4909
4910 which can also be written as:
4911 @example
4912 scale=size=qcif
4913 @end example
4914
4915 @item
4916 Scale the input to 2x:
4917 @example
4918 scale=w=2*iw:h=2*ih
4919 @end example
4920
4921 @item
4922 The above is the same as:
4923 @example
4924 scale=2*in_w:2*in_h
4925 @end example
4926
4927 @item
4928 Scale the input to 2x with forced interlaced scaling:
4929 @example
4930 scale=2*iw:2*ih:interl=1
4931 @end example
4932
4933 @item
4934 Scale the input to half size:
4935 @example
4936 scale=w=iw/2:h=ih/2
4937 @end example
4938
4939 @item
4940 Increase the width, and set the height to the same size:
4941 @example
4942 scale=3/2*iw:ow
4943 @end example
4944
4945 @item
4946 Seek for Greek harmony:
4947 @example
4948 scale=iw:1/PHI*iw
4949 scale=ih*PHI:ih
4950 @end example
4951
4952 @item
4953 Increase the height, and set the width to 3/2 of the height:
4954 @example
4955 scale=w=3/2*oh:h=3/5*ih
4956 @end example
4957
4958 @item
4959 Increase the size, but make the size a multiple of the chroma
4960 subsample values:
4961 @example
4962 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
4963 @end example
4964
4965 @item
4966 Increase the width to a maximum of 500 pixels, keep the same input
4967 aspect ratio:
4968 @example
4969 scale=w='min(500\, iw*3/2):h=-1'
4970 @end example
4971 @end itemize
4972
4973 @section separatefields
4974
4975 The @code{separatefields} takes a frame-based video input and splits
4976 each frame into its components fields, producing a new half height clip
4977 with twice the frame rate and twice the frame count.
4978
4979 This filter use field-dominance information in frame to decide which
4980 of each pair of fields to place first in the output.
4981 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
4982
4983 @section setdar, setsar
4984
4985 The @code{setdar} filter sets the Display Aspect Ratio for the filter
4986 output video.
4987
4988 This is done by changing the specified Sample (aka Pixel) Aspect
4989 Ratio, according to the following equation:
4990 @example
4991 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
4992 @end example
4993
4994 Keep in mind that the @code{setdar} filter does not modify the pixel
4995 dimensions of the video frame. Also the display aspect ratio set by
4996 this filter may be changed by later filters in the filterchain,
4997 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
4998 applied.
4999
5000 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
5001 the filter output video.
5002
5003 Note that as a consequence of the application of this filter, the
5004 output display aspect ratio will change according to the equation
5005 above.
5006
5007 Keep in mind that the sample aspect ratio set by the @code{setsar}
5008 filter may be changed by later filters in the filterchain, e.g. if
5009 another "setsar" or a "setdar" filter is applied.
5010
5011 The filters accept the following options:
5012
5013 @table @option
5014 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
5015 Set the aspect ratio used by the filter.
5016
5017 The parameter can be a floating point number string, an expression, or
5018 a string of the form @var{num}:@var{den}, where @var{num} and
5019 @var{den} are the numerator and denominator of the aspect ratio. If
5020 the parameter is not specified, it is assumed the value "0".
5021 In case the form "@var{num}:@var{den}" the @code{:} character should
5022 be escaped.
5023
5024 @item max
5025 Set the maximum integer value to use for expressing numerator and
5026 denominator when reducing the expressed aspect ratio to a rational.
5027 Default value is @code{100}.
5028
5029 @end table
5030
5031 @subsection Examples
5032
5033 @itemize
5034
5035 @item
5036 To change the display aspect ratio to 16:9, specify one of the following:
5037 @example
5038 setdar=dar=1.77777
5039 setdar=dar=16/9
5040 setdar=dar=1.77777
5041 @end example
5042
5043 @item
5044 To change the sample aspect ratio to 10:11, specify:
5045 @example
5046 setsar=sar=10/11
5047 @end example
5048
5049 @item
5050 To set a display aspect ratio of 16:9, and specify a maximum integer value of
5051 1000 in the aspect ratio reduction, use the command:
5052 @example
5053 setdar=ratio=16/9:max=1000
5054 @end example
5055
5056 @end itemize
5057
5058 @anchor{setfield}
5059 @section setfield
5060
5061 Force field for the output video frame.
5062
5063 The @code{setfield} filter marks the interlace type field for the
5064 output frames. It does not change the input frame, but only sets the
5065 corresponding property, which affects how the frame is treated by
5066 following filters (e.g. @code{fieldorder} or @code{yadif}).
5067
5068 The filter accepts the following options:
5069
5070 @table @option
5071
5072 @item mode
5073 Available values are:
5074
5075 @table @samp
5076 @item auto
5077 Keep the same field property.
5078
5079 @item bff
5080 Mark the frame as bottom-field-first.
5081
5082 @item tff
5083 Mark the frame as top-field-first.
5084
5085 @item prog
5086 Mark the frame as progressive.
5087 @end table
5088 @end table
5089
5090 @section showinfo
5091
5092 Show a line containing various information for each input video frame.
5093 The input video is not modified.
5094
5095 The shown line contains a sequence of key/value pairs of the form
5096 @var{key}:@var{value}.
5097
5098 A description of each shown parameter follows:
5099
5100 @table @option
5101 @item n
5102 sequential number of the input frame, starting from 0
5103
5104 @item pts
5105 Presentation TimeStamp of the input frame, expressed as a number of
5106 time base units. The time base unit depends on the filter input pad.
5107
5108 @item pts_time
5109 Presentation TimeStamp of the input frame, expressed as a number of
5110 seconds
5111
5112 @item pos
5113 position of the frame in the input stream, -1 if this information in
5114 unavailable and/or meaningless (for example in case of synthetic video)
5115
5116 @item fmt
5117 pixel format name
5118
5119 @item sar
5120 sample aspect ratio of the input frame, expressed in the form
5121 @var{num}/@var{den}
5122
5123 @item s
5124 size of the input frame, expressed in the form
5125 @var{width}x@var{height}
5126
5127 @item i
5128 interlaced mode ("P" for "progressive", "T" for top field first, "B"
5129 for bottom field first)
5130
5131 @item iskey
5132 1 if the frame is a key frame, 0 otherwise
5133
5134 @item type
5135 picture type of the input frame ("I" for an I-frame, "P" for a
5136 P-frame, "B" for a B-frame, "?" for unknown type).
5137 Check also the documentation of the @code{AVPictureType} enum and of
5138 the @code{av_get_picture_type_char} function defined in
5139 @file{libavutil/avutil.h}.
5140
5141 @item checksum
5142 Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
5143
5144 @item plane_checksum
5145 Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
5146 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]"
5147 @end table
5148
5149 @section smartblur
5150
5151 Blur the input video without impacting the outlines.
5152
5153 The filter accepts the following options:
5154
5155 @table @option
5156 @item luma_radius, lr
5157 Set the luma radius. The option value must be a float number in
5158 the range [0.1,5.0] that specifies the variance of the gaussian filter
5159 used to blur the image (slower if larger). Default value is 1.0.
5160
5161 @item luma_strength, ls
5162 Set the luma strength. The option value must be a float number
5163 in the range [-1.0,1.0] that configures the blurring. A value included
5164 in [0.0,1.0] will blur the image whereas a value included in
5165 [-1.0,0.0] will sharpen the image. Default value is 1.0.
5166
5167 @item luma_threshold, lt
5168 Set the luma threshold used as a coefficient to determine
5169 whether a pixel should be blurred or not. The option value must be an
5170 integer in the range [-30,30]. A value of 0 will filter all the image,
5171 a value included in [0,30] will filter flat areas and a value included
5172 in [-30,0] will filter edges. Default value is 0.
5173
5174 @item chroma_radius, cr
5175 Set the chroma radius. The option value must be a float number in
5176 the range [0.1,5.0] that specifies the variance of the gaussian filter
5177 used to blur the image (slower if larger). Default value is 1.0.
5178
5179 @item chroma_strength, cs
5180 Set the chroma strength. The option value must be a float number
5181 in the range [-1.0,1.0] that configures the blurring. A value included
5182 in [0.0,1.0] will blur the image whereas a value included in
5183 [-1.0,0.0] will sharpen the image. Default value is 1.0.
5184
5185 @item chroma_threshold, ct
5186 Set the chroma threshold used as a coefficient to determine
5187 whether a pixel should be blurred or not. The option value must be an
5188 integer in the range [-30,30]. A value of 0 will filter all the image,
5189 a value included in [0,30] will filter flat areas and a value included
5190 in [-30,0] will filter edges. Default value is 0.
5191 @end table
5192
5193 If a chroma option is not explicitly set, the corresponding luma value
5194 is set.
5195
5196 @section stereo3d
5197
5198 Convert between different stereoscopic image formats.
5199
5200 The filters accept the following options:
5201
5202 @table @option
5203 @item in
5204 Set stereoscopic image format of input.
5205
5206 Available values for input image formats are:
5207 @table @samp
5208 @item sbsl
5209 side by side parallel (left eye left, right eye right)
5210
5211 @item sbsr
5212 side by side crosseye (right eye left, left eye right)
5213
5214 @item sbs2l
5215 side by side parallel with half width resolution
5216 (left eye left, right eye right)
5217
5218 @item sbs2r
5219 side by side crosseye with half width resolution
5220 (right eye left, left eye right)
5221
5222 @item abl
5223 above-below (left eye above, right eye below)
5224
5225 @item abr
5226 above-below (right eye above, left eye below)
5227
5228 @item ab2l
5229 above-below with half height resolution
5230 (left eye above, right eye below)
5231
5232 @item ab2r
5233 above-below with half height resolution
5234 (right eye above, left eye below)
5235
5236 Default value is @samp{sbsl}.
5237 @end table
5238
5239 @item out
5240 Set stereoscopic image format of output.
5241
5242 Available values for output image formats are all the input formats as well as:
5243 @table @samp
5244 @item arbg
5245 anaglyph red/blue gray
5246 (red filter on left eye, blue filter on right eye)
5247
5248 @item argg
5249 anaglyph red/green gray
5250 (red filter on left eye, green filter on right eye)
5251
5252 @item arcg
5253 anaglyph red/cyan gray
5254 (red filter on left eye, cyan filter on right eye)
5255
5256 @item arch
5257 anaglyph red/cyan half colored
5258 (red filter on left eye, cyan filter on right eye)
5259
5260 @item arcc
5261 anaglyph red/cyan color
5262 (red filter on left eye, cyan filter on right eye)
5263
5264 @item arcd
5265 anaglyph red/cyan color optimized with the least squares projection of dubois
5266 (red filter on left eye, cyan filter on right eye)
5267
5268 @item agmg
5269 anaglyph green/magenta gray
5270 (green filter on left eye, magenta filter on right eye)
5271
5272 @item agmh
5273 anaglyph green/magenta half colored
5274 (green filter on left eye, magenta filter on right eye)
5275
5276 @item agmc
5277 anaglyph green/magenta colored
5278 (green filter on left eye, magenta filter on right eye)
5279
5280 @item agmd
5281 anaglyph green/magenta color optimized with the least squares projection of dubois
5282 (green filter on left eye, magenta filter on right eye)
5283
5284 @item aybg
5285 anaglyph yellow/blue gray
5286 (yellow filter on left eye, blue filter on right eye)
5287
5288 @item aybh
5289 anaglyph yellow/blue half colored
5290 (yellow filter on left eye, blue filter on right eye)
5291
5292 @item aybc
5293 anaglyph yellow/blue colored
5294 (yellow filter on left eye, blue filter on right eye)
5295
5296 @item aybd
5297 anaglyph yellow/blue color optimized with the least squares projection of dubois
5298 (yellow filter on left eye, blue filter on right eye)
5299
5300 @item irl
5301 interleaved rows (left eye has top row, right eye starts on next row)
5302
5303 @item irr
5304 interleaved rows (right eye has top row, left eye starts on next row)
5305
5306 @item ml
5307 mono output (left eye only)
5308
5309 @item mr
5310 mono output (right eye only)
5311 @end table
5312
5313 Default value is @samp{arcd}.
5314 @end table
5315
5316 @anchor{subtitles}
5317 @section subtitles
5318
5319 Draw subtitles on top of input video using the libass library.
5320
5321 To enable compilation of this filter you need to configure FFmpeg with
5322 @code{--enable-libass}. This filter also requires a build with libavcodec and
5323 libavformat to convert the passed subtitles file to ASS (Advanced Substation
5324 Alpha) subtitles format.
5325
5326 The filter accepts the following options:
5327
5328 @table @option
5329 @item filename, f
5330 Set the filename of the subtitle file to read. It must be specified.
5331
5332 @item original_size
5333 Specify the size of the original video, the video for which the ASS file
5334 was composed. Due to a misdesign in ASS aspect ratio arithmetic, this is
5335 necessary to correctly scale the fonts if the aspect ratio has been changed.
5336
5337 @item charenc
5338 Set subtitles input character encoding. @code{subtitles} filter only. Only
5339 useful if not UTF-8.
5340 @end table
5341
5342 If the first key is not specified, it is assumed that the first value
5343 specifies the @option{filename}.
5344
5345 For example, to render the file @file{sub.srt} on top of the input
5346 video, use the command:
5347 @example
5348 subtitles=sub.srt
5349 @end example
5350
5351 which is equivalent to:
5352 @example
5353 subtitles=filename=sub.srt
5354 @end example
5355
5356 @section split
5357
5358 Split input video into several identical outputs.
5359
5360 The filter accepts a single parameter which specifies the number of outputs. If
5361 unspecified, it defaults to 2.
5362
5363 For example
5364 @example
5365 ffmpeg -i INPUT -filter_complex split=5 OUTPUT
5366 @end example
5367 will create 5 copies of the input video.
5368
5369 For example:
5370 @example
5371 [in] split [splitout1][splitout2];
5372 [splitout1] crop=100:100:0:0    [cropout];
5373 [splitout2] pad=200:200:100:100 [padout];
5374 @end example
5375
5376 will create two separate outputs from the same input, one cropped and
5377 one padded.
5378
5379 @section super2xsai
5380
5381 Scale the input by 2x and smooth using the Super2xSaI (Scale and
5382 Interpolate) pixel art scaling algorithm.
5383
5384 Useful for enlarging pixel art images without reducing sharpness.
5385
5386 @section swapuv
5387 Swap U & V plane.
5388
5389 @section thumbnail
5390 Select the most representative frame in a given sequence of consecutive frames.
5391
5392 The filter accepts the following options:
5393
5394 @table @option
5395 @item n
5396 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
5397 will pick one of them, and then handle the next batch of @var{n} frames until
5398 the end. Default is @code{100}.
5399 @end table
5400
5401 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
5402 value will result in a higher memory usage, so a high value is not recommended.
5403
5404 @subsection Examples
5405
5406 @itemize
5407 @item
5408 Extract one picture each 50 frames:
5409 @example
5410 thumbnail=50
5411 @end example
5412
5413 @item
5414 Complete example of a thumbnail creation with @command{ffmpeg}:
5415 @example
5416 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
5417 @end example
5418 @end itemize
5419
5420 @section tile
5421
5422 Tile several successive frames together.
5423
5424 The filter accepts the following options:
5425
5426 @table @option
5427
5428 @item layout
5429 Set the grid size (i.e. the number of lines and columns) in the form
5430 "@var{w}x@var{h}".
5431
5432 @item nb_frames
5433 Set the maximum number of frames to render in the given area. It must be less
5434 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
5435 the area will be used.
5436
5437 @item margin
5438 Set the outer border margin in pixels.
5439
5440 @item padding
5441 Set the inner border thickness (i.e. the number of pixels between frames). For
5442 more advanced padding options (such as having different values for the edges),
5443 refer to the pad video filter.
5444
5445 @end table
5446
5447 @subsection Examples
5448
5449 @itemize
5450 @item
5451 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
5452 @example
5453 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
5454 @end example
5455 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
5456 duplicating each output frame to accomodate the originally detected frame
5457 rate.
5458
5459 @item
5460 Display @code{5} pictures in an area of @code{3x2} frames,
5461 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
5462 mixed flat and named options:
5463 @example
5464 tile=3x2:nb_frames=5:padding=7:margin=2
5465 @end example
5466 @end itemize
5467
5468 @section tinterlace
5469
5470 Perform various types of temporal field interlacing.
5471
5472 Frames are counted starting from 1, so the first input frame is
5473 considered odd.
5474
5475 The filter accepts the following options:
5476
5477 @table @option
5478
5479 @item mode
5480 Specify the mode of the interlacing. This option can also be specified
5481 as a value alone. See below for a list of values for this option.
5482
5483 Available values are:
5484
5485 @table @samp
5486 @item merge, 0
5487 Move odd frames into the upper field, even into the lower field,
5488 generating a double height frame at half frame rate.
5489
5490 @item drop_odd, 1
5491 Only output even frames, odd frames are dropped, generating a frame with
5492 unchanged height at half frame rate.
5493
5494 @item drop_even, 2
5495 Only output odd frames, even frames are dropped, generating a frame with
5496 unchanged height at half frame rate.
5497
5498 @item pad, 3
5499 Expand each frame to full height, but pad alternate lines with black,
5500 generating a frame with double height at the same input frame rate.
5501
5502 @item interleave_top, 4
5503 Interleave the upper field from odd frames with the lower field from
5504 even frames, generating a frame with unchanged height at half frame rate.
5505
5506 @item interleave_bottom, 5
5507 Interleave the lower field from odd frames with the upper field from
5508 even frames, generating a frame with unchanged height at half frame rate.
5509
5510 @item interlacex2, 6
5511 Double frame rate with unchanged height. Frames are inserted each
5512 containing the second temporal field from the previous input frame and
5513 the first temporal field from the next input frame. This mode relies on
5514 the top_field_first flag. Useful for interlaced video displays with no
5515 field synchronisation.
5516 @end table
5517
5518 Numeric values are deprecated but are accepted for backward
5519 compatibility reasons.
5520
5521 Default mode is @code{merge}.
5522
5523 @item flags
5524 Specify flags influencing the filter process.
5525
5526 Available value for @var{flags} is:
5527
5528 @table @option
5529 @item low_pass_filter, vlfp
5530 Enable vertical low-pass filtering in the filter.
5531 Vertical low-pass filtering is required when creating an interlaced
5532 destination from a progressive source which contains high-frequency
5533 vertical detail. Filtering will reduce interlace 'twitter' and Moire
5534 patterning.
5535
5536 Vertical low-pass filtering can only be enabled for @option{mode}
5537 @var{interleave_top} and @var{interleave_bottom}.
5538
5539 @end table
5540 @end table
5541
5542 @section transpose
5543
5544 Transpose rows with columns in the input video and optionally flip it.
5545
5546 This filter accepts the following options:
5547
5548 @table @option
5549
5550 @item dir
5551 The direction of the transpose.
5552
5553 @table @samp
5554 @item 0, 4, cclock_flip
5555 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
5556 @example
5557 L.R     L.l
5558 . . ->  . .
5559 l.r     R.r
5560 @end example
5561
5562 @item 1, 5, clock
5563 Rotate by 90 degrees clockwise, that is:
5564 @example
5565 L.R     l.L
5566 . . ->  . .
5567 l.r     r.R
5568 @end example
5569
5570 @item 2, 6, cclock
5571 Rotate by 90 degrees counterclockwise, that is:
5572 @example
5573 L.R     R.r
5574 . . ->  . .
5575 l.r     L.l
5576 @end example
5577
5578 @item 3, 7, clock_flip
5579 Rotate by 90 degrees clockwise and vertically flip, that is:
5580 @example
5581 L.R     r.R
5582 . . ->  . .
5583 l.r     l.L
5584 @end example
5585 @end table
5586
5587 For values between 4-7, the transposition is only done if the input
5588 video geometry is portrait and not landscape. These values are
5589 deprecated, the @code{passthrough} option should be used instead.
5590
5591 @item passthrough
5592 Do not apply the transposition if the input geometry matches the one
5593 specified by the specified value. It accepts the following values:
5594 @table @samp
5595 @item none
5596 Always apply transposition.
5597 @item portrait
5598 Preserve portrait geometry (when @var{height} >= @var{width}).
5599 @item landscape
5600 Preserve landscape geometry (when @var{width} >= @var{height}).
5601 @end table
5602
5603 Default value is @code{none}.
5604 @end table
5605
5606 For example to rotate by 90 degrees clockwise and preserve portrait
5607 layout:
5608 @example
5609 transpose=dir=1:passthrough=portrait
5610 @end example
5611
5612 The command above can also be specified as:
5613 @example
5614 transpose=1:portrait
5615 @end example
5616
5617 @section unsharp
5618
5619 Sharpen or blur the input video.
5620
5621 It accepts the following parameters:
5622
5623 @table @option
5624 @item luma_msize_x, lx
5625 @item chroma_msize_x, cx
5626 Set the luma/chroma matrix horizontal size. It must be an odd integer
5627 between 3 and 63, default value is 5.
5628
5629 @item luma_msize_y, ly
5630 @item chroma_msize_y, cy
5631 Set the luma/chroma matrix vertical size. It must be an odd integer
5632 between 3 and 63, default value is 5.
5633
5634 @item luma_amount, la
5635 @item chroma_amount, ca
5636 Set the luma/chroma effect strength. It can be a float number,
5637 reasonable values lay between -1.5 and 1.5.
5638
5639 Negative values will blur the input video, while positive values will
5640 sharpen it, a value of zero will disable the effect.
5641
5642 Default value is 1.0 for @option{luma_amount}, 0.0 for
5643 @option{chroma_amount}.
5644 @end table
5645
5646 All parameters are optional and default to the
5647 equivalent of the string '5:5:1.0:5:5:0.0'.
5648
5649 @subsection Examples
5650
5651 @itemize
5652 @item
5653 Apply strong luma sharpen effect:
5654 @example
5655 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
5656 @end example
5657
5658 @item
5659 Apply strong blur of both luma and chroma parameters:
5660 @example
5661 unsharp=7:7:-2:7:7:-2
5662 @end example
5663 @end itemize
5664
5665 @section vflip
5666
5667 Flip the input video vertically.
5668
5669 @example
5670 ffmpeg -i in.avi -vf "vflip" out.avi
5671 @end example
5672
5673 @section yadif
5674
5675 Deinterlace the input video ("yadif" means "yet another deinterlacing
5676 filter").
5677
5678 This filter accepts the following options:
5679
5680
5681 @table @option
5682
5683 @item mode
5684 The interlacing mode to adopt, accepts one of the following values:
5685
5686 @table @option
5687 @item 0, send_frame
5688 output 1 frame for each frame
5689 @item 1, send_field
5690 output 1 frame for each field
5691 @item 2, send_frame_nospatial
5692 like @code{send_frame} but skip spatial interlacing check
5693 @item 3, send_field_nospatial
5694 like @code{send_field} but skip spatial interlacing check
5695 @end table
5696
5697 Default value is @code{send_frame}.
5698
5699 @item parity
5700 The picture field parity assumed for the input interlaced video, accepts one of
5701 the following values:
5702
5703 @table @option
5704 @item 0, tff
5705 assume top field first
5706 @item 1, bff
5707 assume bottom field first
5708 @item -1, auto
5709 enable automatic detection
5710 @end table
5711
5712 Default value is @code{auto}.
5713 If interlacing is unknown or decoder does not export this information,
5714 top field first will be assumed.
5715
5716 @item deint
5717 Specify which frames to deinterlace. Accept one of the following
5718 values:
5719
5720 @table @option
5721 @item 0, all
5722 deinterlace all frames
5723 @item 1, interlaced
5724 only deinterlace frames marked as interlaced
5725 @end table
5726
5727 Default value is @code{all}.
5728 @end table
5729
5730 @c man end VIDEO FILTERS
5731
5732 @chapter Video Sources
5733 @c man begin VIDEO SOURCES
5734
5735 Below is a description of the currently available video sources.
5736
5737 @section buffer
5738
5739 Buffer video frames, and make them available to the filter chain.
5740
5741 This source is mainly intended for a programmatic use, in particular
5742 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
5743
5744 This source accepts the following options:
5745
5746 @table @option
5747
5748 @item video_size
5749 Specify the size (width and height) of the buffered video frames.
5750
5751 @item width
5752 Input video width.
5753
5754 @item height
5755 Input video height.
5756
5757 @item pix_fmt
5758 A string representing the pixel format of the buffered video frames.
5759 It may be a number corresponding to a pixel format, or a pixel format
5760 name.
5761
5762 @item time_base
5763 Specify the timebase assumed by the timestamps of the buffered frames.
5764
5765 @item frame_rate
5766 Specify the frame rate expected for the video stream.
5767
5768 @item pixel_aspect, sar
5769 Specify the sample aspect ratio assumed by the video frames.
5770
5771 @item sws_param
5772 Specify the optional parameters to be used for the scale filter which
5773 is automatically inserted when an input change is detected in the
5774 input size or format.
5775 @end table
5776
5777 For example:
5778 @example
5779 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
5780 @end example
5781
5782 will instruct the source to accept video frames with size 320x240 and
5783 with format "yuv410p", assuming 1/24 as the timestamps timebase and
5784 square pixels (1:1 sample aspect ratio).
5785 Since the pixel format with name "yuv410p" corresponds to the number 6
5786 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
5787 this example corresponds to:
5788 @example
5789 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
5790 @end example
5791
5792 Alternatively, the options can be specified as a flat string, but this
5793 syntax is deprecated:
5794
5795 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}[:@var{sws_param}]
5796
5797 @section cellauto
5798
5799 Create a pattern generated by an elementary cellular automaton.
5800
5801 The initial state of the cellular automaton can be defined through the
5802 @option{filename}, and @option{pattern} options. If such options are
5803 not specified an initial state is created randomly.
5804
5805 At each new frame a new row in the video is filled with the result of
5806 the cellular automaton next generation. The behavior when the whole
5807 frame is filled is defined by the @option{scroll} option.
5808
5809 This source accepts the following options:
5810
5811 @table @option
5812 @item filename, f
5813 Read the initial cellular automaton state, i.e. the starting row, from
5814 the specified file.
5815 In the file, each non-whitespace character is considered an alive
5816 cell, a newline will terminate the row, and further characters in the
5817 file will be ignored.
5818
5819 @item pattern, p
5820 Read the initial cellular automaton state, i.e. the starting row, from
5821 the specified string.
5822
5823 Each non-whitespace character in the string is considered an alive
5824 cell, a newline will terminate the row, and further characters in the
5825 string will be ignored.
5826
5827 @item rate, r
5828 Set the video rate, that is the number of frames generated per second.
5829 Default is 25.
5830
5831 @item random_fill_ratio, ratio
5832 Set the random fill ratio for the initial cellular automaton row. It
5833 is a floating point number value ranging from 0 to 1, defaults to
5834 1/PHI.
5835
5836 This option is ignored when a file or a pattern is specified.
5837
5838 @item random_seed, seed
5839 Set the seed for filling randomly the initial row, must be an integer
5840 included between 0 and UINT32_MAX. If not specified, or if explicitly
5841 set to -1, the filter will try to use a good random seed on a best
5842 effort basis.
5843
5844 @item rule
5845 Set the cellular automaton rule, it is a number ranging from 0 to 255.
5846 Default value is 110.
5847
5848 @item size, s
5849 Set the size of the output video.
5850
5851 If @option{filename} or @option{pattern} is specified, the size is set
5852 by default to the width of the specified initial state row, and the
5853 height is set to @var{width} * PHI.
5854
5855 If @option{size} is set, it must contain the width of the specified
5856 pattern string, and the specified pattern will be centered in the
5857 larger row.
5858
5859 If a filename or a pattern string is not specified, the size value
5860 defaults to "320x518" (used for a randomly generated initial state).
5861
5862 @item scroll
5863 If set to 1, scroll the output upward when all the rows in the output
5864 have been already filled. If set to 0, the new generated row will be
5865 written over the top row just after the bottom row is filled.
5866 Defaults to 1.
5867
5868 @item start_full, full
5869 If set to 1, completely fill the output with generated rows before
5870 outputting the first frame.
5871 This is the default behavior, for disabling set the value to 0.
5872
5873 @item stitch
5874 If set to 1, stitch the left and right row edges together.
5875 This is the default behavior, for disabling set the value to 0.
5876 @end table
5877
5878 @subsection Examples
5879
5880 @itemize
5881 @item
5882 Read the initial state from @file{pattern}, and specify an output of
5883 size 200x400.
5884 @example
5885 cellauto=f=pattern:s=200x400
5886 @end example
5887
5888 @item
5889 Generate a random initial row with a width of 200 cells, with a fill
5890 ratio of 2/3:
5891 @example
5892 cellauto=ratio=2/3:s=200x200
5893 @end example
5894
5895 @item
5896 Create a pattern generated by rule 18 starting by a single alive cell
5897 centered on an initial row with width 100:
5898 @example
5899 cellauto=p=@@:s=100x400:full=0:rule=18
5900 @end example
5901
5902 @item
5903 Specify a more elaborated initial pattern:
5904 @example
5905 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
5906 @end example
5907
5908 @end itemize
5909
5910 @section mandelbrot
5911
5912 Generate a Mandelbrot set fractal, and progressively zoom towards the
5913 point specified with @var{start_x} and @var{start_y}.
5914
5915 This source accepts the following options:
5916
5917 @table @option
5918
5919 @item end_pts
5920 Set the terminal pts value. Default value is 400.
5921
5922 @item end_scale
5923 Set the terminal scale value.
5924 Must be a floating point value. Default value is 0.3.
5925
5926 @item inner
5927 Set the inner coloring mode, that is the algorithm used to draw the
5928 Mandelbrot fractal internal region.
5929
5930 It shall assume one of the following values:
5931 @table @option
5932 @item black
5933 Set black mode.
5934 @item convergence
5935 Show time until convergence.
5936 @item mincol
5937 Set color based on point closest to the origin of the iterations.
5938 @item period
5939 Set period mode.
5940 @end table
5941
5942 Default value is @var{mincol}.
5943
5944 @item bailout
5945 Set the bailout value. Default value is 10.0.
5946
5947 @item maxiter
5948 Set the maximum of iterations performed by the rendering
5949 algorithm. Default value is 7189.
5950
5951 @item outer
5952 Set outer coloring mode.
5953 It shall assume one of following values:
5954 @table @option
5955 @item iteration_count
5956 Set iteration cound mode.
5957 @item normalized_iteration_count
5958 set normalized iteration count mode.
5959 @end table
5960 Default value is @var{normalized_iteration_count}.
5961
5962 @item rate, r
5963 Set frame rate, expressed as number of frames per second. Default
5964 value is "25".
5965
5966 @item size, s
5967 Set frame size. Default value is "640x480".
5968
5969 @item start_scale
5970 Set the initial scale value. Default value is 3.0.
5971
5972 @item start_x
5973 Set the initial x position. Must be a floating point value between
5974 -100 and 100. Default value is -0.743643887037158704752191506114774.
5975
5976 @item start_y
5977 Set the initial y position. Must be a floating point value between
5978 -100 and 100. Default value is -0.131825904205311970493132056385139.
5979 @end table
5980
5981 @section mptestsrc
5982
5983 Generate various test patterns, as generated by the MPlayer test filter.
5984
5985 The size of the generated video is fixed, and is 256x256.
5986 This source is useful in particular for testing encoding features.
5987
5988 This source accepts the following options:
5989
5990 @table @option
5991
5992 @item rate, r
5993 Specify the frame rate of the sourced video, as the number of frames
5994 generated per second. It has to be a string in the format
5995 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
5996 number or a valid video frame rate abbreviation. The default value is
5997 "25".
5998
5999 @item duration, d
6000 Set the video duration of the sourced video. The accepted syntax is:
6001 @example
6002 [-]HH:MM:SS[.m...]
6003 [-]S+[.m...]
6004 @end example
6005 See also the function @code{av_parse_time()}.
6006
6007 If not specified, or the expressed duration is negative, the video is
6008 supposed to be generated forever.
6009
6010 @item test, t
6011
6012 Set the number or the name of the test to perform. Supported tests are:
6013 @table @option
6014 @item dc_luma
6015 @item dc_chroma
6016 @item freq_luma
6017 @item freq_chroma
6018 @item amp_luma
6019 @item amp_chroma
6020 @item cbp
6021 @item mv
6022 @item ring1
6023 @item ring2
6024 @item all
6025 @end table
6026
6027 Default value is "all", which will cycle through the list of all tests.
6028 @end table
6029
6030 For example the following:
6031 @example
6032 testsrc=t=dc_luma
6033 @end example
6034
6035 will generate a "dc_luma" test pattern.
6036
6037 @section frei0r_src
6038
6039 Provide a frei0r source.
6040
6041 To enable compilation of this filter you need to install the frei0r
6042 header and configure FFmpeg with @code{--enable-frei0r}.
6043
6044 This source accepts the following options:
6045
6046 @table @option
6047
6048 @item size
6049 The size of the video to generate, may be a string of the form
6050 @var{width}x@var{height} or a frame size abbreviation.
6051
6052 @item framerate
6053 Framerate of the generated video, may be a string of the form
6054 @var{num}/@var{den} or a frame rate abbreviation.
6055
6056 @item filter_name
6057 The name to the frei0r source to load. For more information regarding frei0r and
6058 how to set the parameters read the section @ref{frei0r} in the description of
6059 the video filters.
6060
6061 @item filter_params
6062 A '|'-separated list of parameters to pass to the frei0r source.
6063
6064 @end table
6065
6066 For example, to generate a frei0r partik0l source with size 200x200
6067 and frame rate 10 which is overlayed on the overlay filter main input:
6068 @example
6069 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
6070 @end example
6071
6072 @section life
6073
6074 Generate a life pattern.
6075
6076 This source is based on a generalization of John Conway's life game.
6077
6078 The sourced input represents a life grid, each pixel represents a cell
6079 which can be in one of two possible states, alive or dead. Every cell
6080 interacts with its eight neighbours, which are the cells that are
6081 horizontally, vertically, or diagonally adjacent.
6082
6083 At each interaction the grid evolves according to the adopted rule,
6084 which specifies the number of neighbor alive cells which will make a
6085 cell stay alive or born. The @option{rule} option allows to specify
6086 the rule to adopt.
6087
6088 This source accepts the following options:
6089
6090 @table @option
6091 @item filename, f
6092 Set the file from which to read the initial grid state. In the file,
6093 each non-whitespace character is considered an alive cell, and newline
6094 is used to delimit the end of each row.
6095
6096 If this option is not specified, the initial grid is generated
6097 randomly.
6098
6099 @item rate, r
6100 Set the video rate, that is the number of frames generated per second.
6101 Default is 25.
6102
6103 @item random_fill_ratio, ratio
6104 Set the random fill ratio for the initial random grid. It is a
6105 floating point number value ranging from 0 to 1, defaults to 1/PHI.
6106 It is ignored when a file is specified.
6107
6108 @item random_seed, seed
6109 Set the seed for filling the initial random grid, must be an integer
6110 included between 0 and UINT32_MAX. If not specified, or if explicitly
6111 set to -1, the filter will try to use a good random seed on a best
6112 effort basis.
6113
6114 @item rule
6115 Set the life rule.
6116
6117 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
6118 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
6119 @var{NS} specifies the number of alive neighbor cells which make a
6120 live cell stay alive, and @var{NB} the number of alive neighbor cells
6121 which make a dead cell to become alive (i.e. to "born").
6122 "s" and "b" can be used in place of "S" and "B", respectively.
6123
6124 Alternatively a rule can be specified by an 18-bits integer. The 9
6125 high order bits are used to encode the next cell state if it is alive
6126 for each number of neighbor alive cells, the low order bits specify
6127 the rule for "borning" new cells. Higher order bits encode for an
6128 higher number of neighbor cells.
6129 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
6130 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
6131
6132 Default value is "S23/B3", which is the original Conway's game of life
6133 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
6134 cells, and will born a new cell if there are three alive cells around
6135 a dead cell.
6136
6137 @item size, s
6138 Set the size of the output video.
6139
6140 If @option{filename} is specified, the size is set by default to the
6141 same size of the input file. If @option{size} is set, it must contain
6142 the size specified in the input file, and the initial grid defined in
6143 that file is centered in the larger resulting area.
6144
6145 If a filename is not specified, the size value defaults to "320x240"
6146 (used for a randomly generated initial grid).
6147
6148 @item stitch
6149 If set to 1, stitch the left and right grid edges together, and the
6150 top and bottom edges also. Defaults to 1.
6151
6152 @item mold
6153 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
6154 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
6155 value from 0 to 255.
6156
6157 @item life_color
6158 Set the color of living (or new born) cells.
6159
6160 @item death_color
6161 Set the color of dead cells. If @option{mold} is set, this is the first color
6162 used to represent a dead cell.
6163
6164 @item mold_color
6165 Set mold color, for definitely dead and moldy cells.
6166 @end table
6167
6168 @subsection Examples
6169
6170 @itemize
6171 @item
6172 Read a grid from @file{pattern}, and center it on a grid of size
6173 300x300 pixels:
6174 @example
6175 life=f=pattern:s=300x300
6176 @end example
6177
6178 @item
6179 Generate a random grid of size 200x200, with a fill ratio of 2/3:
6180 @example
6181 life=ratio=2/3:s=200x200
6182 @end example
6183
6184 @item
6185 Specify a custom rule for evolving a randomly generated grid:
6186 @example
6187 life=rule=S14/B34
6188 @end example
6189
6190 @item
6191 Full example with slow death effect (mold) using @command{ffplay}:
6192 @example
6193 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
6194 @end example
6195 @end itemize
6196
6197 @section color, nullsrc, rgbtestsrc, smptebars, testsrc
6198
6199 The @code{color} source provides an uniformly colored input.
6200
6201 The @code{nullsrc} source returns unprocessed video frames. It is
6202 mainly useful to be employed in analysis / debugging tools, or as the
6203 source for filters which ignore the input data.
6204
6205 The @code{rgbtestsrc} source generates an RGB test pattern useful for
6206 detecting RGB vs BGR issues. You should see a red, green and blue
6207 stripe from top to bottom.
6208
6209 The @code{smptebars} source generates a color bars pattern, based on
6210 the SMPTE Engineering Guideline EG 1-1990.
6211
6212 The @code{testsrc} source generates a test video pattern, showing a
6213 color pattern, a scrolling gradient and a timestamp. This is mainly
6214 intended for testing purposes.
6215
6216 The sources accept the following options:
6217
6218 @table @option
6219
6220 @item color, c
6221 Specify the color of the source, only used in the @code{color}
6222 source. It can be the name of a color (case insensitive match) or a
6223 0xRRGGBB[AA] sequence, possibly followed by an alpha specifier. The
6224 default value is "black".
6225
6226 @item size, s
6227 Specify the size of the sourced video, it may be a string of the form
6228 @var{width}x@var{height}, or the name of a size abbreviation. The
6229 default value is "320x240".
6230
6231 @item rate, r
6232 Specify the frame rate of the sourced video, as the number of frames
6233 generated per second. It has to be a string in the format
6234 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
6235 number or a valid video frame rate abbreviation. The default value is
6236 "25".
6237
6238 @item sar
6239 Set the sample aspect ratio of the sourced video.
6240
6241 @item duration, d
6242 Set the video duration of the sourced video. The accepted syntax is:
6243 @example
6244 [-]HH[:MM[:SS[.m...]]]
6245 [-]S+[.m...]
6246 @end example
6247 See also the function @code{av_parse_time()}.
6248
6249 If not specified, or the expressed duration is negative, the video is
6250 supposed to be generated forever.
6251
6252 @item decimals, n
6253 Set the number of decimals to show in the timestamp, only used in the
6254 @code{testsrc} source.
6255
6256 The displayed timestamp value will correspond to the original
6257 timestamp value multiplied by the power of 10 of the specified
6258 value. Default value is 0.
6259 @end table
6260
6261 For example the following:
6262 @example
6263 testsrc=duration=5.3:size=qcif:rate=10
6264 @end example
6265
6266 will generate a video with a duration of 5.3 seconds, with size
6267 176x144 and a frame rate of 10 frames per second.
6268
6269 The following graph description will generate a red source
6270 with an opacity of 0.2, with size "qcif" and a frame rate of 10
6271 frames per second.
6272 @example
6273 color=c=red@@0.2:s=qcif:r=10
6274 @end example
6275
6276 If the input content is to be ignored, @code{nullsrc} can be used. The
6277 following command generates noise in the luminance plane by employing
6278 the @code{geq} filter:
6279 @example
6280 nullsrc=s=256x256, geq=random(1)*255:128:128
6281 @end example
6282
6283 @c man end VIDEO SOURCES
6284
6285 @chapter Video Sinks
6286 @c man begin VIDEO SINKS
6287
6288 Below is a description of the currently available video sinks.
6289
6290 @section buffersink
6291
6292 Buffer video frames, and make them available to the end of the filter
6293 graph.
6294
6295 This sink is mainly intended for a programmatic use, in particular
6296 through the interface defined in @file{libavfilter/buffersink.h}
6297 or the options system.
6298
6299 It accepts a pointer to an AVBufferSinkContext structure, which
6300 defines the incoming buffers' formats, to be passed as the opaque
6301 parameter to @code{avfilter_init_filter} for initialization.
6302
6303 @section nullsink
6304
6305 Null video sink, do absolutely nothing with the input video. It is
6306 mainly useful as a template and to be employed in analysis / debugging
6307 tools.
6308
6309 @c man end VIDEO SINKS
6310
6311 @chapter Multimedia Filters
6312 @c man begin MULTIMEDIA FILTERS
6313
6314 Below is a description of the currently available multimedia filters.
6315
6316 @section aperms, perms
6317
6318 Set read/write permissions for the output frames.
6319
6320 These filters are mainly aimed at developers to test direct path in the
6321 following filter in the filtergraph.
6322
6323 The filters accept the following options:
6324
6325 @table @option
6326 @item mode
6327 Select the permissions mode.
6328
6329 It accepts the following values:
6330 @table @samp
6331 @item none
6332 Do nothing. This is the default.
6333 @item ro
6334 Set all the output frames read-only.
6335 @item rw
6336 Set all the output frames directly writable.
6337 @item toggle
6338 Make the frame read-only if writable, and writable if read-only.
6339 @item random
6340 Set each output frame read-only or writable randomly.
6341 @end table
6342
6343 @item seed
6344 Set the seed for the @var{random} mode, must be an integer included between
6345 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
6346 @code{-1}, the filter will try to use a good random seed on a best effort
6347 basis.
6348 @end table
6349
6350 Note: in case of auto-inserted filter between the permission filter and the
6351 following one, the permission might not be received as expected in that
6352 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
6353 perms/aperms filter can avoid this problem.
6354
6355 @section aphaser
6356 Add a phasing effect to the input audio.
6357
6358 A phaser filter creates series of peaks and troughs in the frequency spectrum.
6359 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
6360
6361 A description of the accepted parameters follows.
6362
6363 @table @option
6364 @item in_gain
6365 Set input gain. Default is 0.4.
6366
6367 @item out_gain
6368 Set output gain. Default is 0.74
6369
6370 @item delay
6371 Set delay in milliseconds. Default is 3.0.
6372
6373 @item decay
6374 Set decay. Default is 0.4.
6375
6376 @item speed
6377 Set modulation speed in Hz. Default is 0.5.
6378
6379 @item type
6380 Set modulation type. Default is triangular.
6381
6382 It accepts the following values:
6383 @table @samp
6384 @item triangular, t
6385 @item sinusoidal, s
6386 @end table
6387 @end table
6388
6389 @section aselect, select
6390 Select frames to pass in output.
6391
6392 This filter accepts the following options:
6393
6394 @table @option
6395
6396 @item expr, e
6397 An expression, which is evaluated for each input frame. If the expression is
6398 evaluated to a non-zero value, the frame is selected and passed to the output,
6399 otherwise it is discarded.
6400
6401 @end table
6402
6403 The expression can contain the following constants:
6404
6405 @table @option
6406 @item n
6407 the sequential number of the filtered frame, starting from 0
6408
6409 @item selected_n
6410 the sequential number of the selected frame, starting from 0
6411
6412 @item prev_selected_n
6413 the sequential number of the last selected frame, NAN if undefined
6414
6415 @item TB
6416 timebase of the input timestamps
6417
6418 @item pts
6419 the PTS (Presentation TimeStamp) of the filtered video frame,
6420 expressed in @var{TB} units, NAN if undefined
6421
6422 @item t
6423 the PTS (Presentation TimeStamp) of the filtered video frame,
6424 expressed in seconds, NAN if undefined
6425
6426 @item prev_pts
6427 the PTS of the previously filtered video frame, NAN if undefined
6428
6429 @item prev_selected_pts
6430 the PTS of the last previously filtered video frame, NAN if undefined
6431
6432 @item prev_selected_t
6433 the PTS of the last previously selected video frame, NAN if undefined
6434
6435 @item start_pts
6436 the PTS of the first video frame in the video, NAN if undefined
6437
6438 @item start_t
6439 the time of the first video frame in the video, NAN if undefined
6440
6441 @item pict_type @emph{(video only)}
6442 the type of the filtered frame, can assume one of the following
6443 values:
6444 @table @option
6445 @item I
6446 @item P
6447 @item B
6448 @item S
6449 @item SI
6450 @item SP
6451 @item BI
6452 @end table
6453
6454 @item interlace_type @emph{(video only)}
6455 the frame interlace type, can assume one of the following values:
6456 @table @option
6457 @item PROGRESSIVE
6458 the frame is progressive (not interlaced)
6459 @item TOPFIRST
6460 the frame is top-field-first
6461 @item BOTTOMFIRST
6462 the frame is bottom-field-first
6463 @end table
6464
6465 @item consumed_sample_n @emph{(audio only)}
6466 the number of selected samples before the current frame
6467
6468 @item samples_n @emph{(audio only)}
6469 the number of samples in the current frame
6470
6471 @item sample_rate @emph{(audio only)}
6472 the input sample rate
6473
6474 @item key
6475 1 if the filtered frame is a key-frame, 0 otherwise
6476
6477 @item pos
6478 the position in the file of the filtered frame, -1 if the information
6479 is not available (e.g. for synthetic video)
6480
6481 @item scene @emph{(video only)}
6482 value between 0 and 1 to indicate a new scene; a low value reflects a low
6483 probability for the current frame to introduce a new scene, while a higher
6484 value means the current frame is more likely to be one (see the example below)
6485
6486 @end table
6487
6488 The default value of the select expression is "1".
6489
6490 @subsection Examples
6491
6492 @itemize
6493 @item
6494 Select all frames in input:
6495 @example
6496 select
6497 @end example
6498
6499 The example above is the same as:
6500 @example
6501 select=1
6502 @end example
6503
6504 @item
6505 Skip all frames:
6506 @example
6507 select=0
6508 @end example
6509
6510 @item
6511 Select only I-frames:
6512 @example
6513 select='eq(pict_type\,I)'
6514 @end example
6515
6516 @item
6517 Select one frame every 100:
6518 @example
6519 select='not(mod(n\,100))'
6520 @end example
6521
6522 @item
6523 Select only frames contained in the 10-20 time interval:
6524 @example
6525 select='gte(t\,10)*lte(t\,20)'
6526 @end example
6527
6528 @item
6529 Select only I frames contained in the 10-20 time interval:
6530 @example
6531 select='gte(t\,10)*lte(t\,20)*eq(pict_type\,I)'
6532 @end example
6533
6534 @item
6535 Select frames with a minimum distance of 10 seconds:
6536 @example
6537 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
6538 @end example
6539
6540 @item
6541 Use aselect to select only audio frames with samples number > 100:
6542 @example
6543 aselect='gt(samples_n\,100)'
6544 @end example
6545
6546 @item
6547 Create a mosaic of the first scenes:
6548 @example
6549 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
6550 @end example
6551
6552 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
6553 choice.
6554 @end itemize
6555
6556 @section asendcmd, sendcmd
6557
6558 Send commands to filters in the filtergraph.
6559
6560 These filters read commands to be sent to other filters in the
6561 filtergraph.
6562
6563 @code{asendcmd} must be inserted between two audio filters,
6564 @code{sendcmd} must be inserted between two video filters, but apart
6565 from that they act the same way.
6566
6567 The specification of commands can be provided in the filter arguments
6568 with the @var{commands} option, or in a file specified by the
6569 @var{filename} option.
6570
6571 These filters accept the following options:
6572 @table @option
6573 @item commands, c
6574 Set the commands to be read and sent to the other filters.
6575 @item filename, f
6576 Set the filename of the commands to be read and sent to the other
6577 filters.
6578 @end table
6579
6580 @subsection Commands syntax
6581
6582 A commands description consists of a sequence of interval
6583 specifications, comprising a list of commands to be executed when a
6584 particular event related to that interval occurs. The occurring event
6585 is typically the current frame time entering or leaving a given time
6586 interval.
6587
6588 An interval is specified by the following syntax:
6589 @example
6590 @var{START}[-@var{END}] @var{COMMANDS};
6591 @end example
6592
6593 The time interval is specified by the @var{START} and @var{END} times.
6594 @var{END} is optional and defaults to the maximum time.
6595
6596 The current frame time is considered within the specified interval if
6597 it is included in the interval [@var{START}, @var{END}), that is when
6598 the time is greater or equal to @var{START} and is lesser than
6599 @var{END}.
6600
6601 @var{COMMANDS} consists of a sequence of one or more command
6602 specifications, separated by ",", relating to that interval.  The
6603 syntax of a command specification is given by:
6604 @example
6605 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
6606 @end example
6607
6608 @var{FLAGS} is optional and specifies the type of events relating to
6609 the time interval which enable sending the specified command, and must
6610 be a non-null sequence of identifier flags separated by "+" or "|" and
6611 enclosed between "[" and "]".
6612
6613 The following flags are recognized:
6614 @table @option
6615 @item enter
6616 The command is sent when the current frame timestamp enters the
6617 specified interval. In other words, the command is sent when the
6618 previous frame timestamp was not in the given interval, and the
6619 current is.
6620
6621 @item leave
6622 The command is sent when the current frame timestamp leaves the
6623 specified interval. In other words, the command is sent when the
6624 previous frame timestamp was in the given interval, and the
6625 current is not.
6626 @end table
6627
6628 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
6629 assumed.
6630
6631 @var{TARGET} specifies the target of the command, usually the name of
6632 the filter class or a specific filter instance name.
6633
6634 @var{COMMAND} specifies the name of the command for the target filter.
6635
6636 @var{ARG} is optional and specifies the optional list of argument for
6637 the given @var{COMMAND}.
6638
6639 Between one interval specification and another, whitespaces, or
6640 sequences of characters starting with @code{#} until the end of line,
6641 are ignored and can be used to annotate comments.
6642
6643 A simplified BNF description of the commands specification syntax
6644 follows:
6645 @example
6646 @var{COMMAND_FLAG}  ::= "enter" | "leave"
6647 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
6648 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
6649 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
6650 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
6651 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
6652 @end example
6653
6654 @subsection Examples
6655
6656 @itemize
6657 @item
6658 Specify audio tempo change at second 4:
6659 @example
6660 asendcmd=c='4.0 atempo tempo 1.5',atempo
6661 @end example
6662
6663 @item
6664 Specify a list of drawtext and hue commands in a file.
6665 @example
6666 # show text in the interval 5-10
6667 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
6668          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
6669
6670 # desaturate the image in the interval 15-20
6671 15.0-20.0 [enter] hue s 0,
6672           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
6673           [leave] hue s 1,
6674           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
6675
6676 # apply an exponential saturation fade-out effect, starting from time 25
6677 25 [enter] hue s exp(25-t)
6678 @end example
6679
6680 A filtergraph allowing to read and process the above command list
6681 stored in a file @file{test.cmd}, can be specified with:
6682 @example
6683 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
6684 @end example
6685 @end itemize
6686
6687 @anchor{setpts}
6688 @section asetpts, setpts
6689
6690 Change the PTS (presentation timestamp) of the input frames.
6691
6692 @code{asetpts} works on audio frames, @code{setpts} on video frames.
6693
6694 This filter accepts the following options:
6695
6696 @table @option
6697
6698 @item expr
6699 The expression which is evaluated for each frame to construct its timestamp.
6700
6701 @end table
6702
6703 The expression is evaluated through the eval API and can contain the following
6704 constants:
6705
6706 @table @option
6707 @item FRAME_RATE
6708 frame rate, only defined for constant frame-rate video
6709
6710 @item PTS
6711 the presentation timestamp in input
6712
6713 @item N
6714 the count of the input frame, starting from 0.
6715
6716 @item NB_CONSUMED_SAMPLES
6717 the number of consumed samples, not including the current frame (only
6718 audio)
6719
6720 @item NB_SAMPLES
6721 the number of samples in the current frame (only audio)
6722
6723 @item SAMPLE_RATE
6724 audio sample rate
6725
6726 @item STARTPTS
6727 the PTS of the first frame
6728
6729 @item STARTT
6730 the time in seconds of the first frame
6731
6732 @item INTERLACED
6733 tell if the current frame is interlaced
6734
6735 @item T
6736 the time in seconds of the current frame
6737
6738 @item TB
6739 the time base
6740
6741 @item POS
6742 original position in the file of the frame, or undefined if undefined
6743 for the current frame
6744
6745 @item PREV_INPTS
6746 previous input PTS
6747
6748 @item PREV_INT
6749 previous input time in seconds
6750
6751 @item PREV_OUTPTS
6752 previous output PTS
6753
6754 @item PREV_OUTT
6755 previous output time in seconds
6756
6757 @item RTCTIME
6758 wallclock (RTC) time in microseconds. This is deprecated, use time(0)
6759 instead.
6760
6761 @item RTCSTART
6762 wallclock (RTC) time at the start of the movie in microseconds
6763 @end table
6764
6765 @subsection Examples
6766
6767 @itemize
6768 @item
6769 Start counting PTS from zero
6770 @example
6771 setpts=PTS-STARTPTS
6772 @end example
6773
6774 @item
6775 Apply fast motion effect:
6776 @example
6777 setpts=0.5*PTS
6778 @end example
6779
6780 @item
6781 Apply slow motion effect:
6782 @example
6783 setpts=2.0*PTS
6784 @end example
6785
6786 @item
6787 Set fixed rate of 25 frames per second:
6788 @example
6789 setpts=N/(25*TB)
6790 @end example
6791
6792 @item
6793 Set fixed rate 25 fps with some jitter:
6794 @example
6795 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
6796 @end example
6797
6798 @item
6799 Apply an offset of 10 seconds to the input PTS:
6800 @example
6801 setpts=PTS+10/TB
6802 @end example
6803
6804 @item
6805 Generate timestamps from a "live source" and rebase onto the current timebase:
6806 @example
6807 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
6808 @end example
6809 @end itemize
6810
6811 @section ebur128
6812
6813 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
6814 it unchanged. By default, it logs a message at a frequency of 10Hz with the
6815 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
6816 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
6817
6818 The filter also has a video output (see the @var{video} option) with a real
6819 time graph to observe the loudness evolution. The graphic contains the logged
6820 message mentioned above, so it is not printed anymore when this option is set,
6821 unless the verbose logging is set. The main graphing area contains the
6822 short-term loudness (3 seconds of analysis), and the gauge on the right is for
6823 the momentary loudness (400 milliseconds).
6824
6825 More information about the Loudness Recommendation EBU R128 on
6826 @url{http://tech.ebu.ch/loudness}.
6827
6828 The filter accepts the following options:
6829
6830 @table @option
6831
6832 @item video
6833 Activate the video output. The audio stream is passed unchanged whether this
6834 option is set or no. The video stream will be the first output stream if
6835 activated. Default is @code{0}.
6836
6837 @item size
6838 Set the video size. This option is for video only. Default and minimum
6839 resolution is @code{640x480}.
6840
6841 @item meter
6842 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
6843 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
6844 other integer value between this range is allowed.
6845
6846 @item metadata
6847 Set metadata injection. If set to @code{1}, the audio input will be segmented
6848 into 100ms output frames, each of them containing various loudness information
6849 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
6850
6851 Default is @code{0}.
6852
6853 @item framelog
6854 Force the frame logging level.
6855
6856 Available values are:
6857 @table @samp
6858 @item info
6859 information logging level
6860 @item verbose
6861 verbose logging level
6862 @end table
6863
6864 By default, the logging level is set to @var{info}. If the @option{video} or
6865 the @option{metadata} options are set, it switches to @var{verbose}.
6866 @end table
6867
6868 @subsection Examples
6869
6870 @itemize
6871 @item
6872 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
6873 @example
6874 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
6875 @end example
6876
6877 @item
6878 Run an analysis with @command{ffmpeg}:
6879 @example
6880 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
6881 @end example
6882 @end itemize
6883
6884 @section settb, asettb
6885
6886 Set the timebase to use for the output frames timestamps.
6887 It is mainly useful for testing timebase configuration.
6888
6889 This filter accepts the following options:
6890
6891 @table @option
6892
6893 @item expr, tb
6894 The expression which is evaluated into the output timebase.
6895
6896 @end table
6897
6898 The value for @option{tb} is an arithmetic expression representing a
6899 rational. The expression can contain the constants "AVTB" (the default
6900 timebase), "intb" (the input timebase) and "sr" (the sample rate,
6901 audio only). Default value is "intb".
6902
6903 @subsection Examples
6904
6905 @itemize
6906 @item
6907 Set the timebase to 1/25:
6908 @example
6909 settb=expr=1/25
6910 @end example
6911
6912 @item
6913 Set the timebase to 1/10:
6914 @example
6915 settb=expr=0.1
6916 @end example
6917
6918 @item
6919 Set the timebase to 1001/1000:
6920 @example
6921 settb=1+0.001
6922 @end example
6923
6924 @item
6925 Set the timebase to 2*intb:
6926 @example
6927 settb=2*intb
6928 @end example
6929
6930 @item
6931 Set the default timebase value:
6932 @example
6933 settb=AVTB
6934 @end example
6935 @end itemize
6936
6937 @section concat
6938
6939 Concatenate audio and video streams, joining them together one after the
6940 other.
6941
6942 The filter works on segments of synchronized video and audio streams. All
6943 segments must have the same number of streams of each type, and that will
6944 also be the number of streams at output.
6945
6946 The filter accepts the following options:
6947
6948 @table @option
6949
6950 @item n
6951 Set the number of segments. Default is 2.
6952
6953 @item v
6954 Set the number of output video streams, that is also the number of video
6955 streams in each segment. Default is 1.
6956
6957 @item a
6958 Set the number of output audio streams, that is also the number of video
6959 streams in each segment. Default is 0.
6960
6961 @item unsafe
6962 Activate unsafe mode: do not fail if segments have a different format.
6963
6964 @end table
6965
6966 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
6967 @var{a} audio outputs.
6968
6969 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
6970 segment, in the same order as the outputs, then the inputs for the second
6971 segment, etc.
6972
6973 Related streams do not always have exactly the same duration, for various
6974 reasons including codec frame size or sloppy authoring. For that reason,
6975 related synchronized streams (e.g. a video and its audio track) should be
6976 concatenated at once. The concat filter will use the duration of the longest
6977 stream in each segment (except the last one), and if necessary pad shorter
6978 audio streams with silence.
6979
6980 For this filter to work correctly, all segments must start at timestamp 0.
6981
6982 All corresponding streams must have the same parameters in all segments; the
6983 filtering system will automatically select a common pixel format for video
6984 streams, and a common sample format, sample rate and channel layout for
6985 audio streams, but other settings, such as resolution, must be converted
6986 explicitly by the user.
6987
6988 Different frame rates are acceptable but will result in variable frame rate
6989 at output; be sure to configure the output file to handle it.
6990
6991 @subsection Examples
6992
6993 @itemize
6994 @item
6995 Concatenate an opening, an episode and an ending, all in bilingual version
6996 (video in stream 0, audio in streams 1 and 2):
6997 @example
6998 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
6999   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
7000    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
7001   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
7002 @end example
7003
7004 @item
7005 Concatenate two parts, handling audio and video separately, using the
7006 (a)movie sources, and adjusting the resolution:
7007 @example
7008 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
7009 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
7010 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
7011 @end example
7012 Note that a desync will happen at the stitch if the audio and video streams
7013 do not have exactly the same duration in the first file.
7014
7015 @end itemize
7016
7017 @section showspectrum
7018
7019 Convert input audio to a video output, representing the audio frequency
7020 spectrum.
7021
7022 The filter accepts the following options:
7023
7024 @table @option
7025 @item size, s
7026 Specify the video size for the output. Default value is @code{640x512}.
7027
7028 @item slide
7029 Specify if the spectrum should slide along the window. Default value is
7030 @code{0}.
7031
7032 @item mode
7033 Specify display mode.
7034
7035 It accepts the following values:
7036 @table @samp
7037 @item combined
7038 all channels are displayed in the same row
7039 @item separate
7040 all channels are displayed in separate rows
7041 @end table
7042
7043 Default value is @samp{combined}.
7044
7045 @item color
7046 Specify display color mode.
7047
7048 It accepts the following values:
7049 @table @samp
7050 @item channel
7051 each channel is displayed in a separate color
7052 @item intensity
7053 each channel is is displayed using the same color scheme
7054 @end table
7055
7056 Default value is @samp{channel}.
7057
7058 @item scale
7059 Specify scale used for calculating intensity color values.
7060
7061 It accepts the following values:
7062 @table @samp
7063 @item lin
7064 linear
7065 @item sqrt
7066 square root, default
7067 @item cbrt
7068 cubic root
7069 @item log
7070 logarithmic
7071 @end table
7072
7073 Default value is @samp{sqrt}.
7074
7075 @item saturation
7076 Set saturation modifier for displayed colors. Negative values provide
7077 alternative color scheme. @code{0} is no saturation at all.
7078 Saturation must be in [-10.0, 10.0] range.
7079 Default value is @code{1}.
7080 @end table
7081
7082 The usage is very similar to the showwaves filter; see the examples in that
7083 section.
7084
7085 @subsection Examples
7086
7087 @itemize
7088 @item
7089 Large window with logarithmic color scaling:
7090 @example
7091 showspectrum=s=1280x480:scale=log
7092 @end example
7093
7094 @item
7095 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
7096 @example
7097 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
7098              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
7099 @end example
7100 @end itemize
7101
7102 @section showwaves
7103
7104 Convert input audio to a video output, representing the samples waves.
7105
7106 The filter accepts the following options:
7107
7108 @table @option
7109 @item size, s
7110 Specify the video size for the output. Default value is "600x240".
7111
7112 @item mode
7113 Set display mode.
7114
7115 Available values are:
7116 @table @samp
7117 @item point
7118 Draw a point for each sample.
7119
7120 @item line
7121 Draw a vertical line for each sample.
7122 @end table
7123
7124 Default value is @code{point}.
7125
7126 @item n
7127 Set the number of samples which are printed on the same column. A
7128 larger value will decrease the frame rate. Must be a positive
7129 integer. This option can be set only if the value for @var{rate}
7130 is not explicitly specified.
7131
7132 @item rate, r
7133 Set the (approximate) output frame rate. This is done by setting the
7134 option @var{n}. Default value is "25".
7135
7136 @end table
7137
7138 @subsection Examples
7139
7140 @itemize
7141 @item
7142 Output the input file audio and the corresponding video representation
7143 at the same time:
7144 @example
7145 amovie=a.mp3,asplit[out0],showwaves[out1]
7146 @end example
7147
7148 @item
7149 Create a synthetic signal and show it with showwaves, forcing a
7150 frame rate of 30 frames per second:
7151 @example
7152 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
7153 @end example
7154 @end itemize
7155
7156 @c man end MULTIMEDIA FILTERS
7157
7158 @chapter Multimedia Sources
7159 @c man begin MULTIMEDIA SOURCES
7160
7161 Below is a description of the currently available multimedia sources.
7162
7163 @section amovie
7164
7165 This is the same as @ref{movie} source, except it selects an audio
7166 stream by default.
7167
7168 @anchor{movie}
7169 @section movie
7170
7171 Read audio and/or video stream(s) from a movie container.
7172
7173 This filter accepts the following options:
7174
7175 @table @option
7176 @item filename
7177 The name of the resource to read (not necessarily a file but also a device or a
7178 stream accessed through some protocol).
7179
7180 @item format_name, f
7181 Specifies the format assumed for the movie to read, and can be either
7182 the name of a container or an input device. If not specified the
7183 format is guessed from @var{movie_name} or by probing.
7184
7185 @item seek_point, sp
7186 Specifies the seek point in seconds, the frames will be output
7187 starting from this seek point, the parameter is evaluated with
7188 @code{av_strtod} so the numerical value may be suffixed by an IS
7189 postfix. Default value is "0".
7190
7191 @item streams, s
7192 Specifies the streams to read. Several streams can be specified,
7193 separated by "+". The source will then have as many outputs, in the
7194 same order. The syntax is explained in the ``Stream specifiers''
7195 section in the ffmpeg manual. Two special names, "dv" and "da" specify
7196 respectively the default (best suited) video and audio stream. Default
7197 is "dv", or "da" if the filter is called as "amovie".
7198
7199 @item stream_index, si
7200 Specifies the index of the video stream to read. If the value is -1,
7201 the best suited video stream will be automatically selected. Default
7202 value is "-1". Deprecated. If the filter is called "amovie", it will select
7203 audio instead of video.
7204
7205 @item loop
7206 Specifies how many times to read the stream in sequence.
7207 If the value is less than 1, the stream will be read again and again.
7208 Default value is "1".
7209
7210 Note that when the movie is looped the source timestamps are not
7211 changed, so it will generate non monotonically increasing timestamps.
7212 @end table
7213
7214 This filter allows to overlay a second video on top of main input of
7215 a filtergraph as shown in this graph:
7216 @example
7217 input -----------> deltapts0 --> overlay --> output
7218                                     ^
7219                                     |
7220 movie --> scale--> deltapts1 -------+
7221 @end example
7222
7223 @subsection Examples
7224
7225 @itemize
7226 @item
7227 Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
7228 on top of the input labelled as "in":
7229 @example
7230 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
7231 [in] setpts=PTS-STARTPTS [main];
7232 [main][over] overlay=16:16 [out]
7233 @end example
7234
7235 @item
7236 Read from a video4linux2 device, and overlay it on top of the input
7237 labelled as "in":
7238 @example
7239 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
7240 [in] setpts=PTS-STARTPTS [main];
7241 [main][over] overlay=16:16 [out]
7242 @end example
7243
7244 @item
7245 Read the first video stream and the audio stream with id 0x81 from
7246 dvd.vob; the video is connected to the pad named "video" and the audio is
7247 connected to the pad named "audio":
7248 @example
7249 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
7250 @end example
7251 @end itemize
7252
7253 @c man end MULTIMEDIA SOURCES