← Cloudflare Stream / stream / manage-video-library
Управление авторами
Вы можете задать поле creator, указав внутренний ID пользователя при запросе токенизированного URL для загрузки. После загрузки видео свойство creator автоматически принимает значение этого внутреннего ID пользователя, которое можно использовать для аналитики или для поиска видео по конкретному автору.
При базовой загрузке Creator ID нужно будет добавить уже после загрузки видео.
Загрузка по URL-адресу
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/copy" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"url":"https://example.com/myvideo.mp4","creator": "<CREATOR_ID>","thumbnailTimestampPct":0.529241,"allowedOrigins":["example.com"],"requireSignedURLs":true,"watermark":{"uid":"ea95132c15732412d22c1476fa83f27a"}}'const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const video = await client.stream.copy.create({
account_id: '<ACCOUNT_ID>',
url: 'https://example.com/myvideo.mp4',
creator: '<CREATOR_ID>',
thumbnailTimestampPct: 0.529241,
allowedOrigins: ['example.com'],
requireSignedURLs: true,
watermark: { uid: 'ea95132c15732412d22c1476fa83f27a' },
});Ответ
{
"success": true,
"errors": [],
"messages": [],
"result": {
"allowedOrigins": ["example.com"],
"created": "2014-01-02T02:20:00Z",
"duration": 300,
"input": {
"height": 1080,
"width": 1920
},
"maxDurationSeconds": 300,
"meta": {},
"modified": "2014-01-02T02:20:00Z",
"uploadExpiry": "2014-01-02T02:20:00Z",
"playback": {
"hls": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.m3u8",
"dash": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.mpd"
},
"preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch",
"readyToStream": true,
"requireSignedURLs": true,
"size": 4190963,
"status": {
"state": "ready",
"pctComplete": "100.000000",
"errorReasonCode": "",
"errorReasonText": ""
},
"thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg",
"thumbnailTimestampPct": 0.529241,
"creator": "<CREATOR_ID>",
"uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
"liveInput": "fc0a8dc887b16759bfd9ad922230a014",
"uploaded": "2014-01-02T02:20:00Z",
"watermark": {
"uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
"size": 29472,
"height": 600,
"width": 400,
"created": "2014-01-02T02:20:00Z",
"downloadedFrom": "https://company.com/logo.png",
"name": "Marketing Videos",
"opacity": 0.75,
"padding": 0.1,
"scale": 0.1,
"position": "center"
}
}
}Ознакомьтесь с полным Stream Справочник REST API и SDK для получения сведений об использовании REST API из внешних приложений: для TypeScript, Python и Go предусмотрены готовые SDK.
export default {
async fetch(request, env) {
const video = await env.STREAM.upload("https://example.com/myvideo.mp4", {
creator: "<CREATOR_ID>",
thumbnailTimestampPct: 0.529241,
allowedOrigins: ["example.com"],
requireSignedURLs: true,
watermarkId: "ea95132c15732412d22c1476fa83f27a",
});
return Response.json(video);
},
};{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Ознакомьтесь с полным Справочник API привязки Workers Stream.
Настройка значений creator по умолчанию для видео
Вы можете привязать видео к одному автору, задав значение creator ID по умолчанию, которое затем можно использовать для поиска видео по creator ID или для аналитики.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"defaultCreator":"1234"}'const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const liveInput = await client.stream.liveInputs.create({
account_id: '<ACCOUNT_ID>',
defaultCreator: '1234',
});Ознакомьтесь с полным Stream Справочник REST API и SDK для получения сведений об использовании REST API из внешних приложений: для TypeScript, Python и Go предусмотрены готовые SDK.
Если у вас несколько авторов, запускающих прямые трансляции, создать live input для каждого автора, который будет вести прямую трансляцию, а затем задайте DefaultCreator значение для каждого входного потока. Указание идентификатора автора по умолчанию для каждого входного потока гарантирует, что все записанные видео, транслируемые из потока этого автора, унаследуют DefaultCreator значение.
На данный момент значения ID автора по умолчанию можно изменить только через API.
Обновление автора в существующих видео
Чтобы обновить свойство creator у существующих видео, выполните POST запрос к эндпоинту объекта видео с телом JSON, указывающим свойство creator, как показано в примере ниже.
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/<VIDEO_UID>" \
--header "Authorization: Bearer <AUTH_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"creator":"test123"}'const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const video = await client.stream.edit({
account_id: '<ACCOUNT_ID>',
identifier: '<VIDEO_UID>',
creator: 'test123',
});Ознакомьтесь с полным Stream Справочник REST API и SDK для получения сведений об использовании REST API из внешних приложений: для TypeScript, Python и Go предусмотрены готовые SDK.
export default {
async fetch(request, env) {
const video = await env.STREAM.video("<VIDEO_UID>").update({
creator: "test123",
});
return Response.json(video);
},
};{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Ознакомьтесь с полным Справочник API привязки Workers Stream.
Direct Creator Upload
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/direct_upload" \
--header "Authorization: Bearer <AUTH_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"maxDurationSeconds":300,"expiry":"2021-01-02T02:20:00Z","creator": "<CREATOR_ID>", "thumbnailTimestampPct":0.529241,"allowedOrigins":["example.com"],"requireSignedURLs":true,"watermark":{"uid":"ea95132c15732412d22c1476fa83f27a"}}'const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const directUpload = await client.stream.directUpload.create({
account_id: '<ACCOUNT_ID>',
maxDurationSeconds: 300,
expiry: '2021-01-02T02:20:00Z',
creator: '<CREATOR_ID>',
thumbnailTimestampPct: 0.529241,
allowedOrigins: ['example.com'],
requireSignedURLs: true,
watermark: { uid: 'ea95132c15732412d22c1476fa83f27a' },
});Ответ
{
"success": true,
"errors": [],
"messages": [],
"result": {
"uploadURL": "www.example.com/samplepath",
"uid": "ea95132c15732412d22c1476fa83f27a",
"creator": "<CREATOR_ID>",
"watermark": {
"uid": "ea95132c15732412d22c1476fa83f27a",
"size": 29472,
"height": 600,
"width": 400,
"created": "2014-01-02T02:20:00Z",
"downloadedFrom": "https://company.com/logo.png",
"name": "Marketing Videos",
"opacity": 0.75,
"padding": 0.1,
"scale": 0.1,
"position": "center"
}
}
}Ознакомьтесь с полным Stream Справочник REST API и SDK для получения сведений об использовании REST API из внешних приложений: для TypeScript, Python и Go предусмотрены готовые SDK.
export default {
async fetch(request, env) {
const directUpload = await env.STREAM.createDirectUpload({
maxDurationSeconds: 300,
expiry: "2021-01-02T02:20:00Z",
creator: "<CREATOR_ID>",
thumbnailTimestampPct: 0.529241,
allowedOrigins: ["example.com"],
requireSignedURLs: true,
watermark: {
id: "ea95132c15732412d22c1476fa83f27a",
},
});
return Response.json(directUpload);
},
};{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "<ENTER_WORKER_NAME>",
"main": "src/index.ts",
"compatibility_date": "$today",
"observability": {
"enabled": true
},
"stream": {
"binding": "STREAM"
}
}Ознакомьтесь с полным Справочник API привязки Workers Stream.
Получение видео по Creator ID
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/stream?after=2014-01-02T02:20:00Z&before=2014-01-02T02:20:00Z&include_counts=false&creator=<CREATOR_ID>&limit=undefined&asc=false&status=downloading,queued,inprogress,ready,error" \
--header "Authorization: Bearer <API_TOKEN>"const client = new Cloudflare({
apiEmail: process.env['CLOUDFLARE_EMAIL'],
apiKey: process.env['CLOUDFLARE_API_KEY'],
});
const videos = await client.stream.list({
account_id: '<ACCOUNT_ID>',
creator: '<CREATOR_ID>',
});Ответ
{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"allowedOrigins": ["example.com"],
"created": "2014-01-02T02:20:00Z",
"duration": 300,
"input": {
"height": 1080,
"width": 1920
},
"maxDurationSeconds": 300,
"meta": {},
"modified": "2014-01-02T02:20:00Z",
"uploadExpiry": "2014-01-02T02:20:00Z",
"playback": {
"hls": "https://customer-<CODE>.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/manifest/video.m3u8",
"dash": "https://customer-<CODE>.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/manifest/video.mpd"
},
"preview": "https://customer-<CODE>.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/watch",
"readyToStream": true,
"requireSignedURLs": true,
"size": 4190963,
"status": {
"state": "ready",
"pctComplete": "100.000000",
"errorReasonCode": "",
"errorReasonText": ""
},
"thumbnail": "https://customer-<CODE>.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/thumbnails/thumbnail.jpg",
"thumbnailTimestampPct": 0.529241,
"creator": "some-creator-id",
"uid": "ea95132c15732412d22c1476fa83f27a",
"liveInput": "fc0a8dc887b16759bfd9ad922230a014",
"uploaded": "2014-01-02T02:20:00Z",
"watermark": {
"uid": "ea95132c15732412d22c1476fa83f27a",
"size": 29472,
"height": 600,
"width": 400,
"created": "2014-01-02T02:20:00Z",
"downloadedFrom": "https://company.com/logo.png",
"name": "Marketing Videos",
"opacity": 0.75,
"padding": 0.1,
"scale": 0.1,
"position": "center"
}
}
],
"total": "35586",
"range": "1000"
}Ознакомьтесь с полным Stream Справочник REST API и SDK для получения сведений об использовании REST API из внешних приложений: для TypeScript, Python и Go предусмотрены готовые SDK.
tus
Укажите Creator ID через Upload-Creator заголовок. Дополнительную информацию см. в Возобновляемая загрузка больших файлов (tus).
Запрос по Creator ID через GraphQL
После того как вы укажете свойство creator, вы можете использовать GraphQL API для фильтрации по конкретному автору. См. раздел Массовое получение аналитики для получения дополнительных сведений о доступных метриках и фильтрах.