LinuxCommandLibrary

ffmpeg-formats

List available multimedia formats

SYNOPSIS

To view the list of supported formats and their capabilities through the ffmpeg command:
ffmpeg -formats

To specifically list input formats (demuxers):
ffmpeg -demuxers

To specifically list output formats (muxers):
ffmpeg -muxers

For detailed help on a specific format (e.g., MP4 muxer or demuxer options):
ffmpeg -h muxer=<format_name> or ffmpeg -h demuxer=<format_name>

To access the dedicated manual page for format descriptions:
man ffmpeg-formats

PARAMETERS

-formats
    Lists all available multimedia formats that FFmpeg supports, showing whether each is a demuxer (input) or muxer (output), along with various capability flags (e.g., seekable, readable, writable).

-demuxers
    Exclusively lists the input multimedia formats (demuxers) recognized by FFmpeg, detailing their respective capabilities for reading and parsing streams.

-muxers
    Exclusively lists the output multimedia formats (muxers) that FFmpeg can generate, outlining their capabilities for writing and combining streams into specific container structures.

-h [muxer|demuxer]=<format_name>
    Provides detailed help and specific private options for a given muxer or demuxer. This allows users to understand and utilize format-specific configurations, such as custom metadata fields or specific encoding parameters.

DESCRIPTION

The ffmpeg-formats documentation serves as a comprehensive guide to the vast array of multimedia container formats supported by the FFmpeg project. It details both input formats (demuxers) that FFmpeg can read from, and output formats (muxers) that it can write to. Understanding these formats is crucial for effective use of FFmpeg, as it allows users to discern compatible file types, anticipate specific behaviors like seeking or metadata handling, and select the appropriate format for a given task.

While ffmpeg-formats is primarily a manual page (accessible via man ffmpeg-formats), the information it contains directly correlates with the capabilities exposed by the main ffmpeg command-line tool. It lists each format with its unique name and a set of flags indicating its specific features, such as whether it's a demuxer, a muxer, supports seeking, or can handle external streams. This resource is indispensable for developers and advanced users needing precise control over media processing workflows.

CAVEATS

It is crucial to understand that ffmpeg-formats itself is not an executable command but rather a manual page providing static documentation. The parameters listed in this analysis are options for the main ffmpeg command, used to query its supported formats dynamically. The output of ffmpeg -formats directly reflects the formats and capabilities compiled into your specific FFmpeg build, which might differ from the documentation depending on installed libraries and configuration options.

CAPABILITIES FLAGS

When listing formats using ffmpeg -formats, each format entry includes a string of single-character flags indicating its specific capabilities:

  • D: Demuxer (can be used as an input format).
  • E: Muxer (can be used as an output format).
  • I: Supports interleaving (multiple streams in parallel).
  • S: Can be seeked (supports random access to data).
  • B: Supports byte seeking (can seek to arbitrary byte positions).
  • W: Can write (used with muxers).
  • R: Can read (used with demuxers).
  • X: Can use for "eXternal" stream (e.g., certain raw formats).
  • d: Can be disabled (format can be selectively excluded).
  • t: Supports timecode.
  • v: Supports variable frame rate (VFR).
  • p: Supports preloading (input pre-buffering).

DEMUXERS VS. MUXERS

A fundamental distinction in FFmpeg's format handling is between demuxers and muxers. Demuxers are responsible for reading multimedia files or streams, parsing their container structure, and extracting the individual elementary streams (e.g., raw audio, video, or subtitle data). They are the input handlers for FFmpeg. Conversely, Muxers take raw or encoded elementary streams and combine them into a specified container format, writing them to a file or output stream. They are the output handlers. Many formats (like MP4 or MOV) exist as both a demuxer and a muxer, allowing FFmpeg to both read and write files of that type, although their specific options and capabilities might differ.

HISTORY

The FFmpeg project, founded in 2000, has always prioritized extensive format support as a cornerstone of its mission to provide a complete cross-platform solution for multimedia processing. As multimedia technologies evolved, new container formats emerged, and existing ones gained new features, FFmpeg continuously integrated support for them. The ffmpeg-formats documentation and the programmatic --formats option evolved in parallel, serving as vital resources to communicate this ever-expanding capability to users. This ongoing development ensures FFmpeg remains at the forefront of multimedia interoperability, with its format documentation reflecting its dynamic nature.

SEE ALSO

ffmpeg(1), ffprobe(1), ffmpeg-all(1)

Copied to clipboard