Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Workers API にバインドする

最終更新 Markdown で表示Agent セットアップ

バインディング は、Worker を Developer Platform 上の外部リソース(StreamR2 バケットKV 名前空間 など)へ接続します。

たとえば Workers 内で Stream を使うと、次ができます。

  • URL から動画をアップロードし、ライフサイクルを管理する
  • API キーを公開せずに、クライアント側アップロード用のダイレクトアップロードを作成する
  • 動画を一覧・検索する
  • 動画のキャプションとダウンロードを管理する
  • ウォーターマークプロファイルを作成・管理する

セットアップ

Stream バインディングは Worker 単位で有効にします。

Stream を Worker にバインドするには、Wrangler 設定ファイルの末尾に次を追加します。

{
	"stream": {
		"binding": "STREAM"
	}
}
[stream]
binding = "STREAM"

Worker の設定の詳細は Wrangler Configuration のドキュメント を参照してください。

メソッド

バインディング単位のメソッド

次のメソッドは env.STREAM バインディング上で直接使えます。

upload(url, params?)

URL から動画をアップロードします。戻り値は Promise<StreamVideo> です。

  • url(必須): アップロードする動画の URL です。
  • params(任意): 次のプロパティを持つ StreamUrlUploadParams オブジェクトです。
    • allowedOrigins: 動画で許可するオリジンの配列です。
    • creator: 作成者の識別子です。
    • meta: 任意のメタデータオブジェクトです。
    • requireSignedURLs: 署名付き URL が必要かどうかです。
    • scheduledDeletion: 削除予定日時の ISO 8601 タイムスタンプです。
    • thumbnailTimestampPct: サムネイルのタイムスタンプ(割合。0.0 ~ 1.0)です。
    • watermarkId: 適用するウォーターマークプロファイルの ID です。

スローする例外: BadRequestErrorQuotaReachedErrorMaxFileSizeErrorRateLimitedErrorAlreadyUploadedErrorInternalError

createDirectUpload(params)

API キーなしでクライアント側アップロードできる、基本的なダイレクトアップロード URL を作成します。戻り値は uploadURLid を持つ 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 です。

videos.list(params?)

アカウント内のすべての動画を一覧します。戻り値は Promise<StreamVideo[]> です。

  • params(任意): 次のプロパティを持つ StreamVideosListParams オブジェクトです。
    • limit: 返す動画の最大数です。
    • before: この ISO 8601 タイムスタンプより前に作成された動画を返します。
    • beforeComp: before の比較演算子です。eqgtgtelt、または lte です。
    • after: この ISO 8601 タイムスタンプより後に作成された動画を返します。
    • afterComp: after の比較演算子です。eqgtgtelt、または lte です。

動画スコープのメソッド

env.STREAM.video(id) を呼び出すと、1 本の動画にスコープしたハンドルが返り、次のメソッドが使えます。

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?): ダウンロードを生成します。downloadTypedefault または audioStreamDownloadType です。デフォルトは default です。戻り値は Promise<StreamDownloadGetResponse> です。
  • get(): 既存のダウンロードを一覧します。戻り値は Promise<StreamDownloadGetResponse> です。
  • delete(downloadType?): ダウンロードを削除します。downloadTypedefault または audio です。

captions

動画のキャプション操作の名前空間です。

  • upload(language, input): BCP 47 言語タグ向けにキャプションファイルをアップロードします。inputReadableStream です。戻り値は Promise<StreamCaption> です。
  • generate(language): BCP 47 言語タグ向けに AI でキャプションを生成します。戻り値は 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: ウォーターマークの位置です。upperRightupperLeftlowerLeftlowerRight、または center です。

watermarks.list()

すべてのウォーターマークプロファイルを一覧します。戻り値は Promise<StreamWatermark[]> です。

watermarks.get(watermarkId)

1 つのウォーターマークプロファイルを取得します。戻り値は 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);
	},
};

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);
	},
};

キャプションを一覧・削除する

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 は、動画の取得または作成操作が返す型です。動画のメタデータ全体を含みます。

  • id string

    • 動画の一意な識別子です。
  • creator string | null

    • メディア作成者向けの、ユーザー定義の識別子です。
  • thumbnail string

    • 動画のサムネイル URL です。
  • thumbnailTimestampPct number

    • サムネイルのタイムスタンプ割合です。
  • readyToStream boolean

    • 動画がストリーミング可能かどうかを示します。
  • readyToStreamAt string | null

    • 動画がストリーミング可能になった日時です。
  • status StreamVideoStatus

  • meta Record<string, string>

    • ユーザーが変更できるキー値ストアです。
  • created string

    • 動画の作成日時です。
  • modified string

    • 動画の最終更新日時です。
  • scheduledDeletion string | null

    • 動画が削除される日時です。
  • size number

    • 動画のサイズ(バイト)です。
  • preview string 任意

    • 動画のプレビュー URL です。
  • allowedOrigins Array<string>

    • 動画の表示を許可するオリジンです。
  • requireSignedURLs boolean | null

    • 署名付き URL が必要かどうかを示します。
  • uploaded string | null

    • 動画のアップロード日時です。
  • uploadExpiry string | null

    • アップロード URL の有効期限です。
  • maxSizeBytes number | null

    • ダイレクトアップロードの最大サイズ(バイト)です。
  • maxDurationSeconds number | null

    • ダイレクトアップロードの最大長さ(秒)です。
  • duration number

    • 動画の長さ(秒)です。-1 は不明を示します。
  • input StreamVideoInput

    • 元のアップロードの入力メタデータです。StreamVideoInput を参照してください。
  • hlsPlaybackUrl string

    • 動画の HLS 再生 URL です。
  • dashPlaybackUrl string

    • 動画の DASH 再生 URL です。
  • watermark StreamWatermark | null

    • 動画に適用されているウォーターマーク(ある場合)です。StreamWatermark を参照してください。
  • liveInputId string | null 任意

    • 動画に関連するライブ入力 ID(ある場合)です。
  • clippedFromId string | null

    • クリップの場合の元動画 ID です。
  • publicDetails StreamPublicDetails | null

StreamVideoStatus

動画の処理状態情報です。

  • state string

    • 現在の処理状態です。
  • step string 任意

    • 現在の処理ステップです。
  • pctComplete string 任意

    • 完了率を表す文字列です。
  • errorReasonCode string

    • 該当する場合のエラー理由コードです。
  • errorReasonText string

    • 該当する場合のエラー理由テキストです。

StreamVideoInput

元のアップロードの入力メタデータです。

  • width number

    • 入力の幅(ピクセル)です。
  • height number

    • 入力の高さ(ピクセル)です。

StreamPublicDetails

動画に関連する公開情報です。

  • title string | null

    • 動画の公開タイトルです。
  • share_link string | null

    • 公開の共有リンクです。
  • channel_link string | null

    • 公開のチャンネルリンクです。
  • logo string | null

    • 公開ロゴの URL です。

StreamDirectUpload

createDirectUpload() が返す型です。ダイレクトアップロード用のアップロード URL と動画識別子を含みます。

  • uploadURL string

    • 認証なしのアップロードが、1 回のマルチパートリクエストに使える URL です。
  • id string

    • Cloudflare が生成するメディアアイテムの一意な識別子です。
  • watermark StreamWatermark | null

    • アップロードに適用するウォーターマークプロファイルです。StreamWatermark を参照してください。
  • scheduledDeletion string | null

    • 削除予定日時(ある場合)です。

StreamCaption

動画のキャプションまたは字幕トラックを表します。

  • generated boolean 任意

    • キャプションが AI で生成されたかどうかです。
  • label string

    • ユーザーに母語で表示される言語ラベルです。
  • language string

    • BCP 47 形式の言語タグです。
  • status 'ready' | 'inprogress' | 'error' 任意

    • 生成キャプションの状態です。

StreamDownloadGetResponse

ダウンロード種別をキーとするオブジェクトです。各キーは任意で、その種別のダウンロードが作成されている場合のみ存在します。

  • default StreamDownload 任意

    • デフォルトの動画ダウンロードです。この種別が作成されている場合のみ存在します。StreamDownload を参照してください。
  • audio StreamDownload 任意

    • 音声のみのダウンロードです。この種別が作成されている場合のみ存在します。StreamDownload を参照してください。

StreamDownload

動画向けに生成されたダウンロードを表します。

  • percentComplete number

    • 進捗を 0 ~ 100 の割合で示します。
  • status StreamDownloadStatus

    • 生成ダウンロードの状態です。
  • url string 任意

    • 生成したダウンロードへアクセスする URL です。

StreamWatermark

ウォーターマークプロファイルを表します。

  • id string

    • ウォーターマークプロファイルの一意な識別子です。
  • name string

    • ウォーターマークプロファイルの短い説明です。
  • opacity number

    • 画像の透明度です。0.0 は完全に透明、1.0 は完全に不透明です。画像がすでに半透明の場合、1.0 にしても完全な不透明にはなりません。
  • padding number

    • 位置で決まる動画の隣接辺と画像の間の余白です。0.0 は余白なし、1.0 は動画の幅または長さいっぱいに余白を取った状態です。
  • scale number

    • 動画全体のサイズに対する画像の大きさです。0.0 は拡大縮小なし、1.0 は動画全体を埋めます。
  • position StreamWatermarkPosition

  • size number

    • 画像のサイズ(バイト)です。
  • height number

    • 画像の高さ(ピクセル)です。
  • width number

    • 画像の幅(ピクセル)です。
  • created string

    • ウォーターマークプロファイルの作成日時です。
  • downloadedFrom string | null

    • ダウンロードした画像のソース URL です。ダイレクトアップロードで作成したウォーターマークプロファイルの場合、このフィールドは null です。

StreamWatermarkPosition

動画上のウォーターマーク位置です。

'upperRight' | 'upperLeft' | 'lowerLeft' | 'lowerRight' | 'center'
  • upperRight — 動画の右上です。
  • upperLeft — 動画の左上です。
  • lowerLeft — 動画の左下です。
  • lowerRight — 動画の右下です。
  • center — 動画の中央です。centerpadding パラメーターを無視します。

StreamDownloadStatus

生成ダウンロードの状態です。

'ready' | 'inprogress' | 'error'
  • ready — ダウンロードの準備ができています。
  • inprogress — ダウンロードを生成中です。
  • error — 生成中にエラーが発生しました。

StreamDownloadType

生成するダウンロードの種別です。

'default' | 'audio'
  • default — 動画のダウンロードです。
  • audio — 音声のみのダウンロードです。

StreamUrlUploadParams

URL から動画をアップロードするときのパラメーターです。

  • allowedOrigins Array<string> 任意

    • 動画の表示を許可するオリジンを列挙します。許可するオリジンドメインを配列で指定し、ワイルドカードサブドメインには * を使います。空の配列は、どのオリジンでも動画を視聴できることを意味します。
  • creator string 任意

    • メディア作成者向けの、ユーザー定義の識別子です。
  • meta Record<string, string> 任意

    • 他の記録システムを参照して動画を管理するための、ユーザーが変更できるキー値ストアです。
  • requireSignedURLs boolean 任意

    • ID で動画にアクセスできるかどうかを示します。true の場合、視聴するには署名キーで署名付きトークンを生成する必要があります。
  • scheduledDeletion string | null 任意

    • 動画が削除される日時を示します。フィールドを省略すると変更なし、null を含めると既存の削除予定を解除します。指定する場合は、アップロード時刻から少なくとも 30 日後である必要があります。
  • thumbnailTimestampPct number 任意

    • 動画の長さに対する割合として計算した、サムネイル画像のタイムスタンプです。秒単位のタイムスタンプから割合に変換するには、希望する時刻を動画の総再生時間で割ります。この値を設定しない場合、デフォルトのサムネイルは動画の 0 秒地点から取得します。
  • watermarkId string 任意

    • ウォーターマークプロファイルの識別子です。

StreamDirectUploadCreateParams

ダイレクトアップロードを作成するときのパラメーターです。

  • maxDurationSeconds number

    • 動画アップロードの最大長さ(秒)です。
  • expiry string 任意

    • この日時以降はアップロードを受け付けません。
  • creator string 任意

    • メディア作成者向けの、ユーザー定義の識別子です。
  • meta Record<string, string> 任意

    • 他の記録システムを参照して動画を管理するための、ユーザーが変更できるキー値ストアです。
  • allowedOrigins Array<string> 任意

    • 動画の表示を許可するオリジンを列挙します。
  • requireSignedURLs boolean 任意

    • ID で動画にアクセスできるかどうかを示します。true の場合、視聴するには署名キーで署名付きトークンを生成する必要があります。
  • thumbnailTimestampPct number 任意

    • 動画の長さに対する割合として計算した、サムネイル画像のタイムスタンプです。
  • scheduledDeletion string | null 任意

    • 動画が削除される日時です。削除予定を解除するには null を含めます。
  • watermark StreamDirectUploadWatermark 任意

StreamDirectUploadWatermark

ダイレクトアップロードのウォーターマーク設定です。

  • id string

    • ウォーターマークプロファイルの一意な識別子です。

StreamUpdateVideoParams

動画を更新するときのパラメーターです。

  • allowedOrigins Array<string> 任意

    • 動画の表示を許可するオリジンを列挙します。許可するオリジンドメインを配列で指定し、ワイルドカードサブドメインには * を使います。空の配列は、どのオリジンでも動画を視聴できることを意味します。
  • creator string 任意

    • メディア作成者向けの、ユーザー定義の識別子です。
  • maxDurationSeconds number 任意

    • 動画アップロードの最大長さ(秒)です。未アップロードの動画に設定して長さを制限できます。指定した長さを超えるアップロードは処理中に失敗します。-1 は値が不明であることを意味します。
  • meta Record<string, string> 任意

    • 他の記録システムを参照して動画を管理するための、ユーザーが変更できるキー値ストアです。
  • requireSignedURLs boolean 任意

    • ID で動画にアクセスできるかどうかを示します。true の場合、視聴するには署名キーで署名付きトークンを生成する必要があります。
  • scheduledDeletion string | null 任意

    • 動画が削除される日時を示します。フィールドを省略すると変更なし、null を含めると既存の削除予定を解除します。指定する場合は、アップロード時刻から少なくとも 30 日後である必要があります。
  • thumbnailTimestampPct number 任意

    • 動画の長さに対する割合として計算した、サムネイル画像のタイムスタンプです。秒単位のタイムスタンプから割合に変換するには、希望する時刻を動画の総再生時間で割ります。この値を設定しない場合、デフォルトのサムネイルは動画の 0 秒地点から取得します。

StreamVideosListParams

動画を一覧するときのパラメーターです。

  • limit number 任意

    • 返す動画の最大数です。
  • before string 任意

    • このタイムスタンプ(RFC3339/RFC3339Nano)より前に作成された動画を返します。
  • beforeComp StreamPaginationComparison 任意

    • before フィールドの比較演算子です。デフォルトは lt です。StreamPaginationComparison を参照してください。
  • after string 任意

    • このタイムスタンプ(RFC3339/RFC3339Nano)より後に作成された動画を返します。
  • afterComp StreamPaginationComparison 任意

    • after フィールドの比較演算子です。デフォルトは gte です。StreamPaginationComparison を参照してください。

StreamPaginationComparison

ページネーションクエリの比較演算子です。

'eq' | 'gt' | 'gte' | 'lt' | 'lte'
  • eq — 等しい
  • gt — より大きい
  • gte — 以上
  • lt — より小さい
  • lte — 以下

StreamWatermarkCreateParams

ウォーターマークプロファイルを作成するときのパラメーターです。

  • name string 任意

    • ウォーターマークプロファイルの短い説明です。
  • opacity number 任意

    • 画像の透明度です。0.0 は完全に透明、1.0 は完全に不透明です。画像がすでに半透明の場合、1.0 にしても完全な不透明にはなりません。
  • padding number 任意

    • 位置で決まる動画の隣接辺と画像の間の余白です。0.0 は余白なし、1.0 は動画の幅または長さいっぱいに余白を取った状態です。
  • scale number 任意

    • 動画全体のサイズに対する画像の大きさです。0.0 は拡大縮小なし、1.0 は動画全体を埋めます。
  • position 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;
		}
	},
};

役に立ちましたか?