[ PROMPT_NODE_24342 ]
Stream 配置说明
[ SKILL_DOCUMENTATION ]
# Stream 配置
设置、环境变量及 Wrangler 配置。
## 安装
bash
# 官方 Cloudflare SDK (Node.js, Workers, Pages)
npm install cloudflare
# React 组件库
npm install @cloudflare/stream-react
# TUS 可恢复上传 (大文件)
npm install tus-js-client
## 环境变量
bash
# 必需
CF_ACCOUNT_ID=your-account-id
CF_API_TOKEN=your-api-token
# 用于签名 URL (高频使用)
STREAM_KEY_ID=your-key-id
STREAM_JWK=base64-encoded-jwk
# 用于 Webhooks
WEBHOOK_SECRET=your-webhook-secret
# 客户子域名 (从仪表板获取)
STREAM_CUSTOMER_CODE=your-customer-code
## Wrangler 配置
c
{
"name": "stream-worker",
"main": "src/index.ts",
"compatibility_date": "2025-01-01", // 新项目请使用当前日期
"vars": {
"CF_ACCOUNT_ID": "your-account-id"
}
// 存储密钥: wrangler secret put CF_API_TOKEN
// wrangler secret put STREAM_KEY_ID
// wrangler secret put STREAM_JWK
// wrangler secret put WEBHOOK_SECRET
}
## 签名密钥 (高频使用)
为自签名令牌创建一次(适用于每日数千用户)。
**创建密钥**
bash
curl -X POST
"https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/keys"
-H "Authorization: Bearer "
# 从响应中保存 `id` 和 `jwk` (base64)
**存储在密钥中**
bash
wrangler secret put STREAM_KEY_ID
wrangler secret put STREAM_JWK
## Webhooks
**设置 Webhook URL**
bash
curl -X PUT
"https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/webhook"
-H "Authorization: Bearer "
-H "Content-Type: application/json"
-d '{"notificationUrl": "https://your-worker.workers.dev/webhook"}'
# 保存返回的 `secret` 用于签名验证
**存储密钥**
bash
wrangler secret put WEBHOOK_SECRET
## 直接上传 / 实时 / 水印配置
typescript
// 直接上传
const uploadConfig = {
maxDurationSeconds: 3600,
expiry: new Date(Date.now() + 3600000).toISOString(),
requireSignedURLs: true,
allowedOrigins: ['https://yourdomain.com'],
meta: { creator: 'user-123' }
};
// 实时输入
const liveConfig = {
recording: { mode: 'automatic', timeoutSeconds: 30 },
deleteRecordingAfterDays: 30
};
// 水印
const watermark = {
name: 'Logo', opacity: 0.7, padding: 20,
position: 'lowerRight', scale: 0.15
};
## 访问规则与播放器配置
typescript
// 访问规则: 允许 US/CA, 阻止 CN/RU, 或 IP 白名单