FFHub vs Transloadit — 開発者目線の比較
Transloadit 違いを知りたい開発者向けに、API 設計・課金モデル・FFmpeg 対応・学習コストを率直に比較します。

Transloadit と FFHub はどちらもクラウドでメディアを処理しますが、アプローチはまったく違います。Transloadit は独自の Assembly 言語と Robot システムを持つ多機能なファイル処理プラットフォーム、FFHub は FFmpeg コマンドを送って結果を受け取る、用途を絞ったクラウド FFmpeg API です。本記事では選択を助けるため、主要な違いを分解していきます。
概要
Transloadit は「Assembly」と「Robot」の概念を中心に作られたメディア処理プラットフォームです。JSON ベースの DSL(ドメイン固有言語)で処理パイプラインを定義し、各ステップは専門の Robot が担当します — 動画エンコード、画像リサイズ、ファイルインポートなど、それぞれ別の Robot です。
FFHub はクラウド FFmpeg API です。標準の FFmpeg コマンドを REST API で送信すると FFHub が実行し、結果を受け取れます。1 つの概念、1 つのエンドポイントです。
比較表
| 項目 | FFHub | Transloadit |
|---|---|---|
| API モデル | REST API — FFmpeg コマンドを送信 | Assembly DSL と Robot |
| 処理範囲 | 動画・音声(FFmpeg) | 動画、音声、画像、ドキュメント |
| FFmpeg 互換性 | 100% | 部分的 — Robot のパラメータ経由で公開 |
| 学習コスト | FFmpeg を知っていれば FFHub を知っているのと同じ | Assembly 構文 + Robot カタログを学ぶ必要あり |
| 課金モデル | 処理時間(秒単位) | 出力 GB + 月額プラン |
| ファイルアップロードウィジェット | なし | あり — Uppy(オープンソース) |
| 入力ソース | URL、ローカルファイルアップロード | URL、S3、GCS、Azure、ダイレクトアップロード |
| 画像処理 | FFmpeg 経由(限定的) | フル機能(ImageMagick ベース) |
| ドキュメント処理 | なし | あり(PDF、Office ドキュメント) |
| パイプラインオーケストレーション | 連続した FFmpeg コマンド | Assembly ステップ、依存関係対応 |
| Webhook | あり | あり(notify Robot) |
| クライアントライブラリ | Node.js、Python、CLI | Node.js、Ruby、Python、PHP、Java、Go |
| ベンダーロックイン | なし — 標準 FFmpeg | 高い — 独自の Assembly DSL |
API 設計: FFmpeg コマンド vs Assembly DSL
両者の根本的な違いはここにあります。
FFHub: 1 つのコマンド
curl -X POST https://api.ffhub.io/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"command": "ffmpeg -i https://example.com/input.mp4 -c:v libx264 -crf 23 -vf scale=1280:720 -c:a aac -b:a 128k output.mp4"
}'
FFmpeg を使ったことがあるなら、これはすぐ読めます。ローカルマシンで実行するのと同じコマンドです。
Transloadit: Assembly と Robot
{
"steps": {
"imported": {
":robot": "/http/import",
"url": "https://example.com/input.mp4"
},
"encoded": {
":robot": "/video/encode",
"use": "imported",
"preset": "iphone-high",
"width": 1280,
"height": 720,
"ffmpeg_stack": "v6.0.0",
"ffmpeg": {
"crf": 23,
"b:a": "128k"
}
},
"exported": {
":robot": "/s3/store",
"use": "encoded",
"bucket": "my-bucket",
"key": "output/${file.id}.mp4",
"credentials": "my_aws_creds"
}
}
}
Transloadit の Assembly 構文は冗長ですが構造化されています。各「ステップ」が特定のアクションを行う「Robot」を使い、Robot は use キーワードでチェーンします。
学習コスト
FFHub の学習コストは、FFmpeg を知っていれば実質ゼロです。ローカルで実行するのと同じコマンドを書きます。
Transloadit では以下を学ぶ必要があります。
- Assembly の JSON 構造
- Robot カタログ(50 以上の Robot)
useディレクティブによる Robot のチェーン方法- Robot ごとのパラメータ(FFmpeg のフラグとは異なる)
- 再利用可能な Assembly のためのテンプレート構文
Transloadit のドキュメントは充実していますが、新しいメンタルモデルを取り込む必要があります。
FFmpeg の柔軟性
FFHub: 制限なし
FFHub は FFmpeg コマンドをそのまま実行します。FFmpeg がサポートするすべての機能が使えます。
# 複数入力の複雑なフィルタグラフ
ffmpeg -i video.mp4 -i overlay.png -i audio.mp3 \
-filter_complex \
"[0:v][1:v]overlay=10:10[bg]; \
[bg]drawtext=text='%{pts\:hms}':fontsize=20:fontcolor=white:x=10:y=H-th-10[v]" \
-map "[v]" -map 2:a \
-c:v libx264 -crf 22 -c:a aac output.mp4
# 精密なビットレート制御のための 2-pass エンコード
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -pass 1 -f null /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -pass 2 output.mp4
# パレット最適化付きアニメ GIF を生成
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
# 音声抽出、ノーマライズ、Opus 変換
ffmpeg -i input.mp4 -vn -af "loudnorm=I=-16:TP=-1.5:LRA=11" -c:a libopus -b:a 128k output.opus
Transloadit: Robot のパラメータ経由
Transloadit は FFmpeg オプションの一部を Robot のパラメータとして公開しますが、すべてではありません。
{
"steps": {
"encoded": {
":robot": "/video/encode",
"use": "imported",
"preset": "empty",
"ffmpeg_stack": "v6.0.0",
"width": 1280,
"height": 720,
"ffmpeg": {
"crf": 23,
"b:a": "128k",
"vf": "drawtext=text='Hello':fontsize=24:fontcolor=white:x=10:y=10"
}
}
}
}
Robot ステップ内の ffmpeg オブジェクトで一部の FFmpeg フラグを渡せますが、複雑なフィルタグラフ、複数入力の処理、多くの高度な機能は直接サポートされていません。Robot システムが公開するものに制限されます。
Transloadit で簡単にはできないこと:
- 複数入力のフィルタグラフ(複数の動画ソースを組み合わせる)
- 2-pass エンコード
- 任意のストリームマッピング
- 一部のマイナーな codec と出力フォーマット
- 複雑な条件を伴うカスタムフレーム抽出ロジック
価格比較
FFHub の料金
シンプルで透明:
- 実際の処理時間秒単位
- $0.005/秒(標準ティア)
- 24 時間の一時ストレージは無料
- データ転送込み
Transloadit の料金
月額プランと出力ボリュームに基づきます:
| プラン | 月額 | 含まれる GB | 超過分(GB あたり) |
|---|---|---|---|
| Startup | $49/月 | 10 GB | $4.00/GB |
| Growth | $149/月 | 50 GB | $3.00/GB |
| Business | $449/月 | 200 GB | $2.25/GB |
| Enterprise | カスタム | カスタム | カスタム |
Transloadit は処理時間ではなく**出力ファイルサイズ(GB)**で課金します。これが意味するのは:
- 1GB の出力ファイルは、処理に 10 秒かかろうと 10 分かかろうと同じコスト
- 1 つの入力から複数の出力を生成すると、コストは倍々になる
- 音声のみの出力(小さいファイルサイズ)は比較的安い
- 高解像度・高ビットレートの出力(大きいファイルサイズ)は高い
コスト計算: 実シナリオ
シナリオ 1: 1,000 本の動画、各 5 分、H.264 720p 出力(各約 150MB)
| FFHub | Transloadit | |
|---|---|---|
| 計算 | 平均 30 秒 × 1,000 × $0.005 | 出力 150GB × $3.00/GB(Growth プラン) |
| 処理コスト | $150 | $450 |
| 月額プラン | $0 | $149 |
| 合計 | $150 | $599 |
シナリオ 2: 200 本の動画、各 2 分、マルチビットレート(1080p + 720p + 480p、動画 1 本あたり合計約 300MB)
| FFHub | Transloadit | |
|---|---|---|
| 計算 | 平均 60 秒 × 200 × $0.005 | 出力 60GB × $4.00/GB(Startup プラン) |
| 処理コスト | $60 | $240 |
| 月額プラン | $0 | $49 |
| 合計 | $60 | $289 |
シナリオ 3: 10,000 件の音声抽出、各出力約 5MB
| FFHub | Transloadit | |
|---|---|---|
| 計算 | 平均 3 秒 × 10,000 × $0.005 | 出力 50GB × $3.00/GB(Growth プラン) |
| 処理コスト | $150 | $150 |
| 月額プラン | $0 | $149 |
| 合計 | $150 | $299 |
FFHub の秒単位モデルは予測しやすく、特に大きな出力ファイルを生成する場合は安く済むことが多いです。Transloadit の GB 単位モデルは、長時間処理から小さな出力を生成するタスクで経済的になることがあります。同様の価格分析は AWS MediaConvert との比較 も参照してください。
ファイルアップロード: Uppy vs ダイレクト API
Transloadit: Uppy アップロードウィジェット
Transloadit の目玉機能の 1 つが、オープンソースのファイルアップロードウィジェット Uppy です。
<script>
import Uppy from '@uppy/core'
import Transloadit from '@uppy/transloadit'
const uppy = new Uppy()
.use(Transloadit, {
assemblyOptions: {
params: {
auth: { key: 'YOUR_TRANSLOADIT_KEY' },
steps: {
encoded: {
robot: '/video/encode',
preset: 'iphone-high'
}
}
}
}
})
</script>
Uppy はドラッグ&ドロップ、プログレスバー、レジューム可能アップロード、Web カメラ撮影をすぐに使える形で提供します。ユーザー向けのアップロード UI を構築するなら、これは本当に価値があります。
FFHub: API と CLI
FFHub は API と CLI でファイルアップロードを扱います。
# CLI アップロード
ffhub upload video.mp4 --command "ffmpeg -i video.mp4 -c:v libx264 output.mp4"
# API アップロード
curl -X POST https://api.ffhub.io/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "[email protected]" \
-F 'command=ffmpeg -i video.mp4 -c:v libx264 -crf 23 output.mp4'
FFHub はフロントエンドのアップロードウィジェットを提供しません。ユーザー向けアップロードには、自前で構築するかサードパーティのソリューションを使う必要があります。
動画を超えて: Transloadit の広い守備範囲
Transloadit は動画以外も処理します。Robot カタログには次のものが含まれます。
- 画像処理: リサイズ、クロップ、ウォーターマーク、顔検出、スマートクロップ
- ドキュメント処理: PDF 生成、Office ドキュメント変換
- 音声処理: 波形生成、音声認識
- ファイル管理: S3、GCS、Azure、FTP、SFTP からの / へのインポート・エクスポート
アプリケーションが(動画だけでなく)あらゆるファイル処理を 1 つのサービスで賄いたいなら、Transloadit の幅広さは大きなアドバンテージです。
FFHub は FFmpeg にレーザーフォーカスしています。動画と音声の処理に優れますが、画像(FFmpeg でできる範囲を超えたもの)やドキュメントは扱いません。
パイプラインオーケストレーション
Transloadit: Assembly ステップ
Transloadit の Assembly システムは複数の Robot をパイプラインにつなげます。
{
"steps": {
"imported": {
":robot": "/http/import",
"url": "https://example.com/input.mp4"
},
"thumbnails": {
":robot": "/video/thumbs",
"use": "imported",
"count": 5
},
"encoded_hd": {
":robot": "/video/encode",
"use": "imported",
"preset": "iphone-high",
"width": 1920,
"height": 1080
},
"encoded_sd": {
":robot": "/video/encode",
"use": "imported",
"preset": "iphone",
"width": 854,
"height": 480
},
"stored": {
":robot": "/s3/store",
"use": ["thumbnails", "encoded_hd", "encoded_sd"],
"bucket": "my-bucket"
}
}
}
互いに依存しないステップは自動的に並列実行されます。複雑なメディアパイプラインには強力です。
FFHub: 連続または並列タスク
FFHub は複数の API コールまたは複合 FFmpeg コマンドでパイプラインを扱います。
# 複数出力を持つ単一コマンド
ffmpeg -i input.mp4 \
-vf scale=1920:1080 -c:v libx264 -crf 22 output_hd.mp4 \
-vf scale=854:480 -c:v libx264 -crf 24 output_sd.mp4 \
-vf "fps=1/60" -q:v 2 thumb_%02d.jpg
より複雑なパイプラインの場合、複数のタスクをサブミットしてアプリケーションコード側でオーケストレーションを行います。フルコントロールが手に入る代わりに、実装の手間は増えます。
Transloadit が向いているケース
1. Uppy アップロードウィジェット
ユーザー向けファイルアップロードでは Uppy は秀逸です — ドラッグ&ドロップ、レジューム可能アップロード、Web カメラ、プログレスバー、すべてオープンソース。
2. 幅広いファイル処理
画像リサイズ、ドキュメント変換、動画以外のタスクを 1 つのサービスで扱えます。
3. Assembly パイプライン
複雑な多段階ワークフローでは、自動並列化付きの Transloadit Assembly システムは強力です。
4. クライアントライブラリ
7 言語以上の公式 SDK が、Assembly システムと深く統合されています。
5. テンプレートシステム
再利用可能な Assembly テンプレートで処理パイプラインを一度定義し、名前で呼び出せるため、本番デプロイがクリーンになります。
FFHub が向いているケース
1. FFmpeg ネイティブ
本物の FFmpeg コマンドを書きます。翻訳レイヤーも、覚えるべき Robot のパラメータもありません。FFmpeg の知識がそのまま活きます。
2. シンプルな課金
処理時間の秒単位課金。月額プランも、GB 計算も、超過の不意打ちもありません。
3. フル FFmpeg の柔軟性
複雑なフィルタグラフ、2-pass エンコード、任意の codec、カスタムストリームマッピング — FFmpeg ができることはすべて。
4. 学習コストが低い
FFmpeg を知っているなら数分で始められます。Assembly DSL や Robot カタログを学ぶ必要はありません。
5. ベンダーロックインなし
標準 FFmpeg コマンドはどこでも動きます。FFHub から離れるなら、自前のサーバーで同じコマンドを動かすだけです。
6. 透明な処理
何が実行されるか正確に見えます — あなたの FFmpeg コマンドそのもの。挙動が文書化されていないブラックボックスの Robot はありません。
どちらを選ぶべきか
FFHub を選ぶべきケース:
- フル FFmpeg コマンドの柔軟性が必要
- 処理対象が動画・音声中心
- シンプルな秒単位の料金がほしい
- ベンダーロックインゼロを重視する
- チームがすでに FFmpeg を知っている
- 複雑なフィルタチェーンやエンコードオプションが必要
Transloadit を選ぶべきケース:
- ユーザー向けファイルアップロードウィジェット(Uppy)が必要
- アプリケーションが動画に加えて画像とドキュメントも処理する
- Assembly によるマネージドな多段階パイプラインがほしい
- 生の FFmpeg コマンドより高レベルな抽象化を好む
- 50 以上の専門 Robot の幅広さが必要
FFHub をはじめる
FFmpeg の柔軟性とシンプルな料金が必要なら、FFHub.io で数分で動かせます。
# CLI をインストール
npm install -g ffhub
# 任意の FFmpeg コマンドをクラウドで実行
ffhub run "ffmpeg -i https://example.com/input.mp4 -c:v libx264 -crf 23 -vf scale=1280:720 output.mp4"
# ローカルファイルをアップロード
ffhub upload video.mp4 --command "ffmpeg -i video.mp4 -c:v libx265 -crf 28 output.mp4"
Assembly 構文も、Robot カタログもなし。ただ FFmpeg だけです。
まとめ
Transloadit と FFHub は重なりつつも異なる市場を担当します。Transloadit は包括的なファイル処理プラットフォーム — 画像リサイズ、ドキュメント変換、動画エンコードを高度なパイプラインシステム付きで一括して扱いたいなら強力な選択肢です。FFHub はクラウドで FFmpeg のフルパワーを、最小限の抽象化と透明な料金で使いたい開発者のために作られています。
純粋な動画・音声処理で最大の柔軟性がほしいなら、FFHub の FFmpeg ネイティブなアプローチは強力です。マネージドオーケストレーション付きの幅広いファイル処理が必要なら、Transloadit のほうが標準で多くを提供します。主要なユースケースに合うほうを選んでください。FFHub を SaaS プロダクト や バッチトランスコードワークフロー で評価しているなら、それらのガイドが統合パターンをより深く扱っています。
関連記事
- FFHub vs AWS MediaConvert - Amazon のマネージドトランスコードサービスとの料金・柔軟性・セットアップの比較
- FFHub vs Coconut - API 設計と FFmpeg 互換性に焦点を当てた、もう 1 つの開発者向け比較
- Video Processing for SaaS - SaaS プロダクトに動画機能を追加する build vs buy の判断ガイド