diff options
Diffstat (limited to 'doc/formats.texi')
-rw-r--r-- | doc/formats.texi | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/doc/formats.texi b/doc/formats.texi new file mode 100644 index 0000000000..027510eb6d --- /dev/null +++ b/doc/formats.texi @@ -0,0 +1,212 @@ +@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 allow to detect 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 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 +@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 allow to detect 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 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). +@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 |