最終更新日:2025-12-26 17:32:31
マルチパートアップロードでは、1本の動画を複数のパート(ブロック)に分割し、同時または順次にアップロードすることができます。この方法は、大容量動画のアップロードに推奨されており、高い信頼性とアップロード再開機能(ブレークポイント継続)をサポートします。
この方式で動画を正常にアップロードするには、ブロックとチャンクという2つの重要な概念を理解する必要があります。
基本のワークフロー:
/mkblk): サーバー上に対応するブロックを作成するため、最初のチャンクをアップロードします。/bput): 特定のブロックに対し、すべての後続チャンクをアップロードし、ブロックを完成させます。/mkfile): すべてのブロックがアップロードされたら、指定した順序でサーバーにブロック情報を結合させ、最終的な動画を作成します。
本ドキュメント内の各エンドポイントを呼び出す前に、アップロードの認証情報を取得する必要があります。
/vod/videoManage/getUploadToken)を呼び出してください。| トークンレスポンスの値 | マルチパートヘッダー/パラメータに対応 | 説明 |
|---|---|---|
uploadUrl |
Host (ベースURL) | アップロードリクエストを送信するDomainです。 |
uploadToken |
Authorization | アップロードリクエストの認証用トークンです。 |
fileKey |
Key | 動画ストレージの一意の識別子/パスです。 |
このエンドポイントは新しいブロックを初期化し、そのブロックの最初のデータチャンクをアップロードします。
エンドポイント:POST <uploadUrl>/mkblk/<BlockSize>/<BlockIndex>
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
BlockSize |
整数型 | 必須 | ブロックのサイズ(バイト単位)。最後のブロック以外は**4 MB(4194304)**の倍数である必要があります。最後のブロックのみ実際の残りサイズになります。 |
BlockIndex |
整数型 | 必須 | ブロックのゼロ始まりのインデックス(例:最初のブロックは0、2番目は1)。 |
| ヘッダー | 値 | 必須 | 説明 |
|---|---|---|---|
Authorization |
String | 必須 | Get Upload Token APIから取得したuploadToken。 |
Content-Length |
Integer | 必須 | アップロードされる現在のチャンクのサイズ(バイト単位)。 |
Content-Type |
String | 必須 | 固定値:application/octet-stream。 |
UploadBatch |
UUID | 必須 | この特定の動画アップロードセッションを識別するため、クライアントが生成したランダムなUUID文字列。同じ動画に関する全てのリクエストで同じUUIDを利用してください。 |
Key |
String | 必須 | fileKey(または対象動画パス)。アップロードポリシーでも指定可能。 |
{
"ctx": "ExampleContextStringForNextChunk..."
"checksum": "checksum_string",
"crc32": 123456789,
"offset": 4194304
}
bputリクエストに必要なコンテキスト文字列です。次回チャンクアップロードのために必ず保存してください。このエンドポイントを使用して、特定のブロックの残りのチャンクをアップロードします。現在のブロックが完全にアップロードされるまで、この呼び出しを繰り返す必要があります。
エンドポイント: POST <uploadUrl>/bput/<Ctx>/<NextChunkOffset>
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
Ctx |
文字列 | はい | 前回の /mkblk または /bput 応答で返されたコンテキスト文字列です。この値によってチャンクが正しいブロックに紐付けられます。 |
NextChunkOffset |
整数 | はい | ブロック内で現在のチャンクが開始されるオフセットを示します。前回の応答で返された offset と一致します。 |
| ヘッダー | 値 | 必須 | 説明 |
|---|---|---|---|
Authorization |
文字列 | はい | uploadToken です。 |
Content-Length |
Integer | 必須 | アップロード中の現在のチャンクのサイズ(バイト単位)。 |
Content-Type |
String | 必須 | 固定値:application/octet-stream。 |
UploadBatch |
UUID | 必須 | ステップ1で使用したUUIDと同じ値。 |
Key |
String | 必須 | fileKey。 |
{
"ctx": "次のチャンク用のExampleContextString...",
"checksum": "checksum_string",
"crc32": 123456789,
"offset": 8388608
}
bput リクエストに必要な更新後のコンテキスト文字列です。すべてのブロックのアップロードが正常に完了したら、このエンドポイントを呼び出して最終的な動画にマージしてください。
エンドポイント:POST <uploadUrl>/mkfile/<FileSize>
注意: オプションパラメーターはURL形式に追加できます:<uploadUrl>/mkfile/<FileSize>/x:<UserParam>/<EncodedValue>
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
FileSize |
整数 | はい | 動画全体のサイズ(バイト単位)です。 |
| ヘッダー | 値 | 必須 | 説明 |
|---|---|---|---|
Authorization |
文字列 | 必須 | uploadToken です。 |
Content-Type |
文字列 | 必須 | 固定値: text/plain;charset=UTF-8。 |
UploadBatch |
UUID | 必須 | 前のステップで使用したのと同じUUIDです。 |
Key |
文字列 | 必須 | fileKey です。 |
MimeType |
文字列 | 任意 | 動画用のカスタムMIMEタイプです。 |
DeleteAfterDays |
整数 | 任意 | 動画を保持する日数です。0は即時削除を意味します(推奨されません)。 |
各ブロックのインデックス順に並べた、各ブロックで最後に返された ctx 文字列のカンマ区切りリストです。
フォーマット:
<LastCtxOfBlock0>,<LastCtxOfBlock1>,<LastCtxOfBlock2>
{
"hash": "FqlKj-9023...",
"key": "video/2023/example.mp4"
}
offset応答を照合することで、最後に成功したBlockまたはChunkから再開できます。/mkfileステップを完了させてください。