Check If FFmpeg Supports a Specific Protocol

Determining whether your local FFmpeg installation supports a specific network or file protocol is crucial for troubleshooting media streaming and file transfer issues. This article provides a quick and straightforward guide on how to list all supported protocols in FFmpeg using command-line tools and how to filter the results to find a specific protocol instantly on Windows, macOS, and Linux.

The Basic Command

FFmpeg includes a built-in command that lists all enabled input and output protocols for your specific build. To see the entire list, open your terminal or command prompt and run:

ffmpeg -protocols

This command will output two columns: “Input protocols” (protocols FFmpeg can read from, like http or rtmp) and “Output protocols” (protocols FFmpeg can write or stream to).

Filtering for a Specific Protocol

Since the full list of protocols can be quite long, you can filter the output using command-line utilities.

On Linux and macOS (Bash/Zsh)

Use the grep command to search for a specific protocol (for example, rtmpe):

ffmpeg -protocols | grep rtmpe

If the protocol is supported, the command will return the line containing it. If it returns nothing, that protocol is not supported by your current FFmpeg build.

On Windows (Command Prompt)

Use the findstr command to filter the list:

ffmpeg -protocols | findstr rtmp

On Windows (PowerShell)

Use the Select-String cmdlet:

ffmpeg -protocols | Select-String rtmp

Understanding the Output

When you filter the output, pay attention to which section the protocol appears under. For example, if you search for srt (Secure Reliable Transport) and see it listed under both “Input protocols” and “Output protocols”, it means your FFmpeg version can both read an SRT stream and output/mux an SRT stream.

If a protocol is missing entirely, you will need to download a different FFmpeg build that has been compiled with that specific protocol enabled, or compile FFmpeg from source with the appropriate configuration flags.