| @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 |