目录
大纲

CloudFlare R2

简介

基于 CloudFlare R2 对象存储在 WordPress 中实现视频文件的管理和播放。

Cloudflare R2 是 CloudFlare 推出的对象存储服务,兼容 AWS S3 API,最大卖点是零出口流量费用。Mine CloudVod 集成了 R2 存储,让你可以将视频文件存储在 R2 中,在 WordPress 中直接浏览、上传、管理和播放 R2 中的视频文件。

优点

  • 零出口流量费:不存在流量费用,与大多数云存储(AWS S3、阿里云 OSS 等)形成鲜明对比
  • S3 兼容 API:兼容 AWS S3 生态,可使用各类 S3 工具管理文件
  • 全球 CDN:基于 CloudFlare 全球网络分发
  • 免费额度:每月 10GB 存储免费,小规模使用几乎零成本
  • 客户端直传:支持从浏览器直接上传到 R2,不经过 WordPress 服务器中转

缺点

  • R2 不提供视频转码服务,上传的视频必须使用浏览器兼容的格式(如 MP4/H.264)
  • 国内访问速度可能受限,建议绑定自定义域名
  • 管理操作在境内可能较慢

准备工作

  1. 注册 CloudFlare 账号
  2. 在 CloudFlare 后台创建 R2 存储桶:
    • 进入 CloudFlare Dashboard → R2 → 创建存储桶
    • 给存储桶命名(如 my-videos),选择区域后创建

后台设置

第一步:获取 API Token

⚠️ 重要:R2 REST API 仅支持 API Token(Bearer Token)认证,不支持 Global API Key + Email 方式。如果你用 Global API Key,R2 功能将无法使用。

  1. 进入 CloudFlare 后台 → 右上角头像 → 我的个人资料 → API 令牌
  2. 点击「创建令牌」→ 选择「创建自定义令牌」
  3. 权限配置:
    • 权限Cloudflare R2 — Edit
    • 资源包括 — 特定账户 — 你的账户
  4. 创建后复制生成的 Token
  5. 获取你的 Account ID(在控制台首页右侧可见)

第二步:填写 AccessKey 设置

进入 WordPress 后台 → Mine云点播 → 设置 → CloudFlare → AccessKey 设置

字段说明
Account ID你的 CloudFlare 账户 ID(必填
API Token上一步创建的 API Token(必填,R2 必须用此项认证)

💡 R2 不需要填 Email 和 API Key 字段。API Token 填写后,Email 和 API Key 可以留空。

第三步:R2 存储设置

切换到 CloudFlare → R2 标签:

  1. 点击页面上的「Sync Buckets List」链接,同步你的 R2 存储桶列表
  2. 同步完成后,在 Bucket 下拉框中选择你要使用的存储桶
  3. (可选)如果需要客户端直传功能,填写:
    • R2 Access Key ID:通过 CloudFlare 后台创建的 R2 API Token 对应的 Access Key ID
    • R2 Secret Access Key:对应的 Secret Access Key

💡 Access Key ID 和 Secret Access Key 用于浏览器直传到 R2 的功能。如不需要直传(使用 WordPress 服务器中转上传),可以留空。

填写后点击 保存


使用方法

区块编辑器

R2 和 CloudFlare Stream 共用同一个区块「CloudFlare」:

  1. 在文章编辑页面,插入「CloudFlare」区块
  2. 区块显示两个按钮:
    • 添加/选择 Stream — CloudFlare Stream 视频
    • 添加/选择 R2 — R2 存储的视频
  3. 点击「添加/选择 R2」,弹出 R2 视频管理窗口:
  4. 在 R2 视频管理窗口中可以:
    • 📂 选择 Bucket:顶部下拉框可以切换不同的存储桶
    • 📋 浏览文件列表:显示 Bucket 中的视频文件(自动过滤非视频文件)
    • 🔍 搜索文件:通过文件名关键字搜索
    • 📤 上传文件:拖拽或选择本地视频文件上传
    • 🗑️ 删除文件:选中文件后可查看详情并删除
  5. 选择视频后,视频将插入文章中。

上传方式说明

R2 支持两种上传方式:

  1. 客户端直传(推荐):
    • 文件从浏览器直接上传到 R2,不经过 WordPress 服务器
    • 速度快,不占用服务器带宽
    • 需要在 R2 设置中填写 Access Key ID 和 Secret Access Key
    • 使用 AWS S3 预签名 URL 协议,安全可靠
  2. 服务端代理上传
    • 文件先上传到 WordPress 服务器,再由服务器转发到 R2
    • 不需要额外配置 Access Key ID
    • 受限于服务器上传限制和带宽

播放 URL 策略

插件获取 R2 视频播放地址时,按以下优先级自动选择:

优先级方式说明
1️⃣自定义域名如果为 R2 存储桶绑定了自定义域名,优先使用(国内访问推荐)
2️⃣r2.dev 托管域名CloudFlare 提供的免费 *.r2.dev 域名
3️⃣API 代理通过 API 获取临时下载链接(有有效期限制)

💡 域名解析结果会被缓存 1 小时,确保页面加载速度。

播放器设置

与 CloudFlare Stream 相同的播放器设置:

设置项说明
视频标记在视频时间轴上添加标记点
价格设置付费观看价格和预览时长
仅登录可看开启后,只有已登录用户才能观看
自动播放页面加载后自动开始播放
宽度 / 高度播放器尺寸,默认 100% / auto
封面图自定义视频封面

注意事项

视频格式

R2 只负责存储和分发文件,不提供转码服务。因此上传的视频必须确保:

  • 浏览器可以直接播放(推荐 MP4/H.264 编码)
  • 建议使用 ffmpeg 或类似工具预先转码为 Web 兼容格式
  • 如果需要自适应码率,建议配合 CloudFlare Stream 使用

R2 vs Stream 对比

对比维度CloudFlare R2CloudFlare Stream
用途对象存储(通用文件)视频托管(专用视频平台)
转码❌ 不提供✅ 自动转码多码率
出口流量费✅ 免费按观看时长收费
存储费$0.015/GB/月$5/1000分钟/月
适用场景已有转码好的 MP4 视频,想低成本分发需要自动转码和自适应码率的场景

绑定自定义域名(推荐)

为 R2 存储桶绑定自定义域名,可以显著改善国内访问体验:

  1. 在 CloudFlare DNS 中添加你的域名
  2. 在 R2 设置中为存储桶添加自定义域名
  3. 域名需要 NS 托管在 CloudFlare(自动配置 SSL)

常见问题

同步存储桶列表失败?

请检查:

  1. API Token 是否有 Cloudflare R2 — Edit 权限
  2. 确认使用的是 API Token 而不是 Global API Key(R2 不支持 Global Key)
  3. Account ID 是否正确

视频上传后无法播放?

可能原因:

  • 视频格式不兼容:R2 不提供转码,需确保视频是浏览器可直接播放的格式
  • 如果文件为 0 字节,可能是上传过程中断了——重新上传试试
  • 自定义域名未正确配置 SSL 证书

客户端直传报错?

  1. 确认 Access Key ID 和 Secret Access Key 填写正确
  2. R2 存储桶需要配置 CORS(跨域访问),插件会自动配置
  3. 检查存储桶名是否正确同步

如何配合 Stream 使用?

R2 可以作为 CloudFlare Stream 的视频源存储。但 Mine CloudVod 插件中 R2 和 Stream 是两个独立功能:

  • R2 区块:直接播放 R2 中的 MP4 视频文件
  • Stream 区块:使用 CloudFlare Stream 转码后的视频

你可以在同一篇文章中同时使用两者。


相关资源