ffmpeg-over-ip
Use GPU-accelerated ffmpeg from anywhere — a Docker container, a VM, or a remote machine — without GPU passthrough or shared filesystems.
The Problem
GPU transcoding is powerful, but getting access to the GPU is painful.
Docker Containers
Need --runtime=nvidia, device mounts, and driver version alignment between host and container.
Virtual Machines
Need PCIe passthrough or SR-IOV — complex setup that locks the GPU to one VM.
Remote Machines
Need shared filesystems (NFS/SMB) with all the path mapping, mount maintenance, and permission headaches.
The Solution
Run the server on the GPU machine. Point your app at the client binary instead of ffmpeg. Done.
No GPU passthrough. No shared filesystem. No NFS. No SMB. Just one TCP port.
How It Works
Your app calls the client
Your media server invokes ffmpeg-over-ip-client with normal ffmpeg arguments.
Client connects with authentication
The client connects to the server and sends the command, authenticated with HMAC-SHA256.
Server runs patched ffmpeg
The server launches its patched ffmpeg, which tunnels all file reads and writes back to the client.
Results stream back
stdout/stderr are forwarded in real-time. When ffmpeg exits, the client exits with the same code.
Features
Pre-built Binaries
Releases include patched ffmpeg and ffprobe with broad hardware acceleration support. No need to install ffmpeg separately.
Hardware Acceleration
Built on jellyfin-ffmpeg — supports NVENC, QSV, VAAPI, AMF, VideoToolbox, and more out of the box.
HMAC Authentication
Every command is signed with HMAC-SHA256 using a shared secret. Only authorized clients can connect.
Cross-Platform
Runs on Linux, macOS, and Windows. Both x86_64 and arm64 architectures supported.
Multiple Clients
Multiple clients can connect simultaneously — each session gets its own ffmpeg process.
Codec Rewrites
Server-side argument rewrites let you transparently map codecs (e.g., h264_nvenc to h264_qsv).
Supported Platforms
| Platform | Client | Server + ffmpeg |
|---|---|---|
| Linux x86_64 | ✓ | ✓ |
| Linux arm64 | ✓ | ✓ |
| macOS arm64 | ✓ | ✓ |
| macOS x86_64 | ✓ | ✓ |
| Windows x86_64 | ✓ | ✓ |
Get Started
Up and running in a few minutes. Download the release, configure, and go.