doc/filters: sort multimedia filters by name

Also favor the video filter name for indexing, in case there is an a*
audio filter variant.
This commit is contained in:
Stefano Sabatini 2013-04-23 20:33:49 +02:00
parent 638ffb2413
commit dfdee6cab3

View File

@ -6862,7 +6862,208 @@ tools.
Below is a description of the currently available multimedia filters.
@section aperms, perms
@section concat
Concatenate audio and video streams, joining them together one after the
other.
The filter works on segments of synchronized video and audio streams. All
segments must have the same number of streams of each type, and that will
also be the number of streams at output.
The filter accepts the following options:
@table @option
@item n
Set the number of segments. Default is 2.
@item v
Set the number of output video streams, that is also the number of video
streams in each segment. Default is 1.
@item a
Set the number of output audio streams, that is also the number of video
streams in each segment. Default is 0.
@item unsafe
Activate unsafe mode: do not fail if segments have a different format.
@end table
The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
@var{a} audio outputs.
There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
segment, in the same order as the outputs, then the inputs for the second
segment, etc.
Related streams do not always have exactly the same duration, for various
reasons including codec frame size or sloppy authoring. For that reason,
related synchronized streams (e.g. a video and its audio track) should be
concatenated at once. The concat filter will use the duration of the longest
stream in each segment (except the last one), and if necessary pad shorter
audio streams with silence.
For this filter to work correctly, all segments must start at timestamp 0.
All corresponding streams must have the same parameters in all segments; the
filtering system will automatically select a common pixel format for video
streams, and a common sample format, sample rate and channel layout for
audio streams, but other settings, such as resolution, must be converted
explicitly by the user.
Different frame rates are acceptable but will result in variable frame rate
at output; be sure to configure the output file to handle it.
@subsection Examples
@itemize
@item
Concatenate an opening, an episode and an ending, all in bilingual version
(video in stream 0, audio in streams 1 and 2):
@example
ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
-map '[v]' -map '[a1]' -map '[a2]' output.mkv
@end example
@item
Concatenate two parts, handling audio and video separately, using the
(a)movie sources, and adjusting the resolution:
@example
movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
@end example
Note that a desync will happen at the stitch if the audio and video streams
do not have exactly the same duration in the first file.
@end itemize
@section ebur128
EBU R128 scanner filter. This filter takes an audio stream as input and outputs
it unchanged. By default, it logs a message at a frequency of 10Hz with the
Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
The filter also has a video output (see the @var{video} option) with a real
time graph to observe the loudness evolution. The graphic contains the logged
message mentioned above, so it is not printed anymore when this option is set,
unless the verbose logging is set. The main graphing area contains the
short-term loudness (3 seconds of analysis), and the gauge on the right is for
the momentary loudness (400 milliseconds).
More information about the Loudness Recommendation EBU R128 on
@url{http://tech.ebu.ch/loudness}.
The filter accepts the following options:
@table @option
@item video
Activate the video output. The audio stream is passed unchanged whether this
option is set or no. The video stream will be the first output stream if
activated. Default is @code{0}.
@item size
Set the video size. This option is for video only. Default and minimum
resolution is @code{640x480}.
@item meter
Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
@code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
other integer value between this range is allowed.
@item metadata
Set metadata injection. If set to @code{1}, the audio input will be segmented
into 100ms output frames, each of them containing various loudness information
in metadata. All the metadata keys are prefixed with @code{lavfi.r128.}.
Default is @code{0}.
@item framelog
Force the frame logging level.
Available values are:
@table @samp
@item info
information logging level
@item verbose
verbose logging level
@end table
By default, the logging level is set to @var{info}. If the @option{video} or
the @option{metadata} options are set, it switches to @var{verbose}.
@end table
@subsection Examples
@itemize
@item
Real-time graph using @command{ffplay}, with a EBU scale meter +18:
@example
ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
@end example
@item
Run an analysis with @command{ffmpeg}:
@example
ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
@end example
@end itemize
@section interleave, ainterleave
Temporally interleave frames from several inputs.
@code{interleave} works with video inputs, @code{ainterleave} with audio.
These filters read frames from several inputs and send the oldest
queued frame to the output.
Input streams must have a well defined, monotonically increasing frame
timestamp values.
In order to submit one frame to output, these filters need to enqueue
at least one frame for each input, so they cannot work in case one
input is not yet terminated and will not receive incoming frames.
For example consider the case when one input is a @code{select} filter
which always drop input frames. The @code{interleave} filter will keep
reading from that input, but it will never be able to send new frames
to output until the input will send an end-of-stream signal.
Also, depending on inputs synchronization, the filters will drop
frames in case one input receives more frames than the other ones, and
the queue is already filled.
These filters accept the following options:
@table @option
@item nb_inputs, n
Set the number of different inputs, it is 2 by default.
@end table
@subsection Examples
@itemize
@item
Interleave frames belonging to different streams using @command{ffmpeg}:
@example
ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
@end example
@item
Add flickering blur effect:
@example
select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
@end example
@end itemize
@section perms, aperms
Set read/write permissions for the output frames.
@ -6901,7 +7102,8 @@ following one, the permission might not be received as expected in that
following filter. Inserting a @ref{format} or @ref{aformat} filter before the
perms/aperms filter can avoid this problem.
@section aselect, select
@section select, aselect
Select frames to pass in output.
This filter accepts the following options:
@ -7084,15 +7286,15 @@ select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] over
@end example
@end itemize
@section asendcmd, sendcmd
@section sendcmd, asendcmd
Send commands to filters in the filtergraph.
These filters read commands to be sent to other filters in the
filtergraph.
@code{asendcmd} must be inserted between two audio filters,
@code{sendcmd} must be inserted between two video filters, but apart
@code{sendcmd} must be inserted between two video filters,
@code{asendcmd} must be inserted between two audio filters, but apart
from that they act the same way.
The specification of commands can be provided in the filter arguments
@ -7216,11 +7418,11 @@ sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
@end itemize
@anchor{setpts}
@section asetpts, setpts
@section setpts, asetpts
Change the PTS (presentation timestamp) of the input frames.
@code{asetpts} works on audio frames, @code{setpts} on video frames.
@code{setpts} works on video frames, @code{asetpts} on audio frames.
This filter accepts the following options:
@ -7339,79 +7541,6 @@ setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
@end example
@end itemize
@section ebur128
EBU R128 scanner filter. This filter takes an audio stream as input and outputs
it unchanged. By default, it logs a message at a frequency of 10Hz with the
Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
The filter also has a video output (see the @var{video} option) with a real
time graph to observe the loudness evolution. The graphic contains the logged
message mentioned above, so it is not printed anymore when this option is set,
unless the verbose logging is set. The main graphing area contains the
short-term loudness (3 seconds of analysis), and the gauge on the right is for
the momentary loudness (400 milliseconds).
More information about the Loudness Recommendation EBU R128 on
@url{http://tech.ebu.ch/loudness}.
The filter accepts the following options:
@table @option
@item video
Activate the video output. The audio stream is passed unchanged whether this
option is set or no. The video stream will be the first output stream if
activated. Default is @code{0}.
@item size
Set the video size. This option is for video only. Default and minimum
resolution is @code{640x480}.
@item meter
Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
@code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
other integer value between this range is allowed.
@item metadata
Set metadata injection. If set to @code{1}, the audio input will be segmented
into 100ms output frames, each of them containing various loudness information
in metadata. All the metadata keys are prefixed with @code{lavfi.r128.}.
Default is @code{0}.
@item framelog
Force the frame logging level.
Available values are:
@table @samp
@item info
information logging level
@item verbose
verbose logging level
@end table
By default, the logging level is set to @var{info}. If the @option{video} or
the @option{metadata} options are set, it switches to @var{verbose}.
@end table
@subsection Examples
@itemize
@item
Real-time graph using @command{ffplay}, with a EBU scale meter +18:
@example
ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
@end example
@item
Run an analysis with @command{ffmpeg}:
@example
ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
@end example
@end itemize
@section settb, asettb
Set the timebase to use for the output frames timestamps.
@ -7465,134 +7594,6 @@ settb=AVTB
@end example
@end itemize
@section concat
Concatenate audio and video streams, joining them together one after the
other.
The filter works on segments of synchronized video and audio streams. All
segments must have the same number of streams of each type, and that will
also be the number of streams at output.
The filter accepts the following options:
@table @option
@item n
Set the number of segments. Default is 2.
@item v
Set the number of output video streams, that is also the number of video
streams in each segment. Default is 1.
@item a
Set the number of output audio streams, that is also the number of video
streams in each segment. Default is 0.
@item unsafe
Activate unsafe mode: do not fail if segments have a different format.
@end table
The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
@var{a} audio outputs.
There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
segment, in the same order as the outputs, then the inputs for the second
segment, etc.
Related streams do not always have exactly the same duration, for various
reasons including codec frame size or sloppy authoring. For that reason,
related synchronized streams (e.g. a video and its audio track) should be
concatenated at once. The concat filter will use the duration of the longest
stream in each segment (except the last one), and if necessary pad shorter
audio streams with silence.
For this filter to work correctly, all segments must start at timestamp 0.
All corresponding streams must have the same parameters in all segments; the
filtering system will automatically select a common pixel format for video
streams, and a common sample format, sample rate and channel layout for
audio streams, but other settings, such as resolution, must be converted
explicitly by the user.
Different frame rates are acceptable but will result in variable frame rate
at output; be sure to configure the output file to handle it.
@subsection Examples
@itemize
@item
Concatenate an opening, an episode and an ending, all in bilingual version
(video in stream 0, audio in streams 1 and 2):
@example
ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
-map '[v]' -map '[a1]' -map '[a2]' output.mkv
@end example
@item
Concatenate two parts, handling audio and video separately, using the
(a)movie sources, and adjusting the resolution:
@example
movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
@end example
Note that a desync will happen at the stitch if the audio and video streams
do not have exactly the same duration in the first file.
@end itemize
@section interleave, ainterleave
Temporally interleave frames from several inputs.
@code{interleave} works with video inputs, @code{ainterleave} with audio.
These filters read frames from several inputs and send the oldest
queued frame to the output.
Input streams must have a well defined, monotonically increasing frame
timestamp values.
In order to submit one frame to output, these filters need to enqueue
at least one frame for each input, so they cannot work in case one
input is not yet terminated and will not receive incoming frames.
For example consider the case when one input is a @code{select} filter
which always drop input frames. The @code{interleave} filter will keep
reading from that input, but it will never be able to send new frames
to output until the input will send an end-of-stream signal.
Also, depending on inputs synchronization, the filters will drop
frames in case one input receives more frames than the other ones, and
the queue is already filled.
These filters accept the following options:
@table @option
@item nb_inputs, n
Set the number of different inputs, it is 2 by default.
@end table
@subsection Examples
@itemize
@item
Interleave frames belonging to different streams using @command{ffmpeg}:
@example
ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
@end example
@item
Add flickering blur effect:
@example
select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
@end example
@end itemize
@section showspectrum
Convert input audio to a video output, representing the audio frequency