動画サムネイル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
| Field | Type | Default | Description |
|---|---|---|---|
| source_url* | string (URL) | — | 入力動画のHTTPS URL(HTTP Range経由で読み込み) |
| params.at | number | 1 | フレームを取得する動画内の秒数 |
最初の呼び出しを3ステップで
- 1無料のAPIキーを取得
サインアップしてキーを作成します。各リクエストは Authorization: Bearer p6_<key_id>:<secret> ヘッダーで認証します。新規キーには無料の利用creditsが付与されるため、料金を支払う前にサムネイル機能を組み込んで試せます。
- 2POST /v1/video/extract-cover を呼び出す
JSONには、入力動画のhttps URLを指すsource_urlと、取得したいタイムスタンプ(HH:MM:SS.mmm形式の文字列または秒数)を指定するparamsオブジェクトを含めて送信します。Fotovidが素材を取得し、その時点のフレームをデコードして、当社のインフラ上で画像としてエンコードします——お使いのスタックにffmpegを組み込む必要はありません。
- 3返されたホスト画像URLを使う
レスポンスはフラットなJSONで、id、type、抽出されたフレームを指すfotovidホストのurl、そしてexpires_atが含まれます。そのままサムネイルやポスターとして表示するか、ダウンロードして自分のバケットに保存すれば、保持期間を自分でコントロールできます。
