ffmpeg-over-ip

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.

Client
has files, no GPU
ffmpeg-over-ip-client
Local filesystem (real files)
Server
has GPU
ffmpeg-over-ip-server
Patched ffmpeg (I/O tunneled back)

No GPU passthrough. No shared filesystem. No NFS. No SMB. Just one TCP port.

How It Works

1

Your app calls the client

Your media server invokes ffmpeg-over-ip-client with normal ffmpeg arguments.

2

Client connects with authentication

The client connects to the server and sends the command, authenticated with HMAC-SHA256.

3

Server runs patched ffmpeg

The server launches its patched ffmpeg, which tunnels all file reads and writes back to the client.

4

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

PlatformClientServer + 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.