| 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 |
| 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. |
| 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). |
| 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 |
| 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 |