FFmpeg を自前ビルドし、C++ で動画編集 API サーバーとして提供するための実験・開発リポジトリ。
このプロジェクトの目標は、FFmpeg を自前ビルドしたうえで、C++ ベースの動画編集 API サーバーを構築し、 開発者が複雑な FFmpeg 統合を意識せずに動画処理機能を利用できる基盤を作ることです。
最終的には、以下のような処理を HTTP API 経由で実行できるサービスを目指します。
- 動画のトリミング
- 複数クリップの結合
- 字幕の焼き込み
- 縦動画(Shorts / Reels / TikTok)向けの書き出し
- 将来的なフィルタグラフ処理の拡張
FFmpeg は非常に強力ですが、実運用では次のような壁があります。
- 自前ビルドが難しい
- プラットフォームごとの組み込みが面倒
- ライセンスや配布形態の整理が必要
- アプリ側に直接埋め込むと運用や更新が重い
- 開発者が「本当に欲しい機能」に到達するまでの初期コストが高い
このリポジトリでは、そうした複雑さをサーバー側に集約し、 将来的には「動画編集処理を API として呼び出せる状態」を目指します。
まずは、最小構成の C++ API サーバーを完成させることを第一目標にします。
- FFmpeg を自前ビルドしてサーバー環境で利用可能にする
- C++ で API サーバーを立ち上げる
- 最低限のジョブ実行エンドポイントを用意する
- ローカル環境で動画 1 本を処理できる
- エラー内容をログとして確認できる
POST /healthまたはGET /healthPOST /trimPOST /burn-subtitlesPOST /concat
このリポジトリは、現時点では完成済みの API サーバーではありません。
現在は、
- FFmpeg のネイティブ統合
- C++ からの処理呼び出し
- Kotlin / JNI を経由した実験
を確認しているプロトタイプ段階です。
つまり、今あるコードは「最終形」ではなく、 FFmpeg ベースの動画処理基盤を理解・検証するための土台として位置づけています。
処理の中核は C++ で実装し、FFmpeg に近い層を自分で制御できるようにします。 これにより、将来的に以下の展開がしやすくなります。
- Linux サーバー化
- Android / iOS 向けのラッパー追加
- CLI ツール化
- SDK 化
最初から UI やアプリ完成品を目指すのではなく、 動画編集処理そのものを API として安定提供することを優先します。
v0.1 では万能な編集エンジンを目指しません。 まずは以下のような単機能 API を堅く動かします。
- trim
- subtitles burn
- concat
Client / Tool / App
│
▼
HTTP API Layer
│
▼
C++ Application Layer
│
▼
FFmpeg Processing Layer
│
▼
File Storage / Output
将来的には、ジョブキューや非同期処理も検討しますが、 最初は同期実行・ローカルファイル入力で十分と考えています。
- 動画編集機能をアプリに組み込みたい開発者
- ショート動画生成を自動化したい個人開発者
- FFmpeg の組み込み負荷を減らしたいプロトタイパー
- 将来的に SDK / SaaS / 社内ツールへつなげたいケース
- 現在のネイティブ処理コードを整理
- Android 前提の構成から C++ サーバー前提の構成へ寄せる
- ローカル絶対パス依存を排除
- ビルド手順を再現可能にする
- ルーティング層を用意する
-
/healthを実装する -
/trimを実装する - 処理結果をファイルとして返せるようにする
-
/burn-subtitles -
/concat - ログ整備
- 入力検証
- エラーハンドリングの改善
- README 整備
- API 仕様書整備
- Docker 化
- 利用例の追加
- 無料公開版の整備
現段階では、以下は優先しません。
- 完成済みの一般向け動画編集アプリ
- 高度な GUI タイムラインエディタ
- AI ベースの自動編集
- いきなりの商用販売
- すべてのコーデック・機能への対応
- いきなりの大規模分散処理
最初は無料公開を前提とします。
狙いは売上よりも先に、
- FFmpeg を自前ビルドして扱える
- C++ で動画編集基盤を組める
- API として公開できる
という技術的実績を形にすることです。
その後、必要に応じて以下を検討します。
- 無料 OSS 版
- 導入支援
- 特化機能の追加
- 商用ライセンスやサポート
このプロジェクトは FFmpeg を利用する前提のため、 FFmpeg 本体のライセンス条件(LGPL / GPL など)を十分に確認しながら進める必要があります。
このリポジトリのコードと、依存ライブラリのライセンス条件は分けて管理する予定です。 商用利用や再配布を考える場合は、必ず各ライセンス条件を確認してください。
Note: この README は法的助言ではありません。
この README は、将来の完成形を先に固定するための事前設計ドキュメントでもあります。 実装が進むにつれて、内容は更新されます。
特に重要なのは次の一点です。
このプロジェクトは「FFmpeg を触ること」自体が目的ではなく、 FFmpeg を土台にして、他人が使える動画編集 API 基盤を作ることが目的です。
Nobuaki Tanaka