123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- @chapter Format Options
- @c man begin FORMAT OPTIONS
- The libavformat library provides some generic global options, which
- can be set on all the muxers and demuxers. In addition each muxer or
- demuxer may support so-called private options, which are specific for
- that component.
- Options may be set by specifying -@var{option} @var{value} in the
- FFmpeg tools, or by setting the value explicitly in the
- @code{AVFormatContext} options or using the @file{libavutil/opt.h} API
- for programmatic use.
- The list of supported options follows:
- @table @option
- @item avioflags @var{flags} (@emph{input/output})
- Possible values:
- @table @samp
- @item direct
- Reduce buffering.
- @end table
- @item probesize @var{integer} (@emph{input})
- Set probing size in bytes, i.e. the size of the data to analyze to get
- stream information. A higher value will enable detecting more
- information in case it is dispersed into the stream, but will increase
- latency. Must be an integer not lesser than 32. It is 5000000 by default.
- @item max_probe_packets @var{integer} (@emph{input})
- Set the maximum number of buffered packets when probing a codec.
- Default is 2500 packets.
- @item packetsize @var{integer} (@emph{output})
- Set packet size.
- @item fflags @var{flags}
- Set format flags. Some are implemented for a limited number of formats.
- Possible values for input files:
- @table @samp
- @item discardcorrupt
- Discard corrupted packets.
- @item fastseek
- Enable fast, but inaccurate seeks for some formats.
- @item genpts
- Generate missing PTS if DTS is present.
- @item igndts
- Ignore DTS if PTS is set. Inert when nofillin is set.
- @item ignidx
- Ignore index.
- @item keepside (@emph{deprecated},@emph{inert})
- @item nobuffer
- Reduce the latency introduced by buffering during initial input streams analysis.
- @item nofillin
- Do not fill in missing values in packet fields that can be exactly calculated.
- @item noparse
- Disable AVParsers, this needs @code{+nofillin} too.
- @item sortdts
- Try to interleave output packets by DTS. At present, available only for AVIs with an index.
- @end table
- Possible values for output files:
- @table @samp
- @item autobsf
- Automatically apply bitstream filters as required by the output format. Enabled by default.
- @item bitexact
- Only write platform-, build- and time-independent data.
- This ensures that file and data checksums are reproducible and match between
- platforms. Its primary use is for regression testing.
- @item flush_packets
- Write out packets immediately.
- @item latm (@emph{deprecated},@emph{inert})
- @item shortest
- Stop muxing at the end of the shortest stream.
- It may be needed to increase max_interleave_delta to avoid flushing the longer
- streams before EOF.
- @end table
- @item seek2any @var{integer} (@emph{input})
- Allow seeking to non-keyframes on demuxer level when supported if set to 1.
- Default is 0.
- @item analyzeduration @var{integer} (@emph{input})
- Specify how many microseconds are analyzed to probe the input. A
- higher value will enable detecting more accurate information, but will
- increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
- @item cryptokey @var{hexadecimal string} (@emph{input})
- Set decryption key.
- @item indexmem @var{integer} (@emph{input})
- Set max memory used for timestamp index (per stream).
- @item rtbufsize @var{integer} (@emph{input})
- Set max memory used for buffering real-time frames.
- @item fdebug @var{flags} (@emph{input/output})
- Print specific debug info.
- Possible values:
- @table @samp
- @item ts
- @end table
- @item max_delay @var{integer} (@emph{input/output})
- Set maximum muxing or demuxing delay in microseconds.
- @item fpsprobesize @var{integer} (@emph{input})
- Set number of frames used to probe fps.
- @item audio_preload @var{integer} (@emph{output})
- Set microseconds by which audio packets should be interleaved earlier.
- @item chunk_duration @var{integer} (@emph{output})
- Set microseconds for each chunk.
- @item chunk_size @var{integer} (@emph{output})
- Set size in bytes for each chunk.
- @item err_detect, f_err_detect @var{flags} (@emph{input})
- Set error detection flags. @code{f_err_detect} is deprecated and
- should be used only via the @command{ffmpeg} tool.
- Possible values:
- @table @samp
- @item crccheck
- Verify embedded CRCs.
- @item bitstream
- Detect bitstream specification deviations.
- @item buffer
- Detect improper bitstream length.
- @item explode
- Abort decoding on minor error detection.
- @item careful
- Consider things that violate the spec and have not been seen in the
- wild as errors.
- @item compliant
- Consider all spec non compliancies as errors.
- @item aggressive
- Consider things that a sane encoder should not do as an error.
- @end table
- @item max_interleave_delta @var{integer} (@emph{output})
- Set maximum buffering duration for interleaving. The duration is
- expressed in microseconds, and defaults to 10000000 (10 seconds).
- To ensure all the streams are interleaved correctly, libavformat will
- wait until it has at least one packet for each stream before actually
- writing any packets to the output file. When some streams are
- "sparse" (i.e. there are large gaps between successive packets), this
- can result in excessive buffering.
- This field specifies the maximum difference between the timestamps of the
- first and the last packet in the muxing queue, above which libavformat
- will output a packet regardless of whether it has queued a packet for all
- the streams.
- If set to 0, libavformat will continue buffering packets until it has
- a packet for each stream, regardless of the maximum timestamp
- difference between the buffered packets.
- @item use_wallclock_as_timestamps @var{integer} (@emph{input})
- Use wallclock as timestamps if set to 1. Default is 0.
- @item avoid_negative_ts @var{integer} (@emph{output})
- Possible values:
- @table @samp
- @item make_non_negative
- Shift timestamps to make them non-negative.
- Also note that this affects only leading negative timestamps, and not
- non-monotonic negative timestamps.
- @item make_zero
- Shift timestamps so that the first timestamp is 0.
- @item auto (default)
- Enables shifting when required by the target format.
- @item disabled
- Disables shifting of timestamp.
- @end table
- When shifting is enabled, all output timestamps are shifted by the
- same amount. Audio, video, and subtitles desynching and relative
- timestamp differences are preserved compared to how they would have
- been without shifting.
- @item skip_initial_bytes @var{integer} (@emph{input})
- Set number of bytes to skip before reading header and frames if set to 1.
- Default is 0.
- @item correct_ts_overflow @var{integer} (@emph{input})
- Correct single timestamp overflows if set to 1. Default is 1.
- @item flush_packets @var{integer} (@emph{output})
- Flush the underlying I/O stream after each packet. Default is -1 (auto), which
- means that the underlying protocol will decide, 1 enables it, and has the
- effect of reducing the latency, 0 disables it and may increase IO throughput in
- some cases.
- @item output_ts_offset @var{offset} (@emph{output})
- Set the output time offset.
- @var{offset} must be a time duration specification,
- see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
- The offset is added by the muxer to the output timestamps.
- Specifying a positive offset means that the corresponding streams are
- delayed bt the time duration specified in @var{offset}. Default value
- is @code{0} (meaning that no offset is applied).
- @item format_whitelist @var{list} (@emph{input})
- "," separated list of allowed demuxers. By default all are allowed.
- @item dump_separator @var{string} (@emph{input})
- Separator used to separate the fields printed on the command line about the
- Stream parameters.
- For example, to separate the fields with newlines and indentation:
- @example
- ffprobe -dump_separator "
- " -i ~/videos/matrixbench_mpeg2.mpg
- @end example
- @item max_streams @var{integer} (@emph{input})
- Specifies the maximum number of streams. This can be used to reject files that
- would require too many resources due to a large number of streams.
- @item skip_estimate_duration_from_pts @var{bool} (@emph{input})
- Skip estimation of input duration when calculated using PTS.
- At present, applicable for MPEG-PS and MPEG-TS.
- @item strict, f_strict @var{integer} (@emph{input/output})
- Specify how strictly to follow the standards. @code{f_strict} is deprecated and
- should be used only via the @command{ffmpeg} tool.
- Possible values:
- @table @samp
- @item very
- strictly conform to an older more strict version of the spec or reference software
- @item strict
- strictly conform to all the things in the spec no matter what consequences
- @item normal
- @item unofficial
- allow unofficial extensions
- @item experimental
- allow non standardized experimental things, experimental
- (unfinished/work in progress/not well tested) decoders and encoders.
- Note: experimental decoders can pose a security risk, do not use this for
- decoding untrusted input.
- @end table
- @end table
- @c man end FORMAT OPTIONS
- @anchor{Format stream specifiers}
- @section Format stream specifiers
- Format stream specifiers allow selection of one or more streams that
- match specific properties.
- The exact semantics of stream specifiers is defined by the
- @code{avformat_match_stream_specifier()} function declared in the
- @file{libavformat/avformat.h} header and documented in the
- @ref{Stream specifiers,,Stream specifiers section in the ffmpeg(1) manual,ffmpeg}.
- @ifclear config-writeonly
- @include demuxers.texi
- @end ifclear
- @ifclear config-readonly
- @include muxers.texi
- @end ifclear
- @include metadata.texi
|