バインディング は、Worker を Developer Platform 上の外部リソース(Stream、R2 バケット、KV 名前空間 など)へ接続します。
たとえば Workers 内で Stream を使うと、次ができます。
- URL から動画をアップロードし、ライフサイクルを管理する
- API キーを公開せずに、クライアント側アップロード用のダイレクトアップロードを作成する
- 動画を一覧・検索する
- 動画のキャプションとダウンロードを管理する
- ウォーターマークプロファイルを作成・管理する
Stream バインディングは Worker 単位で有効にします。
Stream を Worker にバインドするには、Wrangler 設定ファイルの末尾に次を追加します。
{
"stream": {
"binding": "STREAM"
}
}[stream]
binding = "STREAM"Worker の設定の詳細は Wrangler Configuration のドキュメント を参照してください。
次のメソッドは env.STREAM バインディング上で直接使えます。
URL から動画をアップロードします。戻り値は Promise<StreamVideo> です。
url(必須): アップロードする動画の URL です。params(任意): 次のプロパティを持つStreamUrlUploadParamsオブジェクトです。allowedOrigins: 動画で許可するオリジンの配列です。creator: 作成者の識別子です。meta: 任意のメタデータオブジェクトです。requireSignedURLs: 署名付き URL が必要かどうかです。scheduledDeletion: 削除予定日時の ISO 8601 タイムスタンプです。thumbnailTimestampPct: サムネイルのタイムスタンプ(割合。0.0 ~ 1.0)です。watermarkId: 適用するウォーターマークプロファイルの ID です。
スローする例外: BadRequestError、QuotaReachedError、MaxFileSizeError、RateLimitedError、AlreadyUploadedError、InternalError。
API キーなしでクライアント側アップロードできる、基本的なダイレクトアップロード URL を作成します。戻り値は uploadURL と id を持つ Promise<StreamDirectUpload> です。
現在、このメソッドは 200MB を超えるファイルに対応していません。 より大きなダイレクトアップロードについては、TUS エンドポイントをプロビジョニングする API リクエスト ↗ を参照してください。_
params(必須): 次のプロパティを持つStreamDirectUploadCreateParamsオブジェクトです。maxDurationSeconds(必須): アップロードする動画の最大長さ(秒)です。expiry(任意): アップロード URL の有効期限(ISO 8601 タイムスタンプ)です。creator(任意): 作成者の識別子です。meta(任意): 任意のメタデータオブジェクトです。allowedOrigins(任意): 動画で許可するオリジンの配列です。requireSignedURLs(任意): 署名付き URL が必要かどうかです。thumbnailTimestampPct(任意): サムネイルのタイムスタンプ(割合。0.0 ~ 1.0)です。scheduledDeletion(任意): 削除予定日時の ISO 8601 タイムスタンプです。watermark(任意): 適用するウォーターマークプロファイルの ID です。
アカウント内のすべての動画を一覧します。戻り値は 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) を呼び出すと、1 本の動画にスコープしたハンドルが返り、次のメソッドが使えます。
動画の詳細をすべて取得します。戻り値は Promise<StreamVideo> です。
動画のメタデータを更新します。戻り値は Promise<StreamVideo> です。
params(必須): 次のプロパティを持つStreamUpdateVideoParamsオブジェクトです。allowedOrigins: 動画で許可するオリジンの配列です。creator: 作成者の識別子です。maxDurationSeconds: 最大長さ(秒)です。meta: 任意のメタデータオブジェクトです。requireSignedURLs: 署名付き URL が必要かどうかです。scheduledDeletion: 削除予定日時の ISO 8601 タイムスタンプです。thumbnailTimestampPct: サムネイルのタイムスタンプ(割合。0.0 ~ 1.0)です。
動画とそのコピーを削除します。戻り値は Promise<void> です。
動画用の署名付き URL トークンを作成します。戻り値は Promise<string> です。
動画のダウンロード操作の名前空間です。
generate(downloadType?): ダウンロードを生成します。downloadTypeはdefaultまたはaudioのStreamDownloadTypeです。デフォルトはdefaultです。戻り値はPromise<StreamDownloadGetResponse>です。get(): 既存のダウンロードを一覧します。戻り値はPromise<StreamDownloadGetResponse>です。delete(downloadType?): ダウンロードを削除します。downloadTypeはdefaultまたはaudioです。
動画のキャプション操作の名前空間です。
upload(language, input): BCP 47 言語タグ向けにキャプションファイルをアップロードします。inputはReadableStreamです。戻り値はPromise<StreamCaption>です。generate(language): BCP 47 言語タグ向けに AI でキャプションを生成します。戻り値はPromise<StreamCaption>です。list(language?): キャプションを一覧します。言語で任意に絞り込めます。戻り値はPromise<StreamCaption[]>です。delete(language): 指定言語のキャプションを削除します。戻り値はPromise<void>です。
次のメソッドは env.STREAM.watermarks 名前空間で使えます。
ウォーターマークプロファイルを作成します。ReadableStream または URL 文字列を受け付けます。戻り値は Promise<StreamWatermark> です。
input(必須): ウォーターマーク画像のReadableStreamまたは URL 文字列です。params(任意): 次のプロパティを持つStreamWatermarkCreateParamsオブジェクトです。name: ウォーターマークプロファイルの名前です。opacity: ウォーターマークの不透明度(0.0 ~ 1.0)です。padding: 動画解像度に対する割合で表した、ウォーターマーク周囲の余白です。scale: 動画解像度に対する割合で表した、ウォーターマークの拡大率です。position: ウォーターマークの位置です。upperRight、upperLeft、lowerLeft、lowerRight、またはcenterです。
すべてのウォーターマークプロファイルを一覧します。戻り値は Promise<StreamWatermark[]> です。
1 つのウォーターマークプロファイルを取得します。戻り値は Promise<StreamWatermark> です。
watermarkId(必須): ウォーターマークプロファイルの ID です。
ウォーターマークプロファイルを削除します。戻り値は Promise<void> です。
watermarkId(必須): ウォーターマークプロファイルの ID です。
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 });
},
};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 は、動画の取得または作成操作が返す型です。動画のメタデータ全体を含みます。
-
idstring- 動画の一意な識別子です。
-
creatorstring | null- メディア作成者向けの、ユーザー定義の識別子です。
-
thumbnailstring- 動画のサムネイル URL です。
-
thumbnailTimestampPctnumber- サムネイルのタイムスタンプ割合です。
-
readyToStreamboolean- 動画がストリーミング可能かどうかを示します。
-
readyToStreamAtstring | null- 動画がストリーミング可能になった日時です。
-
statusStreamVideoStatus- 処理状態の情報です。StreamVideoStatus を参照してください。
-
metaRecord<string, string>- ユーザーが変更できるキー値ストアです。
-
createdstring- 動画の作成日時です。
-
modifiedstring- 動画の最終更新日時です。
-
scheduledDeletionstring | null- 動画が削除される日時です。
-
sizenumber- 動画のサイズ(バイト)です。
-
previewstring任意- 動画のプレビュー URL です。
-
allowedOriginsArray<string>- 動画の表示を許可するオリジンです。
-
requireSignedURLsboolean | null- 署名付き URL が必要かどうかを示します。
-
uploadedstring | null- 動画のアップロード日時です。
-
uploadExpirystring | null- アップロード URL の有効期限です。
-
maxSizeBytesnumber | null- ダイレクトアップロードの最大サイズ(バイト)です。
-
maxDurationSecondsnumber | null- ダイレクトアップロードの最大長さ(秒)です。
-
durationnumber- 動画の長さ(秒)です。
-1は不明を示します。
- 動画の長さ(秒)です。
-
inputStreamVideoInput- 元のアップロードの入力メタデータです。StreamVideoInput を参照してください。
-
hlsPlaybackUrlstring- 動画の HLS 再生 URL です。
-
dashPlaybackUrlstring- 動画の DASH 再生 URL です。
-
watermarkStreamWatermark | null- 動画に適用されているウォーターマーク(ある場合)です。StreamWatermark を参照してください。
-
liveInputIdstring | null任意- 動画に関連するライブ入力 ID(ある場合)です。
-
clippedFromIdstring | null- クリップの場合の元動画 ID です。
-
publicDetailsStreamPublicDetails | null- 動画に関連する公開情報です。StreamPublicDetails を参照してください。
動画の処理状態情報です。
-
statestring- 現在の処理状態です。
-
stepstring任意- 現在の処理ステップです。
-
pctCompletestring任意- 完了率を表す文字列です。
-
errorReasonCodestring- 該当する場合のエラー理由コードです。
-
errorReasonTextstring- 該当する場合のエラー理由テキストです。
元のアップロードの入力メタデータです。
-
widthnumber- 入力の幅(ピクセル)です。
-
heightnumber- 入力の高さ(ピクセル)です。
動画に関連する公開情報です。
-
titlestring | null- 動画の公開タイトルです。
-
share_linkstring | null- 公開の共有リンクです。
-
channel_linkstring | null- 公開のチャンネルリンクです。
-
logostring | null- 公開ロゴの URL です。
createDirectUpload() が返す型です。ダイレクトアップロード用のアップロード URL と動画識別子を含みます。
-
uploadURLstring- 認証なしのアップロードが、1 回のマルチパートリクエストに使える URL です。
-
idstring- Cloudflare が生成するメディアアイテムの一意な識別子です。
-
watermarkStreamWatermark | null- アップロードに適用するウォーターマークプロファイルです。StreamWatermark を参照してください。
-
scheduledDeletionstring | null- 削除予定日時(ある場合)です。
動画のキャプションまたは字幕トラックを表します。
-
generatedboolean任意- キャプションが AI で生成されたかどうかです。
-
labelstring- ユーザーに母語で表示される言語ラベルです。
-
languagestring- BCP 47 形式の言語タグです。
-
status'ready' | 'inprogress' | 'error'任意- 生成キャプションの状態です。
ダウンロード種別をキーとするオブジェクトです。各キーは任意で、その種別のダウンロードが作成されている場合のみ存在します。
-
defaultStreamDownload任意- デフォルトの動画ダウンロードです。この種別が作成されている場合のみ存在します。StreamDownload を参照してください。
-
audioStreamDownload任意- 音声のみのダウンロードです。この種別が作成されている場合のみ存在します。StreamDownload を参照してください。
動画向けに生成されたダウンロードを表します。
-
percentCompletenumber- 進捗を 0 ~ 100 の割合で示します。
-
statusStreamDownloadStatus- 生成ダウンロードの状態です。
-
urlstring任意- 生成したダウンロードへアクセスする URL です。
ウォーターマークプロファイルを表します。
-
idstring- ウォーターマークプロファイルの一意な識別子です。
-
namestring- ウォーターマークプロファイルの短い説明です。
-
opacitynumber- 画像の透明度です。
0.0は完全に透明、1.0は完全に不透明です。画像がすでに半透明の場合、1.0にしても完全な不透明にはなりません。
- 画像の透明度です。
-
paddingnumber- 位置で決まる動画の隣接辺と画像の間の余白です。
0.0は余白なし、1.0は動画の幅または長さいっぱいに余白を取った状態です。
- 位置で決まる動画の隣接辺と画像の間の余白です。
-
scalenumber- 動画全体のサイズに対する画像の大きさです。
0.0は拡大縮小なし、1.0は動画全体を埋めます。
- 動画全体のサイズに対する画像の大きさです。
-
positionStreamWatermarkPosition- 画像の位置です。StreamWatermarkPosition を参照してください。
-
sizenumber- 画像のサイズ(バイト)です。
-
heightnumber- 画像の高さ(ピクセル)です。
-
widthnumber- 画像の幅(ピクセル)です。
-
createdstring- ウォーターマークプロファイルの作成日時です。
-
downloadedFromstring | null- ダウンロードした画像のソース URL です。ダイレクトアップロードで作成したウォーターマークプロファイルの場合、このフィールドは
nullです。
- ダウンロードした画像のソース URL です。ダイレクトアップロードで作成したウォーターマークプロファイルの場合、このフィールドは
動画上のウォーターマーク位置です。
'upperRight' | 'upperLeft' | 'lowerLeft' | 'lowerRight' | 'center'
upperRight— 動画の右上です。upperLeft— 動画の左上です。lowerLeft— 動画の左下です。lowerRight— 動画の右下です。center— 動画の中央です。centerはpaddingパラメーターを無視します。
生成ダウンロードの状態です。
'ready' | 'inprogress' | 'error'
ready— ダウンロードの準備ができています。inprogress— ダウンロードを生成中です。error— 生成中にエラーが発生しました。
生成するダウンロードの種別です。
'default' | 'audio'
default— 動画のダウンロードです。audio— 音声のみのダウンロードです。
URL から動画をアップロードするときのパラメーターです。
-
allowedOriginsArray<string>任意- 動画の表示を許可するオリジンを列挙します。許可するオリジンドメインを配列で指定し、ワイルドカードサブドメインには
*を使います。空の配列は、どのオリジンでも動画を視聴できることを意味します。
- 動画の表示を許可するオリジンを列挙します。許可するオリジンドメインを配列で指定し、ワイルドカードサブドメインには
-
creatorstring任意- メディア作成者向けの、ユーザー定義の識別子です。
-
metaRecord<string, string>任意- 他の記録システムを参照して動画を管理するための、ユーザーが変更できるキー値ストアです。
-
requireSignedURLsboolean任意- ID で動画にアクセスできるかどうかを示します。
trueの場合、視聴するには署名キーで署名付きトークンを生成する必要があります。
- ID で動画にアクセスできるかどうかを示します。
-
scheduledDeletionstring | null任意- 動画が削除される日時を示します。フィールドを省略すると変更なし、
nullを含めると既存の削除予定を解除します。指定する場合は、アップロード時刻から少なくとも 30 日後である必要があります。
- 動画が削除される日時を示します。フィールドを省略すると変更なし、
-
thumbnailTimestampPctnumber任意- 動画の長さに対する割合として計算した、サムネイル画像のタイムスタンプです。秒単位のタイムスタンプから割合に変換するには、希望する時刻を動画の総再生時間で割ります。この値を設定しない場合、デフォルトのサムネイルは動画の 0 秒地点から取得します。
-
watermarkIdstring任意- ウォーターマークプロファイルの識別子です。
ダイレクトアップロードを作成するときのパラメーターです。
-
maxDurationSecondsnumber- 動画アップロードの最大長さ(秒)です。
-
expirystring任意- この日時以降はアップロードを受け付けません。
-
creatorstring任意- メディア作成者向けの、ユーザー定義の識別子です。
-
metaRecord<string, string>任意- 他の記録システムを参照して動画を管理するための、ユーザーが変更できるキー値ストアです。
-
allowedOriginsArray<string>任意- 動画の表示を許可するオリジンを列挙します。
-
requireSignedURLsboolean任意- ID で動画にアクセスできるかどうかを示します。
trueの場合、視聴するには署名キーで署名付きトークンを生成する必要があります。
- ID で動画にアクセスできるかどうかを示します。
-
thumbnailTimestampPctnumber任意- 動画の長さに対する割合として計算した、サムネイル画像のタイムスタンプです。
-
scheduledDeletionstring | null任意- 動画が削除される日時です。削除予定を解除するには
nullを含めます。
- 動画が削除される日時です。削除予定を解除するには
-
watermarkStreamDirectUploadWatermark任意- 適用するウォーターマークプロファイルです。StreamDirectUploadWatermark を参照してください。
ダイレクトアップロードのウォーターマーク設定です。
-
idstring- ウォーターマークプロファイルの一意な識別子です。
動画を更新するときのパラメーターです。
-
allowedOriginsArray<string>任意- 動画の表示を許可するオリジンを列挙します。許可するオリジンドメインを配列で指定し、ワイルドカードサブドメインには
*を使います。空の配列は、どのオリジンでも動画を視聴できることを意味します。
- 動画の表示を許可するオリジンを列挙します。許可するオリジンドメインを配列で指定し、ワイルドカードサブドメインには
-
creatorstring任意- メディア作成者向けの、ユーザー定義の識別子です。
-
maxDurationSecondsnumber任意- 動画アップロードの最大長さ(秒)です。未アップロードの動画に設定して長さを制限できます。指定した長さを超えるアップロードは処理中に失敗します。
-1は値が不明であることを意味します。
- 動画アップロードの最大長さ(秒)です。未アップロードの動画に設定して長さを制限できます。指定した長さを超えるアップロードは処理中に失敗します。
-
metaRecord<string, string>任意- 他の記録システムを参照して動画を管理するための、ユーザーが変更できるキー値ストアです。
-
requireSignedURLsboolean任意- ID で動画にアクセスできるかどうかを示します。
trueの場合、視聴するには署名キーで署名付きトークンを生成する必要があります。
- ID で動画にアクセスできるかどうかを示します。
-
scheduledDeletionstring | null任意- 動画が削除される日時を示します。フィールドを省略すると変更なし、
nullを含めると既存の削除予定を解除します。指定する場合は、アップロード時刻から少なくとも 30 日後である必要があります。
- 動画が削除される日時を示します。フィールドを省略すると変更なし、
-
thumbnailTimestampPctnumber任意- 動画の長さに対する割合として計算した、サムネイル画像のタイムスタンプです。秒単位のタイムスタンプから割合に変換するには、希望する時刻を動画の総再生時間で割ります。この値を設定しない場合、デフォルトのサムネイルは動画の 0 秒地点から取得します。
動画を一覧するときのパラメーターです。
-
limitnumber任意- 返す動画の最大数です。
-
beforestring任意- このタイムスタンプ(RFC3339/RFC3339Nano)より前に作成された動画を返します。
-
beforeCompStreamPaginationComparison任意beforeフィールドの比較演算子です。デフォルトはltです。StreamPaginationComparison を参照してください。
-
afterstring任意- このタイムスタンプ(RFC3339/RFC3339Nano)より後に作成された動画を返します。
-
afterCompStreamPaginationComparison任意afterフィールドの比較演算子です。デフォルトはgteです。StreamPaginationComparison を参照してください。
ページネーションクエリの比較演算子です。
'eq' | 'gt' | 'gte' | 'lt' | 'lte'
eq— 等しいgt— より大きいgte— 以上lt— より小さいlte— 以下
ウォーターマークプロファイルを作成するときのパラメーターです。
-
namestring任意- ウォーターマークプロファイルの短い説明です。
-
opacitynumber任意- 画像の透明度です。
0.0は完全に透明、1.0は完全に不透明です。画像がすでに半透明の場合、1.0にしても完全な不透明にはなりません。
- 画像の透明度です。
-
paddingnumber任意- 位置で決まる動画の隣接辺と画像の間の余白です。
0.0は余白なし、1.0は動画の幅または長さいっぱいに余白を取った状態です。
- 位置で決まる動画の隣接辺と画像の間の余白です。
-
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;
}
},
};