A Docker image that runs a headless Steam client with a desktop, letting you stream games to a browser, Moonlight, or Steam Link.
steelbrain/ffmpeg-over-ip
Run ffmpeg on a remote GPU machine from any client over one TCP port, without GPU passthrough or shared filesystems.
- Stars
- 1,192
- Forks
- 41
- Open issues
- 6
- Last commit
- 21 hours ago
What is it?
ffmpeg-over-ip lets an application on one machine run ffmpeg on another machine that has a GPU. A client binary stands in for ffmpeg: it forwards the command-line arguments to a server daemon, which runs a patched ffmpeg and tunnels all file reads and writes back to the client. Input and output files stay on the client, and the server does not store them.
The project targets setups such as Docker containers, virtual machines, and remote hosts where getting direct GPU access would otherwise require runtime configuration, PCIe passthrough, or NFS/SMB mounts. Only one TCP port on the server needs to be reachable, and the client only makes outbound connections. Commands are authenticated with HMAC-SHA256 using a shared secret, and multiple clients can connect to one server, each getting its own ffmpeg process.
Release binaries include ffmpeg and ffprobe built from the jellyfin-ffmpeg pipeline, with hardware acceleration such as NVENC, QSV, VAAPI, AMF, and VideoToolbox. Clients and servers are available for Linux x86_64 and arm64, macOS, and Windows x86_64.
Key features
- 01Forwards ffmpeg and ffprobe commands from a client to a remote server over one TCP port.
- 02Tunnels file I/O back to the client, so no shared filesystem is needed.
- 03Supports hardware acceleration including NVENC, QSV, VAAPI, AMF, and VideoToolbox.
- 04Authenticates every command with HMAC-SHA256 and a shared secret.
- 05Handles multiple concurrent clients, each with its own ffmpeg process.
- 06Streams stdout and stderr in real time and returns the ffmpeg exit code.
Use cases
- Letting a Jellyfin or Emby server in a Docker container use a GPU on another host for transcoding.
- Giving a virtual machine access to a host GPU without PCIe passthrough.
- Offloading transcoding from a NAS or media server that has no GPU to a machine that does.
Quick start
- 1
Install the server on the GPU machine (Linux/macOS)
Install with the official instructions in the README - 2
Install the server on the GPU machine (Windows PowerShell)
Install with the official instructions in the README - 3
Install the client on the media-server machine (Linux/macOS)
Install with the official instructions in the README - 4
Install the client on the media-server machine (Windows PowerShell)
Install with the official instructions in the README
Things to know
- The license is split: fio/ and patches/ are GPL v3, while the rest is MIT.
- Setup requires a shared secret and running a server on the GPU machine plus a client on each media-server machine.
Topics
FAQ
- What is ffmpeg-over-ip?
- Run ffmpeg on a remote GPU machine from any client over one TCP port, without GPU passthrough or shared filesystems. ffmpeg-over-ip lets an application on one machine run ffmpeg on another machine that has a GPU. A client binary stands in for ffmpeg: it forwards the command-line arguments to a server daemon, which runs a patched ffmpeg and tunnels all file reads and writes back to the client. Input and output files stay on the client, and the server does not store them.
- Is ffmpeg-over-ip free to use? What license does it have?
- ffmpeg-over-ip is open source under the Other license. Check the license terms before using it in commercial products.
- Is ffmpeg-over-ip still maintained?
- Actively maintained. The last commit to ffmpeg-over-ip was on Oct 19, 2026.
- What can I use ffmpeg-over-ip for?
- Letting a Jellyfin or Emby server in a Docker container use a GPU on another host for transcoding. Giving a virtual machine access to a host GPU without PCIe passthrough. Offloading transcoding from a NAS or media server that has no GPU to a machine that does.
- How do I install ffmpeg-over-ip?
- Install the server on the GPU machine (Linux/macOS) Install the server on the GPU machine (Windows PowerShell) Install the client on the media-server machine (Linux/macOS) Install the client on the media-server machine (Windows PowerShell)
- Where can I get ffmpeg-over-ip?
- The source code and installation instructions are on GitHub: https://github.com/steelbrain/ffmpeg-over-ip
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An open-source framework that turns HTML, CSS, media and seekable animations into deterministic MP4 videos, built for AI coding agents.
A cross-platform C++ image and video filter library that runs on OpenGL/ES, with beauty and face-based effects.
A native desktop GUI for FFmpeg that gives granular control over video, audio, image, subtitle and metadata conversion settings.
A Streamlit web UI built on yt-dlp that downloads single videos or playlists and files them into folders that Plex, Jellyfin or Emby can scan.
A self-hosted video compressor with a web UI that shrinks clips to a target file size using GPU or CPU encoding via FFmpeg.