123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <title>FFmpeg documentation</title>
- <link rel="stylesheet" href="bootstrap.min.css" />
- <link rel="stylesheet" href="style.min.css" />
- <meta name="description" content="FFmpeg Bitstream Filters Documentation: ">
- <meta name="keywords" content="FFmpeg documentation : FFmpeg Bitstream Filters ">
- <meta name="Generator" content="texi2html 5.0">
- <!-- Created on June 8, 2020 by texi2html 5.0 -->
- <!--
- texi2html was written by:
- Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
- Maintained by: Many creative people.
- Send bugs and suggestions to <texi2html-bug@nongnu.org>
- -->
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- </head>
- <body>
- <div class="container">
- <h1 class="titlefont">FFmpeg Bitstream Filters Documentation</h1>
- <hr>
- <a name="SEC_Top"></a>
- <a name="SEC_Contents"></a>
- <h1>Table of Contents</h1>
- <div class="contents">
- <ul class="no-bullet">
- <li><a name="toc-Description" href="#Description">1 Description</a></li>
- <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">2 Bitstream Filters</a>
- <ul class="no-bullet">
- <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">2.1 aac_adtstoasc</a></li>
- <li><a name="toc-av1_005fmetadata" href="#av1_005fmetadata">2.2 av1_metadata</a></li>
- <li><a name="toc-chomp" href="#chomp">2.3 chomp</a></li>
- <li><a name="toc-dca_005fcore" href="#dca_005fcore">2.4 dca_core</a></li>
- <li><a name="toc-dump_005fextra" href="#dump_005fextra">2.5 dump_extra</a></li>
- <li><a name="toc-eac3_005fcore" href="#eac3_005fcore">2.6 eac3_core</a></li>
- <li><a name="toc-extract_005fextradata" href="#extract_005fextradata">2.7 extract_extradata</a></li>
- <li><a name="toc-filter_005funits" href="#filter_005funits">2.8 filter_units</a></li>
- <li><a name="toc-hapqa_005fextract" href="#hapqa_005fextract">2.9 hapqa_extract</a></li>
- <li><a name="toc-h264_005fmetadata" href="#h264_005fmetadata">2.10 h264_metadata</a></li>
- <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">2.11 h264_mp4toannexb</a></li>
- <li><a name="toc-h264_005fredundant_005fpps" href="#h264_005fredundant_005fpps">2.12 h264_redundant_pps</a></li>
- <li><a name="toc-hevc_005fmetadata" href="#hevc_005fmetadata">2.13 hevc_metadata</a></li>
- <li><a name="toc-hevc_005fmp4toannexb" href="#hevc_005fmp4toannexb">2.14 hevc_mp4toannexb</a></li>
- <li><a name="toc-imxdump" href="#imxdump">2.15 imxdump</a></li>
- <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">2.16 mjpeg2jpeg</a></li>
- <li><a name="toc-mjpegadump" href="#mjpegadump">2.17 mjpegadump</a></li>
- <li><a name="toc-mov2textsub-1" href="#mov2textsub-1">2.18 mov2textsub</a></li>
- <li><a name="toc-mp3decomp" href="#mp3decomp">2.19 mp3decomp</a></li>
- <li><a name="toc-mpeg2_005fmetadata" href="#mpeg2_005fmetadata">2.20 mpeg2_metadata</a></li>
- <li><a name="toc-mpeg4_005funpack_005fbframes" href="#mpeg4_005funpack_005fbframes">2.21 mpeg4_unpack_bframes</a></li>
- <li><a name="toc-noise" href="#noise">2.22 noise</a></li>
- <li><a name="toc-null" href="#null">2.23 null</a></li>
- <li><a name="toc-pcm_005frechunk" href="#pcm_005frechunk">2.24 pcm_rechunk</a></li>
- <li><a name="toc-prores_005fmetadata" href="#prores_005fmetadata">2.25 prores_metadata</a></li>
- <li><a name="toc-remove_005fextra" href="#remove_005fextra">2.26 remove_extra</a></li>
- <li><a name="toc-text2movsub-1" href="#text2movsub-1">2.27 text2movsub</a></li>
- <li><a name="toc-trace_005fheaders" href="#trace_005fheaders">2.28 trace_headers</a></li>
- <li><a name="toc-truehd_005fcore" href="#truehd_005fcore">2.29 truehd_core</a></li>
- <li><a name="toc-vp9_005fmetadata" href="#vp9_005fmetadata">2.30 vp9_metadata</a></li>
- <li><a name="toc-vp9_005fsuperframe" href="#vp9_005fsuperframe">2.31 vp9_superframe</a></li>
- <li><a name="toc-vp9_005fsuperframe_005fsplit" href="#vp9_005fsuperframe_005fsplit">2.32 vp9_superframe_split</a></li>
- <li><a name="toc-vp9_005fraw_005freorder" href="#vp9_005fraw_005freorder">2.33 vp9_raw_reorder</a></li>
- </ul></li>
- <li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
- <li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
- </ul>
- </div>
- <hr size="6">
- <a name="Description"></a>
- <h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Description">1 Description</a></h1>
- <p>This document describes the bitstream filters provided by the
- libavcodec library.
- </p>
- <p>A bitstream filter operates on the encoded stream data, and performs
- bitstream level modifications without performing decoding.
- </p>
- <a name="Bitstream-Filters"></a>
- <h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Bitstream-Filters">2 Bitstream Filters</a></h1>
- <p>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</code>.
- </p>
- <p>You can disable all the bitstream filters using the configure option
- <code>--disable-bsfs</code>, and selectively enable any bitstream filter using
- the option <code>--enable-bsf=BSF</code>, or you can disable a particular
- bitstream filter using the option <code>--disable-bsf=BSF</code>.
- </p>
- <p>The option <code>-bsfs</code> of the ff* tools will display the list of
- all the supported bitstream filters included in your build.
- </p>
- <p>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 ’=’.
- </p>
- <div class="example">
- <pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
- </pre></div>
- <p>Below is a description of the currently available bitstream filters,
- with their parameters, if any.
- </p>
- <a name="aac_005fadtstoasc"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-aac_005fadtstoasc">2.1 aac_adtstoasc</a></h2>
- <p>Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
- bitstream.
- </p>
- <p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
- ADTS header and removes the ADTS header.
- </p>
- <p>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.
- </p>
- <a name="av1_005fmetadata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-av1_005fmetadata">2.2 av1_metadata</a></h2>
- <p>Modify metadata embedded in an AV1 stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>td</samp>’</dt>
- <dd><p>Insert or remove temporal delimiter OBUs in all temporal units of the
- stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>insert</samp>’</dt>
- <dd><p>Insert a TD at the beginning of every TU which does not already have one.
- </p></dd>
- <dt>‘<samp>remove</samp>’</dt>
- <dd><p>Remove the TD from the beginning of every TU which has one.
- </p></dd>
- </dl>
- </dd>
- <dt>‘<samp>color_primaries</samp>’</dt>
- <dt>‘<samp>transfer_characteristics</samp>’</dt>
- <dt>‘<samp>matrix_coefficients</samp>’</dt>
- <dd><p>Set the color description fields in the stream (see AV1 section 6.4.2).
- </p>
- </dd>
- <dt>‘<samp>color_range</samp>’</dt>
- <dd><p>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).
- </p><dl compact="compact">
- <dt>‘<samp>tv</samp>’</dt>
- <dd><p>Limited range.
- </p></dd>
- <dt>‘<samp>pc</samp>’</dt>
- <dd><p>Full range.
- </p></dd>
- </dl>
- </dd>
- <dt>‘<samp>chroma_sample_position</samp>’</dt>
- <dd><p>Set the chroma sample location in the stream (see AV1 section 6.4.2).
- This can only be set for 4:2:0 streams.
- </p>
- <dl compact="compact">
- <dt>‘<samp>vertical</samp>’</dt>
- <dd><p>Left position (matching the default in MPEG-2 and H.264).
- </p></dd>
- <dt>‘<samp>colocated</samp>’</dt>
- <dd><p>Top-left position.
- </p></dd>
- </dl>
- </dd>
- <dt>‘<samp>tick_rate</samp>’</dt>
- <dd><p>Set the tick rate (<em>num_units_in_display_tick / time_scale</em>) in
- the timing info in the sequence header.
- </p></dd>
- <dt>‘<samp>num_ticks_per_picture</samp>’</dt>
- <dd><p>Set the number of ticks in each picture, to indicate that the stream
- has a fixed framerate. Ignored if ‘<samp>tick_rate</samp>’ is not also set.
- </p>
- </dd>
- <dt>‘<samp>delete_padding</samp>’</dt>
- <dd><p>Deletes Padding OBUs.
- </p>
- </dd>
- </dl>
- <a name="chomp"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-chomp">2.3 chomp</a></h2>
- <p>Remove zero padding at the end of a packet.
- </p>
- <a name="dca_005fcore"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dca_005fcore">2.4 dca_core</a></h2>
- <p>Extract the core from a DCA/DTS stream, dropping extensions such as
- DTS-HD.
- </p>
- <a name="dump_005fextra"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dump_005fextra">2.5 dump_extra</a></h2>
- <p>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.
- </p>
- <dl compact="compact">
- <dt>‘<samp>freq</samp>’</dt>
- <dd><p>The additional argument specifies which packets should be filtered.
- It accepts the values:
- </p><dl compact="compact">
- <dt>‘<samp>k</samp>’</dt>
- <dt>‘<samp>keyframe</samp>’</dt>
- <dd><p>add extradata to all key packets
- </p>
- </dd>
- <dt>‘<samp>e</samp>’</dt>
- <dt>‘<samp>all</samp>’</dt>
- <dd><p>add extradata to all packets
- </p></dd>
- </dl>
- </dd>
- </dl>
- <p>If not specified it is assumed ‘<samp>k</samp>’.
- </p>
- <p>For example the following <code>ffmpeg</code> command forces a global
- header (thus disabling individual packet headers) in the H.264 packets
- generated by the <code>libx264</code> encoder, but corrects them by adding
- the header stored in extradata to the key packets:
- </p><div class="example">
- <pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
- </pre></div>
- <a name="eac3_005fcore"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-eac3_005fcore">2.6 eac3_core</a></h2>
- <p>Extract the core from a E-AC-3 stream, dropping extra channels.
- </p>
- <a name="extract_005fextradata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-extract_005fextradata">2.7 extract_extradata</a></h2>
- <p>Extract the in-band extradata.
- </p>
- <p>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.
- </p>
- <p>This bitstream filter detects the in-band headers and makes them available as
- extradata.
- </p>
- <dl compact="compact">
- <dt>‘<samp>remove</samp>’</dt>
- <dd><p>When this option is enabled, the long-term headers are removed from the
- bitstream after extraction.
- </p></dd>
- </dl>
- <a name="filter_005funits"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-filter_005funits">2.8 filter_units</a></h2>
- <p>Remove units with types in or not in a given set from the stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>pass_types</samp>’</dt>
- <dd><p>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 ’-’.
- </p>
- </dd>
- <dt>‘<samp>remove_types</samp>’</dt>
- <dd><p>Identical to ‘<samp>pass_types</samp>’, except the units in the given set
- removed and all others passed through.
- </p></dd>
- </dl>
- <p>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.
- </p>
- <p>For example, to remove all non-VCL NAL units from an H.264 stream:
- </p><div class="example">
- <pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
- </pre></div>
- <p>To remove all AUDs, SEI and filler from an H.265 stream:
- </p><div class="example">
- <pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
- </pre></div>
- <a name="hapqa_005fextract"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hapqa_005fextract">2.9 hapqa_extract</a></h2>
- <p>Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
- </p>
- <dl compact="compact">
- <dt>‘<samp>texture</samp>’</dt>
- <dd><p>Specifies the texture to keep.
- </p>
- <dl compact="compact">
- <dt>‘<samp>color</samp>’</dt>
- <dt>‘<samp>alpha</samp>’</dt>
- </dl>
- </dd>
- </dl>
- <p>Convert HAPQA to HAPQ
- </p><div class="example">
- <pre class="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
- </pre></div>
- <p>Convert HAPQA to HAPAlphaOnly
- </p><div class="example">
- <pre class="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
- </pre></div>
- <a name="h264_005fmetadata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmetadata">2.10 h264_metadata</a></h2>
- <p>Modify metadata embedded in an H.264 stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>aud</samp>’</dt>
- <dd><p>Insert or remove AUD NAL units in all access units of the stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>insert</samp>’</dt>
- <dt>‘<samp>remove</samp>’</dt>
- </dl>
- </dd>
- <dt>‘<samp>sample_aspect_ratio</samp>’</dt>
- <dd><p>Set the sample aspect ratio of the stream in the VUI parameters.
- </p>
- </dd>
- <dt>‘<samp>overscan_appropriate_flag</samp>’</dt>
- <dd><p>Set whether the stream is suitable for display using overscan
- or not (see H.264 section E.2.1).
- </p>
- </dd>
- <dt>‘<samp>video_format</samp>’</dt>
- <dt>‘<samp>video_full_range_flag</samp>’</dt>
- <dd><p>Set the video format in the stream (see H.264 section E.2.1 and
- table E-2).
- </p>
- </dd>
- <dt>‘<samp>colour_primaries</samp>’</dt>
- <dt>‘<samp>transfer_characteristics</samp>’</dt>
- <dt>‘<samp>matrix_coefficients</samp>’</dt>
- <dd><p>Set the colour description in the stream (see H.264 section E.2.1
- and tables E-3, E-4 and E-5).
- </p>
- </dd>
- <dt>‘<samp>chroma_sample_loc_type</samp>’</dt>
- <dd><p>Set the chroma sample location in the stream (see H.264 section
- E.2.1 and figure E-1).
- </p>
- </dd>
- <dt>‘<samp>tick_rate</samp>’</dt>
- <dd><p>Set the tick rate (num_units_in_tick / time_scale) 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).
- </p></dd>
- <dt>‘<samp>fixed_frame_rate_flag</samp>’</dt>
- <dd><p>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).
- </p>
- </dd>
- <dt>‘<samp>crop_left</samp>’</dt>
- <dt>‘<samp>crop_right</samp>’</dt>
- <dt>‘<samp>crop_top</samp>’</dt>
- <dt>‘<samp>crop_bottom</samp>’</dt>
- <dd><p>Set the frame cropping offsets in the SPS. These values will replace
- the current ones if the stream is already cropped.
- </p>
- <p>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).
- </p>
- </dd>
- <dt>‘<samp>sei_user_data</samp>’</dt>
- <dd><p>Insert a string as SEI unregistered user data. The argument must
- be of the form <em>UUID+string</em>, where the UUID is as hex digits
- possibly separated by hyphens, and the string can be anything.
- </p>
- <p>For example, ‘<samp>086f3693-b7b3-4f2c-9653-21492feee5b8+hello</samp>’ will
- insert the string “hello” associated with the given UUID.
- </p>
- </dd>
- <dt>‘<samp>delete_filler</samp>’</dt>
- <dd><p>Deletes both filler NAL units and filler SEI messages.
- </p>
- </dd>
- <dt>‘<samp>level</samp>’</dt>
- <dd><p>Set the level in the SPS. Refer to H.264 section A.3 and tables A-1
- to A-5.
- </p>
- <p>The argument must be the name of a level (for example, ‘<samp>4.2</samp>’), a
- level_idc value (for example, ‘<samp>42</samp>’), or the special name ‘<samp>auto</samp>’
- indicating that the filter should attempt to guess the level from the
- input stream properties.
- </p>
- </dd>
- </dl>
- <a name="h264_005fmp4toannexb"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmp4toannexb">2.11 h264_mp4toannexb</a></h2>
- <p>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).
- </p>
- <p>This is required by some streaming formats, typically the MPEG-2
- transport stream format (muxer <code>mpegts</code>).
- </p>
- <p>For example to remux an MP4 file containing an H.264 stream to mpegts
- format with <code>ffmpeg</code>, you can use the command:
- </p>
- <div class="example">
- <pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
- </pre></div>
- <p>Please note that this filter is auto-inserted for MPEG-TS (muxer
- <code>mpegts</code>) and raw H.264 (muxer <code>h264</code>) output formats.
- </p>
- <a name="h264_005fredundant_005fpps"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fredundant_005fpps">2.12 h264_redundant_pps</a></h2>
- <p>This applies a specific fixup to some Blu-ray streams which contain
- redundant PPSs modifying irrelevant parameters of the stream which
- confuse other transformations which require correct extradata.
- </p>
- <p>A new single global PPS is created, and all of the redundant PPSs
- within the stream are removed.
- </p>
- <a name="hevc_005fmetadata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hevc_005fmetadata">2.13 hevc_metadata</a></h2>
- <p>Modify metadata embedded in an HEVC stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>aud</samp>’</dt>
- <dd><p>Insert or remove AUD NAL units in all access units of the stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>insert</samp>’</dt>
- <dt>‘<samp>remove</samp>’</dt>
- </dl>
- </dd>
- <dt>‘<samp>sample_aspect_ratio</samp>’</dt>
- <dd><p>Set the sample aspect ratio in the stream in the VUI parameters.
- </p>
- </dd>
- <dt>‘<samp>video_format</samp>’</dt>
- <dt>‘<samp>video_full_range_flag</samp>’</dt>
- <dd><p>Set the video format in the stream (see H.265 section E.3.1 and
- table E.2).
- </p>
- </dd>
- <dt>‘<samp>colour_primaries</samp>’</dt>
- <dt>‘<samp>transfer_characteristics</samp>’</dt>
- <dt>‘<samp>matrix_coefficients</samp>’</dt>
- <dd><p>Set the colour description in the stream (see H.265 section E.3.1
- and tables E.3, E.4 and E.5).
- </p>
- </dd>
- <dt>‘<samp>chroma_sample_loc_type</samp>’</dt>
- <dd><p>Set the chroma sample location in the stream (see H.265 section
- E.3.1 and figure E.1).
- </p>
- </dd>
- <dt>‘<samp>tick_rate</samp>’</dt>
- <dd><p>Set the tick rate in the VPS and VUI parameters (num_units_in_tick /
- time_scale). Combined with ‘<samp>num_ticks_poc_diff_one</samp>’, 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.
- </p>
- </dd>
- <dt>‘<samp>num_ticks_poc_diff_one</samp>’</dt>
- <dd><p>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 ‘<samp>tick_rate</samp>’ is not also set.
- </p>
- </dd>
- <dt>‘<samp>crop_left</samp>’</dt>
- <dt>‘<samp>crop_right</samp>’</dt>
- <dt>‘<samp>crop_top</samp>’</dt>
- <dt>‘<samp>crop_bottom</samp>’</dt>
- <dd><p>Set the conformance window cropping offsets in the SPS. These values
- will replace the current ones if the stream is already cropped.
- </p>
- <p>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).
- </p>
- </dd>
- <dt>‘<samp>level</samp>’</dt>
- <dd><p>Set the level in the VPS and SPS. See H.265 section A.4 and tables
- A.6 and A.7.
- </p>
- <p>The argument must be the name of a level (for example, ‘<samp>5.1</samp>’), a
- <em>general_level_idc</em> value (for example, ‘<samp>153</samp>’ for level 5.1),
- or the special name ‘<samp>auto</samp>’ indicating that the filter should
- attempt to guess the level from the input stream properties.
- </p>
- </dd>
- </dl>
- <a name="hevc_005fmp4toannexb"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hevc_005fmp4toannexb">2.14 hevc_mp4toannexb</a></h2>
- <p>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).
- </p>
- <p>This is required by some streaming formats, typically the MPEG-2
- transport stream format (muxer <code>mpegts</code>).
- </p>
- <p>For example to remux an MP4 file containing an HEVC stream to mpegts
- format with <code>ffmpeg</code>, you can use the command:
- </p>
- <div class="example">
- <pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
- </pre></div>
- <p>Please note that this filter is auto-inserted for MPEG-TS (muxer
- <code>mpegts</code>) and raw HEVC/H.265 (muxer <code>h265</code> or
- <code>hevc</code>) output formats.
- </p>
- <a name="imxdump"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-imxdump">2.15 imxdump</a></h2>
- <p>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
- ‘<samp>-tag:v</samp>’.
- </p>
- <p>For example, to remux 30 MB/sec NTSC IMX to MOV:
- </p>
- <div class="example">
- <pre class="example">ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
- </pre></div>
- <a name="mjpeg2jpeg"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpeg2jpeg">2.16 mjpeg2jpeg</a></h2>
- <p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
- </p>
- <p>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
- </p>
- <div class="example">
- <pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
- </pre></div>
- <p>Unfortunately, these chunks are incomplete JPEG images, because
- they lack the DHT segment required for decoding. Quoting from
- <a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
- </p>
- <p>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."
- </p>
- <p>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.
- </p>
- <div class="example">
- <pre class="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
- </pre></div>
- <a name="mjpegadump"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpegadump">2.17 mjpegadump</a></h2>
- <p>Add an MJPEG A header to the bitstream, to enable decoding by
- Quicktime.
- </p>
- <p><a name="mov2textsub"></a>
- </p><a name="mov2textsub-1"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mov2textsub-1">2.18 mov2textsub</a></h2>
- <p>Extract a representable text file from MOV subtitles, stripping the
- metadata header from each subtitle packet.
- </p>
- <p>See also the <a href="#text2movsub">text2movsub</a> filter.
- </p>
- <a name="mp3decomp"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mp3decomp">2.19 mp3decomp</a></h2>
- <p>Decompress non-standard compressed MP3 audio headers.
- </p>
- <a name="mpeg2_005fmetadata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mpeg2_005fmetadata">2.20 mpeg2_metadata</a></h2>
- <p>Modify metadata embedded in an MPEG-2 stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>display_aspect_ratio</samp>’</dt>
- <dd><p>Set the display aspect ratio in the stream.
- </p>
- <p>The following fixed values are supported:
- </p><dl compact="compact">
- <dt>‘<samp>4/3</samp>’</dt>
- <dt>‘<samp>16/9</samp>’</dt>
- <dt>‘<samp>221/100</samp>’</dt>
- </dl>
- <p>Any other value will result in square pixels being signalled instead
- (see H.262 section 6.3.3 and table 6-3).
- </p>
- </dd>
- <dt>‘<samp>frame_rate</samp>’</dt>
- <dd><p>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).
- </p>
- </dd>
- <dt>‘<samp>video_format</samp>’</dt>
- <dd><p>Set the video format in the stream (see H.262 section 6.3.6 and
- table 6-6).
- </p>
- </dd>
- <dt>‘<samp>colour_primaries</samp>’</dt>
- <dt>‘<samp>transfer_characteristics</samp>’</dt>
- <dt>‘<samp>matrix_coefficients</samp>’</dt>
- <dd><p>Set the colour description in the stream (see H.262 section 6.3.6
- and tables 6-7, 6-8 and 6-9).
- </p>
- </dd>
- </dl>
- <a name="mpeg4_005funpack_005fbframes"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mpeg4_005funpack_005fbframes">2.21 mpeg4_unpack_bframes</a></h2>
- <p>Unpack DivX-style packed B-frames.
- </p>
- <p>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.
- </p>
- <p>For example to fix an AVI file containing an MPEG-4 stream with
- DivX-style packed B-frames using <code>ffmpeg</code>, you can use the command:
- </p>
- <div class="example">
- <pre class="example">ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
- </pre></div>
- <a name="noise"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-noise">2.22 noise</a></h2>
- <p>Damages the contents of packets or simply drops them without damaging the
- container. Can be used for fuzzing or testing error resilience/concealment.
- </p>
- <p>Parameters:
- </p><dl compact="compact">
- <dt>‘<samp>amount</samp>’</dt>
- <dd><p>A numeral string, whose value is related to how often output bytes will
- be modified. Therefore, values below or equal to 0 are forbidden, and
- the lower the more frequent bytes will be modified, with 1 meaning
- every byte is modified.
- </p></dd>
- <dt>‘<samp>dropamount</samp>’</dt>
- <dd><p>A numeral string, whose value is related to how often packets will be dropped.
- Therefore, values below or equal to 0 are forbidden, and the lower the more
- frequent packets will be dropped, with 1 meaning every packet is dropped.
- </p></dd>
- </dl>
- <p>The following example applies the modification to every byte but does not drop
- any packets.
- </p><div class="example">
- <pre class="example">ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv
- </pre></div>
- <a name="null"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-null">2.23 null</a></h2>
- <p>This bitstream filter passes the packets through unchanged.
- </p>
- <a name="pcm_005frechunk"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-pcm_005frechunk">2.24 pcm_rechunk</a></h2>
- <p>Repacketize PCM audio to a fixed number of samples per packet or a fixed packet
- rate per second. This is similar to the <a href="ffmpeg-filters.html#asetnsamples">(ffmpeg-filters)asetnsamples audio filter</a> but works on audio packets instead of audio frames.
- </p>
- <dl compact="compact">
- <dt>‘<samp>nb_out_samples, n</samp>’</dt>
- <dd><p>Set the number of samples per each output audio packet. The number is intended
- as the number of samples <em>per each channel</em>. Default value is 1024.
- </p>
- </dd>
- <dt>‘<samp>pad, p</samp>’</dt>
- <dd><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 ‘<samp>frame_rate</samp>’) as the previous ones. Default value is 1.
- </p>
- </dd>
- <dt>‘<samp>frame_rate, r</samp>’</dt>
- <dd><p>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 ‘<samp>nb_out_samples</samp>’.
- </p></dd>
- </dl>
- <p>You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio
- for NTSC frame rate using the ‘<samp>frame_rate</samp>’ option.
- </p><div class="example">
- <pre class="example">ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
- </pre></div>
- <a name="prores_005fmetadata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-prores_005fmetadata">2.25 prores_metadata</a></h2>
- <p>Modify color property metadata embedded in prores stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>color_primaries</samp>’</dt>
- <dd><p>Set the color primaries.
- Available values are:
- </p>
- <dl compact="compact">
- <dt>‘<samp>auto</samp>’</dt>
- <dd><p>Keep the same color primaries property (default).
- </p>
- </dd>
- <dt>‘<samp>unknown</samp>’</dt>
- <dt>‘<samp>bt709</samp>’</dt>
- <dt>‘<samp>bt470bg</samp>’</dt>
- <dd><p>BT601 625
- </p>
- </dd>
- <dt>‘<samp>smpte170m</samp>’</dt>
- <dd><p>BT601 525
- </p>
- </dd>
- <dt>‘<samp>bt2020</samp>’</dt>
- <dt>‘<samp>smpte431</samp>’</dt>
- <dd><p>DCI P3
- </p>
- </dd>
- <dt>‘<samp>smpte432</samp>’</dt>
- <dd><p>P3 D65
- </p>
- </dd>
- </dl>
- </dd>
- <dt>‘<samp>transfer_characteristics</samp>’</dt>
- <dd><p>Set the color transfer.
- Available values are:
- </p>
- <dl compact="compact">
- <dt>‘<samp>auto</samp>’</dt>
- <dd><p>Keep the same transfer characteristics property (default).
- </p>
- </dd>
- <dt>‘<samp>unknown</samp>’</dt>
- <dt>‘<samp>bt709</samp>’</dt>
- <dd><p>BT 601, BT 709, BT 2020
- </p></dd>
- <dt>‘<samp>smpte2084</samp>’</dt>
- <dd><p>SMPTE ST 2084
- </p></dd>
- <dt>‘<samp>arib-std-b67</samp>’</dt>
- <dd><p>ARIB STD-B67
- </p></dd>
- </dl>
- </dd>
- <dt>‘<samp>matrix_coefficients</samp>’</dt>
- <dd><p>Set the matrix coefficient.
- Available values are:
- </p>
- <dl compact="compact">
- <dt>‘<samp>auto</samp>’</dt>
- <dd><p>Keep the same colorspace property (default).
- </p>
- </dd>
- <dt>‘<samp>unknown</samp>’</dt>
- <dt>‘<samp>bt709</samp>’</dt>
- <dt>‘<samp>smpte170m</samp>’</dt>
- <dd><p>BT 601
- </p>
- </dd>
- <dt>‘<samp>bt2020nc</samp>’</dt>
- </dl>
- </dd>
- </dl>
- <p>Set Rec709 colorspace for each frame of the file
- </p><div class="example">
- <pre class="example">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
- </pre></div>
- <p>Set Hybrid Log-Gamma parameters for each frame of the file
- </p><div class="example">
- <pre class="example">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
- </pre></div>
- <a name="remove_005fextra"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-remove_005fextra">2.26 remove_extra</a></h2>
- <p>Remove extradata from packets.
- </p>
- <p>It accepts the following parameter:
- </p><dl compact="compact">
- <dt>‘<samp>freq</samp>’</dt>
- <dd><p>Set which frame types to remove extradata from.
- </p>
- <dl compact="compact">
- <dt>‘<samp>k</samp>’</dt>
- <dd><p>Remove extradata from non-keyframes only.
- </p>
- </dd>
- <dt>‘<samp>keyframe</samp>’</dt>
- <dd><p>Remove extradata from keyframes only.
- </p>
- </dd>
- <dt>‘<samp>e, all</samp>’</dt>
- <dd><p>Remove extradata from all frames.
- </p>
- </dd>
- </dl>
- </dd>
- </dl>
- <p><a name="text2movsub"></a>
- </p><a name="text2movsub-1"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-text2movsub-1">2.27 text2movsub</a></h2>
- <p>Convert text subtitles to MOV subtitles (as used by the <code>mov_text</code>
- codec) with metadata headers.
- </p>
- <p>See also the <a href="#mov2textsub">mov2textsub</a> filter.
- </p>
- <a name="trace_005fheaders"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-trace_005fheaders">2.28 trace_headers</a></h2>
- <p>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.
- </p>
- <p>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.
- </p>
- <a name="truehd_005fcore"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-truehd_005fcore">2.29 truehd_core</a></h2>
- <p>Extract the core from a TrueHD stream, dropping ATMOS data.
- </p>
- <a name="vp9_005fmetadata"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fmetadata">2.30 vp9_metadata</a></h2>
- <p>Modify metadata embedded in a VP9 stream.
- </p>
- <dl compact="compact">
- <dt>‘<samp>color_space</samp>’</dt>
- <dd><p>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.
- </p><dl compact="compact">
- <dt>‘<samp>unknown</samp>’</dt>
- <dt>‘<samp>bt601</samp>’</dt>
- <dt>‘<samp>bt709</samp>’</dt>
- <dt>‘<samp>smpte170</samp>’</dt>
- <dt>‘<samp>smpte240</samp>’</dt>
- <dt>‘<samp>bt2020</samp>’</dt>
- <dt>‘<samp>rgb</samp>’</dt>
- </dl>
- </dd>
- <dt>‘<samp>color_range</samp>’</dt>
- <dd><p>Set the color range value in the frame header. Note that any value
- imposed by the color space will take precedence over this value.
- </p><dl compact="compact">
- <dt>‘<samp>tv</samp>’</dt>
- <dt>‘<samp>pc</samp>’</dt>
- </dl>
- </dd>
- </dl>
- <a name="vp9_005fsuperframe"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fsuperframe">2.31 vp9_superframe</a></h2>
- <p>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.
- </p>
- <a name="vp9_005fsuperframe_005fsplit"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fsuperframe_005fsplit">2.32 vp9_superframe_split</a></h2>
- <p>Split VP9 superframes into single frames.
- </p>
- <a name="vp9_005fraw_005freorder"></a>
- <h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fraw_005freorder">2.33 vp9_raw_reorder</a></h2>
- <p>Given a VP9 stream with correct timestamps but possibly out of order,
- insert additional show-existing-frame packets to correct the ordering.
- </p>
- <a name="See-Also"></a>
- <h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-See-Also">3 See Also</a></h1>
- <p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
- <a href="libavcodec.html">libavcodec</a>
- </p>
- <a name="Authors"></a>
- <h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Authors">4 Authors</a></h1>
- <p>The FFmpeg developers.
- </p>
- <p>For details about the authorship, see the Git history of the project
- (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
- <code>git log</code> in the FFmpeg source directory, or browsing the
- online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
- </p>
- <p>Maintainers for the specific components are listed in the file
- ‘<tt>MAINTAINERS</tt>’ in the source code tree.
- </p>
- </div>
- </body>
- </html>
|