Skip to content

midorij347/ffmpeg1

Repository files navigation

ffmpeg1

FFmpeg を自前ビルドし、C++ で動画編集 API サーバーとして提供するための実験・開発リポジトリ。

概要

このプロジェクトの目標は、FFmpeg を自前ビルドしたうえで、C++ ベースの動画編集 API サーバーを構築し、 開発者が複雑な FFmpeg 統合を意識せずに動画処理機能を利用できる基盤を作ることです。

最終的には、以下のような処理を HTTP API 経由で実行できるサービスを目指します。

  • 動画のトリミング
  • 複数クリップの結合
  • 字幕の焼き込み
  • 縦動画(Shorts / Reels / TikTok)向けの書き出し
  • 将来的なフィルタグラフ処理の拡張

このプロジェクトで解決したいこと

FFmpeg は非常に強力ですが、実運用では次のような壁があります。

  • 自前ビルドが難しい
  • プラットフォームごとの組み込みが面倒
  • ライセンスや配布形態の整理が必要
  • アプリ側に直接埋め込むと運用や更新が重い
  • 開発者が「本当に欲しい機能」に到達するまでの初期コストが高い

このリポジトリでは、そうした複雑さをサーバー側に集約し、 将来的には「動画編集処理を API として呼び出せる状態」を目指します。


スモールゴール

まずは、最小構成の C++ API サーバーを完成させることを第一目標にします。

v0.1 の到達目標

  • FFmpeg を自前ビルドしてサーバー環境で利用可能にする
  • C++ で API サーバーを立ち上げる
  • 最低限のジョブ実行エンドポイントを用意する
  • ローカル環境で動画 1 本を処理できる
  • エラー内容をログとして確認できる

v0.1 で最初に扱う予定の API

  • POST /health または GET /health
  • POST /trim
  • POST /burn-subtitles
  • POST /concat

いまの位置づけ

このリポジトリは、現時点では完成済みの API サーバーではありません

現在は、

  • FFmpeg のネイティブ統合
  • C++ からの処理呼び出し
  • Kotlin / JNI を経由した実験

を確認しているプロトタイプ段階です。

つまり、今あるコードは「最終形」ではなく、 FFmpeg ベースの動画処理基盤を理解・検証するための土台として位置づけています。


設計方針

1. C++ を中核に置く

処理の中核は C++ で実装し、FFmpeg に近い層を自分で制御できるようにします。 これにより、将来的に以下の展開がしやすくなります。

  • Linux サーバー化
  • Android / iOS 向けのラッパー追加
  • CLI ツール化
  • SDK 化

2. まずはサーバー API として成立させる

最初から UI やアプリ完成品を目指すのではなく、 動画編集処理そのものを API として安定提供することを優先します。

3. 機能を狭くして完成を優先する

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 / 社内ツールへつなげたいケース

今後のロードマップ

Phase 1: 基盤整理

  • 現在のネイティブ処理コードを整理
  • Android 前提の構成から C++ サーバー前提の構成へ寄せる
  • ローカル絶対パス依存を排除
  • ビルド手順を再現可能にする

Phase 2: 最小 API サーバー

  • ルーティング層を用意する
  • /health を実装する
  • /trim を実装する
  • 処理結果をファイルとして返せるようにする

Phase 3: 実用機能の追加

  • /burn-subtitles
  • /concat
  • ログ整備
  • 入力検証
  • エラーハンドリングの改善

Phase 4: 配布と公開

  • README 整備
  • API 仕様書整備
  • Docker 化
  • 利用例の追加
  • 無料公開版の整備

非ゴール

現段階では、以下は優先しません。

  • 完成済みの一般向け動画編集アプリ
  • 高度な GUI タイムラインエディタ
  • AI ベースの自動編集
  • いきなりの商用販売
  • すべてのコーデック・機能への対応
  • いきなりの大規模分散処理

公開方針

最初は無料公開を前提とします。

狙いは売上よりも先に、

  • FFmpeg を自前ビルドして扱える
  • C++ で動画編集基盤を組める
  • API として公開できる

という技術的実績を形にすることです。

その後、必要に応じて以下を検討します。

  • 無料 OSS 版
  • 導入支援
  • 特化機能の追加
  • 商用ライセンスやサポート

ライセンスについて

このプロジェクトは FFmpeg を利用する前提のため、 FFmpeg 本体のライセンス条件(LGPL / GPL など)を十分に確認しながら進める必要があります。

このリポジトリのコードと、依存ライブラリのライセンス条件は分けて管理する予定です。 商用利用や再配布を考える場合は、必ず各ライセンス条件を確認してください。

Note: この README は法的助言ではありません。


開発メモ

この README は、将来の完成形を先に固定するための事前設計ドキュメントでもあります。 実装が進むにつれて、内容は更新されます。

特に重要なのは次の一点です。

このプロジェクトは「FFmpeg を触ること」自体が目的ではなく、 FFmpeg を土台にして、他人が使える動画編集 API 基盤を作ることが目的です。


Author

Nobuaki Tanaka

About

動画編集ソフトFFmpeg-kitが廃盤になったので自前ビルドしてSDK・APIとしてサービスを配布します。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages