Commit | Line | Data |
---|---|---|
1ebe5c4c SS |
1 | @chapter Filtergraph description |
2 | @c man begin FILTERGRAPH DESCRIPTION | |
3 | ||
4 | A filtergraph is a directed graph of connected filters. It can contain | |
5 | cycles, and there can be multiple links between a pair of | |
6 | filters. Each link has one input pad on one side connecting it to one | |
7 | filter from which it takes its input, and one output pad on the other | |
8 | side connecting it to the one filter accepting its output. | |
9 | ||
10 | Each filter in a filtergraph is an instance of a filter class | |
11 | registered in the application, which defines the features and the | |
12 | number of input and output pads of the filter. | |
13 | ||
14 | A filter with no input pads is called a "source", a filter with no | |
15 | output pads is called a "sink". | |
16 | ||
3b266da3 | 17 | @anchor{Filtergraph syntax} |
1ebe5c4c SS |
18 | @section Filtergraph syntax |
19 | ||
7ce118ba AK |
20 | A filtergraph can be represented using a textual representation, which is |
21 | recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex} | |
22 | options in @command{avconv} and @option{-vf} in @command{avplay}, and by the | |
23 | @code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in | |
24 | @file{libavfilter/avfiltergraph.h}. | |
1ebe5c4c SS |
25 | |
26 | A filterchain consists of a sequence of connected filters, each one | |
27 | connected to the previous one in the sequence. A filterchain is | |
28 | represented by a list of ","-separated filter descriptions. | |
29 | ||
30 | A filtergraph consists of a sequence of filterchains. A sequence of | |
31 | filterchains is represented by a list of ";"-separated filterchain | |
32 | descriptions. | |
33 | ||
34 | A filter is represented by a string of the form: | |
35 | [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}] | |
36 | ||
37 | @var{filter_name} is the name of the filter class of which the | |
38 | described filter is an instance of, and has to be the name of one of | |
39 | the filter classes registered in the program. | |
40 | The name of the filter class is optionally followed by a string | |
41 | "=@var{arguments}". | |
42 | ||
43 | @var{arguments} is a string which contains the parameters used to | |
44 | initialize the filter instance, and are described in the filter | |
45 | descriptions below. | |
46 | ||
47 | The list of arguments can be quoted using the character "'" as initial | |
48 | and ending mark, and the character '\' for escaping the characters | |
49 | within the quoted text; otherwise the argument string is considered | |
50 | terminated when the next special character (belonging to the set | |
51 | "[]=;,") is encountered. | |
52 | ||
53 | The name and arguments of the filter are optionally preceded and | |
54 | followed by a list of link labels. | |
55 | A link label allows to name a link and associate it to a filter output | |
56 | or input pad. The preceding labels @var{in_link_1} | |
57 | ... @var{in_link_N}, are associated to the filter input pads, | |
58 | the following labels @var{out_link_1} ... @var{out_link_M}, are | |
59 | associated to the output pads. | |
60 | ||
61 | When two link labels with the same name are found in the | |
62 | filtergraph, a link between the corresponding input and output pad is | |
63 | created. | |
64 | ||
65 | If an output pad is not labelled, it is linked by default to the first | |
66 | unlabelled input pad of the next filter in the filterchain. | |
67 | For example in the filterchain: | |
68 | @example | |
69 | nullsrc, split[L1], [L2]overlay, nullsink | |
70 | @end example | |
71 | the split filter instance has two output pads, and the overlay filter | |
72 | instance two input pads. The first output pad of split is labelled | |
73 | "L1", the first input pad of overlay is labelled "L2", and the second | |
74 | output pad of split is linked to the second input pad of overlay, | |
75 | which are both unlabelled. | |
76 | ||
77 | In a complete filterchain all the unlabelled filter input and output | |
78 | pads must be connected. A filtergraph is considered valid if all the | |
79 | filter input and output pads of all the filterchains are connected. | |
80 | ||
12e7e1d0 AK |
81 | Libavfilter will automatically insert scale filters where format |
82 | conversion is required. It is possible to specify swscale flags | |
83 | for those automatically inserted scalers by prepending | |
84 | @code{sws_flags=@var{flags};} | |
85 | to the filtergraph description. | |
86 | ||
1ebe5c4c SS |
87 | Follows a BNF description for the filtergraph syntax: |
88 | @example | |
89 | @var{NAME} ::= sequence of alphanumeric characters and '_' | |
90 | @var{LINKLABEL} ::= "[" @var{NAME} "]" | |
91 | @var{LINKLABELS} ::= @var{LINKLABEL} [@var{LINKLABELS}] | |
92 | @var{FILTER_ARGUMENTS} ::= sequence of chars (eventually quoted) | |
93 | @var{FILTER} ::= [@var{LINKNAMES}] @var{NAME} ["=" @var{ARGUMENTS}] [@var{LINKNAMES}] | |
94 | @var{FILTERCHAIN} ::= @var{FILTER} [,@var{FILTERCHAIN}] | |
12e7e1d0 | 95 | @var{FILTERGRAPH} ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}] |
1ebe5c4c SS |
96 | @end example |
97 | ||
98 | @c man end FILTERGRAPH DESCRIPTION | |
99 | ||
f59e9eaf SS |
100 | @chapter Audio Filters |
101 | @c man begin AUDIO FILTERS | |
102 | ||
f8a45fa1 | 103 | When you configure your Libav build, you can disable any of the |
f59e9eaf SS |
104 | existing filters using --disable-filters. |
105 | The configure output will show the audio filters included in your | |
106 | build. | |
107 | ||
108 | Below is a description of the currently available audio filters. | |
109 | ||
99046339 HM |
110 | @section anull |
111 | ||
112 | Pass the audio source unchanged to the output. | |
113 | ||
d371e7b9 AK |
114 | @section resample |
115 | Convert the audio sample format, sample rate and channel layout. This filter is | |
116 | not meant to be used directly, it is inserted automatically by libavfilter | |
117 | whenever conversion is needed. Use the @var{aformat} filter to force a specific | |
118 | conversion. | |
119 | ||
f59e9eaf SS |
120 | @c man end AUDIO FILTERS |
121 | ||
1ee410f3 SS |
122 | @chapter Audio Sources |
123 | @c man begin AUDIO SOURCES | |
124 | ||
125 | Below is a description of the currently available audio sources. | |
126 | ||
127 | @section anullsrc | |
128 | ||
129 | Null audio source, never return audio frames. It is mainly useful as a | |
130 | template and to be employed in analysis / debugging tools. | |
131 | ||
132 | It accepts as optional parameter a string of the form | |
133 | @var{sample_rate}:@var{channel_layout}. | |
134 | ||
135 | @var{sample_rate} specify the sample rate, and defaults to 44100. | |
136 | ||
137 | @var{channel_layout} specify the channel layout, and can be either an | |
138 | integer or a string representing a channel layout. The default value | |
139 | of @var{channel_layout} is 3, which corresponds to CH_LAYOUT_STEREO. | |
140 | ||
141 | Check the channel_layout_map definition in | |
6ef93402 SS |
142 | @file{libavcodec/audioconvert.c} for the mapping between strings and |
143 | channel layout values. | |
1ee410f3 SS |
144 | |
145 | Follow some examples: | |
146 | @example | |
147 | # set the sample rate to 48000 Hz and the channel layout to CH_LAYOUT_MONO. | |
148 | anullsrc=48000:4 | |
149 | ||
150 | # same as | |
151 | anullsrc=48000:mono | |
152 | @end example | |
153 | ||
154 | @c man end AUDIO SOURCES | |
155 | ||
f0a55438 HM |
156 | @chapter Audio Sinks |
157 | @c man begin AUDIO SINKS | |
158 | ||
159 | Below is a description of the currently available audio sinks. | |
160 | ||
161 | @section anullsink | |
162 | ||
163 | Null audio sink, do absolutely nothing with the input audio. It is | |
164 | mainly useful as a template and to be employed in analysis / debugging | |
165 | tools. | |
166 | ||
167 | @c man end AUDIO SINKS | |
168 | ||
3275ac6a SS |
169 | @chapter Video Filters |
170 | @c man begin VIDEO FILTERS | |
171 | ||
f8a45fa1 | 172 | When you configure your Libav build, you can disable any of the |
3275ac6a SS |
173 | existing filters using --disable-filters. |
174 | The configure output will show the video filters included in your | |
175 | build. | |
176 | ||
177 | Below is a description of the currently available video filters. | |
178 | ||
13fabd7a SS |
179 | @section blackframe |
180 | ||
181 | Detect frames that are (almost) completely black. Can be useful to | |
182 | detect chapter transitions or commercials. Output lines consist of | |
183 | the frame number of the detected frame, the percentage of blackness, | |
184 | the position in the file if known or -1 and the timestamp in seconds. | |
185 | ||
186 | In order to display the output lines, you need to set the loglevel at | |
187 | least to the AV_LOG_INFO value. | |
188 | ||
189 | The filter accepts the syntax: | |
190 | @example | |
191 | blackframe[=@var{amount}:[@var{threshold}]] | |
192 | @end example | |
193 | ||
194 | @var{amount} is the percentage of the pixels that have to be below the | |
195 | threshold, and defaults to 98. | |
196 | ||
197 | @var{threshold} is the threshold below which a pixel value is | |
198 | considered black, and defaults to 32. | |
199 | ||
ce6b6ef6 SS |
200 | @section boxblur |
201 | ||
202 | Apply boxblur algorithm to the input video. | |
203 | ||
204 | This filter accepts the parameters: | |
205 | @var{luma_power}:@var{luma_radius}:@var{chroma_radius}:@var{chroma_power}:@var{alpha_radius}:@var{alpha_power} | |
206 | ||
207 | Chroma and alpha parameters are optional, if not specified they default | |
208 | to the corresponding values set for @var{luma_radius} and | |
209 | @var{luma_power}. | |
210 | ||
211 | @var{luma_radius}, @var{chroma_radius}, and @var{alpha_radius} represent | |
212 | the radius in pixels of the box used for blurring the corresponding | |
213 | input plane. They are expressions, and can contain the following | |
214 | constants: | |
215 | @table @option | |
216 | @item w, h | |
da9cea77 | 217 | the input width and height in pixels |
ce6b6ef6 SS |
218 | |
219 | @item cw, ch | |
220 | the input chroma image width and height in pixels | |
221 | ||
222 | @item hsub, vsub | |
223 | horizontal and vertical chroma subsample values. For example for the | |
224 | pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1. | |
225 | @end table | |
226 | ||
227 | The radius must be a non-negative number, and must not be greater than | |
228 | the value of the expression @code{min(w,h)/2} for the luma and alpha planes, | |
229 | and of @code{min(cw,ch)/2} for the chroma planes. | |
230 | ||
231 | @var{luma_power}, @var{chroma_power}, and @var{alpha_power} represent | |
232 | how many times the boxblur filter is applied to the corresponding | |
233 | plane. | |
234 | ||
235 | Some examples follow: | |
236 | ||
237 | @itemize | |
238 | ||
239 | @item | |
240 | Apply a boxblur filter with luma, chroma, and alpha radius | |
241 | set to 2: | |
242 | @example | |
243 | boxblur=2:1 | |
244 | @end example | |
245 | ||
246 | @item | |
247 | Set luma radius to 2, alpha and chroma radius to 0 | |
248 | @example | |
249 | boxblur=2:1:0:0:0:0 | |
250 | @end example | |
251 | ||
252 | @item | |
253 | Set luma and chroma radius to a fraction of the video dimension | |
254 | @example | |
255 | boxblur=min(h\,w)/10:1:min(cw\,ch)/10:1 | |
256 | @end example | |
257 | ||
258 | @end itemize | |
259 | ||
b5670209 SS |
260 | @section copy |
261 | ||
262 | Copy the input source unchanged to the output. Mainly useful for | |
263 | testing purposes. | |
264 | ||
3275ac6a SS |
265 | @section crop |
266 | ||
75b67a8a | 267 | Crop the input video to @var{out_w}:@var{out_h}:@var{x}:@var{y}. |
3275ac6a | 268 | |
75b67a8a SS |
269 | The parameters are expressions containing the following constants: |
270 | ||
271 | @table @option | |
272 | @item E, PI, PHI | |
273 | the corresponding mathematical approximated values for e | |
274 | (euler number), pi (greek PI), PHI (golden ratio) | |
275 | ||
276 | @item x, y | |
277 | the computed values for @var{x} and @var{y}. They are evaluated for | |
278 | each new frame. | |
279 | ||
280 | @item in_w, in_h | |
e83c2dde | 281 | the input width and height |
75b67a8a SS |
282 | |
283 | @item iw, ih | |
284 | same as @var{in_w} and @var{in_h} | |
285 | ||
286 | @item out_w, out_h | |
e83c2dde | 287 | the output (cropped) width and height |
75b67a8a SS |
288 | |
289 | @item ow, oh | |
290 | same as @var{out_w} and @var{out_h} | |
291 | ||
292 | @item n | |
293 | the number of input frame, starting from 0 | |
294 | ||
295 | @item pos | |
296 | the position in the file of the input frame, NAN if unknown | |
297 | ||
298 | @item t | |
299 | timestamp expressed in seconds, NAN if the input timestamp is unknown | |
3275ac6a | 300 | |
75b67a8a | 301 | @end table |
3275ac6a | 302 | |
75b67a8a SS |
303 | The @var{out_w} and @var{out_h} parameters specify the expressions for |
304 | the width and height of the output (cropped) video. They are | |
305 | evaluated just at the configuration of the filter. | |
3275ac6a | 306 | |
75b67a8a SS |
307 | The default value of @var{out_w} is "in_w", and the default value of |
308 | @var{out_h} is "in_h". | |
2bc05d35 | 309 | |
75b67a8a SS |
310 | The expression for @var{out_w} may depend on the value of @var{out_h}, |
311 | and the expression for @var{out_h} may depend on @var{out_w}, but they | |
312 | cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are | |
313 | evaluated after @var{out_w} and @var{out_h}. | |
2bc05d35 | 314 | |
75b67a8a SS |
315 | The @var{x} and @var{y} parameters specify the expressions for the |
316 | position of the top-left corner of the output (non-cropped) area. They | |
317 | are evaluated for each frame. If the evaluated value is not valid, it | |
318 | is approximated to the nearest valid value. | |
3275ac6a | 319 | |
75b67a8a SS |
320 | The default value of @var{x} is "(in_w-out_w)/2", and the default |
321 | value for @var{y} is "(in_h-out_h)/2", which set the cropped area at | |
322 | the center of the input image. | |
323 | ||
324 | The expression for @var{x} may depend on @var{y}, and the expression | |
325 | for @var{y} may depend on @var{x}. | |
326 | ||
327 | Follow some examples: | |
3275ac6a | 328 | @example |
75b67a8a SS |
329 | # crop the central input area with size 100x100 |
330 | crop=100:100 | |
331 | ||
332 | # crop the central input area with size 2/3 of the input video | |
333 | "crop=2/3*in_w:2/3*in_h" | |
334 | ||
335 | # crop the input video central square | |
336 | crop=in_h | |
337 | ||
338 | # delimit the rectangle with the top-left corner placed at position | |
339 | # 100:100 and the right-bottom corner corresponding to the right-bottom | |
340 | # corner of the input image. | |
341 | crop=in_w-100:in_h-100:100:100 | |
3275ac6a | 342 | |
e6dba1d8 | 343 | # crop 10 pixels from the left and right borders, and 20 pixels from |
75b67a8a SS |
344 | # the top and bottom borders |
345 | "crop=in_w-2*10:in_h-2*20" | |
3275ac6a | 346 | |
75b67a8a SS |
347 | # keep only the bottom right quarter of the input image |
348 | "crop=in_w/2:in_h/2:in_w/2:in_h/2" | |
349 | ||
350 | # crop height for getting Greek harmony | |
351 | "crop=in_w:1/PHI*in_w" | |
352 | ||
353 | # trembling effect | |
354 | "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)" | |
355 | ||
e6dba1d8 | 356 | # erratic camera effect depending on timestamp |
75b67a8a SS |
357 | "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)" |
358 | ||
359 | # set x depending on the value of y | |
360 | "crop=in_w/2:in_h/2:y:10+10*sin(n/10)" | |
361 | @end example | |
3275ac6a | 362 | |
68b79bfc SS |
363 | @section cropdetect |
364 | ||
365 | Auto-detect crop size. | |
366 | ||
367 | Calculate necessary cropping parameters and prints the recommended | |
368 | parameters through the logging system. The detected dimensions | |
369 | correspond to the non-black area of the input video. | |
370 | ||
371 | It accepts the syntax: | |
372 | @example | |
3699c1f1 | 373 | cropdetect[=@var{limit}[:@var{round}[:@var{reset}]]] |
68b79bfc SS |
374 | @end example |
375 | ||
376 | @table @option | |
377 | ||
378 | @item limit | |
379 | Threshold, which can be optionally specified from nothing (0) to | |
380 | everything (255), defaults to 24. | |
381 | ||
382 | @item round | |
383 | Value which the width/height should be divisible by, defaults to | |
384 | 16. The offset is automatically adjusted to center the video. Use 2 to | |
385 | get only even dimensions (needed for 4:2:2 video). 16 is best when | |
386 | encoding to most video codecs. | |
387 | ||
388 | @item reset | |
389 | Counter that determines after how many frames cropdetect will reset | |
390 | the previously detected largest video area and start over to detect | |
391 | the current optimal crop area. Defaults to 0. | |
392 | ||
393 | This can be useful when channel logos distort the video area. 0 | |
394 | indicates never reset and return the largest area encountered during | |
395 | playback. | |
396 | @end table | |
397 | ||
b157be1f SS |
398 | @section delogo |
399 | ||
400 | Suppress a TV station logo by a simple interpolation of the surrounding | |
401 | pixels. Just set a rectangle covering the logo and watch it disappear | |
402 | (and sometimes something even uglier appear - your mileage may vary). | |
403 | ||
404 | The filter accepts parameters as a string of the form | |
405 | "@var{x}:@var{y}:@var{w}:@var{h}:@var{band}", or as a list of | |
406 | @var{key}=@var{value} pairs, separated by ":". | |
407 | ||
408 | The description of the accepted parameters follows. | |
409 | ||
410 | @table @option | |
411 | ||
412 | @item x, y | |
413 | Specify the top left corner coordinates of the logo. They must be | |
414 | specified. | |
415 | ||
416 | @item w, h | |
417 | Specify the width and height of the logo to clear. They must be | |
418 | specified. | |
419 | ||
420 | @item band, t | |
421 | Specify the thickness of the fuzzy edge of the rectangle (added to | |
422 | @var{w} and @var{h}). The default value is 4. | |
423 | ||
424 | @item show | |
425 | When set to 1, a green rectangle is drawn on the screen to simplify | |
426 | finding the right @var{x}, @var{y}, @var{w}, @var{h} parameters, and | |
427 | @var{band} is set to 4. The default value is 0. | |
428 | ||
429 | @end table | |
430 | ||
431 | Some examples follow. | |
432 | ||
433 | @itemize | |
434 | ||
435 | @item | |
436 | Set a rectangle covering the area with top left corner coordinates 0,0 | |
437 | and size 100x77, setting a band of size 10: | |
438 | @example | |
439 | delogo=0:0:100:77:10 | |
440 | @end example | |
441 | ||
442 | @item | |
443 | As the previous example, but use named options: | |
444 | @example | |
445 | delogo=x=0:y=0:w=100:h=77:band=10 | |
446 | @end example | |
447 | ||
448 | @end itemize | |
449 | ||
e40032e2 SS |
450 | @section drawbox |
451 | ||
452 | Draw a colored box on the input image. | |
453 | ||
454 | It accepts the syntax: | |
455 | @example | |
456 | drawbox=@var{x}:@var{y}:@var{width}:@var{height}:@var{color} | |
457 | @end example | |
458 | ||
459 | @table @option | |
460 | ||
461 | @item x, y | |
462 | Specify the top left corner coordinates of the box. Default to 0. | |
463 | ||
464 | @item width, height | |
465 | Specify the width and height of the box, if 0 they are interpreted as | |
466 | the input width and height. Default to 0. | |
467 | ||
468 | @item color | |
469 | Specify the color of the box to write, it can be the name of a color | |
470 | (case insensitive match) or a 0xRRGGBB[AA] sequence. | |
471 | @end table | |
472 | ||
473 | Follow some examples: | |
474 | @example | |
475 | # draw a black box around the edge of the input image | |
476 | drawbox | |
477 | ||
478 | # draw a box with color red and an opacity of 50% | |
479 | drawbox=10:20:200:60:red@@0.5" | |
480 | @end example | |
481 | ||
a5b64584 SS |
482 | @section drawtext |
483 | ||
484 | Draw text string or text from specified file on top of video using the | |
485 | libfreetype library. | |
486 | ||
0c50edb7 | 487 | To enable compilation of this filter you need to configure Libav with |
a5b64584 SS |
488 | @code{--enable-libfreetype}. |
489 | ||
490 | The filter also recognizes strftime() sequences in the provided text | |
491 | and expands them accordingly. Check the documentation of strftime(). | |
492 | ||
493 | The filter accepts parameters as a list of @var{key}=@var{value} pairs, | |
494 | separated by ":". | |
495 | ||
496 | The description of the accepted parameters follows. | |
497 | ||
498 | @table @option | |
499 | ||
500 | @item fontfile | |
501 | The font file to be used for drawing text. Path must be included. | |
502 | This parameter is mandatory. | |
503 | ||
504 | @item text | |
505 | The text string to be drawn. The text must be a sequence of UTF-8 | |
506 | encoded characters. | |
507 | This parameter is mandatory if no file is specified with the parameter | |
508 | @var{textfile}. | |
509 | ||
510 | @item textfile | |
511 | A text file containing text to be drawn. The text must be a sequence | |
512 | of UTF-8 encoded characters. | |
513 | ||
514 | This parameter is mandatory if no text string is specified with the | |
515 | parameter @var{text}. | |
516 | ||
517 | If both text and textfile are specified, an error is thrown. | |
518 | ||
519 | @item x, y | |
520 | The offsets where text will be drawn within the video frame. | |
521 | Relative to the top/left border of the output image. | |
2cf74eca LB |
522 | They accept expressions similar to the @ref{overlay} filter: |
523 | @table @option | |
524 | ||
525 | @item x, y | |
526 | the computed values for @var{x} and @var{y}. They are evaluated for | |
527 | each new frame. | |
528 | ||
529 | @item main_w, main_h | |
530 | main input width and height | |
531 | ||
532 | @item W, H | |
533 | same as @var{main_w} and @var{main_h} | |
534 | ||
535 | @item text_w, text_h | |
536 | rendered text width and height | |
537 | ||
538 | @item w, h | |
539 | same as @var{text_w} and @var{text_h} | |
540 | ||
541 | @item n | |
542 | the number of frames processed, starting from 0 | |
543 | ||
544 | @item t | |
545 | timestamp expressed in seconds, NAN if the input timestamp is unknown | |
546 | ||
547 | @end table | |
a5b64584 SS |
548 | |
549 | The default value of @var{x} and @var{y} is 0. | |
550 | ||
551 | @item fontsize | |
552 | The font size to be used for drawing text. | |
553 | The default value of @var{fontsize} is 16. | |
554 | ||
555 | @item fontcolor | |
556 | The color to be used for drawing fonts. | |
557 | Either a string (e.g. "red") or in 0xRRGGBB[AA] format | |
558 | (e.g. "0xff000033"), possibly followed by an alpha specifier. | |
559 | The default value of @var{fontcolor} is "black". | |
560 | ||
561 | @item boxcolor | |
562 | The color to be used for drawing box around text. | |
563 | Either a string (e.g. "yellow") or in 0xRRGGBB[AA] format | |
564 | (e.g. "0xff00ff"), possibly followed by an alpha specifier. | |
565 | The default value of @var{boxcolor} is "white". | |
566 | ||
567 | @item box | |
568 | Used to draw a box around text using background color. | |
569 | Value should be either 1 (enable) or 0 (disable). | |
570 | The default value of @var{box} is 0. | |
571 | ||
994de197 SS |
572 | @item shadowx, shadowy |
573 | The x and y offsets for the text shadow position with respect to the | |
574 | position of the text. They can be either positive or negative | |
575 | values. Default value for both is "0". | |
576 | ||
577 | @item shadowcolor | |
578 | The color to be used for drawing a shadow behind the drawn text. It | |
579 | can be a color name (e.g. "yellow") or a string in the 0xRRGGBB[AA] | |
580 | form (e.g. "0xff00ff"), possibly followed by an alpha specifier. | |
581 | The default value of @var{shadowcolor} is "black". | |
582 | ||
a5b64584 SS |
583 | @item ft_load_flags |
584 | Flags to be used for loading the fonts. | |
585 | ||
586 | The flags map the corresponding flags supported by libfreetype, and are | |
587 | a combination of the following values: | |
588 | @table @var | |
589 | @item default | |
590 | @item no_scale | |
591 | @item no_hinting | |
592 | @item render | |
593 | @item no_bitmap | |
594 | @item vertical_layout | |
595 | @item force_autohint | |
596 | @item crop_bitmap | |
597 | @item pedantic | |
598 | @item ignore_global_advance_width | |
599 | @item no_recurse | |
600 | @item ignore_transform | |
601 | @item monochrome | |
602 | @item linear_design | |
603 | @item no_autohint | |
604 | @item end table | |
605 | @end table | |
606 | ||
607 | Default value is "render". | |
608 | ||
609 | For more information consult the documentation for the FT_LOAD_* | |
610 | libfreetype flags. | |
611 | ||
612 | @item tabsize | |
613 | The size in number of spaces to use for rendering the tab. | |
614 | Default value is 4. | |
e496c45d AU |
615 | |
616 | @item fix_bounds | |
617 | If true, check and fix text coords to avoid clipping. | |
a5b64584 SS |
618 | @end table |
619 | ||
620 | For example the command: | |
621 | @example | |
622 | drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'" | |
623 | @end example | |
624 | ||
625 | will draw "Test Text" with font FreeSerif, using the default values | |
626 | for the optional parameters. | |
627 | ||
628 | The command: | |
629 | @example | |
630 | drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\ | |
631 | x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2" | |
632 | @end example | |
633 | ||
634 | will draw 'Test Text' with font FreeSerif of size 24 at position x=100 | |
635 | and y=50 (counting from the top-left corner of the screen), text is | |
636 | yellow with a red box around it. Both the text and the box have an | |
637 | opacity of 20%. | |
638 | ||
639 | Note that the double quotes are not necessary if spaces are not used | |
640 | within the parameter list. | |
641 | ||
642 | For more information about libfreetype, check: | |
643 | @url{http://www.freetype.org/}. | |
644 | ||
aadfc9ee BM |
645 | @section fade |
646 | ||
647 | Apply fade-in/out effect to input video. | |
648 | ||
649 | It accepts the parameters: | |
650 | @var{type}:@var{start_frame}:@var{nb_frames} | |
651 | ||
652 | @var{type} specifies if the effect type, can be either "in" for | |
653 | fade-in, or "out" for a fade-out effect. | |
654 | ||
655 | @var{start_frame} specifies the number of the start frame for starting | |
656 | to apply the fade effect. | |
657 | ||
658 | @var{nb_frames} specifies the number of frames for which the fade | |
659 | effect has to last. At the end of the fade-in effect the output video | |
660 | will have the same intensity as the input video, at the end of the | |
661 | fade-out transition the output video will be completely black. | |
662 | ||
663 | A few usage examples follow, usable too as test scenarios. | |
664 | @example | |
665 | # fade in first 30 frames of video | |
666 | fade=in:0:30 | |
667 | ||
668 | # fade out last 45 frames of a 200-frame video | |
669 | fade=out:155:45 | |
670 | ||
671 | # fade in first 25 frames and fade out last 25 frames of a 1000-frame video | |
672 | fade=in:0:25, fade=out:975:25 | |
673 | ||
674 | # make first 5 frames black, then fade in from frame 5-24 | |
675 | fade=in:5:20 | |
676 | @end example | |
677 | ||
2f84bb42 MH |
678 | @section fieldorder |
679 | ||
680 | Transform the field order of the input video. | |
681 | ||
682 | It accepts one parameter which specifies the required field order that | |
683 | the input interlaced video will be transformed to. The parameter can | |
684 | assume one of the following values: | |
685 | ||
686 | @table @option | |
687 | @item 0 or bff | |
688 | output bottom field first | |
689 | @item 1 or tff | |
690 | output top field first | |
691 | @end table | |
692 | ||
693 | Default value is "tff". | |
694 | ||
695 | Transformation is achieved by shifting the picture content up or down | |
696 | by one line, and filling the remaining line with appropriate picture content. | |
697 | This method is consistent with most broadcast field order converters. | |
698 | ||
699 | If the input video is not flagged as being interlaced, or it is already | |
700 | flagged as being of the required output field order then this filter does | |
701 | not alter the incoming video. | |
702 | ||
703 | This filter is very useful when converting to or from PAL DV material, | |
704 | which is bottom field first. | |
705 | ||
706 | For example: | |
707 | @example | |
9270b8a3 | 708 | ./avconv -i in.vob -vf "fieldorder=bff" out.dv |
2f84bb42 MH |
709 | @end example |
710 | ||
7f1af825 SS |
711 | @section fifo |
712 | ||
713 | Buffer input images and send them when they are requested. | |
714 | ||
715 | This filter is mainly useful when auto-inserted by the libavfilter | |
716 | framework. | |
717 | ||
718 | The filter does not take parameters. | |
719 | ||
3275ac6a SS |
720 | @section format |
721 | ||
722 | Convert the input video to one of the specified pixel formats. | |
723 | Libavfilter will try to pick one that is supported for the input to | |
724 | the next filter. | |
725 | ||
b1094275 SS |
726 | The filter accepts a list of pixel format names, separated by ":", |
727 | for example "yuv420p:monow:rgb24". | |
3275ac6a | 728 | |
f150e4dc | 729 | Some examples follow: |
3275ac6a | 730 | @example |
f150e4dc SS |
731 | # convert the input video to the format "yuv420p" |
732 | format=yuv420p | |
3275ac6a | 733 | |
f150e4dc SS |
734 | # convert the input video to any of the formats in the list |
735 | format=yuv420p:yuv444p:yuv410p | |
736 | @end example | |
3275ac6a | 737 | |
f8608dca | 738 | @anchor{frei0r} |
47941088 SS |
739 | @section frei0r |
740 | ||
741 | Apply a frei0r effect to the input video. | |
742 | ||
743 | To enable compilation of this filter you need to install the frei0r | |
f8a45fa1 | 744 | header and configure Libav with --enable-frei0r. |
47941088 SS |
745 | |
746 | The filter supports the syntax: | |
747 | @example | |
f51aeedd | 748 | @var{filter_name}[@{:|=@}@var{param1}:@var{param2}:...:@var{paramN}] |
47941088 SS |
749 | @end example |
750 | ||
751 | @var{filter_name} is the name to the frei0r effect to load. If the | |
752 | environment variable @env{FREI0R_PATH} is defined, the frei0r effect | |
753 | is searched in each one of the directories specified by the colon | |
754 | separated list in @env{FREIOR_PATH}, otherwise in the standard frei0r | |
755 | paths, which are in this order: @file{HOME/.frei0r-1/lib/}, | |
756 | @file{/usr/local/lib/frei0r-1/}, @file{/usr/lib/frei0r-1/}. | |
757 | ||
758 | @var{param1}, @var{param2}, ... , @var{paramN} specify the parameters | |
759 | for the frei0r effect. | |
760 | ||
761 | A frei0r effect parameter can be a boolean (whose values are specified | |
762 | with "y" and "n"), a double, a color (specified by the syntax | |
763 | @var{R}/@var{G}/@var{B}, @var{R}, @var{G}, and @var{B} being float | |
764 | numbers from 0.0 to 1.0) or by an @code{av_parse_color()} color | |
765 | description), a position (specified by the syntax @var{X}/@var{Y}, | |
766 | @var{X} and @var{Y} being float numbers) and a string. | |
767 | ||
768 | The number and kind of parameters depend on the loaded effect. If an | |
769 | effect parameter is not specified the default value is set. | |
770 | ||
771 | Some examples follow: | |
772 | @example | |
773 | # apply the distort0r effect, set the first two double parameters | |
774 | frei0r=distort0r:0.5:0.01 | |
775 | ||
776 | # apply the colordistance effect, takes a color as first parameter | |
777 | frei0r=colordistance:0.2/0.3/0.4 | |
778 | frei0r=colordistance:violet | |
779 | frei0r=colordistance:0x112233 | |
780 | ||
781 | # apply the perspective effect, specify the top left and top right | |
782 | # image positions | |
783 | frei0r=perspective:0.2/0.2:0.8/0.2 | |
784 | @end example | |
785 | ||
786 | For more information see: | |
787 | @url{http://piksel.org/frei0r} | |
788 | ||
d5f187fd N |
789 | @section gradfun |
790 | ||
791 | Fix the banding artifacts that are sometimes introduced into nearly flat | |
792 | regions by truncation to 8bit colordepth. | |
793 | Interpolate the gradients that should go where the bands are, and | |
794 | dither them. | |
795 | ||
3eccfaa0 SS |
796 | This filter is designed for playback only. Do not use it prior to |
797 | lossy compression, because compression tends to lose the dither and | |
798 | bring back the bands. | |
799 | ||
d5f187fd N |
800 | The filter takes two optional parameters, separated by ':': |
801 | @var{strength}:@var{radius} | |
802 | ||
803 | @var{strength} is the maximum amount by which the filter will change | |
804 | any one pixel. Also the threshold for detecting nearly flat | |
805 | regions. Acceptable values range from .51 to 255, default value is | |
806 | 1.2, out-of-range values will be clipped to the valid range. | |
807 | ||
808 | @var{radius} is the neighborhood to fit the gradient to. A larger | |
809 | radius makes for smoother gradients, but also prevents the filter from | |
810 | modifying the pixels near detailed regions. Acceptable values are | |
811 | 8-32, default value is 16, out-of-range values will be clipped to the | |
812 | valid range. | |
813 | ||
814 | @example | |
815 | # default parameters | |
816 | gradfun=1.2:16 | |
817 | ||
818 | # omitting radius | |
819 | gradfun=1.2 | |
820 | @end example | |
821 | ||
a1e171df SS |
822 | @section hflip |
823 | ||
824 | Flip the input video horizontally. | |
825 | ||
9270b8a3 | 826 | For example to horizontally flip the input video with @command{avconv}: |
a1e171df | 827 | @example |
9270b8a3 | 828 | avconv -i in.avi -vf "hflip" out.avi |
a1e171df SS |
829 | @end example |
830 | ||
a4dc7aa5 BC |
831 | @section hqdn3d |
832 | ||
833 | High precision/quality 3d denoise filter. This filter aims to reduce | |
834 | image noise producing smooth images and making still images really | |
835 | still. It should enhance compressibility. | |
836 | ||
837 | It accepts the following optional parameters: | |
838 | @var{luma_spatial}:@var{chroma_spatial}:@var{luma_tmp}:@var{chroma_tmp} | |
839 | ||
840 | @table @option | |
841 | @item luma_spatial | |
842 | a non-negative float number which specifies spatial luma strength, | |
843 | defaults to 4.0 | |
844 | ||
845 | @item chroma_spatial | |
846 | a non-negative float number which specifies spatial chroma strength, | |
847 | defaults to 3.0*@var{luma_spatial}/4.0 | |
848 | ||
849 | @item luma_tmp | |
850 | a float number which specifies luma temporal strength, defaults to | |
851 | 6.0*@var{luma_spatial}/4.0 | |
852 | ||
853 | @item chroma_tmp | |
854 | a float number which specifies chroma temporal strength, defaults to | |
855 | @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial} | |
856 | @end table | |
857 | ||
8fe0c527 SS |
858 | @section lut, lutrgb, lutyuv |
859 | ||
860 | Compute a look-up table for binding each pixel component input value | |
861 | to an output value, and apply it to input video. | |
862 | ||
863 | @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb} | |
864 | to an RGB input video. | |
865 | ||
866 | These filters accept in input a ":"-separated list of options, which | |
867 | specify the expressions used for computing the lookup table for the | |
868 | corresponding pixel component values. | |
869 | ||
870 | The @var{lut} filter requires either YUV or RGB pixel formats in | |
871 | input, and accepts the options: | |
872 | @table @option | |
873 | @var{c0} (first pixel component) | |
874 | @var{c1} (second pixel component) | |
875 | @var{c2} (third pixel component) | |
876 | @var{c3} (fourth pixel component, corresponds to the alpha component) | |
877 | @end table | |
878 | ||
879 | The exact component associated to each option depends on the format in | |
880 | input. | |
881 | ||
882 | The @var{lutrgb} filter requires RGB pixel formats in input, and | |
883 | accepts the options: | |
884 | @table @option | |
885 | @var{r} (red component) | |
886 | @var{g} (green component) | |
887 | @var{b} (blue component) | |
888 | @var{a} (alpha component) | |
889 | @end table | |
890 | ||
891 | The @var{lutyuv} filter requires YUV pixel formats in input, and | |
892 | accepts the options: | |
893 | @table @option | |
894 | @var{y} (Y/luminance component) | |
895 | @var{u} (U/Cb component) | |
896 | @var{v} (V/Cr component) | |
897 | @var{a} (alpha component) | |
898 | @end table | |
899 | ||
900 | The expressions can contain the following constants and functions: | |
901 | ||
902 | @table @option | |
903 | @item E, PI, PHI | |
904 | the corresponding mathematical approximated values for e | |
905 | (euler number), pi (greek PI), PHI (golden ratio) | |
906 | ||
907 | @item w, h | |
da9cea77 | 908 | the input width and height |
8fe0c527 SS |
909 | |
910 | @item val | |
911 | input value for the pixel component | |
912 | ||
913 | @item clipval | |
914 | the input value clipped in the @var{minval}-@var{maxval} range | |
915 | ||
916 | @item maxval | |
917 | maximum value for the pixel component | |
918 | ||
919 | @item minval | |
920 | minimum value for the pixel component | |
921 | ||
922 | @item negval | |
923 | the negated value for the pixel component value clipped in the | |
924 | @var{minval}-@var{maxval} range , it corresponds to the expression | |
925 | "maxval-clipval+minval" | |
926 | ||
927 | @item clip(val) | |
928 | the computed value in @var{val} clipped in the | |
929 | @var{minval}-@var{maxval} range | |
930 | ||
931 | @item gammaval(gamma) | |
932 | the computed gamma correction value of the pixel component value | |
933 | clipped in the @var{minval}-@var{maxval} range, corresponds to the | |
934 | expression | |
935 | "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval" | |
936 | ||
937 | @end table | |
938 | ||
939 | All expressions default to "val". | |
940 | ||
941 | Some examples follow: | |
942 | @example | |
943 | # negate input video | |
944 | lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val" | |
945 | lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val" | |
946 | ||
947 | # the above is the same as | |
948 | lutrgb="r=negval:g=negval:b=negval" | |
949 | lutyuv="y=negval:u=negval:v=negval" | |
950 | ||
951 | # negate luminance | |
952 | lutyuv=negval | |
953 | ||
954 | # remove chroma components, turns the video into a graytone image | |
955 | lutyuv="u=128:v=128" | |
956 | ||
957 | # apply a luma burning effect | |
958 | lutyuv="y=2*val" | |
959 | ||
960 | # remove green and blue components | |
961 | lutrgb="g=0:b=0" | |
962 | ||
963 | # set a constant alpha channel value on input | |
964 | format=rgba,lutrgb=a="maxval-minval/2" | |
965 | ||
966 | # correct luminance gamma by a 0.5 factor | |
967 | lutyuv=y=gammaval(0.5) | |
968 | @end example | |
969 | ||
171868e2 SS |
970 | @section negate |
971 | ||
972 | Negate input video. | |
973 | ||
974 | This filter accepts an integer in input, if non-zero it negates the | |
975 | alpha component (if available). The default value in input is 0. | |
3275ac6a SS |
976 | |
977 | Force libavfilter not to use any of the specified pixel formats for the | |
978 | input to the next filter. | |
979 | ||
b1094275 SS |
980 | The filter accepts a list of pixel format names, separated by ":", |
981 | for example "yuv420p:monow:rgb24". | |
3275ac6a | 982 | |
f150e4dc | 983 | Some examples follow: |
3275ac6a | 984 | @example |
f150e4dc SS |
985 | # force libavfilter to use a format different from "yuv420p" for the |
986 | # input to the vflip filter | |
987 | noformat=yuv420p,vflip | |
3275ac6a | 988 | |
f150e4dc SS |
989 | # convert the input video to any of the formats not contained in the list |
990 | noformat=yuv420p:yuv444p:yuv410p | |
991 | @end example | |
3275ac6a SS |
992 | |
993 | @section null | |
994 | ||
99046339 | 995 | Pass the video source unchanged to the output. |
3275ac6a | 996 | |
cf69ad35 | 997 | @section ocv |
6ebf0bfc | 998 | |
cf69ad35 | 999 | Apply video transform using libopencv. |
6ebf0bfc SS |
1000 | |
1001 | To enable this filter install libopencv library and headers and | |
f8a45fa1 | 1002 | configure Libav with --enable-libopencv. |
6ebf0bfc | 1003 | |
cf69ad35 SS |
1004 | The filter takes the parameters: @var{filter_name}@{:=@}@var{filter_params}. |
1005 | ||
1006 | @var{filter_name} is the name of the libopencv filter to apply. | |
1007 | ||
1008 | @var{filter_params} specifies the parameters to pass to the libopencv | |
1009 | filter. If not specified the default values are assumed. | |
1010 | ||
1011 | Refer to the official libopencv documentation for more precise | |
da9cea77 | 1012 | information: |
cf69ad35 SS |
1013 | @url{http://opencv.willowgarage.com/documentation/c/image_filtering.html} |
1014 | ||
1015 | Follows the list of supported libopencv filters. | |
1016 | ||
17fc9493 | 1017 | @anchor{dilate} |
91cbb6ba SS |
1018 | @subsection dilate |
1019 | ||
1020 | Dilate an image by using a specific structuring element. | |
1021 | This filter corresponds to the libopencv function @code{cvDilate}. | |
1022 | ||
1023 | It accepts the parameters: @var{struct_el}:@var{nb_iterations}. | |
1024 | ||
1025 | @var{struct_el} represents a structuring element, and has the syntax: | |
1026 | @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape} | |
1027 | ||
da9cea77 | 1028 | @var{cols} and @var{rows} represent the number of columns and rows of |
91cbb6ba SS |
1029 | the structuring element, @var{anchor_x} and @var{anchor_y} the anchor |
1030 | point, and @var{shape} the shape for the structuring element, and | |
1031 | can be one of the values "rect", "cross", "ellipse", "custom". | |
1032 | ||
1033 | If the value for @var{shape} is "custom", it must be followed by a | |
1034 | string of the form "=@var{filename}". The file with name | |
1035 | @var{filename} is assumed to represent a binary image, with each | |
1036 | printable character corresponding to a bright pixel. When a custom | |
1037 | @var{shape} is used, @var{cols} and @var{rows} are ignored, the number | |
1038 | or columns and rows of the read file are assumed instead. | |
1039 | ||
1040 | The default value for @var{struct_el} is "3x3+0x0/rect". | |
1041 | ||
1042 | @var{nb_iterations} specifies the number of times the transform is | |
1043 | applied to the image, and defaults to 1. | |
1044 | ||
1045 | Follow some example: | |
1046 | @example | |
1047 | # use the default values | |
1048 | ocv=dilate | |
1049 | ||
1050 | # dilate using a structuring element with a 5x5 cross, iterate two times | |
1051 | ocv=dilate=5x5+2x2/cross:2 | |
1052 | ||
1053 | # read the shape from the file diamond.shape, iterate two times | |
1054 | # the file diamond.shape may contain a pattern of characters like this: | |
1055 | # * | |
1056 | # *** | |
1057 | # ***** | |
1058 | # *** | |
1059 | # * | |
1060 | # the specified cols and rows are ignored (but not the anchor point coordinates) | |
1061 | ocv=0x0+2x2/custom=diamond.shape:2 | |
1062 | @end example | |
1063 | ||
17fc9493 SS |
1064 | @subsection erode |
1065 | ||
1066 | Erode an image by using a specific structuring element. | |
1067 | This filter corresponds to the libopencv function @code{cvErode}. | |
1068 | ||
1069 | The filter accepts the parameters: @var{struct_el}:@var{nb_iterations}, | |
4c989761 | 1070 | with the same syntax and semantics as the @ref{dilate} filter. |
17fc9493 | 1071 | |
cf69ad35 SS |
1072 | @subsection smooth |
1073 | ||
1074 | Smooth the input video. | |
1075 | ||
1076 | The filter takes the following parameters: | |
6ebf0bfc SS |
1077 | @var{type}:@var{param1}:@var{param2}:@var{param3}:@var{param4}. |
1078 | ||
1079 | @var{type} is the type of smooth filter to apply, and can be one of | |
58d94364 | 1080 | the following values: "blur", "blur_no_scale", "median", "gaussian", |
6ebf0bfc SS |
1081 | "bilateral". The default value is "gaussian". |
1082 | ||
1083 | @var{param1}, @var{param2}, @var{param3}, and @var{param4} are | |
1084 | parameters whose meanings depend on smooth type. @var{param1} and | |
1085 | @var{param2} accept integer positive values or 0, @var{param3} and | |
1086 | @var{param4} accept float values. | |
1087 | ||
1088 | The default value for @var{param1} is 3, the default value for the | |
1089 | other parameters is 0. | |
1090 | ||
58d94364 | 1091 | These parameters correspond to the parameters assigned to the |
cf69ad35 | 1092 | libopencv function @code{cvSmooth}. |
6ebf0bfc | 1093 | |
2cf74eca | 1094 | @anchor{overlay} |
58935b25 SS |
1095 | @section overlay |
1096 | ||
1097 | Overlay one video on top of another. | |
1098 | ||
1099 | It takes two inputs and one output, the first input is the "main" | |
1100 | video on which the second input is overlayed. | |
1101 | ||
1102 | It accepts the parameters: @var{x}:@var{y}. | |
1103 | ||
1104 | @var{x} is the x coordinate of the overlayed video on the main video, | |
1105 | @var{y} is the y coordinate. The parameters are expressions containing | |
1106 | the following parameters: | |
1107 | ||
1108 | @table @option | |
1109 | @item main_w, main_h | |
1110 | main input width and height | |
1111 | ||
1112 | @item W, H | |
1113 | same as @var{main_w} and @var{main_h} | |
1114 | ||
1115 | @item overlay_w, overlay_h | |
1116 | overlay input width and height | |
1117 | ||
1118 | @item w, h | |
1119 | same as @var{overlay_w} and @var{overlay_h} | |
1120 | @end table | |
1121 | ||
1122 | Be aware that frames are taken from each input video in timestamp | |
1123 | order, hence, if their initial timestamps differ, it is a a good idea | |
1124 | to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to | |
1125 | have them begin in the same zero timestamp, as it does the example for | |
1126 | the @var{movie} filter. | |
1127 | ||
1128 | Follow some examples: | |
1129 | @example | |
1130 | # draw the overlay at 10 pixels from the bottom right | |
1131 | # corner of the main video. | |
1132 | overlay=main_w-overlay_w-10:main_h-overlay_h-10 | |
1133 | ||
1134 | # insert a transparent PNG logo in the bottom left corner of the input | |
7ce118ba | 1135 | avconv -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output |
58935b25 SS |
1136 | |
1137 | # insert 2 different transparent PNG logos (second logo on bottom | |
1138 | # right corner): | |
7ce118ba AK |
1139 | avconv -i input -i logo1 -i logo2 -filter_complex |
1140 | 'overlay=10:H-h-10,overlay=W-w-10:H-h-10' output | |
58935b25 SS |
1141 | |
1142 | # add a transparent color layer on top of the main video, | |
1143 | # WxH specifies the size of the main input to the overlay filter | |
1144 | color=red@.3:WxH [over]; [in][over] overlay [out] | |
1145 | @end example | |
1146 | ||
b0641ab7 | 1147 | You can chain together more overlays but the efficiency of such |
58935b25 SS |
1148 | approach is yet to be tested. |
1149 | ||
3275ac6a SS |
1150 | @section pad |
1151 | ||
1152 | Add paddings to the input image, and places the original input at the | |
1153 | given coordinates @var{x}, @var{y}. | |
1154 | ||
1155 | It accepts the following parameters: | |
1156 | @var{width}:@var{height}:@var{x}:@var{y}:@var{color}. | |
1157 | ||
73a4f7c2 SS |
1158 | The parameters @var{width}, @var{height}, @var{x}, and @var{y} are |
1159 | expressions containing the following constants: | |
1160 | ||
1161 | @table @option | |
1162 | @item E, PI, PHI | |
1163 | the corresponding mathematical approximated values for e | |
1164 | (euler number), pi (greek PI), phi (golden ratio) | |
1165 | ||
1166 | @item in_w, in_h | |
e83c2dde | 1167 | the input video width and height |
73a4f7c2 SS |
1168 | |
1169 | @item iw, ih | |
1170 | same as @var{in_w} and @var{in_h} | |
1171 | ||
1172 | @item out_w, out_h | |
e83c2dde | 1173 | the output width and height, that is the size of the padded area as |
73a4f7c2 SS |
1174 | specified by the @var{width} and @var{height} expressions |
1175 | ||
1176 | @item ow, oh | |
1177 | same as @var{out_w} and @var{out_h} | |
1178 | ||
1179 | @item x, y | |
1180 | x and y offsets as specified by the @var{x} and @var{y} | |
1181 | expressions, or NAN if not yet specified | |
1182 | ||
1183 | @item a | |
1184 | input display aspect ratio, same as @var{iw} / @var{ih} | |
1185 | ||
1186 | @item hsub, vsub | |
1187 | horizontal and vertical chroma subsample values. For example for the | |
1188 | pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1. | |
1189 | @end table | |
1190 | ||
3275ac6a SS |
1191 | Follows the description of the accepted parameters. |
1192 | ||
1193 | @table @option | |
1194 | @item width, height | |
1195 | ||
1196 | Specify the size of the output image with the paddings added. If the | |
1197 | value for @var{width} or @var{height} is 0, the corresponding input size | |
1198 | is used for the output. | |
1199 | ||
73a4f7c2 | 1200 | The @var{width} expression can reference the value set by the |
da9cea77 | 1201 | @var{height} expression, and vice versa. |
73a4f7c2 | 1202 | |
3275ac6a SS |
1203 | The default value of @var{width} and @var{height} is 0. |
1204 | ||
1205 | @item x, y | |
1206 | ||
1207 | Specify the offsets where to place the input image in the padded area | |
1208 | with respect to the top/left border of the output image. | |
1209 | ||
73a4f7c2 | 1210 | The @var{x} expression can reference the value set by the @var{y} |
da9cea77 | 1211 | expression, and vice versa. |
73a4f7c2 | 1212 | |
3275ac6a SS |
1213 | The default value of @var{x} and @var{y} is 0. |
1214 | ||
1215 | @item color | |
1216 | ||
1217 | Specify the color of the padded area, it can be the name of a color | |
1218 | (case insensitive match) or a 0xRRGGBB[AA] sequence. | |
1219 | ||
b1094275 | 1220 | The default value of @var{color} is "black". |
3275ac6a SS |
1221 | |
1222 | @end table | |
1223 | ||
73a4f7c2 | 1224 | Some examples follow: |
3d17f4b9 SS |
1225 | |
1226 | @example | |
1227 | # Add paddings with color "violet" to the input video. Output video | |
1228 | # size is 640x480, the top-left corner of the input video is placed at | |
aeefbf61 | 1229 | # column 0, row 40. |
3d17f4b9 | 1230 | pad=640:480:0:40:violet |
73a4f7c2 SS |
1231 | |
1232 | # pad the input to get an output with dimensions increased bt 3/2, | |
1233 | # and put the input video at the center of the padded area | |
1234 | pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2" | |
1235 | ||
1236 | # pad the input to get a squared output with size equal to the maximum | |
1237 | # value between the input width and height, and put the input video at | |
1238 | # the center of the padded area | |
1239 | pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2" | |
1240 | ||
1241 | # pad the input to get a final w/h ratio of 16:9 | |
1242 | pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2" | |
1243 | ||
1244 | # double output size and put the input video in the bottom-right | |
1245 | # corner of the output padded area | |
1246 | pad="2*iw:2*ih:ow-iw:oh-ih" | |
3d17f4b9 SS |
1247 | @end example |
1248 | ||
ce2e4ae3 SS |
1249 | @section pixdesctest |
1250 | ||
1251 | Pixel format descriptor test filter, mainly useful for internal | |
1252 | testing. The output video should be equal to the input video. | |
1253 | ||
1254 | For example: | |
1255 | @example | |
1256 | format=monow, pixdesctest | |
1257 | @end example | |
1258 | ||
1259 | can be used to test the monowhite pixel format descriptor definition. | |
1260 | ||
3275ac6a SS |
1261 | @section scale |
1262 | ||
1263 | Scale the input video to @var{width}:@var{height} and/or convert the image format. | |
1264 | ||
68e23c08 SS |
1265 | The parameters @var{width} and @var{height} are expressions containing |
1266 | the following constants: | |
3275ac6a | 1267 | |
68e23c08 SS |
1268 | @table @option |
1269 | @item E, PI, PHI | |
1270 | the corresponding mathematical approximated values for e | |
1271 | (euler number), pi (greek PI), phi (golden ratio) | |
1272 | ||
1273 | @item in_w, in_h | |
e83c2dde | 1274 | the input width and height |
68e23c08 SS |
1275 | |
1276 | @item iw, ih | |
1277 | same as @var{in_w} and @var{in_h} | |
1278 | ||
1279 | @item out_w, out_h | |
e83c2dde | 1280 | the output (cropped) width and height |
68e23c08 SS |
1281 | |
1282 | @item ow, oh | |
1283 | same as @var{out_w} and @var{out_h} | |
3275ac6a | 1284 | |
46b29397 | 1285 | @item dar, a |
68e23c08 SS |
1286 | input display aspect ratio, same as @var{iw} / @var{ih} |
1287 | ||
46b29397 SS |
1288 | @item sar |
1289 | input sample aspect ratio | |
1290 | ||
68e23c08 SS |
1291 | @item hsub, vsub |
1292 | horizontal and vertical chroma subsample values. For example for the | |
1293 | pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1. | |
1294 | @end table | |
3275ac6a SS |
1295 | |
1296 | If the input image format is different from the format requested by | |
1297 | the next filter, the scale filter will convert the input to the | |
1298 | requested format. | |
1299 | ||
1300 | If the value for @var{width} or @var{height} is 0, the respective input | |
1301 | size is used for the output. | |
1302 | ||
1303 | If the value for @var{width} or @var{height} is -1, the scale filter will | |
1304 | use, for the respective output size, a value that maintains the aspect | |
1305 | ratio of the input image. | |
1306 | ||
1307 | The default value of @var{width} and @var{height} is 0. | |
1308 | ||
68e23c08 SS |
1309 | Some examples follow: |
1310 | @example | |
1311 | # scale the input video to a size of 200x100. | |
1312 | scale=200:100 | |
1313 | ||
1314 | # scale the input to 2x | |
1315 | scale=2*iw:2*ih | |
1316 | # the above is the same as | |
1317 | scale=2*in_w:2*in_h | |
1318 | ||
1319 | # scale the input to half size | |
1320 | scale=iw/2:ih/2 | |
1321 | ||
1322 | # increase the width, and set the height to the same size | |
1323 | scale=3/2*iw:ow | |
1324 | ||
1325 | # seek for Greek harmony | |
1326 | scale=iw:1/PHI*iw | |
1327 | scale=ih*PHI:ih | |
1328 | ||
1329 | # increase the height, and set the width to 3/2 of the height | |
1330 | scale=3/2*oh:3/5*ih | |
1331 | ||
1332 | # increase the size, but make the size a multiple of the chroma | |
1333 | scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub" | |
1334 | ||
1335 | # increase the width to a maximum of 500 pixels, keep the same input aspect ratio | |
1336 | scale='min(500\, iw*3/2):-1' | |
1337 | @end example | |
1338 | ||
d763fb7d SS |
1339 | @section select |
1340 | Select frames to pass in output. | |
1341 | ||
1342 | It accepts in input an expression, which is evaluated for each input | |
1343 | frame. If the expression is evaluated to a non-zero value, the frame | |
1344 | is selected and passed to the output, otherwise it is discarded. | |
1345 | ||
1346 | The expression can contain the following constants: | |
1347 | ||
1348 | @table @option | |
1349 | @item PI | |
1350 | Greek PI | |
1351 | ||
1352 | @item PHI | |
1353 | golden ratio | |
1354 | ||
1355 | @item E | |
1356 | Euler number | |
1357 | ||
1358 | @item n | |
1359 | the sequential number of the filtered frame, starting from 0 | |
1360 | ||
1361 | @item selected_n | |
1362 | the sequential number of the selected frame, starting from 0 | |
1363 | ||
1364 | @item prev_selected_n | |
1365 | the sequential number of the last selected frame, NAN if undefined | |
1366 | ||
1367 | @item TB | |
1368 | timebase of the input timestamps | |
1369 | ||
1370 | @item pts | |
1371 | the PTS (Presentation TimeStamp) of the filtered video frame, | |
1372 | expressed in @var{TB} units, NAN if undefined | |
1373 | ||
1374 | @item t | |
1375 | the PTS (Presentation TimeStamp) of the filtered video frame, | |
1376 | expressed in seconds, NAN if undefined | |
1377 | ||
1378 | @item prev_pts | |
1379 | the PTS of the previously filtered video frame, NAN if undefined | |
1380 | ||
1381 | @item prev_selected_pts | |
1382 | the PTS of the last previously filtered video frame, NAN if undefined | |
1383 | ||
1384 | @item prev_selected_t | |
1385 | the PTS of the last previously selected video frame, NAN if undefined | |
1386 | ||
1387 | @item start_pts | |
1388 | the PTS of the first video frame in the video, NAN if undefined | |
1389 | ||
1390 | @item start_t | |
1391 | the time of the first video frame in the video, NAN if undefined | |
1392 | ||
1393 | @item pict_type | |
1394 | the type of the filtered frame, can assume one of the following | |
1395 | values: | |
1396 | @table @option | |
1397 | @item I | |
1398 | @item P | |
1399 | @item B | |
1400 | @item S | |
1401 | @item SI | |
1402 | @item SP | |
1403 | @item BI | |
1404 | @end table | |
1405 | ||
1406 | @item interlace_type | |
1407 | the frame interlace type, can assume one of the following values: | |
1408 | @table @option | |
1409 | @item PROGRESSIVE | |
1410 | the frame is progressive (not interlaced) | |
1411 | @item TOPFIRST | |
1412 | the frame is top-field-first | |
1413 | @item BOTTOMFIRST | |
1414 | the frame is bottom-field-first | |
1415 | @end table | |
1416 | ||
1417 | @item key | |
1418 | 1 if the filtered frame is a key-frame, 0 otherwise | |
1419 | ||
1420 | @item pos | |
1421 | the position in the file of the filtered frame, -1 if the information | |
1422 | is not available (e.g. for synthetic video) | |
1423 | @end table | |
1424 | ||
1425 | The default value of the select expression is "1". | |
1426 | ||
1427 | Some examples follow: | |
1428 | ||
1429 | @example | |
1430 | # select all frames in input | |
1431 | select | |
1432 | ||
1433 | # the above is the same as: | |
1434 | select=1 | |
1435 | ||
1436 | # skip all frames: | |
1437 | select=0 | |
1438 | ||
1439 | # select only I-frames | |
1440 | select='eq(pict_type\,I)' | |
1441 | ||
1442 | # select one frame every 100 | |
1443 | select='not(mod(n\,100))' | |
1444 | ||
1445 | # select only frames contained in the 10-20 time interval | |
1446 | select='gte(t\,10)*lte(t\,20)' | |
1447 | ||
1448 | # select only I frames contained in the 10-20 time interval | |
1449 | select='gte(t\,10)*lte(t\,20)*eq(pict_type\,I)' | |
1450 | ||
1451 | # select frames with a minimum distance of 10 seconds | |
1452 | select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)' | |
1453 | @end example | |
1454 | ||
2fd8756b SS |
1455 | @anchor{setdar} |
1456 | @section setdar | |
1457 | ||
1458 | Set the Display Aspect Ratio for the filter output video. | |
1459 | ||
1460 | This is done by changing the specified Sample (aka Pixel) Aspect | |
1461 | Ratio, according to the following equation: | |
1462 | @math{DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR} | |
1463 | ||
1464 | Keep in mind that this filter does not modify the pixel dimensions of | |
1465 | the video frame. Also the display aspect ratio set by this filter may | |
1466 | be changed by later filters in the filterchain, e.g. in case of | |
1467 | scaling or if another "setdar" or a "setsar" filter is applied. | |
1468 | ||
1469 | The filter accepts a parameter string which represents the wanted | |
1470 | display aspect ratio. | |
1471 | The parameter can be a floating point number string, or an expression | |
1472 | of the form @var{num}:@var{den}, where @var{num} and @var{den} are the | |
1473 | numerator and denominator of the aspect ratio. | |
1474 | If the parameter is not specified, it is assumed the value "0:1". | |
1475 | ||
1476 | For example to change the display aspect ratio to 16:9, specify: | |
1477 | @example | |
1478 | setdar=16:9 | |
1479 | # the above is equivalent to | |
1480 | setdar=1.77777 | |
1481 | @end example | |
1482 | ||
4c989761 | 1483 | See also the @ref{setsar} filter documentation. |
2fd8756b | 1484 | |
a532bb39 SS |
1485 | @section setpts |
1486 | ||
1487 | Change the PTS (presentation timestamp) of the input video frames. | |
1488 | ||
1489 | Accept in input an expression evaluated through the eval API, which | |
1490 | can contain the following constants: | |
1491 | ||
1492 | @table @option | |
1493 | @item PTS | |
1494 | the presentation timestamp in input | |
1495 | ||
1496 | @item PI | |
1497 | Greek PI | |
1498 | ||
1499 | @item PHI | |
1500 | golden ratio | |
1501 | ||
1502 | @item E | |
1503 | Euler number | |
1504 | ||
1505 | @item N | |
1506 | the count of the input frame, starting from 0. | |
1507 | ||
1508 | @item STARTPTS | |
1509 | the PTS of the first video frame | |
1510 | ||
1511 | @item INTERLACED | |
1512 | tell if the current frame is interlaced | |
1513 | ||
1514 | @item POS | |
1515 | original position in the file of the frame, or undefined if undefined | |
1516 | for the current frame | |
1517 | ||
1518 | @item PREV_INPTS | |
1519 | previous input PTS | |
1520 | ||
1521 | @item PREV_OUTPTS | |
1522 | previous output PTS | |
1523 | ||
1524 | @end table | |
1525 | ||
1526 | Some examples follow: | |
1527 | ||
1528 | @example | |
1529 | # start counting PTS from zero | |
1530 | setpts=PTS-STARTPTS | |
1531 | ||
1532 | # fast motion | |
1533 | setpts=0.5*PTS | |
1534 | ||
1535 | # slow motion | |
1536 | setpts=2.0*PTS | |
1537 | ||
1538 | # fixed rate 25 fps | |
1539 | setpts=N/(25*TB) | |
1540 | ||
1541 | # fixed rate 25 fps with some jitter | |
1542 | setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))' | |
1543 | @end example | |
1544 | ||
2fd8756b SS |
1545 | @anchor{setsar} |
1546 | @section setsar | |
1547 | ||
1548 | Set the Sample (aka Pixel) Aspect Ratio for the filter output video. | |
1549 | ||
1550 | Note that as a consequence of the application of this filter, the | |
1551 | output display aspect ratio will change according to the following | |
1552 | equation: | |
1553 | @math{DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR} | |
1554 | ||
1555 | Keep in mind that the sample aspect ratio set by this filter may be | |
1556 | changed by later filters in the filterchain, e.g. if another "setsar" | |
1557 | or a "setdar" filter is applied. | |
1558 | ||
1559 | The filter accepts a parameter string which represents the wanted | |
1560 | sample aspect ratio. | |
1561 | The parameter can be a floating point number string, or an expression | |
1562 | of the form @var{num}:@var{den}, where @var{num} and @var{den} are the | |
1563 | numerator and denominator of the aspect ratio. | |
1564 | If the parameter is not specified, it is assumed the value "0:1". | |
1565 | ||
1566 | For example to change the sample aspect ratio to 10:11, specify: | |
1567 | @example | |
1568 | setsar=10:11 | |
1569 | @end example | |
1570 | ||
d89e3b36 SS |
1571 | @section settb |
1572 | ||
1573 | Set the timebase to use for the output frames timestamps. | |
1574 | It is mainly useful for testing timebase configuration. | |
1575 | ||
1576 | It accepts in input an arithmetic expression representing a rational. | |
1577 | The expression can contain the constants "PI", "E", "PHI", "AVTB" (the | |
1578 | default timebase), and "intb" (the input timebase). | |
1579 | ||
1580 | The default value for the input is "intb". | |
1581 | ||
1582 | Follow some examples. | |
1583 | ||
1584 | @example | |
1585 | # set the timebase to 1/25 | |
1586 | settb=1/25 | |
1587 | ||
1588 | # set the timebase to 1/10 | |
1589 | settb=0.1 | |
1590 | ||
1591 | #set the timebase to 1001/1000 | |
1592 | settb=1+0.001 | |
1593 | ||
1594 | #set the timebase to 2*intb | |
1595 | settb=2*intb | |
1596 | ||
1597 | #set the default timebase value | |
1598 | settb=AVTB | |
1599 | @end example | |
1600 | ||
ee42716b SS |
1601 | @section showinfo |
1602 | ||
1603 | Show a line containing various information for each input video frame. | |
1604 | The input video is not modified. | |
1605 | ||
1606 | The shown line contains a sequence of key/value pairs of the form | |
1607 | @var{key}:@var{value}. | |
1608 | ||
1609 | A description of each shown parameter follows: | |
1610 | ||
1611 | @table @option | |
1612 | @item n | |
1613 | sequential number of the input frame, starting from 0 | |
1614 | ||
1615 | @item pts | |
1616 | Presentation TimeStamp of the input frame, expressed as a number of | |
1617 | time base units. The time base unit depends on the filter input pad. | |
1618 | ||
1619 | @item pts_time | |
1620 | Presentation TimeStamp of the input frame, expressed as a number of | |
1621 | seconds | |
1622 | ||
1623 | @item pos | |
1624 | position of the frame in the input stream, -1 if this information in | |
da9cea77 | 1625 | unavailable and/or meaningless (for example in case of synthetic video) |
ee42716b SS |
1626 | |
1627 | @item fmt | |
1628 | pixel format name | |
1629 | ||
1630 | @item sar | |
1631 | sample aspect ratio of the input frame, expressed in the form | |
1632 | @var{num}/@var{den} | |
1633 | ||
1634 | @item s | |
1635 | size of the input frame, expressed in the form | |
1636 | @var{width}x@var{height} | |
1637 | ||
1638 | @item i | |
1639 | interlaced mode ("P" for "progressive", "T" for top field first, "B" | |
1640 | for bottom field first) | |
1641 | ||
1642 | @item iskey | |
1643 | 1 if the frame is a key frame, 0 otherwise | |
1644 | ||
1645 | @item type | |
1646 | picture type of the input frame ("I" for an I-frame, "P" for a | |
1647 | P-frame, "B" for a B-frame, "?" for unknown type). | |
1648 | Check also the documentation of the @code{AVPictureType} enum and of | |
1649 | the @code{av_get_picture_type_char} function defined in | |
1650 | @file{libavutil/avutil.h}. | |
1651 | ||
1652 | @item checksum | |
1653 | Adler-32 checksum of all the planes of the input frame | |
1654 | ||
1655 | @item plane_checksum | |
1656 | Adler-32 checksum of each plane of the input frame, expressed in the form | |
1657 | "[@var{c0} @var{c1} @var{c2} @var{c3}]" | |
1658 | @end table | |
1659 | ||
3275ac6a SS |
1660 | @section slicify |
1661 | ||
1662 | Pass the images of input video on to next video filter as multiple | |
1663 | slices. | |
1664 | ||
1665 | @example | |
9270b8a3 | 1666 | ./avconv -i in.avi -vf "slicify=32" out.avi |
3275ac6a SS |
1667 | @end example |
1668 | ||
1669 | The filter accepts the slice height as parameter. If the parameter is | |
1670 | not specified it will use the default value of 16. | |
1671 | ||
1672 | Adding this in the beginning of filter chains should make filtering | |
1673 | faster due to better use of the memory cache. | |
1674 | ||
fd18ee0f AK |
1675 | @section split |
1676 | ||
1677 | Split input video into several identical outputs. | |
1678 | ||
1679 | The filter accepts a single parameter which specifies the number of outputs. If | |
1680 | unspecified, it defaults to 2. | |
1681 | ||
1682 | For example | |
1683 | @example | |
1684 | avconv -i INPUT -filter_complex split=5 OUTPUT | |
1685 | @end example | |
1686 | will create 5 copies of the input video. | |
1687 | ||
43945b27 SS |
1688 | @section transpose |
1689 | ||
1690 | Transpose rows with columns in the input video and optionally flip it. | |
1691 | ||
1692 | It accepts a parameter representing an integer, which can assume the | |
1693 | values: | |
1694 | ||
1695 | @table @samp | |
1696 | @item 0 | |
1697 | Rotate by 90 degrees counterclockwise and vertically flip (default), that is: | |
1698 | @example | |
1699 | L.R L.l | |
1700 | . . -> . . | |
1701 | l.r R.r | |
1702 | @end example | |
1703 | ||
1704 | @item 1 | |
1705 | Rotate by 90 degrees clockwise, that is: | |
1706 | @example | |
1707 | L.R l.L | |
1708 | . . -> . . | |
1709 | l.r r.R | |
1710 | @end example | |
1711 | ||
1712 | @item 2 | |
1713 | Rotate by 90 degrees counterclockwise, that is: | |
1714 | @example | |
1715 | L.R R.r | |
1716 | . . -> . . | |
1717 | l.r L.l | |
1718 | @end example | |
1719 | ||
1720 | @item 3 | |
1721 | Rotate by 90 degrees clockwise and vertically flip, that is: | |
1722 | @example | |
1723 | L.R r.R | |
1724 | . . -> . . | |
1725 | l.r l.L | |
1726 | @end example | |
1727 | @end table | |
1728 | ||
3275ac6a SS |
1729 | @section unsharp |
1730 | ||
843b5fd0 SS |
1731 | Sharpen or blur the input video. |
1732 | ||
1733 | It accepts the following parameters: | |
1734 | @var{luma_msize_x}:@var{luma_msize_y}:@var{luma_amount}:@var{chroma_msize_x}:@var{chroma_msize_y}:@var{chroma_amount} | |
3275ac6a SS |
1735 | |
1736 | Negative values for the amount will blur the input video, while positive | |
1737 | values will sharpen. All parameters are optional and default to the | |
1ee20141 | 1738 | equivalent of the string '5:5:1.0:5:5:0.0'. |
3275ac6a SS |
1739 | |
1740 | @table @option | |
1741 | ||
1742 | @item luma_msize_x | |
1743 | Set the luma matrix horizontal size. It can be an integer between 3 | |
1744 | and 13, default value is 5. | |
1745 | ||
1746 | @item luma_msize_y | |
1747 | Set the luma matrix vertical size. It can be an integer between 3 | |
1748 | and 13, default value is 5. | |
1749 | ||
1750 | @item luma_amount | |
1751 | Set the luma effect strength. It can be a float number between -2.0 | |
1752 | and 5.0, default value is 1.0. | |
1753 | ||
1754 | @item chroma_msize_x | |
1755 | Set the chroma matrix horizontal size. It can be an integer between 3 | |
1ee20141 | 1756 | and 13, default value is 5. |
3275ac6a SS |
1757 | |
1758 | @item chroma_msize_y | |
1759 | Set the chroma matrix vertical size. It can be an integer between 3 | |
1ee20141 | 1760 | and 13, default value is 5. |
3275ac6a SS |
1761 | |
1762 | @item luma_amount | |
1763 | Set the chroma effect strength. It can be a float number between -2.0 | |
1764 | and 5.0, default value is 0.0. | |
1765 | ||
1766 | @end table | |
1767 | ||
1768 | @example | |
1769 | # Strong luma sharpen effect parameters | |
1770 | unsharp=7:7:2.5 | |
1771 | ||
1772 | # Strong blur of both luma and chroma parameters | |
1773 | unsharp=7:7:-2:7:7:-2 | |
1774 | ||
9270b8a3 LB |
1775 | # Use the default values with @command{avconv} |
1776 | ./avconv -i in.avi -vf "unsharp" out.mp4 | |
3275ac6a SS |
1777 | @end example |
1778 | ||
1779 | @section vflip | |
1780 | ||
1781 | Flip the input video vertically. | |
1782 | ||
1783 | @example | |
9270b8a3 | 1784 | ./avconv -i in.avi -vf "vflip" out.avi |
3275ac6a SS |
1785 | @end example |
1786 | ||
acbac567 MN |
1787 | @section yadif |
1788 | ||
1653027a SS |
1789 | Deinterlace the input video ("yadif" means "yet another deinterlacing |
1790 | filter"). | |
acbac567 | 1791 | |
ab09df9d | 1792 | It accepts the optional parameters: @var{mode}:@var{parity}:@var{auto}. |
acbac567 | 1793 | |
1653027a SS |
1794 | @var{mode} specifies the interlacing mode to adopt, accepts one of the |
1795 | following values: | |
acbac567 | 1796 | |
1653027a SS |
1797 | @table @option |
1798 | @item 0 | |
1799 | output 1 frame for each frame | |
1800 | @item 1 | |
1801 | output 1 frame for each field | |
1802 | @item 2 | |
1803 | like 0 but skips spatial interlacing check | |
1804 | @item 3 | |
1805 | like 1 but skips spatial interlacing check | |
1806 | @end table | |
acbac567 MN |
1807 | |
1808 | Default value is 0. | |
1809 | ||
1653027a SS |
1810 | @var{parity} specifies the picture field parity assumed for the input |
1811 | interlaced video, accepts one of the following values: | |
acbac567 | 1812 | |
1653027a SS |
1813 | @table @option |
1814 | @item 0 | |
1653027a | 1815 | assume top field first |
4703a7b5 SS |
1816 | @item 1 |
1817 | assume bottom field first | |
1653027a SS |
1818 | @item -1 |
1819 | enable automatic detection | |
acbac567 MN |
1820 | @end table |
1821 | ||
1653027a | 1822 | Default value is -1. |
a51c71bb BC |
1823 | If interlacing is unknown or decoder does not export this information, |
1824 | top field first will be assumed. | |
1653027a | 1825 | |
b0641ab7 | 1826 | @var{auto} specifies if deinterlacer should trust the interlaced flag |
ab09df9d JP |
1827 | and only deinterlace frames marked as interlaced |
1828 | ||
1829 | @table @option | |
1830 | @item 0 | |
1831 | deinterlace all frames | |
1832 | @item 1 | |
1833 | only deinterlace frames marked as interlaced | |
1834 | @end table | |
1835 | ||
1836 | Default value is 0. | |
1837 | ||
3275ac6a SS |
1838 | @c man end VIDEO FILTERS |
1839 | ||
1840 | @chapter Video Sources | |
1841 | @c man begin VIDEO SOURCES | |
1842 | ||
1843 | Below is a description of the currently available video sources. | |
1844 | ||
24413399 SS |
1845 | @section buffer |
1846 | ||
1847 | Buffer video frames, and make them available to the filter chain. | |
1848 | ||
1849 | This source is mainly intended for a programmatic use, in particular | |
ac1a31ab | 1850 | through the interface defined in @file{libavfilter/vsrc_buffer.h}. |
24413399 SS |
1851 | |
1852 | It accepts the following parameters: | |
7a11c82f | 1853 | @var{width}:@var{height}:@var{pix_fmt_string}:@var{timebase_num}:@var{timebase_den}:@var{sample_aspect_ratio_num}:@var{sample_aspect_ratio.den} |
24413399 | 1854 | |
da9cea77 | 1855 | All the parameters need to be explicitly defined. |
24413399 SS |
1856 | |
1857 | Follows the list of the accepted parameters. | |
1858 | ||
1859 | @table @option | |
1860 | ||
1861 | @item width, height | |
1862 | Specify the width and height of the buffered video frames. | |
1863 | ||
1864 | @item pix_fmt_string | |
24413399 SS |
1865 | A string representing the pixel format of the buffered video frames. |
1866 | It may be a number corresponding to a pixel format, or a pixel format | |
1867 | name. | |
1868 | ||
94498ec9 SS |
1869 | @item timebase_num, timebase_den |
1870 | Specify numerator and denomitor of the timebase assumed by the | |
1871 | timestamps of the buffered frames. | |
7a11c82f MN |
1872 | |
1873 | @item sample_aspect_ratio.num, sample_aspect_ratio.den | |
1874 | Specify numerator and denominator of the sample aspect ratio assumed | |
1875 | by the video frames. | |
24413399 SS |
1876 | @end table |
1877 | ||
1878 | For example: | |
1879 | @example | |
7a11c82f | 1880 | buffer=320:240:yuv410p:1:24:1:1 |
24413399 SS |
1881 | @end example |
1882 | ||
1883 | will instruct the source to accept video frames with size 320x240 and | |
7a11c82f MN |
1884 | with format "yuv410p", assuming 1/24 as the timestamps timebase and |
1885 | square pixels (1:1 sample aspect ratio). | |
94498ec9 SS |
1886 | Since the pixel format with name "yuv410p" corresponds to the number 6 |
1887 | (check the enum PixelFormat definition in @file{libavutil/pixfmt.h}), | |
1888 | this example corresponds to: | |
24413399 | 1889 | @example |
94498ec9 | 1890 | buffer=320:240:6:1:24 |
24413399 SS |
1891 | @end example |
1892 | ||
23ccf3c7 SS |
1893 | @section color |
1894 | ||
1895 | Provide an uniformly colored input. | |
1896 | ||
1897 | It accepts the following parameters: | |
b5f47309 | 1898 | @var{color}:@var{frame_size}:@var{frame_rate} |
23ccf3c7 SS |
1899 | |
1900 | Follows the description of the accepted parameters. | |
1901 | ||
1902 | @table @option | |
1903 | ||
1904 | @item color | |
1905 | Specify the color of the source. It can be the name of a color (case | |
1906 | insensitive match) or a 0xRRGGBB[AA] sequence, possibly followed by an | |
1907 | alpha specifier. The default value is "black". | |
1908 | ||
1909 | @item frame_size | |
1910 | Specify the size of the sourced video, it may be a string of the form | |
e83c2dde | 1911 | @var{width}x@var{height}, or the name of a size abbreviation. The |
23ccf3c7 SS |
1912 | default value is "320x240". |
1913 | ||
1914 | @item frame_rate | |
1915 | Specify the frame rate of the sourced video, as the number of frames | |
1916 | generated per second. It has to be a string in the format | |
1917 | @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float | |
1918 | number or a valid video frame rate abbreviation. The default value is | |
1919 | "25". | |
1920 | ||
1921 | @end table | |
1922 | ||
1923 | For example the following graph description will generate a red source | |
1924 | with an opacity of 0.2, with size "qcif" and a frame rate of 10 | |
1925 | frames per second, which will be overlayed over the source connected | |
1926 | to the pad with identifier "in". | |
1927 | ||
1928 | @example | |
1929 | "color=red@@0.2:qcif:10 [color]; [in][color] overlay [out]" | |
1930 | @end example | |
1931 | ||
9409c381 SS |
1932 | @section movie |
1933 | ||
1934 | Read a video stream from a movie container. | |
1935 | ||
1936 | It accepts the syntax: @var{movie_name}[:@var{options}] where | |
1937 | @var{movie_name} is the name of the resource to read (not necessarily | |
1938 | a file but also a device or a stream accessed through some protocol), | |
1939 | and @var{options} is an optional sequence of @var{key}=@var{value} | |
1940 | pairs, separated by ":". | |
1941 | ||
1942 | The description of the accepted options follows. | |
1943 | ||
1944 | @table @option | |
1945 | ||
1946 | @item format_name, f | |
1947 | Specifies the format assumed for the movie to read, and can be either | |
1948 | the name of a container or an input device. If not specified the | |
1949 | format is guessed from @var{movie_name} or by probing. | |
1950 | ||
1951 | @item seek_point, sp | |
1952 | Specifies the seek point in seconds, the frames will be output | |
1953 | starting from this seek point, the parameter is evaluated with | |
1954 | @code{av_strtod} so the numerical value may be suffixed by an IS | |
1955 | postfix. Default value is "0". | |
1956 | ||
1957 | @item stream_index, si | |
1958 | Specifies the index of the video stream to read. If the value is -1, | |
1959 | the best suited video stream will be automatically selected. Default | |
1960 | value is "-1". | |
1961 | ||
1962 | @end table | |
1963 | ||
1964 | This filter allows to overlay a second video on top of main input of | |
1965 | a filtergraph as shown in this graph: | |
1966 | @example | |
1967 | input -----------> deltapts0 --> overlay --> output | |
1968 | ^ | |
1969 | | | |
1970 | movie --> scale--> deltapts1 -------+ | |
1971 | @end example | |
1972 | ||
1973 | Some examples follow: | |
1974 | @example | |
1975 | # skip 3.2 seconds from the start of the avi file in.avi, and overlay it | |
1976 | # on top of the input labelled as "in". | |
1977 | movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie]; | |
1978 | [in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out] | |
1979 | ||
1980 | # read from a video4linux2 device, and overlay it on top of the input | |
1981 | # labelled as "in" | |
1982 | movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie]; | |
1983 | [in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out] | |
1984 | ||
1985 | @end example | |
1986 | ||
3275ac6a SS |
1987 | @section nullsrc |
1988 | ||
1989 | Null video source, never return images. It is mainly useful as a | |
1990 | template and to be employed in analysis / debugging tools. | |
1991 | ||
1992 | It accepts as optional parameter a string of the form | |
16134b7c | 1993 | @var{width}:@var{height}:@var{timebase}. |
3275ac6a | 1994 | |
16134b7c SS |
1995 | @var{width} and @var{height} specify the size of the configured |
1996 | source. The default values of @var{width} and @var{height} are | |
1997 | respectively 352 and 288 (corresponding to the CIF size format). | |
1998 | ||
1999 | @var{timebase} specifies an arithmetic expression representing a | |
2000 | timebase. The expression can contain the constants "PI", "E", "PHI", | |
2001 | "AVTB" (the default timebase), and defaults to the value "AVTB". | |
3275ac6a | 2002 | |
f8608dca SS |
2003 | @section frei0r_src |
2004 | ||
2005 | Provide a frei0r source. | |
2006 | ||
2007 | To enable compilation of this filter you need to install the frei0r | |
f8a45fa1 | 2008 | header and configure Libav with --enable-frei0r. |
f8608dca SS |
2009 | |
2010 | The source supports the syntax: | |
2011 | @example | |
2012 | @var{size}:@var{rate}:@var{src_name}[@{=|:@}@var{param1}:@var{param2}:...:@var{paramN}] | |
2013 | @end example | |
2014 | ||
2015 | @var{size} is the size of the video to generate, may be a string of the | |
2016 | form @var{width}x@var{height} or a frame size abbreviation. | |
2017 | @var{rate} is the rate of the video to generate, may be a string of | |
2018 | the form @var{num}/@var{den} or a frame rate abbreviation. | |
2019 | @var{src_name} is the name to the frei0r source to load. For more | |
2020 | information regarding frei0r and how to set the parameters read the | |
4c989761 | 2021 | section @ref{frei0r} in the description of the video filters. |
f8608dca SS |
2022 | |
2023 | Some examples follow: | |
2024 | @example | |
2025 | # generate a frei0r partik0l source with size 200x200 and framerate 10 | |
2026 | # which is overlayed on the overlay filter main input | |
2027 | frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay | |
2028 | @end example | |
2029 | ||
ec2ac927 | 2030 | @section rgbtestsrc, testsrc |
0244879f | 2031 | |
ec2ac927 SS |
2032 | The @code{rgbtestsrc} source generates an RGB test pattern useful for |
2033 | detecting RGB vs BGR issues. You should see a red, green and blue | |
2034 | stripe from top to bottom. | |
0244879f | 2035 | |
ec2ac927 SS |
2036 | The @code{testsrc} source generates a test video pattern, showing a |
2037 | color pattern, a scrolling gradient and a timestamp. This is mainly | |
2038 | intended for testing purposes. | |
2039 | ||
2040 | Both sources accept an optional sequence of @var{key}=@var{value} pairs, | |
0244879f SS |
2041 | separated by ":". The description of the accepted options follows. |
2042 | ||
2043 | @table @option | |
2044 | ||
2045 | @item size, s | |
2046 | Specify the size of the sourced video, it may be a string of the form | |
da9cea77 | 2047 | @var{width}x@var{height}, or the name of a size abbreviation. The |
0244879f SS |
2048 | default value is "320x240". |
2049 | ||
2050 | @item rate, r | |
2051 | Specify the frame rate of the sourced video, as the number of frames | |
2052 | generated per second. It has to be a string in the format | |
2053 | @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float | |
2054 | number or a valid video frame rate abbreviation. The default value is | |
2055 | "25". | |
2056 | ||
2057 | @item sar | |
2058 | Set the sample aspect ratio of the sourced video. | |
2059 | ||
2060 | @item duration | |
2061 | Set the video duration of the sourced video. The accepted syntax is: | |
2062 | @example | |
2063 | [-]HH[:MM[:SS[.m...]]] | |
2064 | [-]S+[.m...] | |
2065 | @end example | |
2066 | See also the function @code{av_parse_time()}. | |
2067 | ||
2068 | If not specified, or the expressed duration is negative, the video is | |
2069 | supposed to be generated forever. | |
2070 | @end table | |
2071 | ||
2072 | For example the following: | |
2073 | @example | |
2074 | testsrc=duration=5.3:size=qcif:rate=10 | |
2075 | @end example | |
2076 | ||
2077 | will generate a video with a duration of 5.3 seconds, with size | |
2078 | 176x144 and a framerate of 10 frames per second. | |
2079 | ||
3275ac6a SS |
2080 | @c man end VIDEO SOURCES |
2081 | ||
2082 | @chapter Video Sinks | |
2083 | @c man begin VIDEO SINKS | |
2084 | ||
2085 | Below is a description of the currently available video sinks. | |
2086 | ||
ac712309 AK |
2087 | @section buffersink |
2088 | ||
2089 | Buffer video frames, and make them available to the end of the filter | |
2090 | graph. | |
2091 | ||
2092 | This sink is intended for a programmatic use through the interface defined in | |
2093 | @file{libavfilter/buffersink.h}. | |
2094 | ||
3275ac6a SS |
2095 | @section nullsink |
2096 | ||
2097 | Null video sink, do absolutely nothing with the input video. It is | |
2098 | mainly useful as a template and to be employed in analysis / debugging | |
2099 | tools. | |
2100 | ||
2101 | @c man end VIDEO SINKS |