LinuxCommandLibrary

ffserver

Stream multimedia content over HTTP

SYNOPSIS

ffserver [-f configfile] [-n] [-d] [-L] [-l|-loglevel level] [-?|-h|--help]

PARAMETERS

-f path
    Specify path to configuration file (default checks standard locations)

-n
    Dry run: parse and print config without starting server

-d
    Daemonize: run ffserver in background

-L
    List all available feeds and streams from config

-l level / -loglevel level
    Set logging verbosity (quiet, panic, fatal, error, warning, info, verbose, debug, trace)

-i
    Enable HTTP image feed support (legacy)

-?
    Print basic usage

-h
    Print detailed help

--help
    Print full help with examples

DESCRIPTION

ffserver is a component of the FFmpeg multimedia framework that functions as an HTTP-based streaming server for live audio and video broadcasts.

It operates by reading a configuration file that defines Feed sections (input endpoints for data from ffmpeg) and Stream sections (output endpoints served to clients via HTTP, supporting formats like MP3, ASF, or M3U playlists).

Typical workflow: Run ffserver with a config file, then use ffmpeg to push encoded media to a feed URL (e.g., http://localhost:8090/feed1.ffm). Clients access streams at URLs like http://localhost:8090/stream1.m3u8.

The server handles multiple simultaneous streams, bandwidth limiting, and basic authentication via config ACLs. It binds to specified ports (default 8080) and supports multicast.

Critical note: ffserver is deprecated, unmaintained since approximately 2009, and poses security risks due to vulnerabilities and lack of updates. It was deprecated in FFmpeg 3.2 (2016) and fully removed in FFmpeg 4.0 (2018). Modern alternatives include nginx with RTMP module, OBS Studio streaming, or FFmpeg's native protocol outputs.

CAVEATS

Deprecated and removed from FFmpeg 4.0+; unmaintained with known security issues (e.g., buffer overflows). Not suitable for production. Config file required for normal operation. Runs as root by default for port 80.

CONFIG ESSENTIALS

Config file uses sections like <FFserver> for globals (Port 8080), <Feed feed1.ffm> for inputs (File /tmp/feed1.ffm), <Stream test.asf> for outputs (Feed feed1.ffm; Format asf). See old docs for syntax.

BASIC EXAMPLE

ffserver -f ffserver.conf
ffmpeg -re -i input.mp4 -f flv http://127.0.0.1:8090/feed1.ffm
Client: ffplay http://127.0.0.1:8090/stream1.flv

HISTORY

Developed as part of original FFmpeg project (~2000). Active until ~2009 when maintainers abandoned it due to complexity and bugs. Marked deprecated in FFmpeg 3.2 (2016), excised in 4.0 (2018) amid security audits.

SEE ALSO

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

Copied to clipboard