概要
- GPU搭載マシン上でffmpegをサーバー化し、クライアントからGPUトランスコードを利用可能
- DockerやVM、リモートマシンでもGPUパススルーや共有ファイルシステム不要
- クライアントはffmpeg互換のバイナリで、引数やI/Oをサーバーに転送
- サーバー側でffmpegが実際にGPU処理を実行、ファイルはクライアントに留まる
- NVENC/QSV/VAAPI/AMF/VideoToolboxなど幅広いHWアクセラレーション対応
GPUアクセラレートffmpegをどこからでも利用する方法
- GPUトランスコード は高性能だが、 アクセス構築が難題
- Dockerでは --runtime=nvidia やデバイスマウント、ドライバーバージョンの調整が必要
- VMでは PCIeパススルーやSR-IOV など複雑な構成、GPUがVMにロックされる問題
- リモート利用時は NFS/SMB等の共有ファイルシステム、パスや権限管理の手間
- インフラ構成を大幅変更せず にGPUトランスコードを利用したいニーズ
ffmpeg-over-ipによる解決策
- GPU搭載マシン で ffmpeg-over-ipサーバー を起動
- アプリケーションは ffmpeg-over-ipクライアント をffmpegとして利用
- クライアントはffmpegの引数をそのままサーバーへ転送
- サーバーは パッチ済みffmpeg で実処理、ファイルI/Oは全てクライアント経由でトンネリング
- ファイルは サーバーに保存されず、 TCPポート1本のみ で通信
- GPUパススルー不要、NFS不要、SMB不要 のシンプル構成
システム構成
- クライアント(ファイル保有・GPUなし)
- ffmpeg-over-ip-clientをffmpeg互換で実行
- サーバー(GPU搭載)
- ffmpeg-over-ip-serverがTCP:5050で待機
- パッチ済みffmpegがI/Oをクライアントにトンネリング
主な特徴
- リリースバイナリ にffmpeg/ffprobe同梱、 NVENC/QSV/VAAPI/AMF/VideoToolbox 等幅広いHWアクセラ対応
- ffmpegの別途インストール不要、両側でセットアップ簡単
- 同時に複数クライアント接続可能、各セッションごとに独立したffmpegプロセス起動
- Linux(x86_64/arm64)、macOS(x86_64/arm64)、Windows(x86_64) に対応
導入・運用情報
- クイックスタート :docs/quick-start.md参照、数分で導入可能
- バージョンアップガイド :docs/upgrading.md参照
- 詳細設定 :docs/configuration.md参照、設定ファイル探索パスや各種オプション
- Docker統合 :docs/docker.md参照、UNIXソケット利用やデバッグも解説
- トラブルシューティング :docs/troubleshooting.md参照、よくある問題やデバッグ方法
- ビルドガイド :CONTRIBUTING.md参照、ソースからのビルドやテスト方法
セキュリティ・ライセンス
- 認証 :HMAC-SHA256による共有シークレット署名、全コマンドをサイン
- 通信 :サーバーのみがポートを待ち受け、クライアントはアウトバウンド接続のみ
- ライセンス :fioレイヤーとffmpegパッチ(fio/, patches/)はGPL v3、他はMITライセンス(詳細はLICENSE.md参照)
まとめ
- GPU搭載マシンをサーバー化 し、 どこからでもffmpegのGPUトランスコード を利用可能
- Docker/VM/リモート環境 でのGPU利用の障壁を解消
- シンプルなTCP接続のみ で、安全かつ柔軟に運用可能