Commit | Line | Data |
---|---|---|
2ba45a60 DM |
1 | @chapter Format Options |
2 | @c man begin FORMAT OPTIONS | |
3 | ||
4 | The libavformat library provides some generic global options, which | |
5 | can be set on all the muxers and demuxers. In addition each muxer or | |
6 | demuxer may support so-called private options, which are specific for | |
7 | that component. | |
8 | ||
9 | Options may be set by specifying -@var{option} @var{value} in the | |
10 | FFmpeg tools, or by setting the value explicitly in the | |
11 | @code{AVFormatContext} options or using the @file{libavutil/opt.h} API | |
12 | for programmatic use. | |
13 | ||
14 | The list of supported options follows: | |
15 | ||
16 | @table @option | |
17 | @item avioflags @var{flags} (@emph{input/output}) | |
18 | Possible values: | |
19 | @table @samp | |
20 | @item direct | |
21 | Reduce buffering. | |
22 | @end table | |
23 | ||
24 | @item probesize @var{integer} (@emph{input}) | |
25 | Set probing size in bytes, i.e. the size of the data to analyze to get | |
26 | stream information. A higher value will allow to detect more | |
27 | information in case it is dispersed into the stream, but will increase | |
28 | latency. Must be an integer not lesser than 32. It is 5000000 by default. | |
29 | ||
30 | @item packetsize @var{integer} (@emph{output}) | |
31 | Set packet size. | |
32 | ||
33 | @item fflags @var{flags} (@emph{input/output}) | |
34 | Set format flags. | |
35 | ||
36 | Possible values: | |
37 | @table @samp | |
38 | @item ignidx | |
39 | Ignore index. | |
40 | @item genpts | |
41 | Generate PTS. | |
42 | @item nofillin | |
43 | Do not fill in missing values that can be exactly calculated. | |
44 | @item noparse | |
45 | Disable AVParsers, this needs @code{+nofillin} too. | |
46 | @item igndts | |
47 | Ignore DTS. | |
48 | @item discardcorrupt | |
49 | Discard corrupted frames. | |
50 | @item sortdts | |
51 | Try to interleave output packets by DTS. | |
52 | @item keepside | |
53 | Do not merge side data. | |
54 | @item latm | |
55 | Enable RTP MP4A-LATM payload. | |
56 | @item nobuffer | |
57 | Reduce the latency introduced by optional buffering | |
f6fa7814 DM |
58 | @item bitexact |
59 | Only write platform-, build- and time-independent data. | |
60 | This ensures that file and data checksums are reproducible and match between | |
61 | platforms. Its primary use is for regression testing. | |
2ba45a60 DM |
62 | @end table |
63 | ||
64 | @item seek2any @var{integer} (@emph{input}) | |
65 | Allow seeking to non-keyframes on demuxer level when supported if set to 1. | |
66 | Default is 0. | |
67 | ||
68 | @item analyzeduration @var{integer} (@emph{input}) | |
69 | Specify how many microseconds are analyzed to probe the input. A | |
70 | higher value will allow to detect more accurate information, but will | |
71 | increase latency. It defaults to 5,000,000 microseconds = 5 seconds. | |
72 | ||
73 | @item cryptokey @var{hexadecimal string} (@emph{input}) | |
74 | Set decryption key. | |
75 | ||
76 | @item indexmem @var{integer} (@emph{input}) | |
77 | Set max memory used for timestamp index (per stream). | |
78 | ||
79 | @item rtbufsize @var{integer} (@emph{input}) | |
80 | Set max memory used for buffering real-time frames. | |
81 | ||
82 | @item fdebug @var{flags} (@emph{input/output}) | |
83 | Print specific debug info. | |
84 | ||
85 | Possible values: | |
86 | @table @samp | |
87 | @item ts | |
88 | @end table | |
89 | ||
90 | @item max_delay @var{integer} (@emph{input/output}) | |
91 | Set maximum muxing or demuxing delay in microseconds. | |
92 | ||
93 | @item fpsprobesize @var{integer} (@emph{input}) | |
94 | Set number of frames used to probe fps. | |
95 | ||
96 | @item audio_preload @var{integer} (@emph{output}) | |
97 | Set microseconds by which audio packets should be interleaved earlier. | |
98 | ||
99 | @item chunk_duration @var{integer} (@emph{output}) | |
100 | Set microseconds for each chunk. | |
101 | ||
102 | @item chunk_size @var{integer} (@emph{output}) | |
103 | Set size in bytes for each chunk. | |
104 | ||
105 | @item err_detect, f_err_detect @var{flags} (@emph{input}) | |
106 | Set error detection flags. @code{f_err_detect} is deprecated and | |
107 | should be used only via the @command{ffmpeg} tool. | |
108 | ||
109 | Possible values: | |
110 | @table @samp | |
111 | @item crccheck | |
112 | Verify embedded CRCs. | |
113 | @item bitstream | |
114 | Detect bitstream specification deviations. | |
115 | @item buffer | |
116 | Detect improper bitstream length. | |
117 | @item explode | |
118 | Abort decoding on minor error detection. | |
119 | @item careful | |
120 | Consider things that violate the spec and have not been seen in the | |
121 | wild as errors. | |
122 | @item compliant | |
123 | Consider all spec non compliancies as errors. | |
124 | @item aggressive | |
125 | Consider things that a sane encoder should not do as an error. | |
126 | @end table | |
127 | ||
128 | @item use_wallclock_as_timestamps @var{integer} (@emph{input}) | |
129 | Use wallclock as timestamps. | |
130 | ||
131 | @item avoid_negative_ts @var{integer} (@emph{output}) | |
132 | ||
133 | Possible values: | |
134 | @table @samp | |
135 | @item make_non_negative | |
136 | Shift timestamps to make them non-negative. | |
137 | Also note that this affects only leading negative timestamps, and not | |
138 | non-monotonic negative timestamps. | |
139 | @item make_zero | |
140 | Shift timestamps so that the first timestamp is 0. | |
141 | @item auto (default) | |
142 | Enables shifting when required by the target format. | |
143 | @item disabled | |
144 | Disables shifting of timestamp. | |
145 | @end table | |
146 | ||
147 | When shifting is enabled, all output timestamps are shifted by the | |
148 | same amount. Audio, video, and subtitles desynching and relative | |
149 | timestamp differences are preserved compared to how they would have | |
150 | been without shifting. | |
151 | ||
152 | @item skip_initial_bytes @var{integer} (@emph{input}) | |
153 | Set number of bytes to skip before reading header and frames if set to 1. | |
154 | Default is 0. | |
155 | ||
156 | @item correct_ts_overflow @var{integer} (@emph{input}) | |
157 | Correct single timestamp overflows if set to 1. Default is 1. | |
158 | ||
159 | @item flush_packets @var{integer} (@emph{output}) | |
160 | Flush the underlying I/O stream after each packet. Default 1 enables it, and | |
161 | has the effect of reducing the latency; 0 disables it and may slightly | |
162 | increase performance in some cases. | |
163 | ||
164 | @item output_ts_offset @var{offset} (@emph{output}) | |
165 | Set the output time offset. | |
166 | ||
167 | @var{offset} must be a time duration specification, | |
168 | see @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}. | |
169 | ||
170 | The offset is added by the muxer to the output timestamps. | |
171 | ||
172 | Specifying a positive offset means that the corresponding streams are | |
173 | delayed bt the time duration specified in @var{offset}. Default value | |
174 | is @code{0} (meaning that no offset is applied). | |
f6fa7814 DM |
175 | |
176 | @item format_whitelist @var{list} (@emph{input}) | |
177 | "," separated List of allowed demuxers. By default all are allowed. | |
178 | ||
179 | @item dump_separator @var{string} (@emph{input}) | |
180 | Separator used to separate the fields printed on the command line about the | |
181 | Stream parameters. | |
182 | For example to separate the fields with newlines and indention: | |
183 | @example | |
184 | ffprobe -dump_separator " | |
185 | " -i ~/videos/matrixbench_mpeg2.mpg | |
186 | @end example | |
2ba45a60 DM |
187 | @end table |
188 | ||
189 | @c man end FORMAT OPTIONS | |
190 | ||
191 | @anchor{Format stream specifiers} | |
192 | @section Format stream specifiers | |
193 | ||
194 | Format stream specifiers allow selection of one or more streams that | |
195 | match specific properties. | |
196 | ||
197 | Possible forms of stream specifiers are: | |
198 | @table @option | |
199 | @item @var{stream_index} | |
200 | Matches the stream with this index. | |
201 | ||
202 | @item @var{stream_type}[:@var{stream_index}] | |
203 | @var{stream_type} is one of following: 'v' for video, 'a' for audio, | |
204 | 's' for subtitle, 'd' for data, and 't' for attachments. If | |
205 | @var{stream_index} is given, then it matches the stream number | |
206 | @var{stream_index} of this type. Otherwise, it matches all streams of | |
207 | this type. | |
208 | ||
209 | @item p:@var{program_id}[:@var{stream_index}] | |
210 | If @var{stream_index} is given, then it matches the stream with number | |
211 | @var{stream_index} in the program with the id | |
212 | @var{program_id}. Otherwise, it matches all streams in the program. | |
213 | ||
214 | @item #@var{stream_id} | |
215 | Matches the stream by a format-specific ID. | |
216 | @end table | |
217 | ||
218 | The exact semantics of stream specifiers is defined by the | |
219 | @code{avformat_match_stream_specifier()} function declared in the | |
220 | @file{libavformat/avformat.h} header. | |
221 | ||
222 | @ifclear config-writeonly | |
223 | @include demuxers.texi | |
224 | @end ifclear | |
225 | @ifclear config-readonly | |
226 | @include muxers.texi | |
227 | @end ifclear | |
228 | @include metadata.texi |