Repolode
steelbrain

steelbrain/ffmpeg-over-ip

GPUパススルーや共有ファイルシステムを使わず、任意のクライアントからTCPポート1つでリモートGPUマシン上のffmpegを実行できます。

スター
1,192
フォーク
41
未解決の Issue
6
最終コミット
15 時間前

これは何?

ffmpeg-over-ipを使うと、あるマシン上のアプリケーションから、GPUを搭載した別のマシン上でffmpegを実行できます。クライアントバイナリがffmpegの代わりとなり、コマンドライン引数をサーバーデーモンに転送します。サーバーではパッチ適用済みのffmpegが実行され、ファイルの読み書きはすべてクライアントにトンネルされます。入出力ファイルはクライアント側に置かれ、サーバーには保存されません。

このプロジェクトは、Dockerコンテナ、仮想マシン、リモートホストなど、直接GPUにアクセスするためにランタイム設定やPCIeパススルー、NFS/SMBマウントが必要になる環境を想定しています。サーバーで到達可能にする必要があるのはTCPポート1つだけで、クライアントからはアウトバウンド接続のみを行います。コマンドは共有シークレットを使ったHMAC-SHA256で認証されます。複数のクライアントが1台のサーバーに接続でき、それぞれに専用のffmpegプロセスが割り当てられます。

リリースバイナリには、jellyfin-ffmpegのパイプラインでビルドされたffmpegとffprobeが含まれ、NVENC、QSV、VAAPI、AMF、VideoToolboxなどのハードウェアアクセラレーションに対応しています。クライアントとサーバーは、Linux x86_64およびarm64、macOS、Windows x86_64向けに提供されています。

主な機能

  • 01クライアントからリモートサーバーへ、TCPポート1つでffmpegとffprobeのコマンドを転送します。
  • 02ファイルI/Oをクライアントにトンネルするため、共有ファイルシステムは不要です。
  • 03NVENC、QSV、VAAPI、AMF、VideoToolboxなどのハードウェアアクセラレーションに対応しています。
  • 04共有シークレットとHMAC-SHA256を使って、すべてのコマンドを認証します。
  • 05複数のクライアントを同時に処理し、それぞれに専用のffmpegプロセスを割り当てます。
  • 06stdoutとstderrをリアルタイムでストリーミングし、ffmpegの終了コードを返します。

ユースケース

  • Dockerコンテナ内のJellyfinまたはEmbyサーバーから、別のホストにあるGPUをトランスコードに利用する。
  • PCIeパススルーを使わずに、仮想マシンからホストのGPUを利用する。
  • GPUを搭載していないNASやメディアサーバーから、GPUのあるマシンへトランスコードをオフロードする。

クイックスタート

  1. 1

    GPUマシンにサーバーをインストール(Linux/macOS)

    README の公式手順に従ってインストール
  2. 2

    GPUマシンにサーバーをインストール(Windows PowerShell)

    README の公式手順に従ってインストール
  3. 3

    メディアサーバーのマシンにクライアントをインストール(Linux/macOS)

    README の公式手順に従ってインストール
  4. 4

    メディアサーバーのマシンにクライアントをインストール(Windows PowerShell)

    README の公式手順に従ってインストール

使う前に知っておきたいこと

  • ライセンスは分割されています。fio/ と patches/ は GPL v3、その他は MIT です。
  • セットアップには共有シークレットが必要です。また、GPUマシンでサーバーを、各メディアサーバーのマシンでクライアントを実行する必要があります。

トピック

よくある質問

ffmpeg-over-ip とは?
GPUパススルーや共有ファイルシステムを使わず、任意のクライアントからTCPポート1つでリモートGPUマシン上のffmpegを実行できます。 ffmpeg-over-ipを使うと、あるマシン上のアプリケーションから、GPUを搭載した別のマシン上でffmpegを実行できます。クライアントバイナリがffmpegの代わりとなり、コマンドライン引数をサーバーデーモンに転送します。サーバーではパッチ適用済みのffmpegが実行され、ファイルの読み書きはすべてクライアントにトンネルされます。入出力ファイルはクライアント側に置かれ、サーバーには保存されません。
ffmpeg-over-ip は無料で使えますか?ライセンスは?
ffmpeg-over-ip は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
ffmpeg-over-ip は今もメンテナンスされていますか?
活発にメンテナンス中。ffmpeg-over-ip の最終コミットは 2026年10月19日 です。
ffmpeg-over-ip は何に使えますか?
Dockerコンテナ内のJellyfinまたはEmbyサーバーから、別のホストにあるGPUをトランスコードに利用する。 PCIeパススルーを使わずに、仮想マシンからホストのGPUを利用する。 GPUを搭載していないNASやメディアサーバーから、GPUのあるマシンへトランスコードをオフロードする。
ffmpeg-over-ip のインストール方法は?
GPUマシンにサーバーをインストール(Linux/macOS) GPUマシンにサーバーをインストール(Windows PowerShell) メディアサーバーのマシンにクライアントをインストール(Linux/macOS) メディアサーバーのマシンにクライアントをインストール(Windows PowerShell)
ffmpeg-over-ip はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/steelbrain/ffmpeg-over-ip

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト