You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1306 lines
48 KiB
HTML
1306 lines
48 KiB
HTML
8 months ago
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
|
<html>
|
||
|
<!-- Created by , GNU Texinfo 7.0.1 -->
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>
|
||
|
FFmpeg Bitstream Filters Documentation
|
||
|
</title>
|
||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="container">
|
||
|
<h1>
|
||
|
FFmpeg Bitstream Filters Documentation
|
||
|
</h1>
|
||
|
|
||
|
|
||
|
<div class="top-level-extent" id="SEC_Top">
|
||
|
|
||
|
<div class="element-contents" id="SEC_Contents">
|
||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||
|
|
||
|
<div class="contents">
|
||
|
|
||
|
<ul class="toc-numbered-mark">
|
||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||
|
<li><a id="toc-Bitstream-Filters" href="#Bitstream-Filters">2 Bitstream Filters</a>
|
||
|
<ul class="toc-numbered-mark">
|
||
|
<li><a id="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">2.1 aac_adtstoasc</a></li>
|
||
|
<li><a id="toc-av1_005fmetadata" href="#av1_005fmetadata">2.2 av1_metadata</a></li>
|
||
|
<li><a id="toc-chomp" href="#chomp">2.3 chomp</a></li>
|
||
|
<li><a id="toc-dca_005fcore" href="#dca_005fcore">2.4 dca_core</a></li>
|
||
|
<li><a id="toc-dump_005fextra" href="#dump_005fextra">2.5 dump_extra</a></li>
|
||
|
<li><a id="toc-dv_005ferror_005fmarker" href="#dv_005ferror_005fmarker">2.6 dv_error_marker</a></li>
|
||
|
<li><a id="toc-eac3_005fcore" href="#eac3_005fcore">2.7 eac3_core</a></li>
|
||
|
<li><a id="toc-extract_005fextradata" href="#extract_005fextradata">2.8 extract_extradata</a></li>
|
||
|
<li><a id="toc-filter_005funits" href="#filter_005funits">2.9 filter_units</a></li>
|
||
|
<li><a id="toc-hapqa_005fextract" href="#hapqa_005fextract">2.10 hapqa_extract</a></li>
|
||
|
<li><a id="toc-h264_005fmetadata" href="#h264_005fmetadata">2.11 h264_metadata</a></li>
|
||
|
<li><a id="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">2.12 h264_mp4toannexb</a></li>
|
||
|
<li><a id="toc-h264_005fredundant_005fpps" href="#h264_005fredundant_005fpps">2.13 h264_redundant_pps</a></li>
|
||
|
<li><a id="toc-hevc_005fmetadata" href="#hevc_005fmetadata">2.14 hevc_metadata</a></li>
|
||
|
<li><a id="toc-hevc_005fmp4toannexb" href="#hevc_005fmp4toannexb">2.15 hevc_mp4toannexb</a></li>
|
||
|
<li><a id="toc-imxdump" href="#imxdump">2.16 imxdump</a></li>
|
||
|
<li><a id="toc-mjpeg2jpeg" href="#mjpeg2jpeg">2.17 mjpeg2jpeg</a></li>
|
||
|
<li><a id="toc-mjpegadump" href="#mjpegadump">2.18 mjpegadump</a></li>
|
||
|
<li><a id="toc-mov2textsub-1" href="#mov2textsub-1">2.19 mov2textsub</a></li>
|
||
|
<li><a id="toc-mp3decomp" href="#mp3decomp">2.20 mp3decomp</a></li>
|
||
|
<li><a id="toc-mpeg2_005fmetadata" href="#mpeg2_005fmetadata">2.21 mpeg2_metadata</a></li>
|
||
|
<li><a id="toc-mpeg4_005funpack_005fbframes" href="#mpeg4_005funpack_005fbframes">2.22 mpeg4_unpack_bframes</a></li>
|
||
|
<li><a id="toc-noise" href="#noise">2.23 noise</a>
|
||
|
<ul class="toc-numbered-mark">
|
||
|
<li><a id="toc-Examples" href="#Examples">2.23.1 Examples</a></li>
|
||
|
</ul></li>
|
||
|
<li><a id="toc-null" href="#null">2.24 null</a></li>
|
||
|
<li><a id="toc-pcm_005frechunk" href="#pcm_005frechunk">2.25 pcm_rechunk</a></li>
|
||
|
<li><a id="toc-pgs_005fframe_005fmerge" href="#pgs_005fframe_005fmerge">2.26 pgs_frame_merge</a></li>
|
||
|
<li><a id="toc-prores_005fmetadata" href="#prores_005fmetadata">2.27 prores_metadata</a></li>
|
||
|
<li><a id="toc-remove_005fextra" href="#remove_005fextra">2.28 remove_extra</a></li>
|
||
|
<li><a id="toc-setts" href="#setts">2.29 setts</a></li>
|
||
|
<li><a id="toc-text2movsub-1" href="#text2movsub-1">2.30 text2movsub</a></li>
|
||
|
<li><a id="toc-trace_005fheaders" href="#trace_005fheaders">2.31 trace_headers</a></li>
|
||
|
<li><a id="toc-truehd_005fcore" href="#truehd_005fcore">2.32 truehd_core</a></li>
|
||
|
<li><a id="toc-vp9_005fmetadata" href="#vp9_005fmetadata">2.33 vp9_metadata</a></li>
|
||
|
<li><a id="toc-vp9_005fsuperframe" href="#vp9_005fsuperframe">2.34 vp9_superframe</a></li>
|
||
|
<li><a id="toc-vp9_005fsuperframe_005fsplit" href="#vp9_005fsuperframe_005fsplit">2.35 vp9_superframe_split</a></li>
|
||
|
<li><a id="toc-vp9_005fraw_005freorder" href="#vp9_005fraw_005freorder">2.36 vp9_raw_reorder</a></li>
|
||
|
</ul></li>
|
||
|
<li><a id="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||
|
<li><a id="toc-Authors" href="#Authors">4 Authors</a></li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<ul class="mini-toc">
|
||
|
<li><a href="#Description" accesskey="1">Description</a></li>
|
||
|
<li><a href="#Bitstream-Filters" accesskey="2">Bitstream Filters</a></li>
|
||
|
<li><a href="#See-Also" accesskey="3">See Also</a></li>
|
||
|
<li><a href="#Authors" accesskey="4">Authors</a></li>
|
||
|
</ul>
|
||
|
<div class="chapter-level-extent" id="Description">
|
||
|
<h2 class="chapter">1 Description</h2>
|
||
|
|
||
|
<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>
|
||
|
|
||
|
</div>
|
||
|
<div class="chapter-level-extent" id="Bitstream-Filters">
|
||
|
<h2 class="chapter">2 Bitstream Filters</h2>
|
||
|
|
||
|
<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 class="code">--list-bsfs</code>.
|
||
|
</p>
|
||
|
<p>You can disable all the bitstream filters using the configure option
|
||
|
<code class="code">--disable-bsfs</code>, and selectively enable any bitstream filter using
|
||
|
the option <code class="code">--enable-bsf=BSF</code>, or you can disable a particular
|
||
|
bitstream filter using the option <code class="code">--disable-bsf=BSF</code>.
|
||
|
</p>
|
||
|
<p>The option <code class="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-preformatted">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>
|
||
|
<ul class="mini-toc">
|
||
|
<li><a href="#aac_005fadtstoasc" accesskey="1">aac_adtstoasc</a></li>
|
||
|
<li><a href="#av1_005fmetadata" accesskey="2">av1_metadata</a></li>
|
||
|
<li><a href="#chomp" accesskey="3">chomp</a></li>
|
||
|
<li><a href="#dca_005fcore" accesskey="4">dca_core</a></li>
|
||
|
<li><a href="#dump_005fextra" accesskey="5">dump_extra</a></li>
|
||
|
<li><a href="#dv_005ferror_005fmarker" accesskey="6">dv_error_marker</a></li>
|
||
|
<li><a href="#eac3_005fcore" accesskey="7">eac3_core</a></li>
|
||
|
<li><a href="#extract_005fextradata" accesskey="8">extract_extradata</a></li>
|
||
|
<li><a href="#filter_005funits" accesskey="9">filter_units</a></li>
|
||
|
<li><a href="#hapqa_005fextract">hapqa_extract</a></li>
|
||
|
<li><a href="#h264_005fmetadata">h264_metadata</a></li>
|
||
|
<li><a href="#h264_005fmp4toannexb">h264_mp4toannexb</a></li>
|
||
|
<li><a href="#h264_005fredundant_005fpps">h264_redundant_pps</a></li>
|
||
|
<li><a href="#hevc_005fmetadata">hevc_metadata</a></li>
|
||
|
<li><a href="#hevc_005fmp4toannexb">hevc_mp4toannexb</a></li>
|
||
|
<li><a href="#imxdump">imxdump</a></li>
|
||
|
<li><a href="#mjpeg2jpeg">mjpeg2jpeg</a></li>
|
||
|
<li><a href="#mjpegadump">mjpegadump</a></li>
|
||
|
<li><a href="#mov2textsub-1">mov2textsub</a></li>
|
||
|
<li><a href="#mp3decomp">mp3decomp</a></li>
|
||
|
<li><a href="#mpeg2_005fmetadata">mpeg2_metadata</a></li>
|
||
|
<li><a href="#mpeg4_005funpack_005fbframes">mpeg4_unpack_bframes</a></li>
|
||
|
<li><a href="#noise">noise</a></li>
|
||
|
<li><a href="#null">null</a></li>
|
||
|
<li><a href="#pcm_005frechunk">pcm_rechunk</a></li>
|
||
|
<li><a href="#pgs_005fframe_005fmerge">pgs_frame_merge</a></li>
|
||
|
<li><a href="#prores_005fmetadata">prores_metadata</a></li>
|
||
|
<li><a href="#remove_005fextra">remove_extra</a></li>
|
||
|
<li><a href="#setts">setts</a></li>
|
||
|
<li><a href="#text2movsub-1">text2movsub</a></li>
|
||
|
<li><a href="#trace_005fheaders">trace_headers</a></li>
|
||
|
<li><a href="#truehd_005fcore">truehd_core</a></li>
|
||
|
<li><a href="#vp9_005fmetadata">vp9_metadata</a></li>
|
||
|
<li><a href="#vp9_005fsuperframe">vp9_superframe</a></li>
|
||
|
<li><a href="#vp9_005fsuperframe_005fsplit">vp9_superframe_split</a></li>
|
||
|
<li><a href="#vp9_005fraw_005freorder">vp9_raw_reorder</a></li>
|
||
|
</ul>
|
||
|
<div class="section-level-extent" id="aac_005fadtstoasc">
|
||
|
<h3 class="section">2.1 aac_adtstoasc</h3>
|
||
|
|
||
|
<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>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="av1_005fmetadata">
|
||
|
<h3 class="section">2.2 av1_metadata</h3>
|
||
|
|
||
|
<p>Modify metadata embedded in an AV1 stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">td</samp></dt>
|
||
|
<dd><p>Insert or remove temporal delimiter OBUs in all temporal units of the
|
||
|
stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="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 class="samp">remove</samp>’</dt>
|
||
|
<dd><p>Remove the TD from the beginning of every TU which has one.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">color_primaries</samp></dt>
|
||
|
<dt><samp class="option">transfer_characteristics</samp></dt>
|
||
|
<dt><samp class="option">matrix_coefficients</samp></dt>
|
||
|
<dd><p>Set the color description fields in the stream (see AV1 section 6.4.2).
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="table">
|
||
|
<dt>‘<samp class="samp">tv</samp>’</dt>
|
||
|
<dd><p>Limited range.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">pc</samp>’</dt>
|
||
|
<dd><p>Full range.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="table">
|
||
|
<dt>‘<samp class="samp">vertical</samp>’</dt>
|
||
|
<dd><p>Left position (matching the default in MPEG-2 and H.264).
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">colocated</samp>’</dt>
|
||
|
<dd><p>Top-left position.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">tick_rate</samp></dt>
|
||
|
<dd><p>Set the tick rate (<em class="emph">time_scale / num_units_in_display_tick</em>) in
|
||
|
the timing info in the sequence header.
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">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 class="option">tick_rate</samp> is not also set.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">delete_padding</samp></dt>
|
||
|
<dd><p>Deletes Padding OBUs.
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="chomp">
|
||
|
<h3 class="section">2.3 chomp</h3>
|
||
|
|
||
|
<p>Remove zero padding at the end of a packet.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="dca_005fcore">
|
||
|
<h3 class="section">2.4 dca_core</h3>
|
||
|
|
||
|
<p>Extract the core from a DCA/DTS stream, dropping extensions such as
|
||
|
DTS-HD.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="dump_005fextra">
|
||
|
<h3 class="section">2.5 dump_extra</h3>
|
||
|
|
||
|
<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 class="table">
|
||
|
<dt><samp class="option">freq</samp></dt>
|
||
|
<dd><p>The additional argument specifies which packets should be filtered.
|
||
|
It accepts the values:
|
||
|
</p><dl class="table">
|
||
|
<dt>‘<samp class="samp">k</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">keyframe</samp>’</dt>
|
||
|
<dd><p>add extradata to all key packets
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">e</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">all</samp>’</dt>
|
||
|
<dd><p>add extradata to all packets
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<p>If not specified it is assumed ‘<samp class="samp">k</samp>’.
|
||
|
</p>
|
||
|
<p>For example the following <code class="command">ffmpeg</code> command forces a global
|
||
|
header (thus disabling individual packet headers) in the H.264 packets
|
||
|
generated by the <code class="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-preformatted">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="dv_005ferror_005fmarker">
|
||
|
<h3 class="section">2.6 dv_error_marker</h3>
|
||
|
|
||
|
<p>Blocks in DV which are marked as damaged are replaced by blocks of the specified color.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">color</samp></dt>
|
||
|
<dd><p>The color to replace damaged blocks by
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">sta</samp></dt>
|
||
|
<dd><p>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.
|
||
|
</p><dl class="table">
|
||
|
<dt>‘<samp class="samp">ok</samp>’</dt>
|
||
|
<dd><p>No error, no concealment
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">err</samp>’</dt>
|
||
|
<dd><p>Error, No concealment
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">res</samp>’</dt>
|
||
|
<dd><p>Reserved
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">notok</samp>’</dt>
|
||
|
<dd><p>Error or concealment
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">notres</samp>’</dt>
|
||
|
<dd><p>Not reserved
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru</samp>’</dt>
|
||
|
<dd><p>The specific error status code
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
<p>see page 44-46 or section 5.5 of
|
||
|
<a class="url" href="http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf">http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf</a>
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="eac3_005fcore">
|
||
|
<h3 class="section">2.7 eac3_core</h3>
|
||
|
|
||
|
<p>Extract the core from a E-AC-3 stream, dropping extra channels.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="extract_005fextradata">
|
||
|
<h3 class="section">2.8 extract_extradata</h3>
|
||
|
|
||
|
<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 class="table">
|
||
|
<dt><samp class="option">remove</samp></dt>
|
||
|
<dd><p>When this option is enabled, the long-term headers are removed from the
|
||
|
bitstream after extraction.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="filter_005funits">
|
||
|
<h3 class="section">2.9 filter_units</h3>
|
||
|
|
||
|
<p>Remove units with types in or not in a given set from the stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">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 class="option">remove_types</samp></dt>
|
||
|
<dd><p>Identical to <samp class="option">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-preformatted">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-preformatted">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="hapqa_005fextract">
|
||
|
<h3 class="section">2.10 hapqa_extract</h3>
|
||
|
|
||
|
<p>Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">texture</samp></dt>
|
||
|
<dd><p>Specifies the texture to keep.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">color</samp></dt>
|
||
|
<dt><samp class="option">alpha</samp></dt>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<p>Convert HAPQA to HAPQ
|
||
|
</p><div class="example">
|
||
|
<pre class="example-preformatted">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-preformatted">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>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="h264_005fmetadata">
|
||
|
<h3 class="section">2.11 h264_metadata</h3>
|
||
|
|
||
|
<p>Modify metadata embedded in an H.264 stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">aud</samp></dt>
|
||
|
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">pass</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">insert</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">remove</samp>’</dt>
|
||
|
</dl>
|
||
|
|
||
|
<p>Default is pass.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">sample_aspect_ratio</samp></dt>
|
||
|
<dd><p>Set the sample aspect ratio of the stream in the VUI parameters.
|
||
|
See H.264 table E-1.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="option">video_format</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">colour_primaries</samp></dt>
|
||
|
<dt><samp class="option">transfer_characteristics</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">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 class="option">tick_rate</samp></dt>
|
||
|
<dd><p>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).
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">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 class="option">zero_new_constraint_set_flags</samp></dt>
|
||
|
<dd><p>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.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">crop_left</samp></dt>
|
||
|
<dt><samp class="option">crop_right</samp></dt>
|
||
|
<dt><samp class="option">crop_top</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">sei_user_data</samp></dt>
|
||
|
<dd><p>Insert a string as SEI unregistered user data. The argument must
|
||
|
be of the form <em class="emph">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 class="samp">086f3693-b7b3-4f2c-9653-21492feee5b8+hello</samp>’ will
|
||
|
insert the string “hello” associated with the given UUID.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">delete_filler</samp></dt>
|
||
|
<dd><p>Deletes both filler NAL units and filler SEI messages.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">display_orientation</samp></dt>
|
||
|
<dd><p>Insert, extract or remove Display orientation SEI messages.
|
||
|
See H.264 section D.1.27 and D.2.27 for syntax and semantics.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">pass</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">insert</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">remove</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">extract</samp>’</dt>
|
||
|
</dl>
|
||
|
|
||
|
<p>Default is pass.
|
||
|
</p>
|
||
|
<p>Insert mode works in conjunction with <code class="code">rotate</code> and <code class="code">flip</code> 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.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">rotate</samp></dt>
|
||
|
<dd><p>Set rotation in display orientation SEI (anticlockwise angle in degrees).
|
||
|
Range is -360 to +360. Default is NaN.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">flip</samp></dt>
|
||
|
<dd><p>Set flip in display orientation SEI.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">horizontal</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">vertical</samp>’</dt>
|
||
|
</dl>
|
||
|
|
||
|
<p>Default is unset.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="samp">4.2</samp>’), a
|
||
|
level_idc value (for example, ‘<samp class="samp">42</samp>’), or the special name ‘<samp class="samp">auto</samp>’
|
||
|
indicating that the filter should attempt to guess the level from the
|
||
|
input stream properties.
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="h264_005fmp4toannexb">
|
||
|
<h3 class="section">2.12 h264_mp4toannexb</h3>
|
||
|
|
||
|
<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 class="code">mpegts</code>).
|
||
|
</p>
|
||
|
<p>For example to remux an MP4 file containing an H.264 stream to mpegts
|
||
|
format with <code class="command">ffmpeg</code>, you can use the command:
|
||
|
</p>
|
||
|
<div class="example">
|
||
|
<pre class="example-preformatted">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 class="code">mpegts</code>) and raw H.264 (muxer <code class="code">h264</code>) output formats.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="h264_005fredundant_005fpps">
|
||
|
<h3 class="section">2.13 h264_redundant_pps</h3>
|
||
|
|
||
|
<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>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="hevc_005fmetadata">
|
||
|
<h3 class="section">2.14 hevc_metadata</h3>
|
||
|
|
||
|
<p>Modify metadata embedded in an HEVC stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">aud</samp></dt>
|
||
|
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">insert</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">remove</samp>’</dt>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">sample_aspect_ratio</samp></dt>
|
||
|
<dd><p>Set the sample aspect ratio in the stream in the VUI parameters.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">video_format</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">colour_primaries</samp></dt>
|
||
|
<dt><samp class="option">transfer_characteristics</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">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 class="option">tick_rate</samp></dt>
|
||
|
<dd><p>Set the tick rate in the VPS and VUI parameters (time_scale /
|
||
|
num_units_in_tick). Combined with <samp class="option">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 class="option">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 class="option">tick_rate</samp> is not also set.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">crop_left</samp></dt>
|
||
|
<dt><samp class="option">crop_right</samp></dt>
|
||
|
<dt><samp class="option">crop_top</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">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 class="samp">5.1</samp>’), a
|
||
|
<em class="emph">general_level_idc</em> value (for example, ‘<samp class="samp">153</samp>’ for level 5.1),
|
||
|
or the special name ‘<samp class="samp">auto</samp>’ indicating that the filter should
|
||
|
attempt to guess the level from the input stream properties.
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="hevc_005fmp4toannexb">
|
||
|
<h3 class="section">2.15 hevc_mp4toannexb</h3>
|
||
|
|
||
|
<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 class="code">mpegts</code>).
|
||
|
</p>
|
||
|
<p>For example to remux an MP4 file containing an HEVC stream to mpegts
|
||
|
format with <code class="command">ffmpeg</code>, you can use the command:
|
||
|
</p>
|
||
|
<div class="example">
|
||
|
<pre class="example-preformatted">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 class="code">mpegts</code>) and raw HEVC/H.265 (muxer <code class="code">h265</code> or
|
||
|
<code class="code">hevc</code>) output formats.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="imxdump">
|
||
|
<h3 class="section">2.16 imxdump</h3>
|
||
|
|
||
|
<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 class="option">-tag:v</samp>.
|
||
|
</p>
|
||
|
<p>For example, to remux 30 MB/sec NTSC IMX to MOV:
|
||
|
</p>
|
||
|
<div class="example">
|
||
|
<pre class="example-preformatted">ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="mjpeg2jpeg">
|
||
|
<h3 class="section">2.17 mjpeg2jpeg</h3>
|
||
|
|
||
|
<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-preformatted">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 class="url" 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-preformatted">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>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="mjpegadump">
|
||
|
<h3 class="section">2.18 mjpegadump</h3>
|
||
|
|
||
|
<p>Add an MJPEG A header to the bitstream, to enable decoding by
|
||
|
Quicktime.
|
||
|
</p>
|
||
|
<a class="anchor" id="mov2textsub"></a></div>
|
||
|
<div class="section-level-extent" id="mov2textsub-1">
|
||
|
<h3 class="section">2.19 mov2textsub</h3>
|
||
|
|
||
|
<p>Extract a representable text file from MOV subtitles, stripping the
|
||
|
metadata header from each subtitle packet.
|
||
|
</p>
|
||
|
<p>See also the <a class="ref" href="#text2movsub">text2movsub</a> filter.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="mp3decomp">
|
||
|
<h3 class="section">2.20 mp3decomp</h3>
|
||
|
|
||
|
<p>Decompress non-standard compressed MP3 audio headers.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="mpeg2_005fmetadata">
|
||
|
<h3 class="section">2.21 mpeg2_metadata</h3>
|
||
|
|
||
|
<p>Modify metadata embedded in an MPEG-2 stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">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 class="table">
|
||
|
<dt><samp class="option">4/3</samp></dt>
|
||
|
<dt><samp class="option">16/9</samp></dt>
|
||
|
<dt><samp class="option">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 class="option">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 class="option">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 class="option">colour_primaries</samp></dt>
|
||
|
<dt><samp class="option">transfer_characteristics</samp></dt>
|
||
|
<dt><samp class="option">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>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="mpeg4_005funpack_005fbframes">
|
||
|
<h3 class="section">2.22 mpeg4_unpack_bframes</h3>
|
||
|
|
||
|
<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 class="command">ffmpeg</code>, you can use the command:
|
||
|
</p>
|
||
|
<div class="example">
|
||
|
<pre class="example-preformatted">ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="noise">
|
||
|
<h3 class="section">2.23 noise</h3>
|
||
|
|
||
|
<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 class="table">
|
||
|
<dt><samp class="option">amount</samp></dt>
|
||
|
<dd><p>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 class="var">-1</var>. See below for accepted variables.
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">drop</samp></dt>
|
||
|
<dd><p>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.
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">dropamount</samp></dt>
|
||
|
<dd><p>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 class="code">dropamount=4</code> is the same as <code class="code">drop=-4</code>. Ignored if drop is also specified.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
<p>Both <code class="code">amount</code> and <code class="code">drop</code> accept expressions containing the following variables:
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">n</samp>’</dt>
|
||
|
<dd><p>The index of the packet, starting from zero.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">tb</samp>’</dt>
|
||
|
<dd><p>The timebase for packet timestamps.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">pts</samp>’</dt>
|
||
|
<dd><p>Packet presentation timestamp.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">dts</samp>’</dt>
|
||
|
<dd><p>Packet decoding timestamp.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">nopts</samp>’</dt>
|
||
|
<dd><p>Constant representing AV_NOPTS_VALUE.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">startpts</samp>’</dt>
|
||
|
<dd><p>First non-AV_NOPTS_VALUE PTS seen in the stream.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">startdts</samp>’</dt>
|
||
|
<dd><p>First non-AV_NOPTS_VALUE DTS seen in the stream.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">duration</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">d</samp>’</dt>
|
||
|
<dd><p>Packet duration, in timebase units.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">pos</samp>’</dt>
|
||
|
<dd><p>Packet position in input; may be -1 when unknown or not set.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">size</samp>’</dt>
|
||
|
<dd><p>Packet size, in bytes.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">key</samp>’</dt>
|
||
|
<dd><p>Whether packet is marked as a keyframe.
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">state</samp>’</dt>
|
||
|
<dd><p>A pseudo random integer, primarily derived from the content of packet payload.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
<ul class="mini-toc">
|
||
|
<li><a href="#Examples" accesskey="1">Examples</a></li>
|
||
|
</ul>
|
||
|
<div class="subsection-level-extent" id="Examples">
|
||
|
<h4 class="subsection">2.23.1 Examples</h4>
|
||
|
<p>Apply modification to every byte but don’t drop any packets.
|
||
|
</p><div class="example">
|
||
|
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
|
||
|
</pre></div>
|
||
|
|
||
|
<p>Drop every video packet not marked as a keyframe after timestamp 30s but do not
|
||
|
modify any of the remaining packets.
|
||
|
</p><div class="example">
|
||
|
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
|
||
|
</pre></div>
|
||
|
|
||
|
<p>Drop one second of audio every 10 seconds and add some random noise to the rest.
|
||
|
</p><div class="example">
|
||
|
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="null">
|
||
|
<h3 class="section">2.24 null</h3>
|
||
|
<p>This bitstream filter passes the packets through unchanged.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="pcm_005frechunk">
|
||
|
<h3 class="section">2.25 pcm_rechunk</h3>
|
||
|
|
||
|
<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 data-manual="ffmpeg-filters" href="ffmpeg-filters.html#asetnsamples">(ffmpeg-filters)asetnsamples audio
|
||
|
filter</a> but works on audio packets instead of audio frames.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">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 class="emph">per each channel</em>. Default value is 1024.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="option">frame_rate</samp>) as the previous ones. Default value is 1.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="option">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 class="option">frame_rate</samp> option.
|
||
|
</p><div class="example">
|
||
|
<pre class="example-preformatted">ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="pgs_005fframe_005fmerge">
|
||
|
<h3 class="section">2.26 pgs_frame_merge</h3>
|
||
|
|
||
|
<p>Merge a sequence of PGS Subtitle segments ending with an "end of display set"
|
||
|
segment into a single packet.
|
||
|
</p>
|
||
|
<p>This is required by some containers that support PGS subtitles
|
||
|
(muxer <code class="code">matroska</code>).
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="prores_005fmetadata">
|
||
|
<h3 class="section">2.27 prores_metadata</h3>
|
||
|
|
||
|
<p>Modify color property metadata embedded in prores stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">color_primaries</samp></dt>
|
||
|
<dd><p>Set the color primaries.
|
||
|
Available values are:
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">auto</samp>’</dt>
|
||
|
<dd><p>Keep the same color primaries property (default).
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt470bg</samp>’</dt>
|
||
|
<dd><p>BT601 625
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">smpte170m</samp>’</dt>
|
||
|
<dd><p>BT601 525
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">bt2020</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">smpte431</samp>’</dt>
|
||
|
<dd><p>DCI P3
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">smpte432</samp>’</dt>
|
||
|
<dd><p>P3 D65
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">transfer_characteristics</samp></dt>
|
||
|
<dd><p>Set the color transfer.
|
||
|
Available values are:
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">auto</samp>’</dt>
|
||
|
<dd><p>Keep the same transfer characteristics property (default).
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
||
|
<dd><p>BT 601, BT 709, BT 2020
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">smpte2084</samp>’</dt>
|
||
|
<dd><p>SMPTE ST 2084
|
||
|
</p></dd>
|
||
|
<dt>‘<samp class="samp">arib-std-b67</samp>’</dt>
|
||
|
<dd><p>ARIB STD-B67
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">matrix_coefficients</samp></dt>
|
||
|
<dd><p>Set the matrix coefficient.
|
||
|
Available values are:
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">auto</samp>’</dt>
|
||
|
<dd><p>Keep the same colorspace property (default).
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">smpte170m</samp>’</dt>
|
||
|
<dd><p>BT 601
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">bt2020nc</samp>’</dt>
|
||
|
</dl>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
<p>Set Rec709 colorspace for each frame of the file
|
||
|
</p><div class="example">
|
||
|
<pre class="example-preformatted">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-preformatted">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
|
||
|
</pre></div>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="remove_005fextra">
|
||
|
<h3 class="section">2.28 remove_extra</h3>
|
||
|
|
||
|
<p>Remove extradata from packets.
|
||
|
</p>
|
||
|
<p>It accepts the following parameter:
|
||
|
</p><dl class="table">
|
||
|
<dt><samp class="option">freq</samp></dt>
|
||
|
<dd><p>Set which frame types to remove extradata from.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt>‘<samp class="samp">k</samp>’</dt>
|
||
|
<dd><p>Remove extradata from non-keyframes only.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">keyframe</samp>’</dt>
|
||
|
<dd><p>Remove extradata from keyframes only.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt>‘<samp class="samp">e, all</samp>’</dt>
|
||
|
<dd><p>Remove extradata from all frames.
|
||
|
</p>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="setts">
|
||
|
<h3 class="section">2.29 setts</h3>
|
||
|
<p>Set PTS and DTS in packets.
|
||
|
</p>
|
||
|
<p>It accepts the following parameters:
|
||
|
</p><dl class="table">
|
||
|
<dt><samp class="option">ts</samp></dt>
|
||
|
<dt><samp class="option">pts</samp></dt>
|
||
|
<dt><samp class="option">dts</samp></dt>
|
||
|
<dd><p>Set expressions for PTS, DTS or both.
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">duration</samp></dt>
|
||
|
<dd><p>Set expression for duration.
|
||
|
</p></dd>
|
||
|
<dt><samp class="option">time_base</samp></dt>
|
||
|
<dd><p>Set output time base.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
<p>The expressions are evaluated through the eval API and can contain the following
|
||
|
constants:
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">N</samp></dt>
|
||
|
<dd><p>The count of the input packet. Starting from 0.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">TS</samp></dt>
|
||
|
<dd><p>The demux timestamp in input in case of <code class="code">ts</code> or <code class="code">dts</code> option or presentation
|
||
|
timestamp in case of <code class="code">pts</code> option.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">POS</samp></dt>
|
||
|
<dd><p>The original position in the file of the packet, or undefined if undefined
|
||
|
for the current packet
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">DTS</samp></dt>
|
||
|
<dd><p>The demux timestamp in input.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PTS</samp></dt>
|
||
|
<dd><p>The presentation timestamp in input.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">DURATION</samp></dt>
|
||
|
<dd><p>The duration in input.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">STARTDTS</samp></dt>
|
||
|
<dd><p>The DTS of the first packet.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">STARTPTS</samp></dt>
|
||
|
<dd><p>The PTS of the first packet.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PREV_INDTS</samp></dt>
|
||
|
<dd><p>The previous input DTS.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PREV_INPTS</samp></dt>
|
||
|
<dd><p>The previous input PTS.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PREV_INDURATION</samp></dt>
|
||
|
<dd><p>The previous input duration.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PREV_OUTDTS</samp></dt>
|
||
|
<dd><p>The previous output DTS.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PREV_OUTPTS</samp></dt>
|
||
|
<dd><p>The previous output PTS.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">PREV_OUTDURATION</samp></dt>
|
||
|
<dd><p>The previous output duration.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">NEXT_DTS</samp></dt>
|
||
|
<dd><p>The next input DTS.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">NEXT_PTS</samp></dt>
|
||
|
<dd><p>The next input PTS.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">NEXT_DURATION</samp></dt>
|
||
|
<dd><p>The next input duration.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">TB</samp></dt>
|
||
|
<dd><p>The timebase of stream packet belongs.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">TB_OUT</samp></dt>
|
||
|
<dd><p>The output timebase.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">SR</samp></dt>
|
||
|
<dd><p>The sample rate of stream packet belongs.
|
||
|
</p>
|
||
|
</dd>
|
||
|
<dt><samp class="option">NOPTS</samp></dt>
|
||
|
<dd><p>The AV_NOPTS_VALUE constant.
|
||
|
</p></dd>
|
||
|
</dl>
|
||
|
|
||
|
<a class="anchor" id="text2movsub"></a></div>
|
||
|
<div class="section-level-extent" id="text2movsub-1">
|
||
|
<h3 class="section">2.30 text2movsub</h3>
|
||
|
|
||
|
<p>Convert text subtitles to MOV subtitles (as used by the <code class="code">mov_text</code>
|
||
|
codec) with metadata headers.
|
||
|
</p>
|
||
|
<p>See also the <a class="ref" href="#mov2textsub">mov2textsub</a> filter.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="trace_005fheaders">
|
||
|
<h3 class="section">2.31 trace_headers</h3>
|
||
|
|
||
|
<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>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="truehd_005fcore">
|
||
|
<h3 class="section">2.32 truehd_core</h3>
|
||
|
|
||
|
<p>Extract the core from a TrueHD stream, dropping ATMOS data.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="vp9_005fmetadata">
|
||
|
<h3 class="section">2.33 vp9_metadata</h3>
|
||
|
|
||
|
<p>Modify metadata embedded in a VP9 stream.
|
||
|
</p>
|
||
|
<dl class="table">
|
||
|
<dt><samp class="option">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 class="table">
|
||
|
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt601</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">smpte170</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">smpte240</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">bt2020</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">rgb</samp>’</dt>
|
||
|
</dl>
|
||
|
|
||
|
</dd>
|
||
|
<dt><samp class="option">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 class="table">
|
||
|
<dt>‘<samp class="samp">tv</samp>’</dt>
|
||
|
<dt>‘<samp class="samp">pc</samp>’</dt>
|
||
|
</dl>
|
||
|
</dd>
|
||
|
</dl>
|
||
|
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="vp9_005fsuperframe">
|
||
|
<h3 class="section">2.34 vp9_superframe</h3>
|
||
|
|
||
|
<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>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="vp9_005fsuperframe_005fsplit">
|
||
|
<h3 class="section">2.35 vp9_superframe_split</h3>
|
||
|
|
||
|
<p>Split VP9 superframes into single frames.
|
||
|
</p>
|
||
|
</div>
|
||
|
<div class="section-level-extent" id="vp9_005fraw_005freorder">
|
||
|
<h3 class="section">2.36 vp9_raw_reorder</h3>
|
||
|
|
||
|
<p>Given a VP9 stream with correct timestamps but possibly out of order,
|
||
|
insert additional show-existing-frame packets to correct the ordering.
|
||
|
</p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="chapter-level-extent" id="See-Also">
|
||
|
<h2 class="chapter">3 See Also</h2>
|
||
|
|
||
|
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
||
|
<a class="url" href="libavcodec.html">libavcodec</a>
|
||
|
</p>
|
||
|
|
||
|
</div>
|
||
|
<div class="chapter-level-extent" id="Authors">
|
||
|
<h2 class="chapter">4 Authors</h2>
|
||
|
|
||
|
<p>The FFmpeg developers.
|
||
|
</p>
|
||
|
<p>For details about the authorship, see the Git history of the project
|
||
|
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||
|
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
||
|
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
||
|
</p>
|
||
|
<p>Maintainers for the specific components are listed in the file
|
||
|
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
||
|
</p>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<p style="font-size: small;">
|
||
|
This document was generated using <a class="uref" href="https://www.gnu.org/software/texinfo/"><em class="emph">makeinfo</em></a>.
|
||
|
</p>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|