動画処理

動画をフレーム精度でトリミングしてクリップ化。ffmpegのバンドルは不要です。

動画を正確なフレームで終わるクリップにトリミングします。キーフレームの処理はFotovidが担うため、境界はいつもきれいに仕上がります。差し替えるだけで使えるffmpegマイクロサービスが、ホスティングされたMP4のURLを返します。

curl -X POST https://api.fotovid.co/v1/video/trim \
  -H "Authorization: Bearer p6_YOUR_KEY_ID:YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://cdn.yoursite.com/recording.mp4",
    "params": {
      "start": "00:00:05",
      "end": "00:00:20"
    }
  }'

サーバーレスでの動画トリミングは見た目より難しい

クリップの切り出しはffmpegコマンド一つで済むように思えますが、そのコマンドをVercel、Lambda、Workersで実行するとなると話は別です。70MB以上の静的バイナリをデプロイに同梱し、コールドスタートやメモリ制限と格闘しながら、入力をストリーミングで受け取り、出力をどこかに保存しなければなりません。フレーム精度のカットには再エンコードが必須で、これがほとんどのサーバーレス関数が許容するCPU時間や実行時間を超えてしまいます。結果として、自社プロダクトとは無関係なインフラの保守を抱え込むことになります。

  • ffmpegのバイナリはサーバーレスのバンドルサイズ・メモリ制限を軽く超えてしまいます
  • フレーム精度のトリミングには重い再エンコードが必要で、CPU負荷の高さから関数がタイムアウトしてしまいます
  • 入力のダウンロードと、生成したクリップのホスティングは自分で面倒を見る必要があります
  • メディアパイプラインを自前で持たずに、きれいなハイライトクリップやSNS向けカット、短いプレビューが欲しいときはこのエンドポイントの出番です

リクエストパラメータ

POST /v1/video/trim

FieldTypeDefaultDescription
source_url*string (URL)元動画のHTTPS URL
params.start*string | number"HH:MM:SS(.mmm)" 形式、または秒数(例: 5.5)
params.end*string | numberstartより大きい値を指定。EOFで切り詰められます
How it works

最初の呼び出しを3ステップで

  1. 1
    無料のAPIキーを取得

    サインアップし、ダッシュボードからキーを作成します。認証には Authorization: Bearer p6_<key_id>:<secret> ヘッダーを送信します。新規アカウントには無料のcreditsが付与され、$1で100creditsを購入できます。トリミングは1回の呼び出しにつき1creditです。

  2. 2
    POST /v1/video/trim を呼び出す

    https://api.fotovid.co/v1/video/trim にリクエストを送信します。JSONボディにはsource_url(入力動画のHTTPS URL)と、startおよびendを持つparamsオブジェクトを指定します。startとendはどちらもHH:MM:SS.mmm形式のタイムスタンプ、または秒数の数値で指定できます。カットは半開区間[start, end)の範囲でフレーム精度になり、x264でMP4に再エンコードされます。

  3. 3
    返されたクリップのURLを使う

    レスポンスはフラットなJSONで、id、type、トリミング済みMP4のfotovidホスティングによるurl、expires_at、クリップのdurationが含まれます。ファイルをダウンロードして自分の環境に保存すれば、保存場所を自分でコントロールできます。そのまま配信したり、添付したり、ワークフローの次のステップに渡したりできます。

よくある質問

1回のAPI呼び出しでリリース

無料のキーを取得し、5分以内に最初の呼び出しを試せます。