LinuxCommandLibrary

ffmpeg-protocols

List supported protocols for FFmpeg

SYNOPSIS

ffmpeg -protocols

PARAMETERS

-protocols
    Show supported input/output protocols and exit

DESCRIPTION

The ffmpeg -protocols command displays all input and output protocols supported by the current FFmpeg installation. FFmpeg protocols enable accessing multimedia resources over networks or locally, such as streaming via HTTP, RTP, UDP, or file systems.

This utility is essential for verifying protocol availability, which varies by build configuration (e.g., enabling libavformat with OpenSSL for HTTPS or librtmp for RTMP). Output is divided into Input and Output sections, listing protocols like file:// for local files, http:// and https:// for web servers, udp:// for UDP streams, rtsp:// for real-time streaming, and advanced ones like hls:// (HTTP Live Streaming) or dash:// (Dynamic Adaptive Streaming over HTTP).

Users run it to troubleshoot compatibility, plan workflows, or confirm features before processing media. For instance, multicast support requires udp://, while secure streams need HTTPS. Always check against ffmpeg -protocols output for your system, as static builds (e.g., from snaps or packages) may differ from custom compiles.

CAVEATS

Protocol support depends on FFmpeg build flags and external libraries; not all are available in minimal or static builds.
Does not show protocol details or options—use ffmpeg -h protocol=NAME for specifics.

TYPICAL OUTPUT

Input:
file: reading from file
http: reading via HTTP
https: reading via HTTPS
Output:
file: writing to file
udp: UDP output
(Truncated; full list varies by build)

HISTORY

Added in early FFmpeg versions (~2004) as part of diagnostic options. FFmpeg forked from FFmpeg project (2000) with protocol support expanding via libavformat to match evolving standards like HLS (2009) and DASH (2012).

SEE ALSO

Copied to clipboard