Applies to: FFmpeg project current online manuals read 2026-11-08; generated documentation may be newer than an installed package; check local build options

The useful distinctions

  • ffprobe can emit stream and container sections.
  • The JSON writer produces structured output.
  • show_entries can restrict reported fields.

Answer a concrete question

A file extension gives only a small part of the information needed for a processing decision. Before changing a file, write down what you need to know: which video stream exists, how many audio tracks are present, or what dimensions the video reports. A compact inventory is a useful first artifact because it lets the next decision refer to observed structure rather than a name chosen by whoever created the file.

Keep the report readable

The example asks for a few identifying fields and container duration. It deliberately avoids a packet or frame dump, which would obscure this simple inventory with much more detail. Some fields can be absent when the format cannot provide them; preserve that distinction rather than replacing an unknown value with an assumption. The output shown by your own build is the evidence, not an imagined sample result supplied by a tutorial.

Compare at the right level

After a remux or edit, produce another inventory and compare the properties that the task was meant to preserve or change. Equal stream counts are useful but do not prove identical decoded content. Keep the original file untouched while investigating unexpected differences. A concise report with actual indexes also makes later stream selection easier to review.

A focused way to proceed

  1. Choose an owned local file and record the installed ffprobe version.
  2. Run a compact stream-and-format inventory into a new JSON file.
  3. Review stream indexes and types before choosing any later processing command.
  4. Keep the inventory with the source filename and date for comparison.

Worked example · synthetic

ffprobe -v error -show_entries stream=index,codec_type,codec_name,width,height:format=format_name,duration -of json workshop-source.mkv > workshop-inventory.json

Read the comparison

Absent fields indicate unavailable or inapplicable metadata; they should not be silently treated as zero.

When to stop or ask for help

For an unexplained probe failure, provide the error and tool version before attempting conversions.