lavfi: mv vf_select.c -> f_select.c
The file now contains also an audio select implementation. Also move the aselect/select documentation from video filters to the multimedia filters section.
This commit is contained in:
parent
f5461face5
commit
c51f090ff9
268
doc/filters.texi
268
doc/filters.texi
@ -3506,140 +3506,6 @@ scale='min(500\, iw*3/2):-1'
|
||||
@end example
|
||||
@end itemize
|
||||
|
||||
@section aselect, select
|
||||
Select frames to pass in output.
|
||||
|
||||
It accepts in input an expression, which is evaluated for each input
|
||||
frame. If the expression is evaluated to a non-zero value, the frame
|
||||
is selected and passed to the output, otherwise it is discarded.
|
||||
|
||||
The expression can contain the following constants:
|
||||
|
||||
@table @option
|
||||
@item n
|
||||
the sequential number of the filtered frame, starting from 0
|
||||
|
||||
@item selected_n
|
||||
the sequential number of the selected frame, starting from 0
|
||||
|
||||
@item prev_selected_n
|
||||
the sequential number of the last selected frame, NAN if undefined
|
||||
|
||||
@item TB
|
||||
timebase of the input timestamps
|
||||
|
||||
@item pts
|
||||
the PTS (Presentation TimeStamp) of the filtered video frame,
|
||||
expressed in @var{TB} units, NAN if undefined
|
||||
|
||||
@item t
|
||||
the PTS (Presentation TimeStamp) of the filtered video frame,
|
||||
expressed in seconds, NAN if undefined
|
||||
|
||||
@item prev_pts
|
||||
the PTS of the previously filtered video frame, NAN if undefined
|
||||
|
||||
@item prev_selected_pts
|
||||
the PTS of the last previously filtered video frame, NAN if undefined
|
||||
|
||||
@item prev_selected_t
|
||||
the PTS of the last previously selected video frame, NAN if undefined
|
||||
|
||||
@item start_pts
|
||||
the PTS of the first video frame in the video, NAN if undefined
|
||||
|
||||
@item start_t
|
||||
the time of the first video frame in the video, NAN if undefined
|
||||
|
||||
@item pict_type @emph{(video only)}
|
||||
the type of the filtered frame, can assume one of the following
|
||||
values:
|
||||
@table @option
|
||||
@item I
|
||||
@item P
|
||||
@item B
|
||||
@item S
|
||||
@item SI
|
||||
@item SP
|
||||
@item BI
|
||||
@end table
|
||||
|
||||
@item interlace_type @emph{(video only)}
|
||||
the frame interlace type, can assume one of the following values:
|
||||
@table @option
|
||||
@item PROGRESSIVE
|
||||
the frame is progressive (not interlaced)
|
||||
@item TOPFIRST
|
||||
the frame is top-field-first
|
||||
@item BOTTOMFIRST
|
||||
the frame is bottom-field-first
|
||||
@end table
|
||||
|
||||
@item consumed_sample_n @emph{(audio only)}
|
||||
the number of selected samples before the current frame
|
||||
|
||||
@item samples_n @emph{(audio only)}
|
||||
the number of samples in the current frame
|
||||
|
||||
@item sample_rate @emph{(audio only)}
|
||||
the input sample rate
|
||||
|
||||
@item key
|
||||
1 if the filtered frame is a key-frame, 0 otherwise
|
||||
|
||||
@item pos
|
||||
the position in the file of the filtered frame, -1 if the information
|
||||
is not available (e.g. for synthetic video)
|
||||
|
||||
@item scene @emph{(video only)}
|
||||
value between 0 and 1 to indicate a new scene; a low value reflects a low
|
||||
probability for the current frame to introduce a new scene, while a higher
|
||||
value means the current frame is more likely to be one (see the example below)
|
||||
|
||||
@end table
|
||||
|
||||
The default value of the select expression is "1".
|
||||
|
||||
Some examples follow:
|
||||
|
||||
@example
|
||||
# select all frames in input
|
||||
select
|
||||
|
||||
# the above is the same as:
|
||||
select=1
|
||||
|
||||
# skip all frames:
|
||||
select=0
|
||||
|
||||
# select only I-frames
|
||||
select='eq(pict_type\,I)'
|
||||
|
||||
# select one frame every 100
|
||||
select='not(mod(n\,100))'
|
||||
|
||||
# select only frames contained in the 10-20 time interval
|
||||
select='gte(t\,10)*lte(t\,20)'
|
||||
|
||||
# select only I frames contained in the 10-20 time interval
|
||||
select='gte(t\,10)*lte(t\,20)*eq(pict_type\,I)'
|
||||
|
||||
# select frames with a minimum distance of 10 seconds
|
||||
select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
|
||||
|
||||
# use aselect to select only audio frames with samples number > 100
|
||||
aselect='gt(samples_n\,100)'
|
||||
@end example
|
||||
|
||||
Complete example to create a mosaic of the first scenes:
|
||||
|
||||
@example
|
||||
ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
|
||||
@end example
|
||||
|
||||
Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
|
||||
choice.
|
||||
|
||||
@section setdar, setsar
|
||||
|
||||
The @code{setdar} filter sets the Display Aspect Ratio for the filter
|
||||
@ -4768,6 +4634,140 @@ tools.
|
||||
|
||||
Below is a description of the currently available multimedia filters.
|
||||
|
||||
@section aselect, select
|
||||
Select frames to pass in output.
|
||||
|
||||
It accepts in input an expression, which is evaluated for each input
|
||||
frame. If the expression is evaluated to a non-zero value, the frame
|
||||
is selected and passed to the output, otherwise it is discarded.
|
||||
|
||||
The expression can contain the following constants:
|
||||
|
||||
@table @option
|
||||
@item n
|
||||
the sequential number of the filtered frame, starting from 0
|
||||
|
||||
@item selected_n
|
||||
the sequential number of the selected frame, starting from 0
|
||||
|
||||
@item prev_selected_n
|
||||
the sequential number of the last selected frame, NAN if undefined
|
||||
|
||||
@item TB
|
||||
timebase of the input timestamps
|
||||
|
||||
@item pts
|
||||
the PTS (Presentation TimeStamp) of the filtered video frame,
|
||||
expressed in @var{TB} units, NAN if undefined
|
||||
|
||||
@item t
|
||||
the PTS (Presentation TimeStamp) of the filtered video frame,
|
||||
expressed in seconds, NAN if undefined
|
||||
|
||||
@item prev_pts
|
||||
the PTS of the previously filtered video frame, NAN if undefined
|
||||
|
||||
@item prev_selected_pts
|
||||
the PTS of the last previously filtered video frame, NAN if undefined
|
||||
|
||||
@item prev_selected_t
|
||||
the PTS of the last previously selected video frame, NAN if undefined
|
||||
|
||||
@item start_pts
|
||||
the PTS of the first video frame in the video, NAN if undefined
|
||||
|
||||
@item start_t
|
||||
the time of the first video frame in the video, NAN if undefined
|
||||
|
||||
@item pict_type @emph{(video only)}
|
||||
the type of the filtered frame, can assume one of the following
|
||||
values:
|
||||
@table @option
|
||||
@item I
|
||||
@item P
|
||||
@item B
|
||||
@item S
|
||||
@item SI
|
||||
@item SP
|
||||
@item BI
|
||||
@end table
|
||||
|
||||
@item interlace_type @emph{(video only)}
|
||||
the frame interlace type, can assume one of the following values:
|
||||
@table @option
|
||||
@item PROGRESSIVE
|
||||
the frame is progressive (not interlaced)
|
||||
@item TOPFIRST
|
||||
the frame is top-field-first
|
||||
@item BOTTOMFIRST
|
||||
the frame is bottom-field-first
|
||||
@end table
|
||||
|
||||
@item consumed_sample_n @emph{(audio only)}
|
||||
the number of selected samples before the current frame
|
||||
|
||||
@item samples_n @emph{(audio only)}
|
||||
the number of samples in the current frame
|
||||
|
||||
@item sample_rate @emph{(audio only)}
|
||||
the input sample rate
|
||||
|
||||
@item key
|
||||
1 if the filtered frame is a key-frame, 0 otherwise
|
||||
|
||||
@item pos
|
||||
the position in the file of the filtered frame, -1 if the information
|
||||
is not available (e.g. for synthetic video)
|
||||
|
||||
@item scene @emph{(video only)}
|
||||
value between 0 and 1 to indicate a new scene; a low value reflects a low
|
||||
probability for the current frame to introduce a new scene, while a higher
|
||||
value means the current frame is more likely to be one (see the example below)
|
||||
|
||||
@end table
|
||||
|
||||
The default value of the select expression is "1".
|
||||
|
||||
Some examples follow:
|
||||
|
||||
@example
|
||||
# select all frames in input
|
||||
select
|
||||
|
||||
# the above is the same as:
|
||||
select=1
|
||||
|
||||
# skip all frames:
|
||||
select=0
|
||||
|
||||
# select only I-frames
|
||||
select='eq(pict_type\,I)'
|
||||
|
||||
# select one frame every 100
|
||||
select='not(mod(n\,100))'
|
||||
|
||||
# select only frames contained in the 10-20 time interval
|
||||
select='gte(t\,10)*lte(t\,20)'
|
||||
|
||||
# select only I frames contained in the 10-20 time interval
|
||||
select='gte(t\,10)*lte(t\,20)*eq(pict_type\,I)'
|
||||
|
||||
# select frames with a minimum distance of 10 seconds
|
||||
select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
|
||||
|
||||
# use aselect to select only audio frames with samples number > 100
|
||||
aselect='gt(samples_n\,100)'
|
||||
@end example
|
||||
|
||||
Complete example to create a mosaic of the first scenes:
|
||||
|
||||
@example
|
||||
ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
|
||||
@end example
|
||||
|
||||
Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
|
||||
choice.
|
||||
|
||||
@section asendcmd, sendcmd
|
||||
|
||||
Send commands to filters in the filtergraph.
|
||||
|
@ -54,7 +54,7 @@ OBJS-$(CONFIG_AMERGE_FILTER) += af_amerge.o
|
||||
OBJS-$(CONFIG_AMIX_FILTER) += af_amix.o
|
||||
OBJS-$(CONFIG_ANULL_FILTER) += af_anull.o
|
||||
OBJS-$(CONFIG_ARESAMPLE_FILTER) += af_aresample.o
|
||||
OBJS-$(CONFIG_ASELECT_FILTER) += vf_select.o
|
||||
OBJS-$(CONFIG_ASELECT_FILTER) += f_select.o
|
||||
OBJS-$(CONFIG_ASENDCMD_FILTER) += f_sendcmd.o
|
||||
OBJS-$(CONFIG_ASETNSAMPLES_FILTER) += af_asetnsamples.o
|
||||
OBJS-$(CONFIG_ASETPTS_FILTER) += f_setpts.o
|
||||
@ -125,7 +125,7 @@ OBJS-$(CONFIG_PAD_FILTER) += vf_pad.o
|
||||
OBJS-$(CONFIG_PIXDESCTEST_FILTER) += vf_pixdesctest.o
|
||||
OBJS-$(CONFIG_REMOVELOGO_FILTER) += bbox.o lswsutils.o lavfutils.o vf_removelogo.o
|
||||
OBJS-$(CONFIG_SCALE_FILTER) += vf_scale.o
|
||||
OBJS-$(CONFIG_SELECT_FILTER) += vf_select.o
|
||||
OBJS-$(CONFIG_SELECT_FILTER) += f_select.o
|
||||
OBJS-$(CONFIG_SENDCMD_FILTER) += f_sendcmd.o
|
||||
OBJS-$(CONFIG_SETDAR_FILTER) += vf_aspect.o
|
||||
OBJS-$(CONFIG_SETFIELD_FILTER) += vf_setfield.o
|
||||
|
Loading…
x
Reference in New Issue
Block a user