← Cloudflare Stream / stream / manage-video-library
Привязка к Workers API
A привязка подключает ваш Worker на внешние ресурсы на Developer Platform, например Stream, Бакеты R2, или Пространства имён KV.
Например, используя Stream в Workers, вы можете:
- Загрузка видео по URL-адресу и управление их жизненным циклом
- Создавайте прямые загрузки для клиентских загрузок без раскрытия API-ключей
- Просмотр и поиск видео
- Управление субтитрами и загрузками видео
- Создание и управление профилями водяных знаков
Настройка
Привязка Stream включается отдельно для каждого Worker.
Чтобы привязать Stream к вашему Worker, добавьте следующее в конец файла конфигурации Wrangler:
{
"stream": {
"binding": "STREAM"
}
}[stream]
binding = "STREAM"Подробную информацию о настройке Worker см. в Документация по конфигурации Wrangler.
Методы
Методы уровня привязки
Следующие методы доступны в объекте env.STREAM binding напрямую.
upload(url, params?)
Загрузка видео по URL-адресу. Возвращает Promise<StreamVideo>.
url(обязательно): URL видео для загрузки.params(необязательно):StreamUrlUploadParamsобъект со следующими свойствами:allowedOrigins: Массив разрешённых источников для видео.creator: Идентификатор создателя.meta: Произвольный объект метаданных.requireSignedURLs: указывает, требуются ли подписанные URL-адреса.scheduledDeletion: Отметка времени в формате ISO 8601 для запланированного удаления.thumbnailTimestampPct: Отметка времени миниатюры в виде процента (от 0.0 до 1.0).watermarkId: Идентификатор применяемого профиля водяного знака.
Выбрасывает исключение: BadRequestError, QuotaReachedError, MaxFileSizeError, RateLimitedError, AlreadyUploadedError, InternalError.
createDirectUpload(params)
Создайте базовый URL прямой загрузки для клиентских загрузок без API-ключа. Возвращает Promise<StreamDirectUpload> с uploadURL и id.
Этот метод пока не поддерживает файлы размером более 200 МБ. Для больших прямых загрузок см. Запрос API для создания конечной точки TUS ↗._
params(обязательно):StreamDirectUploadCreateParamsобъект со следующими свойствами:maxDurationSeconds(обязательно): максимальная длительность загружаемого видео в секундах.expiry(необязательно): временная метка в формате ISO 8601, когда истекает срок действия URL для загрузки.creator(необязательно): идентификатор создателя.meta(необязательно): произвольный объект метаданных.allowedOrigins(необязательно): массив разрешенных источников для видео.requireSignedURLs(необязательно): требуются ли подписанные URL.thumbnailTimestampPct(необязательно): временная метка миниатюры в виде процента (от 0.0 до 1.0).scheduledDeletion(необязательно): временная метка в формате ISO 8601 для запланированного удаления.watermark(необязательно): ID профиля водяного знака, который нужно применить.
videos.list(params?)
Список всех видео в аккаунте. Возвращает Promise<StreamVideo[]>.
params(необязательно):StreamVideosListParamsобъект со следующими свойствами:limit: Максимальное количество возвращаемых видео.before: Возвращает видео, созданные до указанной отметки времени в формате ISO 8601.beforeComp: Оператор сравнения дляbefore,eq,gt,gte,lt, илиlte.after: Возвращает видео, созданные после указанной отметки времени в формате ISO 8601.afterComp: Оператор сравнения дляafter,eq,gt,gte,lt, илиlte.
Методы на уровне видео
Вызов env.STREAM.video(id) возвращает дескриптор, привязанный к одному видео, со следующими методами.
details()
Получение полной информации о видео. Возвращает Promise<StreamVideo>.
update(params)
Обновление метаданных видео. Возвращает Promise<StreamVideo>.
params(обязательно):StreamUpdateVideoParamsобъект со следующими свойствами:allowedOrigins: Массив разрешённых источников для видео.creator: Идентификатор создателя.maxDurationSeconds: Максимальная длительность в секундах.meta: Произвольный объект метаданных.requireSignedURLs: указывает, требуются ли подписанные URL-адреса.scheduledDeletion: Отметка времени в формате ISO 8601 для запланированного удаления.thumbnailTimestampPct: Отметка времени миниатюры в виде процента (от 0.0 до 1.0).
delete()
Удалите видео и его копии. Возвращает Promise<void>.
generateToken()
Создайте токен подписанного URL для видео. Возвращает Promise<string>.
downloads
Пространство имён для операций скачивания видео.
generate(downloadType?): Создание загрузки.downloadTypeэтоStreamDownloadTypedefaultилиaudio. По умолчанию используетсяdefault. ВозвращаетPromise<StreamDownloadGetResponse>.get(): Список существующих загрузок. ВозвращаетPromise<StreamDownloadGetResponse>.delete(downloadType?): Удаление загрузок.downloadTypeэтоdefaultилиaudio.
captions
Пространство имён для операций с субтитрами видео.
upload(language, input): Загрузка файла субтитров для языка, заданного тегом BCP 47.inputэтоReadableStream. ВозвращаетPromise<StreamCaption>.generate(language): Создание субтитров с помощью ИИ для языка, заданного тегом BCP 47. ВозвращаетPromise<StreamCaption>.list(language?): Список субтитров с возможностью фильтрации по языку. ВозвращаетPromise<StreamCaption[]>.delete(language): Удаление субтитров для указанного языка. ВозвращаетPromise<void>.
Методы работы с водяными знаками
Следующие методы доступны в объекте env.STREAM.watermarks пространство имён.
watermarks.generate(input, params)
Создайте профиль водяного знака. Принимает либо ReadableStream или строка URL. Возвращает Promise<StreamWatermark>.
input(обязательно):ReadableStreamили URL-строка изображения водяного знака.params(необязательно):StreamWatermarkCreateParamsобъект со следующими свойствами:name: Название профиля водяного знака.opacity: Непрозрачность водяного знака (от 0.0 до 1.0).padding: Отступ вокруг водяного знака в виде доли от разрешения видео.scale: Масштаб водяного знака в виде доли от разрешения видео.position: Расположение водяного знака:upperRight,upperLeft,lowerLeft,lowerRight, илиcenter.
watermarks.list()
Список всех профилей водяных знаков. Возвращает Promise<StreamWatermark[]>.
watermarks.get(watermarkId)
Получение одного профиля водяного знака. Возвращает Promise<StreamWatermark>.
watermarkId(обязательно): ID профиля водяного знака.
watermarks.delete(watermarkId)
Удалите профиль водяного знака. Возвращает Promise<void>.
watermarkId(обязательно): ID профиля водяного знака.
Примеры
Загрузка видео по URL-адресу
export default {
async fetch(request, env) {
const video = await env.STREAM.upload("https://example.com/video.mp4", {
creator: "user-123",
meta: { category: "tutorial" },
allowedOrigins: ["example.com"],
});
return Response.json(video);
},
};export default {
async fetch(request, env) {
const video = await env.STREAM.upload("https://example.com/video.mp4", {
creator: "user-123",
meta: { category: "tutorial" },
allowedOrigins: ["example.com"],
});
return Response.json(video);
},
};Создание прямой загрузки
export default {
async fetch(request, env) {
const directUpload = await env.STREAM.createDirectUpload({
maxDurationSeconds: 300,
creator: "user-123",
meta: { source: "browser-upload" },
});
return Response.json(directUpload);
},
};export default {
async fetch(request, env) {
const directUpload = await env.STREAM.createDirectUpload({
maxDurationSeconds: 300,
creator: "user-123",
meta: { source: "browser-upload" },
});
return Response.json(directUpload);
},
};Список видео
export default {
async fetch(request, env) {
const videos = await env.STREAM.videos.list({
limit: 10,
after: "2025-01-01T00:00:00Z",
});
return Response.json(videos);
},
};export default {
async fetch(request, env) {
const videos = await env.STREAM.videos.list({
limit: 10,
after: "2025-01-01T00:00:00Z",
});
return Response.json(videos);
},
};Получение информации о видео
export default {
async fetch(request, env) {
const videoDetails = await env.STREAM.video("VIDEO_ID").details();
return Response.json(videoDetails);
},
};export default {
async fetch(request, env) {
const videoDetails = await env.STREAM.video("VIDEO_ID").details();
return Response.json(videoDetails);
},
};Обновление метаданных видео
export default {
async fetch(request, env) {
const videoDetails = await env.STREAM.video("VIDEO_ID").update({
meta: { category: "updated-tutorial" },
allowedOrigins: ["example.com", "*.example.com"],
});
return Response.json(videoDetails);
},
};export default {
async fetch(request, env) {
const videoDetails = await env.STREAM.video("VIDEO_ID").update({
meta: { category: "updated-tutorial" },
allowedOrigins: ["example.com", "*.example.com"],
});
return Response.json(videoDetails);
},
};Удаление видео
export default {
async fetch(request, env) {
await env.STREAM.video("VIDEO_ID").delete();
return new Response("Video deleted", { status: 200 });
},
};export default {
async fetch(request, env) {
await env.STREAM.video("VIDEO_ID").delete();
return new Response("Video deleted", { status: 200 });
},
};Создание токена подписанного URL-адреса
export default {
async fetch(request, env) {
const token = await env.STREAM.video("VIDEO_ID").generateToken();
return Response.json({ token });
},
};export default {
async fetch(request, env) {
const token = await env.STREAM.video("VIDEO_ID").generateToken();
return Response.json({ token });
},
};Загрузка субтитров
export default {
async fetch(request, env) {
const captionResponse = await fetch("https://example.com/captions-en.vtt");
const caption = await env.STREAM.video("VIDEO_ID").captions.upload(
"en",
captionResponse.body,
);
return Response.json(caption);
},
};export default {
async fetch(request, env) {
const captionResponse = await fetch("https://example.com/captions-en.vtt");
const caption = await env.STREAM.video("VIDEO_ID").captions.upload(
"en",
captionResponse.body,
);
return Response.json(caption);
},
};Создание субтитров с помощью ИИ
export default {
async fetch(request, env) {
const caption = await env.STREAM.video("VIDEO_ID").captions.generate("en");
return Response.json(caption);
},
};export default {
async fetch(request, env) {
const caption = await env.STREAM.video("VIDEO_ID").captions.generate("en");
return Response.json(caption);
},
};Просмотр и удаление субтитров
export default {
async fetch(request, env) {
const video = env.STREAM.video("VIDEO_ID");
const captions = await video.captions.list();
await video.captions.delete("en");
return Response.json(captions);
},
};export default {
async fetch(request, env) {
const video = env.STREAM.video("VIDEO_ID");
const captions = await video.captions.list();
await video.captions.delete("en");
return Response.json(captions);
},
};Создание и просмотр списка загрузок
export default {
async fetch(request, env) {
const video = env.STREAM.video("VIDEO_ID");
const downloads = await video.downloads.generate();
const audioDownloads = await video.downloads.generate("audio");
const allDownloads = await video.downloads.get();
return Response.json({ downloads, audioDownloads, allDownloads });
},
};export default {
async fetch(request, env) {
const video = env.STREAM.video("VIDEO_ID");
const downloads = await video.downloads.generate();
const audioDownloads = await video.downloads.generate("audio");
const allDownloads = await video.downloads.get();
return Response.json({ downloads, audioDownloads, allDownloads });
},
};Создание профиля водяного знака
export default {
async fetch(request, env) {
const watermark = await env.STREAM.watermarks.generate(
"https://example.com/watermark.png",
{
name: "My Watermark",
opacity: 0.5,
position: "lowerRight",
padding: 0.05,
scale: 0.1,
},
);
return Response.json(watermark);
},
};export default {
async fetch(request, env) {
const watermark = await env.STREAM.watermarks.generate(
"https://example.com/watermark.png",
{
name: "My Watermark",
opacity: 0.5,
position: "lowerRight",
padding: 0.05,
scale: 0.1,
},
);
return Response.json(watermark);
},
};Просмотр и удаление профилей водяных знаков
export default {
async fetch(request, env) {
const watermarks = await env.STREAM.watermarks.list();
const watermark = await env.STREAM.watermarks.get("WATERMARK_ID");
await env.STREAM.watermarks.delete("WATERMARK_ID");
return Response.json({ watermarks, watermark });
},
};export default {
async fetch(request, env) {
const watermarks = await env.STREAM.watermarks.list();
const watermark = await env.STREAM.watermarks.get("WATERMARK_ID");
await env.STREAM.watermarks.delete("WATERMARK_ID");
return Response.json({ watermarks, watermark });
},
};Определения типов
StreamVideo
StreamVideo возвращается операциями получения или создания видео. Он содержит полные метаданные видео.
-
idstring- Уникальный идентификатор видео.
-
creatorstring | null- Определяемый пользователем идентификатор автора медиафайла.
-
thumbnailstring- URL миниатюры видео.
-
thumbnailTimestampPctnumber- Процентное значение временной метки миниатюры.
-
readyToStreamboolean- Показывает, готово ли видео к воспроизведению.
-
readyToStreamAtstring | null- Дата и время, когда видео стало готово к воспроизведению.
-
statusStreamVideoStatus- Информация о статусе обработки. См. StreamVideoStatus.
-
metaRecord<string, string>- Изменяемое пользователем хранилище пар «ключ-значение».
-
createdstring- Дата и время создания видео.
-
modifiedstring- Дата и время последнего изменения видео.
-
scheduledDeletionstring | null- Дата и время удаления видео.
-
sizenumber- Размер видео в байтах.
-
previewstringнеобязательно- URL предпросмотра видео.
-
allowedOriginsArray<string>- Источники (origins), которым разрешено отображать видео.
-
requireSignedURLsboolean | null- Показывает, требуются ли подписанные URL-адреса.
-
uploadedstring | null- Дата и время загрузки видео.
-
uploadExpirystring | null- Дата и время, когда истекает срок действия URL для загрузки.
-
maxSizeBytesnumber | null- Максимальный размер прямой загрузки в байтах.
-
maxDurationSecondsnumber | null- Максимальная длительность прямой загрузки в секундах.
-
durationnumber- Длительность видео в секундах.
-1означает, что значение неизвестно.
- Длительность видео в секундах.
-
inputStreamVideoInput- Метаданные исходной загрузки. См. StreamVideoInput.
-
hlsPlaybackUrlstring- URL воспроизведения HLS для видео.
-
dashPlaybackUrlstring- URL воспроизведения DASH для видео.
-
watermarkStreamWatermark | null- Водяной знак, применённый к видео, если он есть. См. StreamWatermark.
-
liveInputIdstring | nullнеобязательно- Live Input ID, связанный с видео, если он есть.
-
clippedFromIdstring | null- ID исходного видео, если это клип.
-
publicDetailsStreamPublicDetails | null- Публичные данные, связанные с видео. См. StreamPublicDetails.
StreamVideoStatus
Информация о статусе обработки видео.
-
statestring- Текущее состояние обработки.
-
stepstringнеобязательно- Текущий этап обработки.
-
pctCompletestringнеобязательно- Процент выполнения в виде строки.
-
errorReasonCodestring- Код причины ошибки, если применимо.
-
errorReasonTextstring- Текст причины ошибки, если применимо.
StreamVideoInput
Метаданные исходной загрузки.
-
widthnumber- Ширина входного файла в пикселях.
-
heightnumber- Высота входного файла в пикселях.
StreamPublicDetails
Публичные данные, связанные с видео.
-
titlestring | null- Публичное название видео.
-
share_linkstring | null- Публичная ссылка для общего доступа.
-
channel_linkstring | null- Публичная ссылка на канал.
-
logostring | null- Публичный URL логотипа.
StreamDirectUpload
Возвращается createDirectUpload(). Содержит URL-адрес загрузки и идентификатор видео для прямой загрузки.
-
uploadURLstring- URL, который можно использовать для одного multipart-запроса при загрузке без аутентификации.
-
idstring- Уникальный идентификатор медиафайла, сгенерированный Cloudflare.
-
watermarkStreamWatermark | null- Профиль водяного знака, применённый к загрузке. См. StreamWatermark.
-
scheduledDeletionstring | null- Запланированное время удаления, если оно задано.
StreamCaption
Представляет собой дорожку субтитров или подписей для видео.
-
generatedbooleanнеобязательно- Были ли субтитры созданы с помощью ИИ.
-
labelstring- Название языка, отображаемое пользователям на этом языке.
-
languagestring- Языковой тег в формате BCP 47.
-
status'ready' | 'inprogress' | 'error'необязательно- Статус сформированных субтитров.
StreamDownloadGetResponse
Объект, ключами которого являются типы загрузок. Каждый ключ необязателен и присутствует только в том случае, если загрузка этого типа была создана.
-
defaultStreamDownloadнеобязательно- Файл видео для скачивания по умолчанию. Присутствует только если этот тип загрузки был создан. См. StreamDownload.
-
audioStreamDownloadнеобязательно- Файл только с аудио для скачивания. Присутствует только если этот тип загрузки был создан. См. StreamDownload.
StreamDownload
Представляет собой сформированную загрузку видео.
-
percentCompletenumber- Отображает прогресс в процентах, от 0 до 100.
-
statusStreamDownloadStatus- Статус сформированного файла для скачивания.
-
urlstringнеобязательно- URL для доступа к сформированному файлу для скачивания.
StreamWatermark
Представляет собой профиль водяного знака.
-
idstring- Уникальный идентификатор профиля водяного знака.
-
namestring- Краткое описание профиля водяного знака.
-
opacitynumber- Степень прозрачности изображения. Значение
0.0делает изображение полностью прозрачным, а1.0делает изображение полностью непрозрачным. Обратите внимание, что если изображение уже полупрозрачно, установка этого значения в1.0не сделает изображение полностью непрозрачным.
- Степень прозрачности изображения. Значение
-
paddingnumber- Отступ между смежными краями (определяемыми параметром position) видео и изображения.
0.0означает отсутствие отступов, а1.0означает, что ширина или длина видео дополнены полностью.
- Отступ между смежными краями (определяемыми параметром position) видео и изображения.
-
scalenumber- Размер изображения относительно общего размера видео.
0.0означает отсутствие масштабирования, а1.0заполняет всё видео.
- Размер изображения относительно общего размера видео.
-
positionStreamWatermarkPosition- Расположение изображения. См. StreamWatermarkPosition.
-
sizenumber- Размер изображения в байтах.
-
heightnumber- Высота изображения в пикселях.
-
widthnumber- Ширина изображения в пикселях.
-
createdstring- Дата и время создания профиля водяного знака.
-
downloadedFromstring | null- URL источника загруженного изображения. Если профиль водяного знака был создан через прямую загрузку, это поле
null.
- URL источника загруженного изображения. Если профиль водяного знака был создан через прямую загрузку, это поле
StreamWatermarkPosition
Положение водяного знака на видео.
'upperRight' | 'upperLeft' | 'lowerLeft' | 'lowerRight' | 'center'
upperRight: верхний правый угол видео.upperLeft: верхний левый угол видео.lowerLeft: нижний левый угол видео.lowerRight: нижний правый угол видео.center: центр видео. Обратите внимание, чтоcenterигнорируетpaddingпараметр.
StreamDownloadStatus
Статус сформированного файла для скачивания.
'ready' | 'inprogress' | 'error'
ready: файл для скачивания готов.inprogress: идёт формирование файла для скачивания.error: при создании произошла ошибка.
StreamDownloadType
Тип создаваемой загрузки.
'default' | 'audio'
default: видеофайл для скачивания.audio: только аудиофайл для скачивания.
StreamUrlUploadParams
Параметры для загрузки видео по URL.
-
allowedOriginsArray<string>необязательно- Список источников, которым разрешено воспроизводить видео. Укажите разрешенные домены-источники в массиве и используйте
*для поддоменов с подстановочным знаком. Пустые массивы разрешают просмотр видео с любого источника.
- Список источников, которым разрешено воспроизводить видео. Укажите разрешенные домены-источники в массиве и используйте
-
creatorstringнеобязательно- Определяемый пользователем идентификатор автора медиафайла.
-
metaRecord<string, string>необязательно- Изменяемое пользователем хранилище пар «ключ-значение», используемое для связи с другими системами учета видео.
-
requireSignedURLsbooleanнеобязательно- Показывает, доступно ли видео по идентификатору (ID). Если задано значение
true, для просмотра видео необходимо сгенерировать подписанный токен с помощью ключа подписи.
- Показывает, доступно ли видео по идентификатору (ID). Если задано значение
-
scheduledDeletionstring | nullнеобязательно- Указывает дату и время удаления видео. Чтобы не менять значение, не указывайте это поле, либо передайте
nullзначение, чтобы отменить существующее запланированное удаление. При указании оно должно быть не менее 30 дней от времени загрузки.
- Указывает дату и время удаления видео. Чтобы не менять значение, не указывайте это поле, либо передайте
-
thumbnailTimestampPctnumberнеобязательно- Временная метка для миниатюры, рассчитанная как процент от длительности видео. Чтобы перевести метку из секунд в проценты, разделите нужное значение времени на общую длительность видео. Если это значение не задано, миниатюра по умолчанию берётся с 0-й секунды видео.
-
watermarkIdstringнеобязательно- Идентификатор профиля водяного знака.
StreamDirectUploadCreateParams
Параметры для создания прямой загрузки.
-
maxDurationSecondsnumber- Максимальная длительность загружаемого видео в секундах.
-
expirystringнеобязательно- Дата и время, после которых загрузка видео больше не принимается.
-
creatorstringнеобязательно- Определяемый пользователем идентификатор автора медиафайла.
-
metaRecord<string, string>необязательно- Изменяемое пользователем хранилище пар «ключ-значение», используемое для связи с другими системами учета видео.
-
allowedOriginsArray<string>необязательно- Список источников, которым разрешено воспроизводить видео.
-
requireSignedURLsbooleanнеобязательно- Показывает, доступно ли видео по идентификатору (ID). Если задано значение
true, для просмотра видео необходимо сгенерировать подписанный токен с помощью ключа подписи.
- Показывает, доступно ли видео по идентификатору (ID). Если задано значение
-
thumbnailTimestampPctnumberнеобязательно- Временная метка для миниатюры, рассчитанная как процент от длительности видео.
-
scheduledDeletionstring | nullнеобязательно- Дата и время удаления видео. Укажите
nullчтобы отменить запланированное удаление.
- Дата и время удаления видео. Укажите
-
watermarkStreamDirectUploadWatermarkнеобязательно- Профиль водяного знака, который нужно применить. См. StreamDirectUploadWatermark.
StreamDirectUploadWatermark
Настройка водяного знака для прямой загрузки.
-
idstring- Уникальный идентификатор профиля водяного знака.
StreamUpdateVideoParams
Параметры для обновления видео.
-
allowedOriginsArray<string>необязательно- Список источников, которым разрешено воспроизводить видео. Укажите разрешенные домены-источники в массиве и используйте
*для поддоменов с подстановочным знаком. Пустые массивы разрешают просмотр видео с любого источника.
- Список источников, которым разрешено воспроизводить видео. Укажите разрешенные домены-источники в массиве и используйте
-
creatorstringнеобязательно- Определяемый пользователем идентификатор автора медиафайла.
-
maxDurationSecondsnumberнеобязательно- Максимальная длительность загружаемого видео в секундах. Можно задать для видео, которое ещё не загружено, чтобы ограничить его длительность. Загрузки, превышающие указанную длительность, завершатся ошибкой при обработке. Значение
-1означает, что значение неизвестно.
- Максимальная длительность загружаемого видео в секундах. Можно задать для видео, которое ещё не загружено, чтобы ограничить его длительность. Загрузки, превышающие указанную длительность, завершатся ошибкой при обработке. Значение
-
metaRecord<string, string>необязательно- Изменяемое пользователем хранилище пар «ключ-значение», используемое для связи с другими системами учета видео.
-
requireSignedURLsbooleanнеобязательно- Показывает, доступно ли видео по идентификатору (ID). Если задано значение
true, для просмотра видео необходимо сгенерировать подписанный токен с помощью ключа подписи.
- Показывает, доступно ли видео по идентификатору (ID). Если задано значение
-
scheduledDeletionstring | nullнеобязательно- Указывает дату и время удаления видео. Чтобы не менять значение, не указывайте это поле, либо передайте
nullзначение, чтобы отменить существующее запланированное удаление. При указании оно должно быть не менее 30 дней от времени загрузки.
- Указывает дату и время удаления видео. Чтобы не менять значение, не указывайте это поле, либо передайте
-
thumbnailTimestampPctnumberнеобязательно- Временная метка для миниатюры, рассчитанная как процент от длительности видео. Чтобы перевести метку из секунд в проценты, разделите нужное значение времени на общую длительность видео. Если это значение не задано, миниатюра по умолчанию берётся с 0-й секунды видео.
StreamVideosListParams
Параметры для получения списка видео.
-
limitnumberнеобязательно- Максимальное количество возвращаемых видео.
-
beforestringнеобязательно- Возвращает видео, созданные до этой временной метки (RFC3339/RFC3339Nano).
-
beforeCompStreamPaginationComparisonнеобязательно- Оператор сравнения для
beforeполе. По умолчанию:lt. См. StreamPaginationComparison.
- Оператор сравнения для
-
afterstringнеобязательно- Возвращает видео, созданные после этой временной метки (RFC3339/RFC3339Nano).
-
afterCompStreamPaginationComparisonнеобязательно- Оператор сравнения для
afterполе. По умолчанию:gte. См. StreamPaginationComparison.
- Оператор сравнения для
StreamPaginationComparison
Операторы сравнения для запросов пагинации.
'eq' | 'gt' | 'gte' | 'lt' | 'lte'
eq: равноgt: больше чемgte: больше или равноlt: меньшеlte: меньше или равно
StreamWatermarkCreateParams
Параметры для создания профиля водяного знака.
-
namestringнеобязательно- Краткое описание профиля водяного знака.
-
opacitynumberнеобязательно- Степень прозрачности изображения. Значение
0.0делает изображение полностью прозрачным, а1.0делает изображение полностью непрозрачным. Обратите внимание, что если изображение уже полупрозрачно, установка этого значения в1.0не сделает изображение полностью непрозрачным.
- Степень прозрачности изображения. Значение
-
paddingnumberнеобязательно- Отступ между смежными краями (определяемыми параметром position) видео и изображения.
0.0означает отсутствие отступов, а1.0означает, что ширина или длина видео дополнены полностью.
- Отступ между смежными краями (определяемыми параметром position) видео и изображения.
-
scalenumberнеобязательно- Размер изображения относительно общего размера видео.
0.0означает отсутствие масштабирования, а1.0заполняет всё видео.
- Размер изображения относительно общего размера видео.
-
positionStreamWatermarkPositionнеобязательно- Расположение изображения. См. StreamWatermarkPosition.
Обработка ошибок
При ошибке выбрасывается StreamError, который расширяет стандартный Error интерфейс с дополнительной информацией:
code: Числовой код ошибки.statusCode: Код состояния HTTP.message: Описание ошибки.stack: Необязательная трассировка стека.
Могут возникать следующие подтипы ошибок:
| Тип ошибки | Описание |
|---|---|
InternalError |
Произошла внутренняя ошибка сервера. |
BadRequestError |
Запрос был некорректно составлен или содержал недопустимые параметры. |
NotFoundError |
Запрошенный ресурс не найден. |
ForbiddenError |
Запрос не был авторизован. |
RateLimitedError |
Запрос был отклонён из-за превышения лимита частоты запросов. |
QuotaReachedError |
Аккаунт достиг лимита по количеству видео. |
MaxFileSizeError |
Загруженный файл превышает максимально допустимый размер. |
InvalidURLError |
Указанный URL недействителен или недоступен. |
AlreadyUploadedError |
Видео уже загружено. |
TooManyWatermarksError |
Аккаунт достиг лимита профилей водяных знаков. |
Используйте try...catch блок для обработки ошибок:
export default {
async fetch(request, env) {
try {
const videoDetails = await env.STREAM.upload(
"https://example.com/video.mp4",
);
return Response.json(videoDetails);
} catch (e) {
if (e instanceof Error) {
return new Response(`Stream error: ${e.message}`, { status: 500 });
}
throw e;
}
},
};export default {
async fetch(request, env) {
try {
const videoDetails = await env.STREAM.upload("https://example.com/video.mp4");
return Response.json(videoDetails);
} catch (e) {
if (e instanceof Error) {
return new Response(`Stream error: ${e.message}`, { status: 500 });
}
throw e;
}
},
};