mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
eeeb595c7f
If flushing is not disabled, then mux.c will signal the end of the packets with an AVIO_DATA_MARKER_FLUSH_POINT, and aviobuf will be able to decide to flush or not based on the preferred minimum packet size set by the used protocol. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Marton Balint <cus@passwd.hu>
259 lines
8.4 KiB
Plaintext
259 lines
8.4 KiB
Plaintext
@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.
|
|
@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 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 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 indention:
|
|
@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.
|
|
@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
|