LinuxCommandLibrary

ffmpeg-protocols

List supported protocols for FFmpeg

SYNOPSIS

While ffmpeg-protocols itself is a manual page and not an executable command, it describes the syntax for using various protocols with the ffmpeg command. The general invocation pattern for input or output using protocols is:

ffmpeg [input_options] -i protocol_url [output_options] protocol_url

Where protocol_url adheres to a specific syntax, often `protocol://[host][:port][/path][?option=value[&option=value...]]`. The documentation outlines the available protocol identifiers and their respective URL structures and options.

PARAMETERS

file://
    Accesses local files on the filesystem. Syntax: file:///path/to/file.

http:// / https://
    Retrieves or sends data over HTTP/HTTPS. Supports options like user-agent, referer, and timeout for controlling HTTP requests.

rtmp://
    Handles Real-Time Messaging Protocol streams, commonly used for live streaming. Common options include live, playpath, flashver, and various conn parameters for connection details.

udp:// / tcp://
    Facilitates network communication over UDP or TCP. Important options often include buffer_size, fifo_size, reuse_address, and local_port for fine-tuning network behavior.

pipe:N
    Enables inter-process communication via standard input (pipe:0) or standard output (pipe:1) handles, useful for chaining FFmpeg with other commands.

DESCRIPTION

The ffmpeg-protocols manual page details the diverse input and output protocols supported by the FFmpeg multimedia framework. These protocols dictate how FFmpeg accesses or delivers data, whether from local files, network streams, or inter-process communication channels. This documentation serves as a comprehensive reference for users to understand the syntax, capabilities, and specific options associated with each supported protocol.

Protocols allow FFmpeg to handle a wide array of media sources and destinations, ranging from simple file paths (file://) to complex streaming protocols like RTMP (rtmp://), HTTP Live Streaming (hls://), or UDP/TCP network streams (udp://, tcp://). Understanding these protocols is essential for effectively configuring FFmpeg for tasks such as live streaming, video on demand, inter-process media manipulation, or accessing remote resources.

CAVEATS

The availability of specific protocols and their features can vary depending on how FFmpeg was compiled. Network protocols often introduce latency and require proper firewall configuration. Users should be aware of security implications when using unencrypted protocols like plain HTTP or FTP for sensitive data. Not all protocols support both input and output; some are read-only (e.g., dash) while others are write-only (e.g., icecast). Performance considerations, such as network bandwidth and buffer sizes, are crucial for reliable streaming operations.

PROTOCOL CAPABILITIES

Each protocol typically supports either reading (input), writing (output), or both. The ffmpeg-protocols documentation specifies the capabilities of each protocol (e.g., http for both, dash for input only, icecast for output only).

PROTOCOL WHITELISTING/BLACKLISTING

For security or stability reasons, FFmpeg allows users to control which protocols can be used via the global options -protocol_whitelist and -protocol_blacklist. These options specify a comma-separated list of allowed or disallowed protocols, respectively, enhancing control over potential external interactions.

HISTORY

The support for various I/O protocols has been a cornerstone of FFmpeg's versatility since its inception. Initially supporting fundamental file and basic network protocols, FFmpeg has continuously expanded its protocol roster to adapt to evolving multimedia standards and streaming technologies. Significant developments include the integration of advanced streaming protocols like RTMP, HLS, DASH, and SRT, along with robust support for various network and inter-process communication mechanisms. This continuous evolution has been driven by the increasing demands for diverse media ingestion and delivery methods across different platforms and applications.

SEE ALSO

ffmpeg(1), ffprobe(1), ffplay(1)

Copied to clipboard