← Cloudflare Stream / stream / uploading-videos
Загрузка по ссылке
Если видео хранятся в облачном хранилище (R2, S3, GCS) или на сервисе, предоставляющем ссылку для скачивания, можно передать его URL: Stream загрузит файл самостоятельно.
Сделайте POST запрос к Stream API, используя ссылку на ваше видео.
curl \
--data '{"url":"https://pub-2da57dbfcf5f4369863991d59747d686.r2.dev/acadia.mp4","meta":{"name":"My First Stream Video"}}' \
--header "Authorization: Bearer <API_TOKEN>" \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/copyconst client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted
apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted
});
const video = await client.stream.copy.create({
account_id: '<ACCOUNT_ID>',
url: 'https://pub-2da57dbfcf5f4369863991d59747d686.r2.dev/acadia.mp4',
});Ознакомьтесь с полным Stream Справочник REST API и SDK для получения сведений об использовании REST API из внешних приложений: для TypeScript, Python и Go предусмотрены готовые SDK.
export default {
async fetch(request, env, ctx): Promise<Response> {
// upload a video with a link
const videoDetails = await env.STREAM.upload(
"https://pub-2da57dbfcf5f4369863991d59747d686.r2.dev/acadia.mp4",
// (optional) attach metadata
{ meta: { name: "My First Stream Video" } }
);
// return a Workers response
return new Response(
JSON.stringify(videoDetails),
);
},
} satisfies ExportedHandler<{ STREAM: StreamBinding }>;{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "2026-04-14",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Ознакомьтесь с полным Справочник API привязки Workers Stream.
Если видео хранятся в облачном хранилище, можно передать HTTP-ссылку на файл, и Stream загрузит его самостоятельно.
Проверка статуса видео
Stream должен скачать и закодировать видео, это может занять от нескольких секунд до нескольких минут в зависимости от длины видео.
Если readyToStream значение возвращает true, ваше видео готово к трансляции.
При желании вы можете использовать вебхуки который уведомит вас о готовности видео к трансляции или о возникшей ошибке.
{
"result": {
"uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
"thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg",
"thumbnailTimestampPct": 0,
"readyToStream": false,
"status": {
"state": "downloading"
},
"meta": {
"downloaded-from": "https://pub-2da57dbfcf5f4369863991d59747d686.r2.dev/acadia.mp4",
"name": "My First Stream Video"
},
"created": "2020-10-16T20:20:17.872170843Z",
"modified": "2020-10-16T20:20:17.872170843Z",
"size": 9032701,
"preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch",
"allowedOrigins": [],
"requireSignedURLs": false,
"uploaded": "2020-10-16T20:20:17.872170843Z",
"uploadExpiry": null,
"maxSizeBytes": 0,
"maxDurationSeconds": 0,
"duration": -1,
"input": {
"width": -1,
"height": -1
},
"playback": {
"hls": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.m3u8",
"dash": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.mpd"
},
"watermark": null
},
"success": true,
"errors": [],
"messages": []
}После загрузки видео вы можете использовать видео uid показанный в примере ответа выше, чтобы воспроизвести видео с помощью Видеоплеер Stream.
Если вы используете собственный плеер или отображаете видео в мобильном приложении, см. с использованием собственного плеера.