您可以使用 Media Transformations 优化和操作存储在 Cloudflare Stream 之外 的视频。转换后的视频和图像从您在 Cloudflare 上的某个 zone 提供。
要转换视频或图像,必须为 zone 启用转换。如果您的 zone 已启用 Image Transformations,也可以使用 Media Transformations 优化视频。
您可以使用 Media Transformations 动态优化和生成存储在 Cloudflare Stream 之外 的视频的静态图像。
Cloudflare 会自动在全球网络上缓存每个转换后的视频或图像,因此您只需在源站存储原始图像。
要在 zone 上启用转换:
-
在 Cloudflare 仪表板中,前往 Transformations(转换) 页面。
Go to Transformations ↗ -
找到要启用转换的具体 zone。
-
为该 zone 选择 Enable(启用)。
您可以通过请求特殊格式的 URL 来转换和调整视频大小,无需编写任何代码。URL 格式为:
https://example.com/cdn-cgi/media/<OPTIONS>/<SOURCE-VIDEO>example.com:您的网站或 Cloudflare 上的 zone,已启用 Transformations。/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结果是可在 HTML video 元素中使用而无需播放器库的 MP4。
指定要生成的输出类型。
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,或 animated GIF。其他格式可能可用但未测试。
从 Cloudflare Worker 使用 Media Transformations 时,建议使用 绑定(binding)。否则,如果 Worker 在与触发器相同的 zone 上调用 Media Transformations,请应用 global_fetch_strictly_public 兼容性标志以避免 /cdn-cgi/media 路径出现 404 错误。
2025 年 11 月 1 日之后,Media Transformations 和 Image Transformations 将使用相同的订阅和用量指标。
- 从视频生成单帧静态图像计为 1 次转换。
- 生成优化视频或提取音频按输出内容 每秒 计为 1 次转换。
- 每个唯一转换(由输入和标志的唯一组合确定)在每个日历月内仅计费一次。
- 所有 Media 和 Image Transformations 每 1,000 次月度唯一转换操作 $0.50,每月免费配额 5,000 次。