[ PROMPT_NODE_24338 ]
api-live
[ SKILL_DOCUMENTATION ]
# Stream 实时流媒体 API
实时输入创建、状态检查、同步推流 (Simulcast) 及 WebRTC 流媒体。
## 创建实时输入
### 使用 Cloudflare SDK
typescript
import Cloudflare from 'cloudflare';
const client = new Cloudflare({ apiToken: env.CF_API_TOKEN });
const liveInput = await client.stream.liveInputs.create({
account_id: env.CF_ACCOUNT_ID,
recording: { mode: 'automatic', timeoutSeconds: 30 },
deleteRecordingAfterDays: 30
});
// 返回: { uid, rtmps, srt, webRTC }
### 原生 fetch API
typescript
async function createLiveInput(accountId: string, apiToken: string) {
const response = await fetch(
`https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/live_inputs`,
{
method: 'POST',
headers: { 'Authorization': `Bearer ${apiToken}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
recording: { mode: 'automatic', timeoutSeconds: 30 },
deleteRecordingAfterDays: 30
})
}
);
const { result } = await response.json();
return {
uid: result.uid,
rtmps: { url: result.rtmps.url, streamKey: result.rtmps.streamKey },
srt: { url: result.srt.url, streamId: result.srt.streamId, passphrase: result.srt.passphrase },
webRTC: result.webRTC
};
}
## 检查实时状态
typescript
async function getLiveStatus(accountId: string, liveInputId: string, apiToken: string) {
const response = await fetch(
`https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/live_inputs/${liveInputId}`,
{ headers: { 'Authorization': `Bearer ${apiToken}` } }
);
const { result } = await response.json();
return {
isLive: result.status?.current?.state === 'connected',
recording: result.recording,
status: result.status
};
}
## 同步推流 (实时输出)
### 创建输出
typescript
async function createLiveOutput(
accountId: string, liveInputId: string, apiToken: string,
outputUrl: string, streamKey: string
) {
return fetch(
`https://api.cloudflare.com/client/v4/accounts/${accountId}/stream/live_inputs/${liveInputId}/outputs`,
{
method: 'POST',
headers: { 'Authorization': `Bearer ${apiToken}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
url: `${outputUrl}/${streamKey}`,
enabled: true,
streamKey // 适用于 YouTube, Twitch 等平台
})
}
).then(r => r.json());
}
### 示例: 同步推流至 YouTube + Twitch
typescript
const liveInput = await c