1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015 |
- @chapter Bitstream Filters
- @c man begin BITSTREAM FILTERS
- When you configure your FFmpeg build, all the supported bitstream
- filters are enabled by default. You can list all available ones using
- the configure option @code{--list-bsfs}.
- You can disable all the bitstream filters using the configure option
- @code{--disable-bsfs}, and selectively enable any bitstream filter using
- the option @code{--enable-bsf=BSF}, or you can disable a particular
- bitstream filter using the option @code{--disable-bsf=BSF}.
- The option @code{-bsfs} of the ff* tools will display the list of
- all the supported bitstream filters included in your build.
- The ff* tools have a -bsf option applied per stream, taking a
- comma-separated list of filters, whose parameters follow the filter
- name after a '='.
- @example
- ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
- @end example
- Below is a description of the currently available bitstream filters,
- with their parameters, if any.
- @section aac_adtstoasc
- Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
- bitstream.
- This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
- ADTS header and removes the ADTS header.
- This filter is required for example when copying an AAC stream from a
- raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or
- to MOV/MP4 files and related formats such as 3GP or M4A. Please note
- that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats.
- @section av1_metadata
- Modify metadata embedded in an AV1 stream.
- @table @option
- @item td
- Insert or remove temporal delimiter OBUs in all temporal units of the
- stream.
- @table @samp
- @item insert
- Insert a TD at the beginning of every TU which does not already have one.
- @item remove
- Remove the TD from the beginning of every TU which has one.
- @end table
- @item color_primaries
- @item transfer_characteristics
- @item matrix_coefficients
- Set the color description fields in the stream (see AV1 section 6.4.2).
- @item color_range
- Set the color range in the stream (see AV1 section 6.4.2; note that
- this cannot be set for streams using BT.709 primaries, sRGB transfer
- characteristic and identity (RGB) matrix coefficients).
- @table @samp
- @item tv
- Limited range.
- @item pc
- Full range.
- @end table
- @item chroma_sample_position
- Set the chroma sample location in the stream (see AV1 section 6.4.2).
- This can only be set for 4:2:0 streams.
- @table @samp
- @item vertical
- Left position (matching the default in MPEG-2 and H.264).
- @item colocated
- Top-left position.
- @end table
- @item tick_rate
- Set the tick rate (@emph{time_scale / num_units_in_display_tick}) in
- the timing info in the sequence header.
- @item num_ticks_per_picture
- Set the number of ticks in each picture, to indicate that the stream
- has a fixed framerate. Ignored if @option{tick_rate} is not also set.
- @item delete_padding
- Deletes Padding OBUs.
- @end table
- @section chomp
- Remove zero padding at the end of a packet.
- @section dca_core
- Extract the core from a DCA/DTS stream, dropping extensions such as
- DTS-HD.
- @section dovi_rpu
- Manipulate Dolby Vision metadata in a HEVC/AV1 bitstream, optionally enabling
- metadata compression.
- @table @option
- @item strip
- If enabled, strip all Dolby Vision metadata (configuration record + RPU data
- blocks) from the stream.
- @item compression
- Which compression level to enable.
- @table @samp
- @item none
- No metadata compression.
- @item limited
- Limited metadata compression scheme. Should be compatible with most devices.
- This is the default.
- @item extended
- Extended metadata compression. Devices are not required to support this. Note
- that this level currently behaves the same as @samp{limited} in libavcodec.
- @end table
- @end table
- @section dump_extra
- Add extradata to the beginning of the filtered packets except when
- said packets already exactly begin with the extradata that is intended
- to be added.
- @table @option
- @item freq
- The additional argument specifies which packets should be filtered.
- It accepts the values:
- @table @samp
- @item k
- @item keyframe
- add extradata to all key packets
- @item e
- @item all
- add extradata to all packets
- @end table
- @end table
- If not specified it is assumed @samp{k}.
- For example the following @command{ffmpeg} command forces a global
- header (thus disabling individual packet headers) in the H.264 packets
- generated by the @code{libx264} encoder, but corrects them by adding
- the header stored in extradata to the key packets:
- @example
- ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
- @end example
- @section dv_error_marker
- Blocks in DV which are marked as damaged are replaced by blocks of the specified color.
- @table @option
- @item color
- The color to replace damaged blocks by
- @item sta
- A 16 bit mask which specifies which of the 16 possible error status values are
- to be replaced by colored blocks. 0xFFFE is the default which replaces all non 0
- error status values.
- @table @samp
- @item ok
- No error, no concealment
- @item err
- Error, No concealment
- @item res
- Reserved
- @item notok
- Error or concealment
- @item notres
- Not reserved
- @item Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru
- The specific error status code
- @end table
- see page 44-46 or section 5.5 of
- @url{http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf}
- @end table
- @section eac3_core
- Extract the core from a E-AC-3 stream, dropping extra channels.
- @section extract_extradata
- Extract the in-band extradata.
- Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers,
- or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part
- of the bitstream containing the coded frames) or "out of band" (e.g. on the
- container level). This latter form is called "extradata" in FFmpeg terminology.
- This bitstream filter detects the in-band headers and makes them available as
- extradata.
- @table @option
- @item remove
- When this option is enabled, the long-term headers are removed from the
- bitstream after extraction.
- @end table
- @section filter_units
- Remove units with types in or not in a given set from the stream.
- @table @option
- @item pass_types
- List of unit types or ranges of unit types to pass through while removing
- all others. This is specified as a '|'-separated list of unit type values
- or ranges of values with '-'.
- @item remove_types
- Identical to @option{pass_types}, except the units in the given set
- removed and all others passed through.
- @end table
- The types used by pass_types and remove_types correspond to NAL unit types
- (nal_unit_type) in H.264, HEVC and H.266 (see Table 7-1 in the H.264
- and HEVC specifications or Table 5 in the H.266 specification), to
- marker values for JPEG (without 0xFF prefix) and to start codes without
- start code prefix (i.e. the byte following the 0x000001) for MPEG-2.
- For VP8 and VP9, every unit has type zero.
- Extradata is unchanged by this transformation, but note that if the stream
- contains inline parameter sets then the output may be unusable if they are
- removed.
- For example, to remove all non-VCL NAL units from an H.264 stream:
- @example
- ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
- @end example
- To remove all AUDs, SEI and filler from an H.265 stream:
- @example
- ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
- @end example
- To remove all user data from a MPEG-2 stream, including Closed Captions:
- @example
- ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT
- @end example
- To remove all SEI from a H264 stream, including Closed Captions:
- @example
- ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT
- @end example
- To remove all prefix and suffix SEI from a HEVC stream, including Closed Captions and dynamic HDR:
- @example
- ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT
- @end example
- @section hapqa_extract
- Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
- @table @option
- @item texture
- Specifies the texture to keep.
- @table @option
- @item color
- @item alpha
- @end table
- @end table
- Convert HAPQA to HAPQ
- @example
- ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
- @end example
- Convert HAPQA to HAPAlphaOnly
- @example
- ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
- @end example
- @section h264_metadata
- Modify metadata embedded in an H.264 stream.
- @table @option
- @item aud
- Insert or remove AUD NAL units in all access units of the stream.
- @table @samp
- @item pass
- @item insert
- @item remove
- @end table
- Default is pass.
- @item sample_aspect_ratio
- Set the sample aspect ratio of the stream in the VUI parameters.
- See H.264 table E-1.
- @item overscan_appropriate_flag
- Set whether the stream is suitable for display using overscan
- or not (see H.264 section E.2.1).
- @item video_format
- @item video_full_range_flag
- Set the video format in the stream (see H.264 section E.2.1 and
- table E-2).
- @item colour_primaries
- @item transfer_characteristics
- @item matrix_coefficients
- Set the colour description in the stream (see H.264 section E.2.1
- and tables E-3, E-4 and E-5).
- @item chroma_sample_loc_type
- Set the chroma sample location in the stream (see H.264 section
- E.2.1 and figure E-1).
- @item tick_rate
- Set the tick rate (time_scale / num_units_in_tick) in the VUI
- parameters. This is the smallest time unit representable in the
- stream, and in many cases represents the field rate of the stream
- (double the frame rate).
- @item fixed_frame_rate_flag
- Set whether the stream has fixed framerate - typically this indicates
- that the framerate is exactly half the tick rate, but the exact
- meaning is dependent on interlacing and the picture structure (see
- H.264 section E.2.1 and table E-6).
- @item zero_new_constraint_set_flags
- Zero constraint_set4_flag and constraint_set5_flag in the SPS. These
- bits were reserved in a previous version of the H.264 spec, and thus
- some hardware decoders require these to be zero. The result of zeroing
- this is still a valid bitstream.
- @item crop_left
- @item crop_right
- @item crop_top
- @item crop_bottom
- Set the frame cropping offsets in the SPS. These values will replace
- the current ones if the stream is already cropped.
- These fields are set in pixels. Note that some sizes may not be
- representable if the chroma is subsampled or the stream is interlaced
- (see H.264 section 7.4.2.1.1).
- @item sei_user_data
- Insert a string as SEI unregistered user data. The argument must
- be of the form @emph{UUID+string}, where the UUID is as hex digits
- possibly separated by hyphens, and the string can be anything.
- For example, @samp{086f3693-b7b3-4f2c-9653-21492feee5b8+hello} will
- insert the string ``hello'' associated with the given UUID.
- @item delete_filler
- Deletes both filler NAL units and filler SEI messages.
- @item display_orientation
- Insert, extract or remove Display orientation SEI messages.
- See H.264 section D.1.27 and D.2.27 for syntax and semantics.
- @table @samp
- @item pass
- @item insert
- @item remove
- @item extract
- @end table
- Default is pass.
- Insert mode works in conjunction with @code{rotate} and @code{flip} options.
- Any pre-existing Display orientation messages will be removed in insert or remove mode.
- Extract mode attaches the display matrix to the packet as side data.
- @item rotate
- Set rotation in display orientation SEI (anticlockwise angle in degrees).
- Range is -360 to +360. Default is NaN.
- @item flip
- Set flip in display orientation SEI.
- @table @samp
- @item horizontal
- @item vertical
- @end table
- Default is unset.
- @item level
- Set the level in the SPS. Refer to H.264 section A.3 and tables A-1
- to A-5.
- The argument must be the name of a level (for example, @samp{4.2}), a
- level_idc value (for example, @samp{42}), or the special name @samp{auto}
- indicating that the filter should attempt to guess the level from the
- input stream properties.
- @end table
- @section h264_mp4toannexb
- Convert an H.264 bitstream from length prefixed mode to start code
- prefixed mode (as defined in the Annex B of the ITU-T H.264
- specification).
- This is required by some streaming formats, typically the MPEG-2
- transport stream format (muxer @code{mpegts}).
- For example to remux an MP4 file containing an H.264 stream to mpegts
- format with @command{ffmpeg}, you can use the command:
- @example
- ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
- @end example
- Please note that this filter is auto-inserted for MPEG-TS (muxer
- @code{mpegts}) and raw H.264 (muxer @code{h264}) output formats.
- @section h264_redundant_pps
- This applies a specific fixup to some Blu-ray BDMV H264 streams
- which contain redundant PPSs. The PPSs modify irrelevant parameters
- of the stream, confusing other transformations which require
- the correct extradata.
- The encoder used on these impacted streams adds extra PPSs throughout
- the stream, varying the initial QP and whether weighted prediction
- was enabled. This causes issues after copying the stream into
- a global header container, as the starting PPS is not suitable
- for the rest of the stream. One side effect, for example,
- is seeking will return garbled output until a new PPS appears.
- This BSF removes the extra PPSs and rewrites the slice headers
- such that the stream uses a single leading PPS in the global header,
- which resolves the issue.
- @section hevc_metadata
- Modify metadata embedded in an HEVC stream.
- @table @option
- @item aud
- Insert or remove AUD NAL units in all access units of the stream.
- @table @samp
- @item insert
- @item remove
- @end table
- @item sample_aspect_ratio
- Set the sample aspect ratio in the stream in the VUI parameters.
- @item video_format
- @item video_full_range_flag
- Set the video format in the stream (see H.265 section E.3.1 and
- table E.2).
- @item colour_primaries
- @item transfer_characteristics
- @item matrix_coefficients
- Set the colour description in the stream (see H.265 section E.3.1
- and tables E.3, E.4 and E.5).
- @item chroma_sample_loc_type
- Set the chroma sample location in the stream (see H.265 section
- E.3.1 and figure E.1).
- @item tick_rate
- Set the tick rate in the VPS and VUI parameters (time_scale /
- num_units_in_tick). Combined with @option{num_ticks_poc_diff_one}, this can
- set a constant framerate in the stream. Note that it is likely to be
- overridden by container parameters when the stream is in a container.
- @item num_ticks_poc_diff_one
- Set poc_proportional_to_timing_flag in VPS and VUI and use this value
- to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and
- E.3.1). Ignored if @option{tick_rate} is not also set.
- @item crop_left
- @item crop_right
- @item crop_top
- @item crop_bottom
- Set the conformance window cropping offsets in the SPS. These values
- will replace the current ones if the stream is already cropped.
- These fields are set in pixels. Note that some sizes may not be
- representable if the chroma is subsampled (H.265 section 7.4.3.2.1).
- @item width
- @item height
- Set width and height after crop.
- @item level
- Set the level in the VPS and SPS. See H.265 section A.4 and tables
- A.6 and A.7.
- The argument must be the name of a level (for example, @samp{5.1}), a
- @emph{general_level_idc} value (for example, @samp{153} for level 5.1),
- or the special name @samp{auto} indicating that the filter should
- attempt to guess the level from the input stream properties.
- @end table
- @section hevc_mp4toannexb
- Convert an HEVC/H.265 bitstream from length prefixed mode to start code
- prefixed mode (as defined in the Annex B of the ITU-T H.265
- specification).
- This is required by some streaming formats, typically the MPEG-2
- transport stream format (muxer @code{mpegts}).
- For example to remux an MP4 file containing an HEVC stream to mpegts
- format with @command{ffmpeg}, you can use the command:
- @example
- ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
- @end example
- Please note that this filter is auto-inserted for MPEG-TS (muxer
- @code{mpegts}) and raw HEVC/H.265 (muxer @code{h265} or
- @code{hevc}) output formats.
- @section imxdump
- Modifies the bitstream to fit in MOV and to be usable by the Final Cut
- Pro decoder. This filter only applies to the mpeg2video codec, and is
- likely not needed for Final Cut Pro 7 and newer with the appropriate
- @option{-tag:v}.
- For example, to remux 30 MB/sec NTSC IMX to MOV:
- @example
- ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
- @end example
- @section mjpeg2jpeg
- Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
- MJPEG is a video codec wherein each video frame is essentially a
- JPEG image. The individual frames can be extracted without loss,
- e.g. by
- @example
- ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
- @end example
- Unfortunately, these chunks are incomplete JPEG images, because
- they lack the DHT segment required for decoding. Quoting from
- @url{http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml}:
- Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
- commented that "MJPEG, or at least the MJPEG in AVIs having the
- MJPG fourcc, is restricted JPEG with a fixed -- and *omitted* --
- Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
- and it must use basic Huffman encoding, not arithmetic or
- progressive. . . . You can indeed extract the MJPEG frames and
- decode them with a regular JPEG decoder, but you have to prepend
- the DHT segment to them, or else the decoder won't have any idea
- how to decompress the data. The exact table necessary is given in
- the OpenDML spec."
- This bitstream filter patches the header of frames extracted from an MJPEG
- stream (carrying the AVI1 header ID and lacking a DHT segment) to
- produce fully qualified JPEG images.
- @example
- ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
- exiftran -i -9 frame*.jpg
- ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
- @end example
- @section mjpegadump
- Add an MJPEG A header to the bitstream, to enable decoding by
- Quicktime.
- @anchor{mov2textsub}
- @section mov2textsub
- Extract a representable text file from MOV subtitles, stripping the
- metadata header from each subtitle packet.
- See also the @ref{text2movsub} filter.
- @section mpeg2_metadata
- Modify metadata embedded in an MPEG-2 stream.
- @table @option
- @item display_aspect_ratio
- Set the display aspect ratio in the stream.
- The following fixed values are supported:
- @table @option
- @item 4/3
- @item 16/9
- @item 221/100
- @end table
- Any other value will result in square pixels being signalled instead
- (see H.262 section 6.3.3 and table 6-3).
- @item frame_rate
- Set the frame rate in the stream. This is constructed from a table
- of known values combined with a small multiplier and divisor - if
- the supplied value is not exactly representable, the nearest
- representable value will be used instead (see H.262 section 6.3.3
- and table 6-4).
- @item video_format
- Set the video format in the stream (see H.262 section 6.3.6 and
- table 6-6).
- @item colour_primaries
- @item transfer_characteristics
- @item matrix_coefficients
- Set the colour description in the stream (see H.262 section 6.3.6
- and tables 6-7, 6-8 and 6-9).
- @end table
- @section mpeg4_unpack_bframes
- Unpack DivX-style packed B-frames.
- DivX-style packed B-frames are not valid MPEG-4 and were only a
- workaround for the broken Video for Windows subsystem.
- They use more space, can cause minor AV sync issues, require more
- CPU power to decode (unless the player has some decoded picture queue
- to compensate the 2,0,2,0 frame per packet style) and cause
- trouble if copied into a standard container like mp4 or mpeg-ps/ts,
- because MPEG-4 decoders may not be able to decode them, since they are
- not valid MPEG-4.
- For example to fix an AVI file containing an MPEG-4 stream with
- DivX-style packed B-frames using @command{ffmpeg}, you can use the command:
- @example
- ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
- @end example
- @section noise
- Damages the contents of packets or simply drops them without damaging the
- container. Can be used for fuzzing or testing error resilience/concealment.
- Parameters:
- @table @option
- @item amount
- Accepts an expression whose evaluation per-packet determines how often bytes in that
- packet will be modified. A value below 0 will result in a variable frequency.
- Default is 0 which results in no modification. However, if neither amount nor drop is specified,
- amount will be set to @var{-1}. See below for accepted variables.
- @item drop
- Accepts an expression evaluated per-packet whose value determines whether that packet is dropped.
- Evaluation to a positive value results in the packet being dropped. Evaluation to a negative
- value results in a variable chance of it being dropped, roughly inverse in proportion to the magnitude
- of the value. Default is 0 which results in no drops. See below for accepted variables.
- @item dropamount
- Accepts a non-negative integer, which assigns a variable chance of it being dropped, roughly inverse
- in proportion to the value. Default is 0 which results in no drops. This option is kept for backwards
- compatibility and is equivalent to setting drop to a negative value with the same magnitude
- i.e. @code{dropamount=4} is the same as @code{drop=-4}. Ignored if drop is also specified.
- @end table
- Both @code{amount} and @code{drop} accept expressions containing the following variables:
- @table @samp
- @item n
- The index of the packet, starting from zero.
- @item tb
- The timebase for packet timestamps.
- @item pts
- Packet presentation timestamp.
- @item dts
- Packet decoding timestamp.
- @item nopts
- Constant representing AV_NOPTS_VALUE.
- @item startpts
- First non-AV_NOPTS_VALUE PTS seen in the stream.
- @item startdts
- First non-AV_NOPTS_VALUE DTS seen in the stream.
- @item duration
- @itemx d
- Packet duration, in timebase units.
- @item pos
- Packet position in input; may be -1 when unknown or not set.
- @item size
- Packet size, in bytes.
- @item key
- Whether packet is marked as a keyframe.
- @item state
- A pseudo random integer, primarily derived from the content of packet payload.
- @end table
- @subsection Examples
- Apply modification to every byte but don't drop any packets.
- @example
- ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
- @end example
- Drop every video packet not marked as a keyframe after timestamp 30s but do not
- modify any of the remaining packets.
- @example
- ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
- @end example
- Drop one second of audio every 10 seconds and add some random noise to the rest.
- @example
- ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
- @end example
- @section null
- This bitstream filter passes the packets through unchanged.
- @section pcm_rechunk
- Repacketize PCM audio to a fixed number of samples per packet or a fixed packet
- rate per second. This is similar to the @ref{asetnsamples,,asetnsamples audio
- filter,ffmpeg-filters} but works on audio packets instead of audio frames.
- @table @option
- @item nb_out_samples, n
- Set the number of samples per each output audio packet. The number is intended
- as the number of samples @emph{per each channel}. Default value is 1024.
- @item pad, p
- If set to 1, the filter will pad the last audio packet with silence, so that it
- will contain the same number of samples (or roughly the same number of samples,
- see @option{frame_rate}) as the previous ones. Default value is 1.
- @item frame_rate, r
- This option makes the filter output a fixed number of packets per second instead
- of a fixed number of samples per packet. If the audio sample rate is not
- divisible by the frame rate then the number of samples will not be constant but
- will vary slightly so that each packet will start as close to the frame
- boundary as possible. Using this option has precedence over @option{nb_out_samples}.
- @end table
- You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio
- for NTSC frame rate using the @option{frame_rate} option.
- @example
- ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
- @end example
- @section pgs_frame_merge
- Merge a sequence of PGS Subtitle segments ending with an "end of display set"
- segment into a single packet.
- This is required by some containers that support PGS subtitles
- (muxer @code{matroska}).
- @section prores_metadata
- Modify color property metadata embedded in prores stream.
- @table @option
- @item color_primaries
- Set the color primaries.
- Available values are:
- @table @samp
- @item auto
- Keep the same color primaries property (default).
- @item unknown
- @item bt709
- @item bt470bg
- BT601 625
- @item smpte170m
- BT601 525
- @item bt2020
- @item smpte431
- DCI P3
- @item smpte432
- P3 D65
- @end table
- @item transfer_characteristics
- Set the color transfer.
- Available values are:
- @table @samp
- @item auto
- Keep the same transfer characteristics property (default).
- @item unknown
- @item bt709
- BT 601, BT 709, BT 2020
- @item smpte2084
- SMPTE ST 2084
- @item arib-std-b67
- ARIB STD-B67
- @end table
- @item matrix_coefficients
- Set the matrix coefficient.
- Available values are:
- @table @samp
- @item auto
- Keep the same colorspace property (default).
- @item unknown
- @item bt709
- @item smpte170m
- BT 601
- @item bt2020nc
- @end table
- @end table
- Set Rec709 colorspace for each frame of the file
- @example
- ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
- @end example
- Set Hybrid Log-Gamma parameters for each frame of the file
- @example
- ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
- @end example
- @section remove_extra
- Remove extradata from packets.
- It accepts the following parameter:
- @table @option
- @item freq
- Set which frame types to remove extradata from.
- @table @samp
- @item k
- Remove extradata from non-keyframes only.
- @item keyframe
- Remove extradata from keyframes only.
- @item e, all
- Remove extradata from all frames.
- @end table
- @end table
- @section setts
- Set PTS and DTS in packets.
- It accepts the following parameters:
- @table @option
- @item ts
- @item pts
- @item dts
- Set expressions for PTS, DTS or both.
- @item duration
- Set expression for duration.
- @item time_base
- Set output time base.
- @end table
- The expressions are evaluated through the eval API and can contain the following
- constants:
- @table @option
- @item N
- The count of the input packet. Starting from 0.
- @item TS
- The demux timestamp in input in case of @code{ts} or @code{dts} option or presentation
- timestamp in case of @code{pts} option.
- @item POS
- The original position in the file of the packet, or undefined if undefined
- for the current packet
- @item DTS
- The demux timestamp in input.
- @item PTS
- The presentation timestamp in input.
- @item DURATION
- The duration in input.
- @item STARTDTS
- The DTS of the first packet.
- @item STARTPTS
- The PTS of the first packet.
- @item PREV_INDTS
- The previous input DTS.
- @item PREV_INPTS
- The previous input PTS.
- @item PREV_INDURATION
- The previous input duration.
- @item PREV_OUTDTS
- The previous output DTS.
- @item PREV_OUTPTS
- The previous output PTS.
- @item PREV_OUTDURATION
- The previous output duration.
- @item NEXT_DTS
- The next input DTS.
- @item NEXT_PTS
- The next input PTS.
- @item NEXT_DURATION
- The next input duration.
- @item TB
- The timebase of stream packet belongs.
- @item TB_OUT
- The output timebase.
- @item SR
- The sample rate of stream packet belongs.
- @item NOPTS
- The AV_NOPTS_VALUE constant.
- @end table
- For example, to set PTS equal to DTS (not recommended if B-frames are involved):
- @example
- ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv
- @end example
- @section showinfo
- Log basic packet information. Mainly useful for testing, debugging,
- and development.
- @anchor{text2movsub}
- @section text2movsub
- Convert text subtitles to MOV subtitles (as used by the @code{mov_text}
- codec) with metadata headers.
- See also the @ref{mov2textsub} filter.
- @section trace_headers
- Log trace output containing all syntax elements in the coded stream
- headers (everything above the level of individual coded blocks).
- This can be useful for debugging low-level stream issues.
- Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending
- on the build only a subset of these may be available.
- @section truehd_core
- Extract the core from a TrueHD stream, dropping ATMOS data.
- @section vp9_metadata
- Modify metadata embedded in a VP9 stream.
- @table @option
- @item color_space
- Set the color space value in the frame header. Note that any frame
- set to RGB will be implicitly set to PC range and that RGB is
- incompatible with profiles 0 and 2.
- @table @samp
- @item unknown
- @item bt601
- @item bt709
- @item smpte170
- @item smpte240
- @item bt2020
- @item rgb
- @end table
- @item color_range
- Set the color range value in the frame header. Note that any value
- imposed by the color space will take precedence over this value.
- @table @samp
- @item tv
- @item pc
- @end table
- @end table
- @section vp9_superframe
- Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
- fixes merging of split/segmented VP9 streams where the alt-ref frame
- was split from its visible counterpart.
- @section vp9_superframe_split
- Split VP9 superframes into single frames.
- @section vp9_raw_reorder
- Given a VP9 stream with correct timestamps but possibly out of order,
- insert additional show-existing-frame packets to correct the ordering.
- @c man end BITSTREAM FILTERS
|