← Cloudflare Stream / stream / manage-video-library
Propojení s API Workers
A binding propojuje váš Worker na externí zdroje na Developer Platform, například Stream, R2 buckety, nebo KV namespaces.
Například při použití Stream ve Workers můžete:
- Nahrávejte videa z URL a spravujte jejich životní cyklus
- Vytvářejte přímá nahrávání na straně klienta, aniž byste museli zveřejňovat API klíče
- Výpis a vyhledávání videí
- Správa titulků a stahování videí
- Vytváření a správa profilů vodoznaku
Nastavení
Binding Stream se povoluje pro každý Worker zvlášť.
Chcete-li k Workeru připojit Stream, přidejte na konec konfiguračního souboru Wrangler následující:
{
"stream": {
"binding": "STREAM"
}
}[stream]
binding = "STREAM"Podrobnější informace o konfiguraci Workeru najdete v Dokumentace ke konfiguraci Wrangler.
Metody
Metody na úrovni bindingu
Následující metody jsou k dispozici na env.STREAM binding přímo.
upload(url, params?)
Nahrání videa z URL. Vrací Promise<StreamVideo>.
url(povinné): Adresa URL videa, které se má nahrát.params(volitelné):StreamUrlUploadParamsobjekt s následujícími vlastnostmi:allowedOrigins: Pole povolených originů videa.creator: Identifikátor tvůrce.meta: Libovolný objekt metadat.requireSignedURLs: Zda jsou vyžadovány podepsané URL.scheduledDeletion: Časové razítko ISO 8601 pro plánované odstranění.thumbnailTimestampPct: Časové razítko náhledového obrázku jako procento (0.0 až 1.0).watermarkId: ID profilu vodoznaku, který se má použít.
Vyvolá: BadRequestError, QuotaReachedError, MaxFileSizeError, RateLimitedError, AlreadyUploadedError, InternalError.
createDirectUpload(params)
Vytvoří základní URL adresu pro přímé nahrávání na straně klienta bez nutnosti API klíče. Vrátí Promise<StreamDirectUpload> hodnotou uploadURL a id.
Tato metoda v současné době nepodporuje soubory větší než 200MB. Pro větší přímá nahrávání si přečtěte Požadavek API pro zřízení koncového bodu TUS ↗._
params(povinné):StreamDirectUploadCreateParamsobjekt s následujícími vlastnostmi:maxDurationSeconds(povinné): Maximální délka nahraného videa v sekundách.expiry(volitelné): Časové razítko ve formátu ISO 8601, kdy vyprší platnost adresy URL pro nahrání.creator(volitelné): Identifikátor tvůrce.meta(volitelné): Libovolný objekt metadat.allowedOrigins(volitelné): Pole povolených zdrojových domén (origins) pro video.requireSignedURLs(volitelné): Zda jsou vyžadovány podepsané adresy URL.thumbnailTimestampPct(volitelné): Časové razítko náhledového obrázku vyjádřené jako procento (0.0 až 1.0).scheduledDeletion(volitelné): Časové razítko ve formátu ISO 8601 pro plánované odstranění.watermark(volitelné): ID profilu vodoznaku, který se má použít.
videos.list(params?)
Vypíše všechna videa v účtu. Vrací Promise<StreamVideo[]>.
params(volitelné):StreamVideosListParamsobjekt s následujícími vlastnostmi:limit: Maximální počet vrácených videí.before: Vrátí videa vytvořená před tímto časovým razítkem ISO 8601.beforeComp: Porovnávací operátor probefore,eq,gt,gte,lt, nebolte.after: Vrátí videa vytvořená po tomto časovém razítku ISO 8601.afterComp: Porovnávací operátor proafter,eq,gt,gte,lt, nebolte.
Metody vázané na video
Volání env.STREAM.video(id) vrací identifikátor (handle) omezený na jedno video s následujícími metodami.
details()
Získání úplných podrobností o videu. Vrací Promise<StreamVideo>.
update(params)
Aktualizace metadat videa. Vrací Promise<StreamVideo>.
params(povinné):StreamUpdateVideoParamsobjekt s následujícími vlastnostmi:allowedOrigins: Pole povolených originů videa.creator: Identifikátor tvůrce.maxDurationSeconds: Maximální délka v sekundách.meta: Libovolný objekt metadat.requireSignedURLs: Zda jsou vyžadovány podepsané URL.scheduledDeletion: Časové razítko ISO 8601 pro plánované odstranění.thumbnailTimestampPct: Časové razítko náhledového obrázku jako procento (0.0 až 1.0).
delete()
Odstraní video a jeho kopie. Vrátí Promise<void>.
generateToken()
Vytvoří token podepsané URL adresy pro video. Vrátí Promise<string>.
downloads
Namespace pro operace se stahováním videa.
generate(downloadType?): Vygeneruje stažitelný soubor.downloadTypejeStreamDownloadTypezdefaultneboaudio. Výchozí hodnota jedefault. VracíPromise<StreamDownloadGetResponse>.get(): Vypíše existující stažené soubory. VracíPromise<StreamDownloadGetResponse>.delete(downloadType?): Odstraní stažené soubory.downloadTypejedefaultneboaudio.
captions
Namespace pro operace s titulky videa.
upload(language, input): Nahrajte soubor s titulky pro jazykový tag BCP 47.inputjeReadableStream. VracíPromise<StreamCaption>.generate(language): Vygeneruje titulky pomocí AI pro jazykový tag BCP 47. VracíPromise<StreamCaption>.list(language?): Vypíše titulky, volitelně filtrované podle jazyka. VracíPromise<StreamCaption[]>.delete(language): Odstraní titulky pro daný jazyk. VracíPromise<void>.
Metody vodoznaku
Následující metody jsou k dispozici na env.STREAM.watermarks namespace.
watermarks.generate(input, params)
Vytvoří profil vodoznaku. Přijímá buď ReadableStream nebo řetězec URL adresy. Vrací Promise<StreamWatermark>.
input(povinné):ReadableStreamnebo řetězec URL adresy obrázku vodoznaku.params(volitelné):StreamWatermarkCreateParamsobjekt s následujícími vlastnostmi:name: Název profilu vodoznaku.opacity: Neprůhlednost vodoznaku (0.0 až 1.0).padding: Odsazení kolem vodoznaku jako podíl rozlišení videa.scale: Velikost vodoznaku jako podíl rozlišení videa.position: Poloha vodoznaku:upperRight,upperLeft,lowerLeft,lowerRight, nebocenter.
watermarks.list()
Vypíše všechny profily vodoznaků. Vrací Promise<StreamWatermark[]>.
watermarks.get(watermarkId)
Získání jednoho profilu vodoznaku. Vrací Promise<StreamWatermark>.
watermarkId(povinné): ID profilu vodoznaku.
watermarks.delete(watermarkId)
Odstraní profil vodoznaku. Vrátí Promise<void>.
watermarkId(povinné): ID profilu vodoznaku.
Příklady
Nahrání videa z 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);
},
};Vytvoření přímého nahrávání
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);
},
};Výpis videí
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);
},
};Získání podrobností o videu
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);
},
};Aktualizace metadat videa
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);
},
};Odstranění videa
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 });
},
};Generování tokenu pro podepsanou URL adresu
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 });
},
};Nahrání titulků
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);
},
};Generování titulků pomocí AI
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);
},
};Výpis a odstranění titulků
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);
},
};Generování a výpis stažení
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 });
},
};Vytvoření profilu vodoznaku
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);
},
};Výpis a odstranění profilů vodoznaků
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 });
},
};Definice typů
StreamVideo
StreamVideo se vrací u operací, které načítají nebo vytvářejí video. Obsahuje úplná metadata videa.
-
idstring- Jedinečný identifikátor videa.
-
creatorstring | null- Uživatelem definovaný identifikátor tvůrce médií.
-
thumbnailstring- URL adresa náhledového obrázku videa.
-
thumbnailTimestampPctnumber- Procentuální časová značka náhledového obrázku.
-
readyToStreamboolean- Udává, zda je video připraveno ke streamování.
-
readyToStreamAtstring | null- Datum a čas, kdy bylo video připraveno ke streamování.
-
statusStreamVideoStatus- Informace o stavu zpracování. Viz StreamVideoStatus.
-
metaRecord<string, string>- Uživatelsky upravitelné úložiště klíč-hodnota.
-
createdstring- Datum a čas vytvoření videa.
-
modifiedstring- Datum a čas poslední úpravy videa.
-
scheduledDeletionstring | null- Datum a čas, kdy bude video odstraněno.
-
sizenumber- Velikost videa v bajtech.
-
previewstringvolitelné- URL adresa náhledu videa.
-
allowedOriginsArray<string>- Originy, které smí video zobrazovat.
-
requireSignedURLsboolean | null- Udává, zda jsou vyžadovány podepsané URL adresy.
-
uploadedstring | null- Datum a čas nahrání videa.
-
uploadExpirystring | null- Datum a čas vypršení platnosti URL adresy pro nahrání.
-
maxSizeBytesnumber | null- Maximální velikost přímého nahrávání v bajtech.
-
maxDurationSecondsnumber | null- Maximální délka přímého nahrávání v sekundách.
-
durationnumber- Délka videa v sekundách.
-1znamená neznámou hodnotu.
- Délka videa v sekundách.
-
inputStreamVideoInput- Vstupní metadata pro původní nahrávku. Viz StreamVideoInput.
-
hlsPlaybackUrlstring- URL adresa pro přehrávání videa ve formátu HLS.
-
dashPlaybackUrlstring- URL adresa pro přehrávání videa ve formátu DASH.
-
watermarkStreamWatermark | null- Vodoznak použitý na video, pokud existuje. Viz StreamWatermark.
-
liveInputIdstring | nullvolitelné- ID živého vstupu přiřazené k videu, pokud existuje.
-
clippedFromIdstring | null- ID zdrojového videa, pokud se jedná o klip.
-
publicDetailsStreamPublicDetails | null- Veřejné údaje přiřazené k videu. Viz StreamPublicDetails.
StreamVideoStatus
Informace o stavu zpracování videa.
-
statestring- Aktuální stav zpracování.
-
stepstringvolitelné- Aktuální krok zpracování.
-
pctCompletestringvolitelné- Procento dokončení jako řetězec.
-
errorReasonCodestring- Kód důvodu chyby, pokud je k dispozici.
-
errorReasonTextstring- Text důvodu chyby, pokud je k dispozici.
StreamVideoInput
Vstupní metadata pro původní nahrávku.
-
widthnumber- Šířka vstupu v pixelech.
-
heightnumber- Výška vstupu v pixelech.
StreamPublicDetails
Veřejné údaje přiřazené k videu.
-
titlestring | null- Veřejný název videa.
-
share_linkstring | null- Veřejný odkaz ke sdílení.
-
channel_linkstring | null- Veřejný odkaz na kanál.
-
logostring | null- Veřejná URL adresa loga.
StreamDirectUpload
Vráceno createDirectUpload(). Obsahuje URL adresu pro nahrání a identifikátor videa pro přímé nahrání.
-
uploadURLstring- URL adresa, kterou lze použít pro neautentizované nahrání v rámci jednoho vícedílného (multipart) požadavku.
-
idstring- Jedinečný identifikátor mediální položky vygenerovaný Cloudflare.
-
watermarkStreamWatermark | null- Profil vodoznaku použitý při nahrávání. Viz StreamWatermark.
-
scheduledDeletionstring | null- Naplánovaný čas odstranění, pokud existuje.
StreamCaption
Představuje titulkovou stopu videa.
-
generatedbooleanvolitelné- Zda byl titulek vygenerován pomocí AI.
-
labelstring- Název jazyka zobrazený uživatelům v daném jazyce.
-
languagestring- Jazykový tag ve formátu BCP 47.
-
status'ready' | 'inprogress' | 'error'volitelné- Stav vygenerovaných titulků.
StreamDownloadGetResponse
Objekt s klíči podle typu stahování. Každý klíč je volitelný a je přítomný pouze v případě, že byl daný typ stahování vytvořen.
-
defaultStreamDownloadvolitelné- Výchozí soubor videa ke stažení. Je k dispozici pouze v případě, že byl tento typ stahování vytvořen. Více informací najdete v StreamDownload.
-
audioStreamDownloadvolitelné- Soubor ke stažení obsahující pouze zvuk. Je k dispozici pouze v případě, že byl tento typ stahování vytvořen. Více informací najdete v StreamDownload.
StreamDownload
Představuje vygenerovaný soubor ke stažení pro video.
-
percentCompletenumber- Udává průběh v procentech od 0 do 100.
-
statusStreamDownloadStatus- Stav vygenerovaného souboru ke stažení.
-
urlstringvolitelné- URL adresa pro přístup k vygenerovanému souboru ke stažení.
StreamWatermark
Představuje profil vodoznaku.
-
idstring- Jedinečný identifikátor profilu vodoznaku.
-
namestring- Krátký popis profilu vodoznaku.
-
opacitynumber- Průhlednost obrázku. Hodnota
0.0způsobí, že obrázek bude zcela průhledný, a1.0způsobí, že obrázek bude zcela neprůhledný. Pokud je obrázek již poloprůhledný, nastavení na1.0nezpůsobí, že obrázek bude zcela neprůhledný.
- Průhlednost obrázku. Hodnota
-
paddingnumber- Mezera mezi sousedícími okraji (určenými polohou) videa a obrázku.
0.0znamená žádné doplnění (padding) a1.0znamená plně doplněnou (padded) šířku nebo délku videa.
- Mezera mezi sousedícími okraji (určenými polohou) videa a obrázku.
-
scalenumber- Velikost obrázku vzhledem k celkové velikosti videa.
0.0znamená žádné škálování a1.0vyplní celé video.
- Velikost obrázku vzhledem k celkové velikosti videa.
-
positionStreamWatermarkPosition- Umístění obrázku. Více informací najdete v StreamWatermarkPosition.
-
sizenumber- Velikost obrázku v bajtech.
-
heightnumber- Výška obrázku v pixelech.
-
widthnumber- Šířka obrázku v pixelech.
-
createdstring- Datum a čas vytvoření profilu vodoznaku.
-
downloadedFromstring | null- Zdrojová URL adresa staženého obrázku. Pokud byl profil vodoznaku vytvořen prostřednictvím přímého nahrání, je toto pole
null.
- Zdrojová URL adresa staženého obrázku. Pokud byl profil vodoznaku vytvořen prostřednictvím přímého nahrání, je toto pole
StreamWatermarkPosition
Pozice vodoznaku na videu.
'upperRight' | 'upperLeft' | 'lowerLeft' | 'lowerRight' | 'center'
upperRight: Pravý horní roh videa.upperLeft: Levý horní roh videa.lowerLeft: Levý dolní roh videa.lowerRight: Pravý dolní roh videa.center: Střed videa. Upozorňujeme, žecenterignorujepadding.
StreamDownloadStatus
Stav vygenerovaného souboru ke stažení.
'ready' | 'inprogress' | 'error'
ready: Soubor ke stažení je připraven.inprogress: Stahovaný soubor se generuje.error: Během generování došlo k chybě.
StreamDownloadType
Typ stahování, které se má vygenerovat.
'default' | 'audio'
default: Stažení videa.audio: Stažení pouze zvuku.
StreamUrlUploadParams
Parametry pro nahrání videa z URL.
-
allowedOriginsArray<string>volitelné- Vypíše zdroje (origins), které mají povoleno zobrazovat video. Povolené domény zadejte jako pole a použijte
*pro zástupné subdomény (wildcard). Prázdná pole umožňují přehrávání videa z libovolného zdroje.
- Vypíše zdroje (origins), které mají povoleno zobrazovat video. Povolené domény zadejte jako pole a použijte
-
creatorstringvolitelné- Uživatelem definovaný identifikátor tvůrce médií.
-
metaRecord<string, string>volitelné- Uživatelsky upravitelné úložiště klíč-hodnota, které slouží k odkazování na jiné systémy záznamů pro správu videí.
-
requireSignedURLsbooleanvolitelné- Udává, zda je k videu možné přistupovat pomocí ID. Je-li nastaveno na
true, je nutné vygenerovat podepsaný token pomocí podpisového klíče, aby bylo možné video zobrazit.
- Udává, zda je k videu možné přistupovat pomocí ID. Je-li nastaveno na
-
scheduledDeletionstring | nullvolitelné- Udává datum a čas, kdy bude video smazáno. Pole vynechte, pokud nechcete nic měnit, nebo je uveďte s hodnotou
nullk odstranění existujícího naplánovaného smazání. Pokud je zadána, musí být alespoň 30 dní od doby nahrání.
- Udává datum a čas, kdy bude video smazáno. Pole vynechte, pokud nechcete nic měnit, nebo je uveďte s hodnotou
-
thumbnailTimestampPctnumbervolitelné- Časová značka náhledového obrázku vypočítaná jako procentuální hodnota délky videa. Chcete-li převést časovou značku v sekundách na procenta, vydělte požadovanou časovou značku celkovou délkou videa. Pokud tato hodnota není nastavena, výchozí náhledový obrázek se pořídí z času 0s videa.
-
watermarkIdstringvolitelné- Identifikátor profilu vodoznaku.
StreamDirectUploadCreateParams
Parametry pro vytvoření direct upload.
-
maxDurationSecondsnumber- Maximální délka nahrávaného videa v sekundách.
-
expirystringvolitelné- Datum a čas, po kterém nebude nahrání videa akceptováno.
-
creatorstringvolitelné- Uživatelem definovaný identifikátor tvůrce médií.
-
metaRecord<string, string>volitelné- Uživatelsky upravitelné úložiště klíč-hodnota, které slouží k odkazování na jiné systémy záznamů pro správu videí.
-
allowedOriginsArray<string>volitelné- Vypíše zdroje (origins), které mají povoleno zobrazovat video.
-
requireSignedURLsbooleanvolitelné- Udává, zda je k videu možné přistupovat pomocí ID. Je-li nastaveno na
true, je nutné vygenerovat podepsaný token pomocí podpisového klíče, aby bylo možné video zobrazit.
- Udává, zda je k videu možné přistupovat pomocí ID. Je-li nastaveno na
-
thumbnailTimestampPctnumbervolitelné- Časová značka náhledového obrázku vypočítaná jako procentuální hodnota délky videa.
-
scheduledDeletionstring | nullvolitelné- Datum a čas, kdy bude video odstraněno. Uveďte
nullk odstranění naplánovaného smazání.
- Datum a čas, kdy bude video odstraněno. Uveďte
-
watermarkStreamDirectUploadWatermarkvolitelné- Profil vodoznaku, který se má použít. Viz StreamDirectUploadWatermark.
StreamDirectUploadWatermark
Konfigurace vodoznaku pro přímé nahrání.
-
idstring- Jedinečný identifikátor profilu vodoznaku.
StreamUpdateVideoParams
Parametry pro aktualizaci videa.
-
allowedOriginsArray<string>volitelné- Vypíše zdroje (origins), které mají povoleno zobrazovat video. Povolené domény zadejte jako pole a použijte
*pro zástupné subdomény (wildcard). Prázdná pole umožňují přehrávání videa z libovolného zdroje.
- Vypíše zdroje (origins), které mají povoleno zobrazovat video. Povolené domény zadejte jako pole a použijte
-
creatorstringvolitelné- Uživatelem definovaný identifikátor tvůrce médií.
-
maxDurationSecondsnumbervolitelné- Maximální délka nahrávaného videa v sekundách. Lze nastavit u videa, které ještě nebylo nahráno, a omezit tak jeho délku. Nahrávání, která překročí zadanou délku, selžou během zpracování. Hodnota
-1znamená, že hodnota je neznámá.
- Maximální délka nahrávaného videa v sekundách. Lze nastavit u videa, které ještě nebylo nahráno, a omezit tak jeho délku. Nahrávání, která překročí zadanou délku, selžou během zpracování. Hodnota
-
metaRecord<string, string>volitelné- Uživatelsky upravitelné úložiště klíč-hodnota, které slouží k odkazování na jiné systémy záznamů pro správu videí.
-
requireSignedURLsbooleanvolitelné- Udává, zda je k videu možné přistupovat pomocí ID. Je-li nastaveno na
true, je nutné vygenerovat podepsaný token pomocí podpisového klíče, aby bylo možné video zobrazit.
- Udává, zda je k videu možné přistupovat pomocí ID. Je-li nastaveno na
-
scheduledDeletionstring | nullvolitelné- Udává datum a čas, kdy bude video smazáno. Pole vynechte, pokud nechcete nic měnit, nebo je uveďte s hodnotou
nullk odstranění existujícího naplánovaného smazání. Pokud je zadána, musí být alespoň 30 dní od doby nahrání.
- Udává datum a čas, kdy bude video smazáno. Pole vynechte, pokud nechcete nic měnit, nebo je uveďte s hodnotou
-
thumbnailTimestampPctnumbervolitelné- Časová značka náhledového obrázku vypočítaná jako procentuální hodnota délky videa. Chcete-li převést časovou značku v sekundách na procenta, vydělte požadovanou časovou značku celkovou délkou videa. Pokud tato hodnota není nastavena, výchozí náhledový obrázek se pořídí z času 0s videa.
StreamVideosListParams
Parametry pro výpis videí.
-
limitnumbervolitelné- Maximální počet videí, která se mají vrátit.
-
beforestringvolitelné- Vrátí videa vytvořená před tímto časovým razítkem (RFC3339/RFC3339Nano).
-
beforeCompStreamPaginationComparisonvolitelné- Porovnávací operátor pro
beforepole. Výchozím nastavením jelt. Viz StreamPaginationComparison.
- Porovnávací operátor pro
-
afterstringvolitelné- Vrátí videa vytvořená po tomto časovém razítku (RFC3339/RFC3339Nano).
-
afterCompStreamPaginationComparisonvolitelné- Porovnávací operátor pro
afterpole. Výchozím nastavením jegte. Viz StreamPaginationComparison.
- Porovnávací operátor pro
StreamPaginationComparison
Porovnávací operátory pro dotazy se stránkováním.
'eq' | 'gt' | 'gte' | 'lt' | 'lte'
eq: Rovná segt: Větší nežgte: Větší nebo rovnolt: Menší nežlte: Menší nebo rovno
StreamWatermarkCreateParams
Parametry pro vytvoření profilu watermarku.
-
namestringvolitelné- Krátký popis profilu vodoznaku.
-
opacitynumbervolitelné- Průhlednost obrázku. Hodnota
0.0způsobí, že obrázek bude zcela průhledný, a1.0způsobí, že obrázek bude zcela neprůhledný. Pokud je obrázek již poloprůhledný, nastavení na1.0nezpůsobí, že obrázek bude zcela neprůhledný.
- Průhlednost obrázku. Hodnota
-
paddingnumbervolitelné- Mezera mezi sousedícími okraji (určenými polohou) videa a obrázku.
0.0znamená žádné doplnění (padding) a1.0znamená plně doplněnou (padded) šířku nebo délku videa.
- Mezera mezi sousedícími okraji (určenými polohou) videa a obrázku.
-
scalenumbervolitelné- Velikost obrázku vzhledem k celkové velikosti videa.
0.0znamená žádné škálování a1.0vyplní celé video.
- Velikost obrázku vzhledem k celkové velikosti videa.
-
positionStreamWatermarkPositionvolitelné- Umístění obrázku. Více informací najdete v StreamWatermarkPosition.
Zpracování chyb
Chyby vyvolávají StreamError, které rozšiřuje standardní Error rozhraní s dalšími informacemi:
code: Číselný kód chyby.statusCode: Stavový kód HTTP.message: Popis chyby.stack: Volitelný stack trace.
Mohou nastat následující podtypy chyb:
| Typ chyby | Popis |
|---|---|
InternalError |
Došlo k interní chybě serveru. |
BadRequestError |
Požadavek byl nesprávně formulovaný nebo obsahoval neplatné parametry. |
NotFoundError |
Požadovaný prostředek nebyl nalezen. |
ForbiddenError |
Požadavek nebyl autorizován. |
RateLimitedError |
Požadavek byl omezen limitem četnosti požadavků. |
QuotaReachedError |
Účet dosáhl své kvóty pro videa. |
MaxFileSizeError |
Nahraný soubor přesahuje maximální povolenou velikost. |
InvalidURLError |
Zadaná URL adresa je neplatná nebo nedostupná. |
AlreadyUploadedError |
Video již bylo nahráno. |
TooManyWatermarksError |
Účet dosáhl limitu profilů vodoznaku. |
Použijte try...catch blok pro zpracování chyb:
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;
}
},
};