1\input texinfo @c -*- texinfo -*- 2@documentencoding UTF-8 3 4@settitle ffprobe Documentation 5@titlepage 6@center @titlefont{ffprobe Documentation} 7@end titlepage 8 9@top 10 11@contents 12 13@chapter Synopsis 14 15ffprobe [@var{options}] [@file{input_url}] 16 17@chapter Description 18@c man begin DESCRIPTION 19 20ffprobe gathers information from multimedia streams and prints it in 21human- and machine-readable fashion. 22 23For example it can be used to check the format of the container used 24by a multimedia stream and the format and type of each media stream 25contained in it. 26 27If a url is specified in input, ffprobe will try to open and 28probe the url content. If the url cannot be opened or recognized as 29a multimedia file, a positive exit code is returned. 30 31ffprobe may be employed both as a standalone application or in 32combination with a textual filter, which may perform more 33sophisticated processing, e.g. statistical processing or plotting. 34 35Options are used to list some of the formats supported by ffprobe or 36for specifying which information to display, and for setting how 37ffprobe will show it. 38 39ffprobe output is designed to be easily parsable by a textual filter, 40and consists of one or more sections of a form defined by the selected 41writer, which is specified by the @option{print_format} option. 42 43Sections may contain other nested sections, and are identified by a 44name (which may be shared by other sections), and an unique 45name. See the output of @option{sections}. 46 47Metadata tags stored in the container or in the streams are recognized 48and printed in the corresponding "FORMAT", "STREAM" or "PROGRAM_STREAM" 49section. 50 51@c man end 52 53@chapter Options 54@c man begin OPTIONS 55 56@include fftools-common-opts.texi 57 58@section Main options 59 60@table @option 61 62@item -f @var{format} 63Force format to use. 64 65@item -unit 66Show the unit of the displayed values. 67 68@item -prefix 69Use SI prefixes for the displayed values. 70Unless the "-byte_binary_prefix" option is used all the prefixes 71are decimal. 72 73@item -byte_binary_prefix 74Force the use of binary prefixes for byte values. 75 76@item -sexagesimal 77Use sexagesimal format HH:MM:SS.MICROSECONDS for time values. 78 79@item -pretty 80Prettify the format of the displayed values, it corresponds to the 81options "-unit -prefix -byte_binary_prefix -sexagesimal". 82 83@item -of, -print_format @var{writer_name}[=@var{writer_options}] 84Set the output printing format. 85 86@var{writer_name} specifies the name of the writer, and 87@var{writer_options} specifies the options to be passed to the writer. 88 89For example for printing the output in JSON format, specify: 90@example 91-print_format json 92@end example 93 94For more details on the available output printing formats, see the 95Writers section below. 96 97@item -sections 98Print sections structure and section information, and exit. The output 99is not meant to be parsed by a machine. 100 101@item -select_streams @var{stream_specifier} 102Select only the streams specified by @var{stream_specifier}. This 103option affects only the options related to streams 104(e.g. @code{show_streams}, @code{show_packets}, etc.). 105 106For example to show only audio streams, you can use the command: 107@example 108ffprobe -show_streams -select_streams a INPUT 109@end example 110 111To show only video packets belonging to the video stream with index 1: 112@example 113ffprobe -show_packets -select_streams v:1 INPUT 114@end example 115 116@item -show_data 117Show 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. 120 121The dump is printed as the "data" field. It may contain newlines. 122 123@item -show_data_hash @var{algorithm} 124Show a hash of payload data, for packets with @option{-show_packets} and for 125codec extradata with @option{-show_streams}. 126 127@item -show_error 128Show information about the error found when trying to probe the input. 129 130The error information is printed within a section with name "ERROR". 131 132@item -show_format 133Show information about the container format of the input multimedia 134stream. 135 136All the container format information is printed within a section with 137name "FORMAT". 138 139@item -show_format_entry @var{name} 140Like @option{-show_format}, but only prints the specified entry of the 141container format information, rather than all. This option may be given more 142than once, then all specified entries will be shown. 143 144This option is deprecated, use @code{show_entries} instead. 145 146@item -show_entries @var{section_entries} 147Set list of entries to show. 148 149Entries are specified according to the following 150syntax. @var{section_entries} contains a list of section entries 151separated by @code{:}. Each section entry is composed by a section 152name (or unique name), optionally followed by a list of entries local 153to that section, separated by @code{,}. 154 155If section name is specified but is followed by no @code{=}, all 156entries are printed to output, together with all the contained 157sections. Otherwise only the entries specified in the local section 158entries list are printed. In particular, if @code{=} is specified but 159the list of local entries is empty, then no entries will be shown for 160that section. 161 162Note that the order of specification of the local section entries is 163not honored in the output, and the usual display order will be 164retained. 165 166The formal syntax is given by: 167@example 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}] 171@end example 172 173For example, to show only the index and type of each stream, and the PTS 174time, duration time, and stream index of the packets, you can specify 175the argument: 176@example 177packet=pts_time,duration_time,stream_index : stream=index,codec_type 178@end example 179 180To show all the entries in the section "format", but only the codec 181type in the section "stream", specify the argument: 182@example 183format : stream=codec_type 184@end example 185 186To show all the tags in the stream and format sections: 187@example 188stream_tags : format_tags 189@end example 190 191To show only the @code{title} tag (if available) in the stream 192sections: 193@example 194stream_tags=title 195@end example 196 197@item -show_packets 198Show information about each packet contained in the input multimedia 199stream. 200 201The information for each single packet is printed within a dedicated 202section with name "PACKET". 203 204@item -show_frames 205Show information about each frame and subtitle contained in the input 206multimedia stream. 207 208The information for each single frame is printed within a dedicated 209section with name "FRAME" or "SUBTITLE". 210 211@item -show_log @var{loglevel} 212Show logging information from the decoder about each frame according to 213the value set in @var{loglevel}, (see @code{-loglevel}). This option requires @code{-show_frames}. 214 215The information for each log message is printed within a dedicated 216section with name "LOG". 217 218@item -show_streams 219Show information about each media stream contained in the input 220multimedia stream. 221 222Each media stream information is printed within a dedicated section 223with name "STREAM". 224 225@item -show_programs 226Show information about programs and their streams contained in the input 227multimedia stream. 228 229Each media stream information is printed within a dedicated section 230with name "PROGRAM_STREAM". 231 232@item -show_chapters 233Show information about chapters stored in the format. 234 235Each chapter is printed within a dedicated section with name "CHAPTER". 236 237@item -count_frames 238Count the number of frames per stream and report it in the 239corresponding stream section. 240 241@item -count_packets 242Count the number of packets per stream and report it in the 243corresponding stream section. 244 245@item -read_intervals @var{read_intervals} 246 247Read only the specified intervals. @var{read_intervals} must be a 248sequence of interval specifications separated by ",". 249@command{ffprobe} will seek to the interval starting point, and will 250continue reading from that. 251 252Each interval is specified by two optional parts, separated by "%". 253 254The first part specifies the interval start position. It is 255interpreted as an absolute position, or as a relative offset from the 256current position if it is preceded by the "+" character. If this first 257part is not specified, no seeking will be performed when reading this 258interval. 259 260The second part specifies the interval end position. It is interpreted 261as an absolute position, or as a relative offset from the current 262position if it is preceded by the "+" character. If the offset 263specification starts with "#", it is interpreted as the number of 264packets to read (not including the flushing packets) from the interval 265start. If no second part is specified, the program will read until the 266end of the input. 267 268Note that seeking is not accurate, thus the actual interval start 269point may be different from the specified position. Also, when an 270interval duration is specified, the absolute end time will be computed 271by adding the duration to the interval start point found by seeking 272the file, rather than to the specified start value. 273 274The formal syntax is given by: 275@example 276@var{INTERVAL} ::= [@var{START}|+@var{START_OFFSET}][%[@var{END}|+@var{END_OFFSET}]] 277@var{INTERVALS} ::= @var{INTERVAL}[,@var{INTERVALS}] 278@end example 279 280A few examples follow. 281@itemize 282@item 283Seek to time 10, read packets until 20 seconds after the found seek 284point, then seek to position @code{01:30} (1 minute and thirty 285seconds) and read packets until position @code{01:45}. 286@example 28710%+20,01:30%01:45 288@end example 289 290@item 291Read only 42 packets after seeking to position @code{01:23}: 292@example 29301:23%+#42 294@end example 295 296@item 297Read only the first 20 seconds from the start: 298@example 299%+20 300@end example 301 302@item 303Read from the start until position @code{02:30}: 304@example 305%02:30 306@end example 307@end itemize 308 309@item -show_private_data, -private 310Show private data, that is data depending on the format of the 311particular shown element. 312This option is enabled by default, but you may need to disable it 313for specific uses, for example when creating XSD-compliant XML output. 314 315@item -show_program_version 316Show information related to program version. 317 318Version information is printed within a section with name 319"PROGRAM_VERSION". 320 321@item -show_library_versions 322Show information related to library versions. 323 324Version information for each library is printed within a section with 325name "LIBRARY_VERSION". 326 327@item -show_versions 328Show information related to program and library versions. This is the 329equivalent of setting both @option{-show_program_version} and 330@option{-show_library_versions} options. 331 332@item -show_pixel_formats 333Show information about all pixel formats supported by FFmpeg. 334 335Pixel format information for each format is printed within a section 336with name "PIXEL_FORMAT". 337 338@item -bitexact 339Force bitexact output, useful to produce output which is not dependent 340on the specific build. 341 342@item -i @var{input_url} 343Read @var{input_url}. 344 345@end table 346@c man end 347 348@chapter Writers 349@c man begin WRITERS 350 351A writer defines the output format adopted by @command{ffprobe}, and will be 352used for printing all the parts of the output. 353 354A writer may accept one or more arguments, which specify the options 355to adopt. The options are specified as a list of @var{key}=@var{value} 356pairs, separated by ":". 357 358All writers support the following options: 359 360@table @option 361@item string_validation, sv 362Set string validation mode. 363 364The following values are accepted. 365@table @samp 366@item fail 367The writer will fail immediately in case an invalid string (UTF-8) 368sequence or code point is found in the input. This is especially 369useful to validate input metadata. 370 371@item ignore 372Any validation error will be ignored. This will result in possibly 373broken output, especially with the json or xml writer. 374 375@item replace 376The writer will substitute invalid UTF-8 sequences or code points with 377the string specified with the @option{string_validation_replacement}. 378@end table 379 380Default value is @samp{replace}. 381 382@item string_validation_replacement, svr 383Set replacement string to use in case @option{string_validation} is 384set to @samp{replace}. 385 386In case the option is not specified, the writer will assume the empty 387string, that is it will remove the invalid sequences from the input 388strings. 389@end table 390 391A description of the currently available writers follows. 392 393@section default 394Default format. 395 396Print each section in the form: 397@example 398[SECTION] 399key1=val1 400... 401keyN=valN 402[/SECTION] 403@end example 404 405Metadata tags are printed as a line in the corresponding FORMAT, STREAM or 406PROGRAM_STREAM section, and are prefixed by the string "TAG:". 407 408A description of the accepted options follows. 409 410@table @option 411 412@item nokey, nk 413If set to 1 specify not to print the key of each field. Default value 414is 0. 415 416@item noprint_wrappers, nw 417If set to 1 specify not to print the section header and footer. 418Default value is 0. 419@end table 420 421@section compact, csv 422Compact and CSV format. 423 424The @code{csv} writer is equivalent to @code{compact}, but supports 425different defaults. 426 427Each section is printed on a single line. 428If no option is specified, the output has the form: 429@example 430section|key1=val1| ... |keyN=valN 431@end example 432 433Metadata tags are printed in the corresponding "format" or "stream" 434section. A metadata tag key, if printed, is prefixed by the string 435"tag:". 436 437The description of the accepted options follows. 438 439@table @option 440 441@item item_sep, s 442Specify the character to use for separating fields in the output line. 443It must be a single printable character, it is "|" by default ("," for 444the @code{csv} writer). 445 446@item nokey, nk 447If set to 1 specify not to print the key of each field. Its default 448value is 0 (1 for the @code{csv} writer). 449 450@item escape, e 451Set the escape mode to use, default to "c" ("csv" for the @code{csv} 452writer). 453 454It can assume one of the following values: 455@table @option 456@item c 457Perform C-like escaping. Strings containing a newline (@samp{\n}), carriage 458return (@samp{\r}), a tab (@samp{\t}), a form feed (@samp{\f}), the escaping 459character (@samp{\}) or the item separator character @var{SEP} are escaped 460using C-like fashioned escaping, so that a newline is converted to the 461sequence @samp{\n}, a carriage return to @samp{\r}, @samp{\} to @samp{\\} and 462the separator @var{SEP} is converted to @samp{\@var{SEP}}. 463 464@item csv 465Perform CSV-like escaping, as described in RFC4180. Strings 466containing a newline (@samp{\n}), a carriage return (@samp{\r}), a double quote 467(@samp{"}), or @var{SEP} are enclosed in double-quotes. 468 469@item none 470Perform no escaping. 471@end table 472 473@item print_section, p 474Print 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 476@code{1}. 477 478@end table 479 480@section flat 481Flat format. 482 483A 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 485directly embedded in sh scripts as long as the separator character is an 486alphanumeric character or an underscore (see @var{sep_char} option). 487 488The description of the accepted options follows. 489 490@table @option 491@item sep_char, s 492Separator character used to separate the chapter, the section name, IDs and 493potential tags in the printed field key. 494 495Default value is @samp{.}. 496 497@item hierarchical, h 498Specify if the section name specification should be hierarchical. If 499set to 1, and if there is more than one section in the current 500chapter, the section name will be prefixed by the name of the 501chapter. A value of 0 will disable this behavior. 502 503Default value is 1. 504@end table 505 506@section ini 507INI format output. 508 509Print output in an INI based format. 510 511The following conventions are adopted: 512 513@itemize 514@item 515all key and values are UTF-8 516@item 517@samp{.} is the subgroup separator 518@item 519newline, @samp{\t}, @samp{\f}, @samp{\b} and the following characters are 520escaped 521@item 522@samp{\} is the escape character 523@item 524@samp{#} is the comment indicator 525@item 526@samp{=} is the key/value separator 527@item 528@samp{:} is not used but usually parsed as key/value separator 529@end itemize 530 531This writer accepts options as a list of @var{key}=@var{value} pairs, 532separated by @samp{:}. 533 534The description of the accepted options follows. 535 536@table @option 537@item hierarchical, h 538Specify if the section name specification should be hierarchical. If 539set to 1, and if there is more than one section in the current 540chapter, the section name will be prefixed by the name of the 541chapter. A value of 0 will disable this behavior. 542 543Default value is 1. 544@end table 545 546@section json 547JSON based format. 548 549Each section is printed using JSON notation. 550 551The description of the accepted options follows. 552 553@table @option 554 555@item compact, c 556If set to 1 enable compact output, that is each section will be 557printed on a single line. Default value is 0. 558@end table 559 560For more information about JSON, see @url{http://www.json.org/}. 561 562@section xml 563XML based format. 564 565The XML output is described in the XML schema description file 566@file{ffprobe.xsd} installed in the FFmpeg datadir. 567 568An updated version of the schema can be retrieved at the url 569@url{http://www.ffmpeg.org/schema/ffprobe.xsd}, which redirects to the 570latest schema committed into the FFmpeg development source code tree. 571 572Note 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. 576 577The description of the accepted options follows. 578 579@table @option 580 581@item fully_qualified, q 582If set to 1 specify if the output should be fully qualified. Default 583value is 0. 584This is required for generating an XML file which can be validated 585through an XSD file. 586 587@item xsd_strict, x 588If set to 1 perform more checks for ensuring that the output is XSD 589compliant. Default value is 0. 590This option automatically sets @option{fully_qualified} to 1. 591@end table 592 593For more information about the XML format, see 594@url{https://www.w3.org/XML/}. 595@c man end WRITERS 596 597@chapter Timecode 598@c man begin TIMECODE 599 600@command{ffprobe} supports Timecode extraction: 601 602@itemize 603 604@item 605MPEG1/2 timecode is extracted from the GOP, and is available in the video 606stream details (@option{-show_streams}, see @var{timecode}). 607 608@item 609MOV timecode is extracted from tmcd track, so is available in the tmcd 610stream metadata (@option{-show_streams}, see @var{TAG:timecode}). 611 612@item 613DV, GXF and AVI timecodes are available in format metadata 614(@option{-show_format}, see @var{TAG:timecode}). 615 616@end itemize 617@c man end TIMECODE 618 619@include config.texi 620@ifset config-all 621@set config-readonly 622@ifset config-avutil 623@include utils.texi 624@end ifset 625@ifset config-avcodec 626@include codecs.texi 627@include bitstream_filters.texi 628@end ifset 629@ifset config-avformat 630@include formats.texi 631@include protocols.texi 632@end ifset 633@ifset config-avdevice 634@include devices.texi 635@end ifset 636@ifset config-swresample 637@include resampler.texi 638@end ifset 639@ifset config-swscale 640@include scaler.texi 641@end ifset 642@ifset config-avfilter 643@include filters.texi 644@end ifset 645@include general_contents.texi 646@end ifset 647 648@chapter See Also 649 650@ifhtml 651@ifset config-all 652@url{ffprobe.html,ffprobe}, 653@end ifset 654@ifset config-not-all 655@url{ffprobe-all.html,ffprobe-all}, 656@end ifset 657@url{ffmpeg.html,ffmpeg}, @url{ffplay.html,ffplay}, 658@url{ffmpeg-utils.html,ffmpeg-utils}, 659@url{ffmpeg-scaler.html,ffmpeg-scaler}, 660@url{ffmpeg-resampler.html,ffmpeg-resampler}, 661@url{ffmpeg-codecs.html,ffmpeg-codecs}, 662@url{ffmpeg-bitstream-filters.html,ffmpeg-bitstream-filters}, 663@url{ffmpeg-formats.html,ffmpeg-formats}, 664@url{ffmpeg-devices.html,ffmpeg-devices}, 665@url{ffmpeg-protocols.html,ffmpeg-protocols}, 666@url{ffmpeg-filters.html,ffmpeg-filters} 667@end ifhtml 668 669@ifnothtml 670@ifset config-all 671ffprobe(1), 672@end ifset 673@ifset config-not-all 674ffprobe-all(1), 675@end ifset 676ffmpeg(1), ffplay(1), 677ffmpeg-utils(1), ffmpeg-scaler(1), ffmpeg-resampler(1), 678ffmpeg-codecs(1), ffmpeg-bitstream-filters(1), ffmpeg-formats(1), 679ffmpeg-devices(1), ffmpeg-protocols(1), ffmpeg-filters(1) 680@end ifnothtml 681 682@include authors.texi 683 684@ignore 685 686@setfilename ffprobe 687@settitle ffprobe media prober 688 689@end ignore 690 691@bye 692