123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704 |
- \input texinfo @c -*- texinfo -*-
- @documentencoding UTF-8
- @settitle ffprobe Documentation
- @titlepage
- @center @titlefont{ffprobe Documentation}
- @end titlepage
- @top
- @contents
- @chapter Synopsis
- ffprobe [@var{options}] @file{input_url}
- @chapter Description
- @c man begin DESCRIPTION
- ffprobe gathers information from multimedia streams and prints it in
- human- and machine-readable fashion.
- For example it can be used to check the format of the container used
- by a multimedia stream and the format and type of each media stream
- contained in it.
- If a url is specified in input, ffprobe will try to open and
- probe the url content. If the url cannot be opened or recognized as
- a multimedia file, a positive exit code is returned.
- If no output is specified as output with @option{o} ffprobe will write
- to stdout.
- ffprobe may be employed both as a standalone application or in
- combination with a textual filter, which may perform more
- sophisticated processing, e.g. statistical processing or plotting.
- Options are used to list some of the formats supported by ffprobe or
- for specifying which information to display, and for setting how
- ffprobe will show it.
- ffprobe output is designed to be easily parsable by a textual filter,
- and consists of one or more sections of a form defined by the selected
- writer, which is specified by the @option{print_format} option.
- Sections may contain other nested sections, and are identified by a
- name (which may be shared by other sections), and an unique
- name. See the output of @option{sections}.
- Metadata tags stored in the container or in the streams are recognized
- and printed in the corresponding "FORMAT", "STREAM" or "PROGRAM_STREAM"
- section.
- @c man end
- @chapter Options
- @c man begin OPTIONS
- @include fftools-common-opts.texi
- @section Main options
- @table @option
- @item -f @var{format}
- Force format to use.
- @item -unit
- Show the unit of the displayed values.
- @item -prefix
- Use SI prefixes for the displayed values.
- Unless the "-byte_binary_prefix" option is used all the prefixes
- are decimal.
- @item -byte_binary_prefix
- Force the use of binary prefixes for byte values.
- @item -sexagesimal
- Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
- @item -pretty
- Prettify the format of the displayed values, it corresponds to the
- options "-unit -prefix -byte_binary_prefix -sexagesimal".
- @item -of, -print_format @var{writer_name}[=@var{writer_options}]
- Set the output printing format.
- @var{writer_name} specifies the name of the writer, and
- @var{writer_options} specifies the options to be passed to the writer.
- For example for printing the output in JSON format, specify:
- @example
- -print_format json
- @end example
- For more details on the available output printing formats, see the
- Writers section below.
- @item -sections
- Print sections structure and section information, and exit. The output
- is not meant to be parsed by a machine.
- @item -select_streams @var{stream_specifier}
- Select only the streams specified by @var{stream_specifier}. This
- option affects only the options related to streams
- (e.g. @code{show_streams}, @code{show_packets}, etc.).
- For example to show only audio streams, you can use the command:
- @example
- ffprobe -show_streams -select_streams a INPUT
- @end example
- To show only video packets belonging to the video stream with index 1:
- @example
- ffprobe -show_packets -select_streams v:1 INPUT
- @end example
- @item -show_data
- Show payload data, as a hexadecimal and ASCII dump. Coupled with
- @option{-show_packets}, it will dump the packets' data. Coupled with
- @option{-show_streams}, it will dump the codec extradata.
- The dump is printed as the "data" field. It may contain newlines.
- @item -show_data_hash @var{algorithm}
- Show a hash of payload data, for packets with @option{-show_packets} and for
- codec extradata with @option{-show_streams}.
- @item -show_error
- Show information about the error found when trying to probe the input.
- The error information is printed within a section with name "ERROR".
- @item -show_format
- Show information about the container format of the input multimedia
- stream.
- All the container format information is printed within a section with
- name "FORMAT".
- @item -show_format_entry @var{name}
- Like @option{-show_format}, but only prints the specified entry of the
- container format information, rather than all. This option may be given more
- than once, then all specified entries will be shown.
- This option is deprecated, use @code{show_entries} instead.
- @item -show_entries @var{section_entries}
- Set list of entries to show.
- Entries are specified according to the following
- syntax. @var{section_entries} contains a list of section entries
- separated by @code{:}. Each section entry is composed by a section
- name (or unique name), optionally followed by a list of entries local
- to that section, separated by @code{,}.
- If section name is specified but is followed by no @code{=}, all
- entries are printed to output, together with all the contained
- sections. Otherwise only the entries specified in the local section
- entries list are printed. In particular, if @code{=} is specified but
- the list of local entries is empty, then no entries will be shown for
- that section.
- Note that the order of specification of the local section entries is
- not honored in the output, and the usual display order will be
- retained.
- The formal syntax is given by:
- @example
- @var{LOCAL_SECTION_ENTRIES} ::= @var{SECTION_ENTRY_NAME}[,@var{LOCAL_SECTION_ENTRIES}]
- @var{SECTION_ENTRY} ::= @var{SECTION_NAME}[=[@var{LOCAL_SECTION_ENTRIES}]]
- @var{SECTION_ENTRIES} ::= @var{SECTION_ENTRY}[:@var{SECTION_ENTRIES}]
- @end example
- For example, to show only the index and type of each stream, and the PTS
- time, duration time, and stream index of the packets, you can specify
- the argument:
- @example
- packet=pts_time,duration_time,stream_index : stream=index,codec_type
- @end example
- To show all the entries in the section "format", but only the codec
- type in the section "stream", specify the argument:
- @example
- format : stream=codec_type
- @end example
- To show all the tags in the stream and format sections:
- @example
- stream_tags : format_tags
- @end example
- To show only the @code{title} tag (if available) in the stream
- sections:
- @example
- stream_tags=title
- @end example
- @item -show_packets
- Show information about each packet contained in the input multimedia
- stream.
- The information for each single packet is printed within a dedicated
- section with name "PACKET".
- @item -show_frames
- Show information about each frame and subtitle contained in the input
- multimedia stream.
- The information for each single frame is printed within a dedicated
- section with name "FRAME" or "SUBTITLE".
- @item -show_log @var{loglevel}
- Show logging information from the decoder about each frame according to
- the value set in @var{loglevel}, (see @code{-loglevel}). This option requires @code{-show_frames}.
- The information for each log message is printed within a dedicated
- section with name "LOG".
- @item -show_streams
- Show information about each media stream contained in the input
- multimedia stream.
- Each media stream information is printed within a dedicated section
- with name "STREAM".
- @item -show_programs
- Show information about programs and their streams contained in the input
- multimedia stream.
- Each media stream information is printed within a dedicated section
- with name "PROGRAM_STREAM".
- @item -show_chapters
- Show information about chapters stored in the format.
- Each chapter is printed within a dedicated section with name "CHAPTER".
- @item -count_frames
- Count the number of frames per stream and report it in the
- corresponding stream section.
- @item -count_packets
- Count the number of packets per stream and report it in the
- corresponding stream section.
- @item -read_intervals @var{read_intervals}
- Read only the specified intervals. @var{read_intervals} must be a
- sequence of interval specifications separated by ",".
- @command{ffprobe} will seek to the interval starting point, and will
- continue reading from that.
- Each interval is specified by two optional parts, separated by "%".
- The first part specifies the interval start position. It is
- interpreted as an absolute position, or as a relative offset from the
- current position if it is preceded by the "+" character. If this first
- part is not specified, no seeking will be performed when reading this
- interval.
- The second part specifies the interval end position. It is interpreted
- as an absolute position, or as a relative offset from the current
- position if it is preceded by the "+" character. If the offset
- specification starts with "#", it is interpreted as the number of
- packets to read (not including the flushing packets) from the interval
- start. If no second part is specified, the program will read until the
- end of the input.
- Note that seeking is not accurate, thus the actual interval start
- point may be different from the specified position. Also, when an
- interval duration is specified, the absolute end time will be computed
- by adding the duration to the interval start point found by seeking
- the file, rather than to the specified start value.
- The formal syntax is given by:
- @example
- @var{INTERVAL} ::= [@var{START}|+@var{START_OFFSET}][%[@var{END}|+@var{END_OFFSET}]]
- @var{INTERVALS} ::= @var{INTERVAL}[,@var{INTERVALS}]
- @end example
- A few examples follow.
- @itemize
- @item
- Seek to time 10, read packets until 20 seconds after the found seek
- point, then seek to position @code{01:30} (1 minute and thirty
- seconds) and read packets until position @code{01:45}.
- @example
- 10%+20,01:30%01:45
- @end example
- @item
- Read only 42 packets after seeking to position @code{01:23}:
- @example
- 01:23%+#42
- @end example
- @item
- Read only the first 20 seconds from the start:
- @example
- %+20
- @end example
- @item
- Read from the start until position @code{02:30}:
- @example
- %02:30
- @end example
- @end itemize
- @item -show_private_data, -private
- Show private data, that is data depending on the format of the
- particular shown element.
- This option is enabled by default, but you may need to disable it
- for specific uses, for example when creating XSD-compliant XML output.
- @item -show_program_version
- Show information related to program version.
- Version information is printed within a section with name
- "PROGRAM_VERSION".
- @item -show_library_versions
- Show information related to library versions.
- Version information for each library is printed within a section with
- name "LIBRARY_VERSION".
- @item -show_versions
- Show information related to program and library versions. This is the
- equivalent of setting both @option{-show_program_version} and
- @option{-show_library_versions} options.
- @item -show_pixel_formats
- Show information about all pixel formats supported by FFmpeg.
- Pixel format information for each format is printed within a section
- with name "PIXEL_FORMAT".
- @item -show_optional_fields @var{value}
- Some writers viz. JSON and XML, omit the printing of fields with invalid or non-applicable values,
- while other writers always print them. This option enables one to control this behaviour.
- Valid values are @code{always}/@code{1}, @code{never}/@code{0} and @code{auto}/@code{-1}.
- Default is @var{auto}.
- @item -bitexact
- Force bitexact output, useful to produce output which is not dependent
- on the specific build.
- @item -i @var{input_url}
- Read @var{input_url}.
- @item -o @var{output_url}
- Write output to @var{output_url}. If not specified, the output is sent
- to stdout.
- @end table
- @c man end
- @chapter Writers
- @c man begin WRITERS
- A writer defines the output format adopted by @command{ffprobe}, and will be
- used for printing all the parts of the output.
- A writer may accept one or more arguments, which specify the options
- to adopt. The options are specified as a list of @var{key}=@var{value}
- pairs, separated by ":".
- All writers support the following options:
- @table @option
- @item string_validation, sv
- Set string validation mode.
- The following values are accepted.
- @table @samp
- @item fail
- The writer will fail immediately in case an invalid string (UTF-8)
- sequence or code point is found in the input. This is especially
- useful to validate input metadata.
- @item ignore
- Any validation error will be ignored. This will result in possibly
- broken output, especially with the json or xml writer.
- @item replace
- The writer will substitute invalid UTF-8 sequences or code points with
- the string specified with the @option{string_validation_replacement}.
- @end table
- Default value is @samp{replace}.
- @item string_validation_replacement, svr
- Set replacement string to use in case @option{string_validation} is
- set to @samp{replace}.
- In case the option is not specified, the writer will assume the empty
- string, that is it will remove the invalid sequences from the input
- strings.
- @end table
- A description of the currently available writers follows.
- @section default
- Default format.
- Print each section in the form:
- @example
- [SECTION]
- key1=val1
- ...
- keyN=valN
- [/SECTION]
- @end example
- Metadata tags are printed as a line in the corresponding FORMAT, STREAM or
- PROGRAM_STREAM section, and are prefixed by the string "TAG:".
- A description of the accepted options follows.
- @table @option
- @item nokey, nk
- If set to 1 specify not to print the key of each field. Default value
- is 0.
- @item noprint_wrappers, nw
- If set to 1 specify not to print the section header and footer.
- Default value is 0.
- @end table
- @section compact, csv
- Compact and CSV format.
- The @code{csv} writer is equivalent to @code{compact}, but supports
- different defaults.
- Each section is printed on a single line.
- If no option is specified, the output has the form:
- @example
- section|key1=val1| ... |keyN=valN
- @end example
- Metadata tags are printed in the corresponding "format" or "stream"
- section. A metadata tag key, if printed, is prefixed by the string
- "tag:".
- The description of the accepted options follows.
- @table @option
- @item item_sep, s
- Specify the character to use for separating fields in the output line.
- It must be a single printable character, it is "|" by default ("," for
- the @code{csv} writer).
- @item nokey, nk
- If set to 1 specify not to print the key of each field. Its default
- value is 0 (1 for the @code{csv} writer).
- @item escape, e
- Set the escape mode to use, default to "c" ("csv" for the @code{csv}
- writer).
- It can assume one of the following values:
- @table @option
- @item c
- Perform C-like escaping. Strings containing a newline (@samp{\n}), carriage
- return (@samp{\r}), a tab (@samp{\t}), a form feed (@samp{\f}), the escaping
- character (@samp{\}) or the item separator character @var{SEP} are escaped
- using C-like fashioned escaping, so that a newline is converted to the
- sequence @samp{\n}, a carriage return to @samp{\r}, @samp{\} to @samp{\\} and
- the separator @var{SEP} is converted to @samp{\@var{SEP}}.
- @item csv
- Perform CSV-like escaping, as described in RFC4180. Strings
- containing a newline (@samp{\n}), a carriage return (@samp{\r}), a double quote
- (@samp{"}), or @var{SEP} are enclosed in double-quotes.
- @item none
- Perform no escaping.
- @end table
- @item print_section, p
- Print the section name at the beginning of each line if the value is
- @code{1}, disable it with value set to @code{0}. Default value is
- @code{1}.
- @end table
- @section flat
- Flat format.
- A free-form output where each line contains an explicit key=value, such as
- "streams.stream.3.tags.foo=bar". The output is shell escaped, so it can be
- directly embedded in sh scripts as long as the separator character is an
- alphanumeric character or an underscore (see @var{sep_char} option).
- The description of the accepted options follows.
- @table @option
- @item sep_char, s
- Separator character used to separate the chapter, the section name, IDs and
- potential tags in the printed field key.
- Default value is @samp{.}.
- @item hierarchical, h
- Specify if the section name specification should be hierarchical. If
- set to 1, and if there is more than one section in the current
- chapter, the section name will be prefixed by the name of the
- chapter. A value of 0 will disable this behavior.
- Default value is 1.
- @end table
- @section ini
- INI format output.
- Print output in an INI based format.
- The following conventions are adopted:
- @itemize
- @item
- all key and values are UTF-8
- @item
- @samp{.} is the subgroup separator
- @item
- newline, @samp{\t}, @samp{\f}, @samp{\b} and the following characters are
- escaped
- @item
- @samp{\} is the escape character
- @item
- @samp{#} is the comment indicator
- @item
- @samp{=} is the key/value separator
- @item
- @samp{:} is not used but usually parsed as key/value separator
- @end itemize
- This writer accepts options as a list of @var{key}=@var{value} pairs,
- separated by @samp{:}.
- The description of the accepted options follows.
- @table @option
- @item hierarchical, h
- Specify if the section name specification should be hierarchical. If
- set to 1, and if there is more than one section in the current
- chapter, the section name will be prefixed by the name of the
- chapter. A value of 0 will disable this behavior.
- Default value is 1.
- @end table
- @section json
- JSON based format.
- Each section is printed using JSON notation.
- The description of the accepted options follows.
- @table @option
- @item compact, c
- If set to 1 enable compact output, that is each section will be
- printed on a single line. Default value is 0.
- @end table
- For more information about JSON, see @url{http://www.json.org/}.
- @section xml
- XML based format.
- The XML output is described in the XML schema description file
- @file{ffprobe.xsd} installed in the FFmpeg datadir.
- An updated version of the schema can be retrieved at the url
- @url{http://www.ffmpeg.org/schema/ffprobe.xsd}, which redirects to the
- latest schema committed into the FFmpeg development source code tree.
- Note that the output issued will be compliant to the
- @file{ffprobe.xsd} schema only when no special global output options
- (@option{unit}, @option{prefix}, @option{byte_binary_prefix},
- @option{sexagesimal} etc.) are specified.
- The description of the accepted options follows.
- @table @option
- @item fully_qualified, q
- If set to 1 specify if the output should be fully qualified. Default
- value is 0.
- This is required for generating an XML file which can be validated
- through an XSD file.
- @item xsd_strict, x
- If set to 1 perform more checks for ensuring that the output is XSD
- compliant. Default value is 0.
- This option automatically sets @option{fully_qualified} to 1.
- @end table
- For more information about the XML format, see
- @url{https://www.w3.org/XML/}.
- @c man end WRITERS
- @chapter Timecode
- @c man begin TIMECODE
- @command{ffprobe} supports Timecode extraction:
- @itemize
- @item
- MPEG1/2 timecode is extracted from the GOP, and is available in the video
- stream details (@option{-show_streams}, see @var{timecode}).
- @item
- MOV timecode is extracted from tmcd track, so is available in the tmcd
- stream metadata (@option{-show_streams}, see @var{TAG:timecode}).
- @item
- DV, GXF and AVI timecodes are available in format metadata
- (@option{-show_format}, see @var{TAG:timecode}).
- @end itemize
- @c man end TIMECODE
- @include config.texi
- @ifset config-all
- @set config-readonly
- @ifset config-avutil
- @include utils.texi
- @end ifset
- @ifset config-avcodec
- @include codecs.texi
- @include bitstream_filters.texi
- @end ifset
- @ifset config-avformat
- @include formats.texi
- @include protocols.texi
- @end ifset
- @ifset config-avdevice
- @include devices.texi
- @end ifset
- @ifset config-swresample
- @include resampler.texi
- @end ifset
- @ifset config-swscale
- @include scaler.texi
- @end ifset
- @ifset config-avfilter
- @include filters.texi
- @end ifset
- @include general_contents.texi
- @end ifset
- @chapter See Also
- @ifhtml
- @ifset config-all
- @url{ffprobe.html,ffprobe},
- @end ifset
- @ifset config-not-all
- @url{ffprobe-all.html,ffprobe-all},
- @end ifset
- @url{ffmpeg.html,ffmpeg}, @url{ffplay.html,ffplay},
- @url{ffmpeg-utils.html,ffmpeg-utils},
- @url{ffmpeg-scaler.html,ffmpeg-scaler},
- @url{ffmpeg-resampler.html,ffmpeg-resampler},
- @url{ffmpeg-codecs.html,ffmpeg-codecs},
- @url{ffmpeg-bitstream-filters.html,ffmpeg-bitstream-filters},
- @url{ffmpeg-formats.html,ffmpeg-formats},
- @url{ffmpeg-devices.html,ffmpeg-devices},
- @url{ffmpeg-protocols.html,ffmpeg-protocols},
- @url{ffmpeg-filters.html,ffmpeg-filters}
- @end ifhtml
- @ifnothtml
- @ifset config-all
- ffprobe(1),
- @end ifset
- @ifset config-not-all
- ffprobe-all(1),
- @end ifset
- ffmpeg(1), ffplay(1),
- ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1),
- ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1),
- ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1)
- @end ifnothtml
- @include authors.texi
- @ignore
- @setfilename ffprobe
- @settitle ffprobe media prober
- @end ignore
- @bye
|