Media Transformations を使うと、Cloudflare Stream の 外 に保存した動画を最適化・加工できます。変換後の動画と画像は、Cloudflare 上のゾーンのいずれかから配信されます。
動画または画像を変換するには、ゾーンで 変換を有効 にする必要があります。ゾーンですでに Image Transformations が有効な場合は、Media Transformations で動画も最適化できます。
Media Transformations を使うと、Cloudflare Stream の 外 に保存した動画を動的に最適化し、静止画を生成できます。
Cloudflare は変換後の動画と画像をグローバルネットワーク上で自動キャッシュします。オリジンに保存するのは元の画像だけで済みます。
ゾーンで変換を有効にする手順は次のとおりです。
-
Cloudflare ダッシュボードで Transformations ページを開きます。
Transformations を開く ↗ -
変換を有効にしたいゾーンを探します。
-
そのゾーンの Enable を選びます。
特別な形式の URL でリクエストするだけで、コードを書かずに動画の変換とリサイズができます。URL の形式は次のとおりです。
https://example.com/cdn-cgi/media/<OPTIONS>/<SOURCE-VIDEO>example.com: Transformations を有効にした、Cloudflare 上のウェブサイトまたはゾーンです。/cdn-cgi/media/: Cloudflare 組み込みのメディア変換サービスが扱う特別なパスを示すプレフィックスです。<OPTIONS>: カンマ区切りのオプション一覧です。利用できるオプションは以下を参照してください。<SOURCE-VIDEO>: リサイズ対象の元アセットの完全な URL です(https://またはhttp://で始まります)。
たとえば次の URL は、R2 バケットから HD 動画を取得し、短く切り取り、正方形にクロップしてリサイズし、音声を除去します。
https://example.com/cdn-cgi/media/mode=video,time=5s,duration=5s,width=500,height=500,fit=crop,audio=false/https://pub-8613b7f94d6146408add8fefb52c52e8.r2.dev/aus-mobile-demo.mp4結果は MP4 で、プレーヤーライブラリなしで HTML の video 要素に使えます。
生成する出力の種類を指定します。
video: H.264/AAC で最適化した MP4 ファイルを出力します。frame: 静止画を出力します。spritesheet: 複数フレームを含む JPEG を出力します。audio: AAC エンコードの M4A ファイルを出力します。
入力ファイルから出力の抽出を開始する位置を指定します。mode によって意味が変わります。
modeがspritesheet、video、またはaudioの場合、出力の開始タイムスタンプを指定します。modeがframeの場合、静止画を抽出するタイムスタンプを指定します。- 時刻文字列で指定します。例: 5s、2m
- 許容範囲: 0 ~ 10m
- デフォルト: 0
出力動画または spritesheet の長さです。mode によって意味が変わります。
modeがvideoまたはaudioの場合、出力の長さを指定します。modeがspritesheetの場合、フレームを選ぶ時間範囲を指定します。- 許容範囲: 1s ~ 60s(または 1m)
- デフォルト: 入力の長さまたは 60 秒のうち短い方
width と height と組み合わせて、出力のリサイズとクロップ方法を指定します。リサイズする場合は常に縦横比を保ち、内容が引き伸ばされないようにします。
contain: 縦横比を保ち、出力寸法の内側に動画が収まるよう拡大または縮小します。scale-down: contain と同じですが、縮小のみです。拡大しません。cover: 縦横比を保ち、出力寸法を完全に覆うよう拡大または縮小し、余りは中央基準でクロップします。
出力の最大高さをピクセルで指定します。正確な挙動は fit に依存します。
- 許容範囲: 10 ~ 2000 ピクセル
画像の最大幅をピクセルで指定します。正確な挙動は fit に依存します。
- 許容範囲: 10 ~ 2000 ピクセル
mode が video の場合、ソース音声を出力に含めるかどうかを指定します。
true: ソース音声を含めます。false: 無音で出力します。- デフォルト:
true
mode が audio の場合、audio を false にはできません。
mode が frame の場合、画像の出力形式を指定します。
- 指定できる値:
jpg、png
mode が audio の場合、音声の出力形式を指定します。
- 指定できる値:
m4a(デフォルト)
返される Content-Disposition ヘッダーで使うファイル名を指定します。指定しない場合、ファイル名はソース URL から導出します。
- 指定できる値:
- 長さは最大 120 文字です。
- 使えるのは小文字(a-z)、数字(0-9)、ハイフン(-)、アンダースコア(_)、および任意の拡張子だけです。有効な名前は次の正規表現を満たします:
^[a-zA-Z0-9-_]+.?[a-zA-Z0-9-_]+$。
- 例:
default.mp4、shortened-clip_5s
- 入力動画は 100MB 未満である必要があります。
- 入力動画は、H.264 エンコードの映像と AAC または MP3 エンコードの音声を持つ MP4 を推奨します。他の形式でも動く場合がありますが、未検証です。
- オリジンは HTTP HEAD と range リクエストに対応し、Content-Range ヘッダーを返す必要があります。
- 入力ファイルサイズの上限は 100 MB です。入力動画の長さの上限は 10 分です。
- Media Transformations は Bring Your Own IP (BYOIP) と併用できません。
- 入力動画は、H.264 エンコードの映像と AAC または MP3 エンコードの音声を持つ MP4、またはアニメーション GIF を推奨します。他の形式でも動く場合がありますが、未検証です。
Cloudflare Worker から Media Transformations を使う場合は、bindings の利用を推奨します。そうでない場合、Worker のトリガーと同じゾーンで Media Transformations を呼び出すときは、/cdn-cgi/media パスで 404 にならないよう global_fetch_strictly_public 互換フラグを適用します。
2025 年 11 月 1 日以降、Media Transformations と Image Transformations は同じサブスクリプションと利用量指標を使います。
- 動画から静止画(1 枚の画像)を生成すると、1 変換としてカウントします。
- 最適化した動画の生成、または音声の抽出は、出力コンテンツの 1 秒あたり 1 変換としてカウントします。
- 入力とフラグの組み合わせで決まる一意の変換は、暦月あたり 1 回だけ課金されます。
- Media Transformations と Image Transformations の料金は、月間の一意な変換操作 1,000 件あたり $0.50 です。毎月 5,000 件までは無料です。