動画サムネイル / カバーフレーム

動画サムネイルAPI:任意のタイムスタンプでカバーフレームを抽出

Fotovidにタイムスタンプを指定するだけで、その1フレームをホスト画像として取得できます。ギャラリーのプレビューやフィードのサムネイル、動画のポスター画像としてそのまま使えます。

curl -X POST https://api.fotovid.co/v1/video/extract-cover \
  -H "Authorization: Bearer p6_YOUR_KEY_ID:YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://cdn.yoursite.com/clip.mp4",
    "params": {
      "at": 3
    }
  }'

1フレームの取得が見た目より難しい理由

動画サムネイルの仕組み自体は単純です。タイムスタンプにシークし、1フレームをデコードして画像としてエンコードするだけです。しかし実際には、自分でffmpegを動かすか、機能過多なメディアプラットフォームに頼るかのどちらかになります。ffmpegバイナリを同梱するとserverlessのサイズ・メモリ制限をあっさり超え、コールドスタートは遅くなり、大きな素材をデコードすると関数のタイムアウトを超えることもあります。しかも、ツールチェイン一式が必要になることはめったになく、必要なのはたった1フレームだけなのです。

  • ffmpegバイナリはほとんどのserverlessバンドルには大きすぎて、コールドスタートの予算を食いつぶします
  • 1フレームを取り出すために大きな動画をデコードすると、関数のメモリやタイムアウトの上限を超えることがあります
  • 素材の取得、処理の実行、そして結果のアップロードまで、すべて自前で行う必要があります
  • フル機能のメディアプラットフォームは、ポスター画像を1枚取得したいだけなのに、変換機能・ストレージ・CDNまでまとめて抱え込むことになります

リクエストパラメータ

POST /v1/video/extract-cover

FieldTypeDefaultDescription
source_url*string (URL)入力動画のHTTPS URL(HTTP Range経由で読み込み)
params.atnumber1フレームを取得する動画内の秒数
How it works

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

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

    サインアップしてキーを作成します。各リクエストは Authorization: Bearer p6_<key_id>:<secret> ヘッダーで認証します。新規キーには無料の利用creditsが付与されるため、料金を支払う前にサムネイル機能を組み込んで試せます。

  2. 2
    POST /v1/video/extract-cover を呼び出す

    JSONには、入力動画のhttps URLを指すsource_urlと、取得したいタイムスタンプ(HH:MM:SS.mmm形式の文字列または秒数)を指定するparamsオブジェクトを含めて送信します。Fotovidが素材を取得し、その時点のフレームをデコードして、当社のインフラ上で画像としてエンコードします——お使いのスタックにffmpegを組み込む必要はありません。

  3. 3
    返されたホスト画像URLを使う

    レスポンスはフラットなJSONで、id、type、抽出されたフレームを指すfotovidホストのurl、そしてexpires_atが含まれます。そのままサムネイルやポスターとして表示するか、ダウンロードして自分のバケットに保存すれば、保持期間を自分でコントロールできます。

よくある質問

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

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