| @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 packetsize @var{integer} (@emph{output}) |
| Set packet size. |
| |
| @item fflags @var{flags} (@emph{input/output}) |
| Set format flags. |
| |
| Possible values: |
| @table @samp |
| @item ignidx |
| Ignore index. |
| @item fastseek |
| Enable fast, but inaccurate seeks for some formats. |
| @item genpts |
| Generate PTS. |
| @item nofillin |
| Do not fill in missing values that can be exactly calculated. |
| @item noparse |
| Disable AVParsers, this needs @code{+nofillin} too. |
| @item igndts |
| Ignore DTS. |
| @item discardcorrupt |
| Discard corrupted frames. |
| @item sortdts |
| Try to interleave output packets by DTS. |
| @item keepside |
| Do not merge side data. |
| @item latm |
| Enable RTP MP4A-LATM payload. |
| @item nobuffer |
| Reduce the latency introduced by optional buffering |
| @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. |
| @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 1000000 (1 second). |
| |
| 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. |
| |
| @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 1 enables it, and |
| has the effect of reducing the latency; 0 disables it and may slightly |
| increase performance 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 indention: |
| @example |
| ffprobe -dump_separator " |
| " -i ~/videos/matrixbench_mpeg2.mpg |
| @end example |
| @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. |
| |
| Possible forms of stream specifiers are: |
| @table @option |
| @item @var{stream_index} |
| Matches the stream with this index. |
| |
| @item @var{stream_type}[:@var{stream_index}] |
| @var{stream_type} is one of following: 'v' for video, 'a' for audio, |
| 's' for subtitle, 'd' for data, and 't' for attachments. If |
| @var{stream_index} is given, then it matches the stream number |
| @var{stream_index} of this type. Otherwise, it matches all streams of |
| this type. |
| |
| @item p:@var{program_id}[:@var{stream_index}] |
| If @var{stream_index} is given, then it matches the stream with number |
| @var{stream_index} in the program with the id |
| @var{program_id}. Otherwise, it matches all streams in the program. |
| |
| @item #@var{stream_id} |
| Matches the stream by a format-specific ID. |
| @end table |
| |
| The exact semantics of stream specifiers is defined by the |
| @code{avformat_match_stream_specifier()} function declared in the |
| @file{libavformat/avformat.h} header. |
| |
| @ifclear config-writeonly |
| @include demuxers.texi |
| @end ifclear |
| @ifclear config-readonly |
| @include muxers.texi |
| @end ifclear |
| @include metadata.texi |