X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Ffilters.texi;h=cf1518616494397e98c9fbf930f634f484021d2e;hb=2efdbf7367989cf9d296c25fa3d2aff8d6e25fdd;hp=5c119c015194a68b9a897977cf7cdd98e3507571;hpb=44df2e858889ab8e41d6a9f403433d7adc304bbe;p=ffmpeg diff --git a/doc/filters.texi b/doc/filters.texi index 5c119c01519..cf151861649 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -221,6 +221,7 @@ Here is a BNF description of the filtergraph syntax: @var{FILTERGRAPH} ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}] @end example +@anchor{filtergraph escaping} @section Notes on filtergraph escaping Filtergraph description composition entails several levels of @@ -584,6 +585,12 @@ adelay=0|500S|700S @end example @end itemize +@section aderivative, aintegral + +Compute derivative/integral of audio stream. + +Applying both filters one after another produces original audio. + @section aecho Apply echoing to the input audio. @@ -958,6 +965,10 @@ Set Impulse Response filter length. Default is 1, which means whole IR is proces @item again Enable applying gain measured from power of IR. + +@item maxir +Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds. +Allowed range is 0.1 to 60 seconds. @end table @subsection Examples @@ -1350,6 +1361,9 @@ The duration of the first input. The transition time, in seconds, for volume renormalization when an input stream ends. The default value is 2 seconds. +@item weights +Specify weight of each input audio stream as sequence. +Each weight is separated by space. By default all inputs have same weight. @end table @section anequalizer @@ -1746,7 +1760,7 @@ It accepts the following option: @table @option @item length Short window length in seconds, used for peak and trough RMS measurement. -Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.1 - 10]}. +Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}. @item metadata @@ -2049,7 +2063,7 @@ Change bandreject width. Syntax for the command is : "@var{width}" @end table -@section bass +@section bass, lowshelf Boost or cut the bass (lower) frequencies of the audio using a two-pole shelving filter with a response similar to that of a standard @@ -3171,6 +3185,21 @@ Default is @var{freq}. @item lfe Set custom gain for LFE channels. Value is in dB. Default is 0. + +@item size +Set size of frame in number of samples which will be processed at once. +Default value is @var{1024}. Allowed range is from 1024 to 96000. + +@item hrir +Set format of hrir stream. +Default value is @var{stereo}. Alternative value is @var{multich}. +If value is set to @var{stereo}, number of additional streams should +be greater or equal to number of input channels in first input stream. +Also each additional stream should have stereo number of channels. +If value is set to @var{multich}, number of additional streams should +be exactly one. Also number of input channels of additional stream +should be equal or greater than twice number of channels of first input +stream. @end table @subsection Examples @@ -3184,6 +3213,14 @@ The files give coefficients for each position of virtual loudspeaker: ffmpeg -i input.wav -lavfi-complex "amovie=azi_270_ele_0_DFC.wav[sr],amovie=azi_90_ele_0_DFC.wav[sl],amovie=azi_225_ele_0_DFC.wav[br],amovie=azi_135_ele_0_DFC.wav[bl],amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe],amovie=azi_35_ele_0_DFC.wav[fl],amovie=azi_325_ele_0_DFC.wav[fr],[a:0][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR" output.wav @end example + +@item +Full example using wav files as coefficients with amovie filters for 7.1 downmix, +but now in @var{multich} @var{hrir} format. +@example +ffmpeg -i input.wav -lavfi-complex "amovie=minp.wav[hrirs],[a:0][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich" +output.wav +@end example @end itemize @section highpass @@ -4401,7 +4438,7 @@ Set LFE input volume. By default, this is @var{1}. Set LFE output volume. By default, this is @var{1}. @end table -@section treble +@section treble, highshelf Boost or cut treble (upper) frequencies of the audio using a two-pole shelving filter with a response similar to that of a standard @@ -5156,6 +5193,38 @@ input reaches end of stream. This will cause problems if your encoding pipeline drops frames. If you're trying to apply an image as an overlay to a video stream, consider the @var{overlay} filter instead. +@section amplify + +Amplify differences between current pixel and pixels of adjacent frames in +same pixel location. + +This filter accepts the following options: + +@table @option +@item radius +Set frame radius. Default is 2. Allowed range is from 1 to 63. +For example radius of 3 will instruct filter to calculate average of 7 frames. + +@item factor +Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535. + +@item threshold +Set threshold for difference amplification. Any differrence greater or equal to +this value will not alter source pixel. Default is 10. +Allowed range is from 0 to 65535. + +@item low +Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535. +This option controls maximum possible value that will decrease source pixel value. + +@item high +Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535. +This option controls maximum possible value that will increase source pixel value. + +@item planes +Set which planes to filter. Default is all. Allowed range is from 0 to 15. +@end table + @section ass Same as the @ref{subtitles} filter, except that it doesn't require libavcodec @@ -5216,7 +5285,7 @@ Threshold A is designed to react on abrupt changes in the input signal and threshold B is designed to react on continuous changes in the input signal. @item s -Set number of frames filter will use for averaging. Default is 33. Must be odd +Set number of frames filter will use for averaging. Default is 9. Must be odd number in range [5, 129]. @item p @@ -6353,7 +6422,7 @@ colorspace=smpte240m @section convolution -Apply convolution 3x3, 5x5 or 7x7 filter. +Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements. The filter accepts the following options: @@ -6363,13 +6432,15 @@ The filter accepts the following options: @item 2m @item 3m Set matrix for each plane. -Matrix is sequence of 9, 25 or 49 signed integers. +Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode, +and from 1 to 49 odd number of signed integers in @var{row} mode. @item 0rdiv @item 1rdiv @item 2rdiv @item 3rdiv Set multiplier for calculated value for each plane. +If unset or 0, it will be sum of all matrix elements. @item 0bias @item 1bias @@ -6377,6 +6448,13 @@ Set multiplier for calculated value for each plane. @item 3bias Set bias for each plane. This value is added to the result of the multiplication. Useful for making the overall image brighter or darker. Default is 0.0. + +@item 0mode +@item 1mode +@item 2mode +@item 3mode +Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}. +Default is @var{square}. @end table @subsection Examples @@ -7047,6 +7125,65 @@ e.g. banding detection threshold is triggered for all color components. The default is disabled. @end table +@section deblock + +Remove blocking artifacts from input video. + +The filter accepts the following options: + +@table @option +@item filter +Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}. +This controls what kind of deblocking is applied. + +@item block +Set size of block, allowed range is from 4 to 512. Default is @var{8}. + +@item alpha +@item beta +@item gamma +@item delta +Set blocking detection thresholds. Allowed range is 0 to 1. +Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest. +Using higher threshold gives more deblocking strength. +Setting @var{alpha} controls threshold detection at exact edge of block. +Remaining options controls threshold detection near the edge. Each one for +below/above or left/right. Setting any of those to @var{0} disables +deblocking. + +@item planes +Set planes to filter. Default is to filter all available planes. +@end table + +@subsection Examples + +@itemize +@item +Deblock using weak filter and block size of 4 pixels. +@example +deblock=filter=weak:block=4 +@end example + +@item +Deblock using strong filter, block size of 4 pixels and custom thresholds for +deblocking more edges. +@example +deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05 +@end example + +@item +Similar as above, but filter only first plane. +@example +deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1 +@end example + +@item +Similar as above, but filter only second and third plane. +@example +deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6 +@end example +@end itemize + @anchor{decimate} @section decimate @@ -8145,9 +8282,14 @@ Draw white/gray wires on black background. @item colormix Mix the colors to create a paint/cartoon effect. -@end table +@item canny +Apply Canny edge detector on all selected planes. +@end table Default value is @var{wires}. + +@item planes +Select planes for filtering. By default all available planes are filtered. @end table @subsection Examples @@ -8560,6 +8702,40 @@ fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))' @end itemize +@section fftdnoiz +Denoise frames using 3D FFT (frequency domain filtering). + +The filter accepts the following options: + +@table @option +@item sigma +Set the noise sigma constant. This sets denoising strength. +Default value is 1. Allowed range is from 0 to 30. +Using very high sigma with low overlap may give blocking artifacts. + +@item amount +Set amount of denoising. By default all detected noise is reduced. +Default value is 1. Allowed range is from 0 to 1. + +@item block +Set size of block, Default is 4, can be 3, 4, 5 or 6. +Actual size of block in pixels is 2 to power of @var{block}, so by default +block size in pixels is 2^4 which is 16. + +@item overlap +Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8. + +@item prev +Set number of previous frames to use for denoising. By default is set to 0. + +@item next +Set number of next frames to to use for denoising. By default is set to 0. + +@item planes +Set planes which will be filtered, by default are all available filtered +except alpha. +@end table + @section field Extract a single field from an interlaced image using stride @@ -10369,15 +10545,17 @@ The filter accepts the following options: @item cx Relative x-coordinate of the focal point of the image, and thereby the center of the distortion. This value has a range [0,1] and is expressed as fractions of the image -width. +width. Default is 0.5. @item cy Relative y-coordinate of the focal point of the image, and thereby the center of the distortion. This value has a range [0,1] and is expressed as fractions of the image -height. +height. Default is 0.5. @item k1 -Coefficient of the quadratic correction term. 0.5 means no correction. +Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means +no correction. Default is 0. @item k2 -Coefficient of the double quadratic correction term. 0.5 means no correction. +Coefficient of the double quadratic correction term. This value has a range [-1,1]. +0 means no correction. Default is 0. @end table The formula that generates the correction is: @@ -11060,7 +11238,14 @@ The number of inputs. If unspecified, it defaults to 2. @item weights Specify weight of each input video stream as sequence. -Each weight is separated by space. +Each weight is separated by space. If number of weights +is smaller than number of @var{frames} last specified +weight will be used for all remaining unset weights. + +@item scale +Specify scale, if it is set it will be multiplied with sum +of each weight multiplied with pixel values to give final destination +pixel value. By default @var{scale} is auto scaled to sum of weights. @item duration Specify how end of stream is determined. @@ -15469,6 +15654,50 @@ Vertical low-pass filtering can only be enabled for @option{mode} @end table +@section tmix + +Mix successive video frames. + +A description of the accepted options follows. + +@table @option +@item frames +The number of successive frames to mix. If unspecified, it defaults to 3. + +@item weights +Specify weight of each input video frame. +Each weight is separated by space. If number of weights is smaller than +number of @var{frames} last specified weight will be used for all remaining +unset weights. + +@item scale +Specify scale, if it is set it will be multiplied with sum +of each weight multiplied with pixel values to give final destination +pixel value. By default @var{scale} is auto scaled to sum of weights. +@end table + +@subsection Examples + +@itemize +@item +Average 7 successive frames: +@example +tmix=frames=7:weights="1 1 1 1 1 1 1" +@end example + +@item +Apply simple temporal convolution: +@example +tmix=frames=3:weights="-1 3 -1" +@end example + +@item +Similar as above but only showing temporal differences: +@example +tmix=frames=3:weights="-1 2 -1":scale=1 +@end example +@end itemize + @section tonemap Tone map colors from different dynamic ranges. @@ -16242,6 +16471,17 @@ For example, to vertically flip a video with @command{ffmpeg}: ffmpeg -i in.avi -vf "vflip" out.avi @end example +@section vfrdet + +Detect variable frame rate video. + +This filter tries to detect if the input is variable or constant frame rate. + +At end it will output number of frames detected as having variable delta pts, +and ones with constant delta pts. +If there was frames with variable delta, than it will also show min and max delta +encountered. + @anchor{vignette} @section vignette @@ -17585,13 +17825,15 @@ ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_c @anchor{color} @anchor{haldclutsrc} @anchor{nullsrc} +@anchor{pal75bars} +@anchor{pal100bars} @anchor{rgbtestsrc} @anchor{smptebars} @anchor{smptehdbars} @anchor{testsrc} @anchor{testsrc2} @anchor{yuvtestsrc} -@section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc +@section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors. @@ -17606,6 +17848,12 @@ The @code{nullsrc} source returns unprocessed video frames. It is mainly useful to be employed in analysis / debugging tools, or as the source for filters which ignore the input data. +The @code{pal75bars} source generates a color bars pattern, based on +EBU PAL recommendations with 75% color levels. + +The @code{pal100bars} source generates a color bars pattern, based on +EBU PAL recommendations with 100% color levels. + The @code{rgbtestsrc} source generates an RGB test pattern useful for detecting RGB vs BGR issues. You should see a red, green and blue stripe from top to bottom. @@ -19936,7 +20184,7 @@ Set channel width, allowed range is [80, 8192]. Default is 400. Set channel height, allowed range is [1, 900]. Default is 20. @item f -Set fade, allowed range is [0.001, 1]. Default is 0.95. +Set fade, allowed range is [0, 1]. Default is 0.95. @item c Set volume color expression. @@ -19961,8 +20209,8 @@ If set, displays channel names. Default is enabled. If set, displays volume values. Default is enabled. @item o -Set orientation, can be @code{horizontal} or @code{vertical}, -default is @code{horizontal}. +Set orientation, can be horizontal: @code{h} or vertical: @code{v}, +default is @code{h}. @item s Set step size, allowed range is [0, 5]. Default is 0, which means @@ -19974,6 +20222,20 @@ Set background opacity, allowed range is [0, 1]. Default is 0. @item m Set metering mode, can be peak: @code{p} or rms: @code{r}, default is @code{p}. + +@item ds +Set display scale, can be linear: @code{lin} or log: @code{log}, +default is @code{lin}. + +@item dm +In second. +If set to > 0., display a line for the max level +in the previous seconds. +default is disabled: @code{0.} + +@item dmc +The color of the max line. Use when @code{dm} option is set to > 0. +default is: @code{orange} @end table @section showwaves @@ -20267,7 +20529,7 @@ filters in the filtergraph. @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq} must be inserted between two video filters, @code{azmq} between two -audio filters. +audio filters. Both are capable to send messages to any filter type. To enable these filters you need to install the libzmq library and headers and configure FFmpeg with @code{--enable-libzmq}. @@ -20277,7 +20539,10 @@ For more information about libzmq see: The @code{zmq} and @code{azmq} filters work as a libzmq server, which receives messages sent through a network interface defined by the -@option{bind_address} option. +@option{bind_address} (or the abbreviation "@option{b}") option. +Default value of this option is @file{tcp://localhost:5555}. You may +want to alter this value to your needs, but do not forget to escape any +':' signs (see @ref{filtergraph escaping}). The received message must be in the form: @example @@ -20285,7 +20550,10 @@ The received message must be in the form: @end example @var{TARGET} specifies the target of the command, usually the name of -the filter class or a specific filter instance name. +the filter class or a specific filter instance name. The default +filter instance name uses the pattern @samp{Parsed__}, +but you can override this by using the @samp{filter_name@@id} syntax +(see @ref{Filtergraph syntax}). @var{COMMAND} specifies the name of the command for the target filter. @@ -20307,14 +20575,17 @@ will send a reply to the client, adopting the format: Look at @file{tools/zmqsend} for an example of a zmq client which can be used to send commands processed by these filters. -Consider the following filtergraph generated by @command{ffplay} +Consider the following filtergraph generated by @command{ffplay}. +In this example the last overlay filter has an instance name. All other +filters will have default instance names. + @example ffplay -dumpgraph 1 -f lavfi " color=s=100x100:c=red [l]; color=s=100x100:c=blue [r]; nullsrc=s=200x100, zmq [bg]; -[bg][l] overlay [bg+l]; -[bg+l][r] overlay=x=100 " +[bg][l] overlay [bg+l]; +[bg+l][r] overlay@@my=x=100 " @end example To change the color of the left side of the video, the following @@ -20328,6 +20599,12 @@ To change the right side: echo Parsed_color_1 c pink | tools/zmqsend @end example +To change the position of the right side: +@example +echo overlay@@my x 150 | tools/zmqsend +@end example + + @c man end MULTIMEDIA FILTERS @chapter Multimedia Sources