1 \input texinfo @c -*- texinfo -*-
2 @documentencoding UTF-8
4 @settitle ffprobe Documentation
6 @center @titlefont{ffprobe Documentation}
15 ffprobe [@var{options}] [@file{input_url}]
18 @c man begin DESCRIPTION
20 ffprobe gathers information from multimedia streams and prints it in
21 human- and machine-readable fashion.
23 For example it can be used to check the format of the container used
24 by a multimedia stream and the format and type of each media stream
27 If a url is specified in input, ffprobe will try to open and
28 probe the url content. If the url cannot be opened or recognized as
29 a multimedia file, a positive exit code is returned.
31 ffprobe may be employed both as a standalone application or in
32 combination with a textual filter, which may perform more
33 sophisticated processing, e.g. statistical processing or plotting.
35 Options are used to list some of the formats supported by ffprobe or
36 for specifying which information to display, and for setting how
39 ffprobe output is designed to be easily parsable by a textual filter,
40 and consists of one or more sections of a form defined by the selected
41 writer, which is specified by the @option{print_format} option.
43 Sections may contain other nested sections, and are identified by a
44 name (which may be shared by other sections), and an unique
45 name. See the output of @option{sections}.
47 Metadata tags stored in the container or in the streams are recognized
48 and printed in the corresponding "FORMAT", "STREAM" or "PROGRAM_STREAM"
56 @include fftools-common-opts.texi
66 Show the unit of the displayed values.
69 Use SI prefixes for the displayed values.
70 Unless the "-byte_binary_prefix" option is used all the prefixes
73 @item -byte_binary_prefix
74 Force the use of binary prefixes for byte values.
77 Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
80 Prettify the format of the displayed values, it corresponds to the
81 options "-unit -prefix -byte_binary_prefix -sexagesimal".
83 @item -of, -print_format @var{writer_name}[=@var{writer_options}]
84 Set the output printing format.
86 @var{writer_name} specifies the name of the writer, and
87 @var{writer_options} specifies the options to be passed to the writer.
89 For example for printing the output in JSON format, specify:
94 For more details on the available output printing formats, see the
95 Writers section below.
98 Print sections structure and section information, and exit. The output
99 is not meant to be parsed by a machine.
101 @item -select_streams @var{stream_specifier}
102 Select only the streams specified by @var{stream_specifier}. This
103 option affects only the options related to streams
104 (e.g. @code{show_streams}, @code{show_packets}, etc.).
106 For example to show only audio streams, you can use the command:
108 ffprobe -show_streams -select_streams a INPUT
111 To show only video packets belonging to the video stream with index 1:
113 ffprobe -show_packets -select_streams v:1 INPUT
117 Show payload data, as a hexadecimal and ASCII dump. Coupled with
118 @option{-show_packets}, it will dump the packets' data. Coupled with
119 @option{-show_streams}, it will dump the codec extradata.
121 The dump is printed as the "data" field. It may contain newlines.
123 @item -show_data_hash @var{algorithm}
124 Show a hash of payload data, for packets with @option{-show_packets} and for
125 codec extradata with @option{-show_streams}.
128 Show information about the error found when trying to probe the input.
130 The error information is printed within a section with name "ERROR".
133 Show information about the container format of the input multimedia
136 All the container format information is printed within a section with
139 @item -show_format_entry @var{name}
140 Like @option{-show_format}, but only prints the specified entry of the
141 container format information, rather than all. This option may be given more
142 than once, then all specified entries will be shown.
144 This option is deprecated, use @code{show_entries} instead.
146 @item -show_entries @var{section_entries}
147 Set list of entries to show.
149 Entries are specified according to the following
150 syntax. @var{section_entries} contains a list of section entries
151 separated by @code{:}. Each section entry is composed by a section
152 name (or unique name), optionally followed by a list of entries local
153 to that section, separated by @code{,}.
155 If section name is specified but is followed by no @code{=}, all
156 entries are printed to output, together with all the contained
157 sections. Otherwise only the entries specified in the local section
158 entries list are printed. In particular, if @code{=} is specified but
159 the list of local entries is empty, then no entries will be shown for
162 Note that the order of specification of the local section entries is
163 not honored in the output, and the usual display order will be
166 The formal syntax is given by:
168 @var{LOCAL_SECTION_ENTRIES} ::= @var{SECTION_ENTRY_NAME}[,@var{LOCAL_SECTION_ENTRIES}]
169 @var{SECTION_ENTRY} ::= @var{SECTION_NAME}[=[@var{LOCAL_SECTION_ENTRIES}]]
170 @var{SECTION_ENTRIES} ::= @var{SECTION_ENTRY}[:@var{SECTION_ENTRIES}]
173 For example, to show only the index and type of each stream, and the PTS
174 time, duration time, and stream index of the packets, you can specify
177 packet=pts_time,duration_time,stream_index : stream=index,codec_type
180 To show all the entries in the section "format", but only the codec
181 type in the section "stream", specify the argument:
183 format : stream=codec_type
186 To show all the tags in the stream and format sections:
188 stream_tags : format_tags
191 To show only the @code{title} tag (if available) in the stream
198 Show information about each packet contained in the input multimedia
201 The information for each single packet is printed within a dedicated
202 section with name "PACKET".
205 Show information about each frame and subtitle contained in the input
208 The information for each single frame is printed within a dedicated
209 section with name "FRAME" or "SUBTITLE".
211 @item -show_log @var{loglevel}
212 Show logging information from the decoder about each frame according to
213 the value set in @var{loglevel}, (see @code{-loglevel}). This option requires @code{-show_frames}.
215 The information for each log message is printed within a dedicated
216 section with name "LOG".
219 Show information about each media stream contained in the input
222 Each media stream information is printed within a dedicated section
226 Show information about programs and their streams contained in the input
229 Each media stream information is printed within a dedicated section
230 with name "PROGRAM_STREAM".
233 Show information about chapters stored in the format.
235 Each chapter is printed within a dedicated section with name "CHAPTER".
238 Count the number of frames per stream and report it in the
239 corresponding stream section.
242 Count the number of packets per stream and report it in the
243 corresponding stream section.
245 @item -read_intervals @var{read_intervals}
247 Read only the specified intervals. @var{read_intervals} must be a
248 sequence of interval specifications separated by ",".
249 @command{ffprobe} will seek to the interval starting point, and will
250 continue reading from that.
252 Each interval is specified by two optional parts, separated by "%".
254 The first part specifies the interval start position. It is
255 interpreted as an absolute position, or as a relative offset from the
256 current position if it is preceded by the "+" character. If this first
257 part is not specified, no seeking will be performed when reading this
260 The second part specifies the interval end position. It is interpreted
261 as an absolute position, or as a relative offset from the current
262 position if it is preceded by the "+" character. If the offset
263 specification starts with "#", it is interpreted as the number of
264 packets to read (not including the flushing packets) from the interval
265 start. If no second part is specified, the program will read until the
268 Note that seeking is not accurate, thus the actual interval start
269 point may be different from the specified position. Also, when an
270 interval duration is specified, the absolute end time will be computed
271 by adding the duration to the interval start point found by seeking
272 the file, rather than to the specified start value.
274 The formal syntax is given by:
276 @var{INTERVAL} ::= [@var{START}|+@var{START_OFFSET}][%[@var{END}|+@var{END_OFFSET}]]
277 @var{INTERVALS} ::= @var{INTERVAL}[,@var{INTERVALS}]
280 A few examples follow.
283 Seek to time 10, read packets until 20 seconds after the found seek
284 point, then seek to position @code{01:30} (1 minute and thirty
285 seconds) and read packets until position @code{01:45}.
291 Read only 42 packets after seeking to position @code{01:23}:
297 Read only the first 20 seconds from the start:
303 Read from the start until position @code{02:30}:
309 @item -show_private_data, -private
310 Show private data, that is data depending on the format of the
311 particular shown element.
312 This option is enabled by default, but you may need to disable it
313 for specific uses, for example when creating XSD-compliant XML output.
315 @item -show_program_version
316 Show information related to program version.
318 Version information is printed within a section with name
321 @item -show_library_versions
322 Show information related to library versions.
324 Version information for each library is printed within a section with
325 name "LIBRARY_VERSION".
328 Show information related to program and library versions. This is the
329 equivalent of setting both @option{-show_program_version} and
330 @option{-show_library_versions} options.
332 @item -show_pixel_formats
333 Show information about all pixel formats supported by FFmpeg.
335 Pixel format information for each format is printed within a section
336 with name "PIXEL_FORMAT".
339 Force bitexact output, useful to produce output which is not dependent
340 on the specific build.
342 @item -i @var{input_url}
343 Read @var{input_url}.
351 A writer defines the output format adopted by @command{ffprobe}, and will be
352 used for printing all the parts of the output.
354 A writer may accept one or more arguments, which specify the options
355 to adopt. The options are specified as a list of @var{key}=@var{value}
356 pairs, separated by ":".
358 All writers support the following options:
361 @item string_validation, sv
362 Set string validation mode.
364 The following values are accepted.
367 The writer will fail immediately in case an invalid string (UTF-8)
368 sequence or code point is found in the input. This is especially
369 useful to validate input metadata.
372 Any validation error will be ignored. This will result in possibly
373 broken output, especially with the json or xml writer.
376 The writer will substitute invalid UTF-8 sequences or code points with
377 the string specified with the @option{string_validation_replacement}.
380 Default value is @samp{replace}.
382 @item string_validation_replacement, svr
383 Set replacement string to use in case @option{string_validation} is
384 set to @samp{replace}.
386 In case the option is not specified, the writer will assume the empty
387 string, that is it will remove the invalid sequences from the input
391 A description of the currently available writers follows.
396 Print each section in the form:
405 Metadata tags are printed as a line in the corresponding FORMAT, STREAM or
406 PROGRAM_STREAM section, and are prefixed by the string "TAG:".
408 A description of the accepted options follows.
413 If set to 1 specify not to print the key of each field. Default value
416 @item noprint_wrappers, nw
417 If set to 1 specify not to print the section header and footer.
421 @section compact, csv
422 Compact and CSV format.
424 The @code{csv} writer is equivalent to @code{compact}, but supports
427 Each section is printed on a single line.
428 If no option is specifid, the output has the form:
430 section|key1=val1| ... |keyN=valN
433 Metadata tags are printed in the corresponding "format" or "stream"
434 section. A metadata tag key, if printed, is prefixed by the string
437 The description of the accepted options follows.
442 Specify the character to use for separating fields in the output line.
443 It must be a single printable character, it is "|" by default ("," for
444 the @code{csv} writer).
447 If set to 1 specify not to print the key of each field. Its default
448 value is 0 (1 for the @code{csv} writer).
451 Set the escape mode to use, default to "c" ("csv" for the @code{csv}
454 It can assume one of the following values:
457 Perform C-like escaping. Strings containing a newline (@samp{\n}), carriage
458 return (@samp{\r}), a tab (@samp{\t}), a form feed (@samp{\f}), the escaping
459 character (@samp{\}) or the item separator character @var{SEP} are escaped
460 using C-like fashioned escaping, so that a newline is converted to the
461 sequence @samp{\n}, a carriage return to @samp{\r}, @samp{\} to @samp{\\} and
462 the separator @var{SEP} is converted to @samp{\@var{SEP}}.
465 Perform CSV-like escaping, as described in RFC4180. Strings
466 containing a newline (@samp{\n}), a carriage return (@samp{\r}), a double quote
467 (@samp{"}), or @var{SEP} are enclosed in double-quotes.
473 @item print_section, p
474 Print the section name at the beginning of each line if the value is
475 @code{1}, disable it with value set to @code{0}. Default value is
483 A free-form output where each line contains an explicit key=value, such as
484 "streams.stream.3.tags.foo=bar". The output is shell escaped, so it can be
485 directly embedded in sh scripts as long as the separator character is an
486 alphanumeric character or an underscore (see @var{sep_char} option).
488 The description of the accepted options follows.
492 Separator character used to separate the chapter, the section name, IDs and
493 potential tags in the printed field key.
495 Default value is @samp{.}.
497 @item hierarchical, h
498 Specify if the section name specification should be hierarchical. If
499 set to 1, and if there is more than one section in the current
500 chapter, the section name will be prefixed by the name of the
501 chapter. A value of 0 will disable this behavior.
509 Print output in an INI based format.
511 The following conventions are adopted:
515 all key and values are UTF-8
517 @samp{.} is the subgroup separator
519 newline, @samp{\t}, @samp{\f}, @samp{\b} and the following characters are
522 @samp{\} is the escape character
524 @samp{#} is the comment indicator
526 @samp{=} is the key/value separator
528 @samp{:} is not used but usually parsed as key/value separator
531 This writer accepts options as a list of @var{key}=@var{value} pairs,
532 separated by @samp{:}.
534 The description of the accepted options follows.
537 @item hierarchical, h
538 Specify if the section name specification should be hierarchical. If
539 set to 1, and if there is more than one section in the current
540 chapter, the section name will be prefixed by the name of the
541 chapter. A value of 0 will disable this behavior.
549 Each section is printed using JSON notation.
551 The description of the accepted options follows.
556 If set to 1 enable compact output, that is each section will be
557 printed on a single line. Default value is 0.
560 For more information about JSON, see @url{http://www.json.org/}.
565 The XML output is described in the XML schema description file
566 @file{ffprobe.xsd} installed in the FFmpeg datadir.
568 An updated version of the schema can be retrieved at the url
569 @url{http://www.ffmpeg.org/schema/ffprobe.xsd}, which redirects to the
570 latest schema committed into the FFmpeg development source code tree.
572 Note that the output issued will be compliant to the
573 @file{ffprobe.xsd} schema only when no special global output options
574 (@option{unit}, @option{prefix}, @option{byte_binary_prefix},
575 @option{sexagesimal} etc.) are specified.
577 The description of the accepted options follows.
581 @item fully_qualified, q
582 If set to 1 specify if the output should be fully qualified. Default
584 This is required for generating an XML file which can be validated
587 @item xsd_compliant, x
588 If set to 1 perform more checks for ensuring that the output is XSD
589 compliant. Default value is 0.
590 This option automatically sets @option{fully_qualified} to 1.
593 For more information about the XML format, see
594 @url{http://www.w3.org/XML/}.
598 @c man begin TIMECODE
600 @command{ffprobe} supports Timecode extraction:
605 MPEG1/2 timecode is extracted from the GOP, and is available in the video
606 stream details (@option{-show_streams}, see @var{timecode}).
609 MOV timecode is extracted from tmcd track, so is available in the tmcd
610 stream metadata (@option{-show_streams}, see @var{TAG:timecode}).
613 DV, GXF and AVI timecodes are available in format metadata
614 (@option{-show_format}, see @var{TAG:timecode}).
625 @ifset config-avcodec
627 @include bitstream_filters.texi
629 @ifset config-avformat
630 @include formats.texi
631 @include protocols.texi
633 @ifset config-avdevice
634 @include devices.texi
636 @ifset config-swresample
637 @include resampler.texi
639 @ifset config-swscale
642 @ifset config-avfilter
643 @include filters.texi
651 @url{ffprobe.html,ffprobe},
653 @ifset config-not-all
654 @url{ffprobe-all.html,ffprobe-all},
656 @url{ffmpeg.html,ffmpeg}, @url{ffplay.html,ffplay},
657 @url{ffmpeg-utils.html,ffmpeg-utils},
658 @url{ffmpeg-scaler.html,ffmpeg-scaler},
659 @url{ffmpeg-resampler.html,ffmpeg-resampler},
660 @url{ffmpeg-codecs.html,ffmpeg-codecs},
661 @url{ffmpeg-bitstream-filters.html,ffmpeg-bitstream-filters},
662 @url{ffmpeg-formats.html,ffmpeg-formats},
663 @url{ffmpeg-devices.html,ffmpeg-devices},
664 @url{ffmpeg-protocols.html,ffmpeg-protocols},
665 @url{ffmpeg-filters.html,ffmpeg-filters}
672 @ifset config-not-all
675 ffmpeg(1), ffplay(1),
676 ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1),
677 ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1),
678 ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)
681 @include authors.texi
686 @settitle ffprobe media prober