]> git.sesse.net Git - ffmpeg/blob - doc/ffprobe.texi
Merge commit '218aefce4472dc02ee3f12830a9a894bf7916da9'
[ffmpeg] / doc / ffprobe.texi
1 \input texinfo @c -*- texinfo -*-
2
3 @settitle ffprobe Documentation
4 @titlepage
5 @center @titlefont{ffprobe Documentation}
6 @end titlepage
7
8 @top
9
10 @contents
11
12 @chapter Synopsis
13
14 ffprobe [@var{options}] [@file{input_file}]
15
16 @chapter Description
17 @c man begin DESCRIPTION
18
19 ffprobe gathers information from multimedia streams and prints it in
20 human- and machine-readable fashion.
21
22 For example it can be used to check the format of the container used
23 by a multimedia stream and the format and type of each media stream
24 contained in it.
25
26 If a filename is specified in input, ffprobe will try to open and
27 probe the file content. If the file cannot be opened or recognized as
28 a multimedia file, a positive exit code is returned.
29
30 ffprobe may be employed both as a standalone application or in
31 combination with a textual filter, which may perform more
32 sophisticated processing, e.g. statistical processing or plotting.
33
34 Options are used to list some of the formats supported by ffprobe or
35 for specifying which information to display, and for setting how
36 ffprobe will show it.
37
38 ffprobe output is designed to be easily parsable by a textual filter,
39 and consists of one or more sections of a form defined by the selected
40 writer, which is specified by the @option{print_format} option.
41
42 Sections may contain other nested sections, and are identified by a
43 name (which may be shared by other sections), and an unique
44 name. See the output of @option{sections}.
45
46 Metadata tags stored in the container or in the streams are recognized
47 and printed in the corresponding "FORMAT" or "STREAM" section.
48
49 @c man end
50
51 @chapter Options
52 @c man begin OPTIONS
53
54 @include avtools-common-opts.texi
55
56 @section Main options
57
58 @table @option
59
60 @item -f @var{format}
61 Force format to use.
62
63 @item -unit
64 Show the unit of the displayed values.
65
66 @item -prefix
67 Use SI prefixes for the displayed values.
68 Unless the "-byte_binary_prefix" option is used all the prefixes
69 are decimal.
70
71 @item -byte_binary_prefix
72 Force the use of binary prefixes for byte values.
73
74 @item -sexagesimal
75 Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
76
77 @item -pretty
78 Prettify the format of the displayed values, it corresponds to the
79 options "-unit -prefix -byte_binary_prefix -sexagesimal".
80
81 @item -of, -print_format @var{writer_name}[=@var{writer_options}]
82 Set the output printing format.
83
84 @var{writer_name} specifies the name of the writer, and
85 @var{writer_options} specifies the options to be passed to the writer.
86
87 For example for printing the output in JSON format, specify:
88 @example
89 -print_format json
90 @end example
91
92 For more details on the available output printing formats, see the
93 Writers section below.
94
95 @item -sections
96 Print sections structure and section information, and exit. The output
97 is not meant to be parsed by a machine.
98
99 @item -select_streams @var{stream_specifier}
100 Select only the streams specified by @var{stream_specifier}. This
101 option affects only the options related to streams
102 (e.g. @code{show_streams}, @code{show_packets}, etc.).
103
104 For example to show only audio streams, you can use the command:
105 @example
106 ffprobe -show_streams -select_streams a INPUT
107 @end example
108
109 To show only video packets belonging to the video stream with index 1:
110 @example
111 ffprobe -show_packets -select_streams v:1 INPUT
112 @end example
113
114 @item -show_data
115 Show payload data, as an hexadecimal and ASCII dump. Coupled with
116 @option{-show_packets}, it will dump the packets' data. Coupled with
117 @option{-show_streams}, it will dump the codec extradata.
118
119 The dump is printed as the "data" field. It may contain newlines.
120
121 @item -show_error
122 Show information about the error found when trying to probe the input.
123
124 The error information is printed within a section with name "ERROR".
125
126 @item -show_format
127 Show information about the container format of the input multimedia
128 stream.
129
130 All the container format information is printed within a section with
131 name "FORMAT".
132
133 @item -show_format_entry @var{name}
134 Like @option{-show_format}, but only prints the specified entry of the
135 container format information, rather than all. This option may be given more
136 than once, then all specified entries will be shown.
137
138 This option is deprecated, use @code{show_entries} instead.
139
140 @item -show_entries @var{section_entries}
141 Set list of entries to show.
142
143 Entries are specified according to the following
144 syntax. @var{section_entries} contains a list of section entries
145 separated by @code{:}. Each section entry is composed by a section
146 name (or unique name), optionally followed by a list of entries local
147 to that section, separated by @code{,}.
148
149 If section name is specified but is followed by no @code{=}, all
150 entries are printed to output, together with all the contained
151 sections. Otherwise only the entries specified in the local section
152 entries list are printed. In particular, if @code{=} is specified but
153 the list of local entries is empty, then no entries will be shown for
154 that section.
155
156 Note that the order of specification of the local section entries is
157 not honored in the output, and the usual display order will be
158 retained.
159
160 The formal syntax is given by:
161 @example
162 @var{LOCAL_SECTION_ENTRIES} ::= @var{SECTION_ENTRY_NAME}[,@var{LOCAL_SECTION_ENTRIES}]
163 @var{SECTION_ENTRY}         ::= @var{SECTION_NAME}[=[@var{LOCAL_SECTION_ENTRIES}]]
164 @var{SECTION_ENTRIES}       ::= @var{SECTION_ENTRY}[:@var{SECTION_ENTRIES}]
165 @end example
166
167 For example, to show only the index and type of each stream, and the PTS
168 time, duration time, and stream index of the packets, you can specify
169 the argument:
170 @example
171 packet=pts_time,duration_time,stream_index : stream=index,codec_type
172 @end example
173
174 To show all the entries in the section "format", but only the codec
175 type in the section "stream", specify the argument:
176 @example
177 format : stream=codec_type
178 @end example
179
180 To show all the tags in the stream and format sections:
181 @example
182 format_tags : format_tags
183 @end example
184
185 To show only the @code{title} tag (if available) in the stream
186 sections:
187 @example
188 stream_tags=title
189 @end example
190
191 @item -show_packets
192 Show information about each packet contained in the input multimedia
193 stream.
194
195 The information for each single packet is printed within a dedicated
196 section with name "PACKET".
197
198 @item -show_frames
199 Show information about each frame contained in the input multimedia
200 stream.
201
202 The information for each single frame is printed within a dedicated
203 section with name "FRAME".
204
205 @item -show_streams
206 Show information about each media stream contained in the input
207 multimedia stream.
208
209 Each media stream information is printed within a dedicated section
210 with name "STREAM".
211
212 @item -count_frames
213 Count the number of frames per stream and report it in the
214 corresponding stream section.
215
216 @item -count_packets
217 Count the number of packets per stream and report it in the
218 corresponding stream section.
219
220 @item -show_private_data, -private
221 Show private data, that is data depending on the format of the
222 particular shown element.
223 This option is enabled by default, but you may need to disable it
224 for specific uses, for example when creating XSD-compliant XML output.
225
226 @item -show_program_version
227 Show information related to program version.
228
229 Version information is printed within a section with name
230 "PROGRAM_VERSION".
231
232 @item -show_library_versions
233 Show information related to library versions.
234
235 Version information for each library is printed within a section with
236 name "LIBRARY_VERSION".
237
238 @item -show_versions
239 Show information related to program and library versions. This is the
240 equivalent of setting both @option{-show_program_version} and
241 @option{-show_library_versions} options.
242
243 @item -bitexact
244 Force bitexact output, useful to produce output which is not dependent
245 on the specific build.
246
247 @item -i @var{input_file}
248 Read @var{input_file}.
249
250 @end table
251 @c man end
252
253 @chapter Writers
254 @c man begin WRITERS
255
256 A writer defines the output format adopted by @command{ffprobe}, and will be
257 used for printing all the parts of the output.
258
259 A writer may accept one or more arguments, which specify the options
260 to adopt. The options are specified as a list of @var{key}=@var{value}
261 pairs, separated by ":".
262
263 A description of the currently available writers follows.
264
265 @section default
266 Default format.
267
268 Print each section in the form:
269 @example
270 [SECTION]
271 key1=val1
272 ...
273 keyN=valN
274 [/SECTION]
275 @end example
276
277 Metadata tags are printed as a line in the corresponding FORMAT or
278 STREAM section, and are prefixed by the string "TAG:".
279
280 A description of the accepted options follows.
281
282 @table @option
283
284 @item nokey, nk
285 If set to 1 specify not to print the key of each field. Default value
286 is 0.
287
288 @item noprint_wrappers, nw
289 If set to 1 specify not to print the section header and footer.
290 Default value is 0.
291 @end table
292
293 @section compact, csv
294 Compact and CSV format.
295
296 The @code{csv} writer is equivalent to @code{compact}, but supports
297 different defaults.
298
299 Each section is printed on a single line.
300 If no option is specifid, the output has the form:
301 @example
302 section|key1=val1| ... |keyN=valN
303 @end example
304
305 Metadata tags are printed in the corresponding "format" or "stream"
306 section. A metadata tag key, if printed, is prefixed by the string
307 "tag:".
308
309 The description of the accepted options follows.
310
311 @table @option
312
313 @item item_sep, s
314 Specify the character to use for separating fields in the output line.
315 It must be a single printable character, it is "|" by default ("," for
316 the @code{csv} writer).
317
318 @item nokey, nk
319 If set to 1 specify not to print the key of each field. Its default
320 value is 0 (1 for the @code{csv} writer).
321
322 @item escape, e
323 Set the escape mode to use, default to "c" ("csv" for the @code{csv}
324 writer).
325
326 It can assume one of the following values:
327 @table @option
328 @item c
329 Perform C-like escaping. Strings containing a newline ('\n'), carriage
330 return ('\r'), a tab ('\t'), a form feed ('\f'), the escaping
331 character ('\') or the item separator character @var{SEP} are escaped using C-like fashioned
332 escaping, so that a newline is converted to the sequence "\n", a
333 carriage return to "\r", '\' to "\\" and the separator @var{SEP} is
334 converted to "\@var{SEP}".
335
336 @item csv
337 Perform CSV-like escaping, as described in RFC4180.  Strings
338 containing a newline ('\n'), a carriage return ('\r'), a double quote
339 ('"'), or @var{SEP} are enclosed in double-quotes.
340
341 @item none
342 Perform no escaping.
343 @end table
344
345 @item print_section, p
346 Print the section name at the begin of each line if the value is
347 @code{1}, disable it with value set to @code{0}. Default value is
348 @code{1}.
349
350 @end table
351
352 @section flat
353 Flat format.
354
355 A free-form output where each line contains an explicit key=value, such as
356 "streams.stream.3.tags.foo=bar". The output is shell escaped, so it can be
357 directly embedded in sh scripts as long as the separator character is an
358 alphanumeric character or an underscore (see @var{sep_char} option).
359
360 The description of the accepted options follows.
361
362 @table @option
363 @item sep_char, s
364 Separator character used to separate the chapter, the section name, IDs and
365 potential tags in the printed field key.
366
367 Default value is '.'.
368
369 @item hierarchical, h
370 Specify if the section name specification should be hierarchical. If
371 set to 1, and if there is more than one section in the current
372 chapter, the section name will be prefixed by the name of the
373 chapter. A value of 0 will disable this behavior.
374
375 Default value is 1.
376 @end table
377
378 @section ini
379 INI format output.
380
381 Print output in an INI based format.
382
383 The following conventions are adopted:
384
385 @itemize
386 @item
387 all key and values are UTF-8
388 @item
389 '.' is the subgroup separator
390 @item
391 newline, '\t', '\f', '\b' and the following characters are escaped
392 @item
393 '\' is the escape character
394 @item
395 '#' is the comment indicator
396 @item
397 '=' is the key/value separator
398 @item
399 ':' is not used but usually parsed as key/value separator
400 @end itemize
401
402 This writer accepts options as a list of @var{key}=@var{value} pairs,
403 separated by ":".
404
405 The description of the accepted options follows.
406
407 @table @option
408 @item hierarchical, h
409 Specify if the section name specification should be hierarchical. If
410 set to 1, and if there is more than one section in the current
411 chapter, the section name will be prefixed by the name of the
412 chapter. A value of 0 will disable this behavior.
413
414 Default value is 1.
415 @end table
416
417 @section json
418 JSON based format.
419
420 Each section is printed using JSON notation.
421
422 The description of the accepted options follows.
423
424 @table @option
425
426 @item compact, c
427 If set to 1 enable compact output, that is each section will be
428 printed on a single line. Default value is 0.
429 @end table
430
431 For more information about JSON, see @url{http://www.json.org/}.
432
433 @section xml
434 XML based format.
435
436 The XML output is described in the XML schema description file
437 @file{ffprobe.xsd} installed in the FFmpeg datadir.
438
439 An updated version of the schema can be retrieved at the url
440 @url{http://www.ffmpeg.org/schema/ffprobe.xsd}, which redirects to the
441 latest schema committed into the FFmpeg development source code tree.
442
443 Note that the output issued will be compliant to the
444 @file{ffprobe.xsd} schema only when no special global output options
445 (@option{unit}, @option{prefix}, @option{byte_binary_prefix},
446 @option{sexagesimal} etc.) are specified.
447
448 The description of the accepted options follows.
449
450 @table @option
451
452 @item fully_qualified, q
453 If set to 1 specify if the output should be fully qualified. Default
454 value is 0.
455 This is required for generating an XML file which can be validated
456 through an XSD file.
457
458 @item xsd_compliant, x
459 If set to 1 perform more checks for ensuring that the output is XSD
460 compliant. Default value is 0.
461 This option automatically sets @option{fully_qualified} to 1.
462 @end table
463
464 For more information about the XML format, see
465 @url{http://www.w3.org/XML/}.
466 @c man end WRITERS
467
468 @chapter Timecode
469 @c man begin TIMECODE
470
471 @command{ffprobe} supports Timecode extraction:
472
473 @itemize
474
475 @item
476 MPEG1/2 timecode is extracted from the GOP, and is available in the video
477 stream details (@option{-show_streams}, see @var{timecode}).
478
479 @item
480 MOV timecode is extracted from tmcd track, so is available in the tmcd
481 stream metadata (@option{-show_streams}, see @var{TAG:timecode}).
482
483 @item
484 DV, GXF and AVI timecodes are available in format metadata
485 (@option{-show_format}, see @var{TAG:timecode}).
486
487 @end itemize
488 @c man end TIMECODE
489
490 @chapter See Also
491
492 @ifhtml
493 @url{ffplay.html,ffmpeg}, @url{ffprobe.html,ffprobe}, @url{ffserver.html,ffserver},
494 @url{ffmpeg-utils.html,ffmpeg-utils},
495 @url{ffmpeg-scaler.html,ffmpeg-scaler},
496 @url{ffmpeg-resampler.html,ffmpeg-resampler},
497 @url{ffmpeg-codecs.html,ffmpeg-codecs},
498 @url{ffmpeg-bitstream-filters,ffmpeg-bitstream-filters},
499 @url{ffmpeg-formats.html,ffmpeg-formats},
500 @url{ffmpeg-devices.html,ffmpeg-devices},
501 @url{ffmpeg-protocols.html,ffmpeg-protocols},
502 @url{ffmpeg-filters.html,ffmpeg-filters}
503 @end ifhtml
504
505 @ifnothtml
506 ffmpeg(1), ffplay(1), ffserver(1),
507 ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1),
508 ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1),
509 ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)
510 @end ifnothtml
511
512 @include authors.texi
513
514 @ignore
515
516 @setfilename ffprobe
517 @settitle ffprobe media prober
518
519 @end ignore
520
521 @bye