更新时间:2024-11-05 GMT+08:00

获取分段上传授权

功能介绍

客户端请求创建媒资时,如果媒资文件超过20MB,需采用分段的方式向OBS上传,在每次与OBS交互前,客户端需通过此接口获取到授权方可与OBS交互。

该接口可以获取初始化多段上传任务、上传段、合并段、列举已上传段、取消段合并的带有临时授权的URL,用户需要根据OBS的接口文档配置相应请求的HTTP请求方法、请求头、请求体,然后请求对应的带有临时授权的URL。

视频分段上传方式和OBS的接口文档保持一致,包括HTTP请求方法、请求头、请求体等各种入参,此接口的作用是为用户生成鉴权信息(鉴权信息即sign_str),用来替换OBS接口中对应的URL,临时给用户开通向点播服务的桶上传文件的权限。

调用获取授权接口时需要传入bucket、object_key、http_verb,其中bucket和object_key是由创建媒资:上传方式接口中返回的响应体中的target字段获得的bucket和object,http_verb需要根据指定的操作选择。

URI

GET /v1.0/{project_id}/asset/authority

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方法请参考获取项目ID

表2 Query参数

参数

是否必选

参数类型

描述

http_verb

String

分段上传时调用OBS接口的HTTP方法,具体操作需要的HTTP方法请参考OBS的接口文档。

  • 初始化上传任务:POST
  • 上传段:PUT
  • 合并段:POST
  • 取消段:DELETE
  • 列举已上传段:GET

bucket

String

桶名。

调用创建媒资:上传方式接口中返回的响应体中的target字段获得的bucket值。

object_key

String

对象名。

调用创建媒资:上传方式接口中返回的响应体中的target字段获得的object值。

content_type

String

文件类型对应的content-type,当为上传任务初始化场景该字段必填。

参数填写可参考媒资分段上传(20M以上)

  • 视频文件:video/视频格式,如:“video/mp4”
  • 音频文件:audio/音频格式,如:“audio/mp3”
  • 图片文件:image/图片格式,如:“image/png”
  • 字幕文件:application/octet-stream

content_md5

String

上传段时每段的MD5。

upload_id

String

每一个上传任务的id,是OBS初始化视频分段上传任务后返回的值。除上传任务初始化场景外,该字段必填。

part_number

Integer

上传段时每一段的id。

取值范围:[1,10000]。

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token,使用Token鉴权方式时必选。

通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

Authorization

String

使用AK/SK方式认证时必选,携带的鉴权信息。

X-Sdk-Date

String

使用AK/SK方式认证时必选,请求的发生时间。

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

sign_str

String

授权签名字符串。

示例:AWSAccessKeyId={AccessKeyID}&Expires={ExpiresValue}&Signature={Signature}

状态码: 403

表5 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

error_msg

String

错误描述。

请求示例

  • 初始化上传任务:
    GET https://{endpoint}/v1.0/{project_id}/asset/authority?http_verb=POST&content_type={type}&bucket={bucket}&object_key={objectKey}
  • 上传段:
    GET https://{endpoint}/v1.0/{project_id}/asset/authority?http_verb=PUT&content_md5={md5}&part_number={num}&upload_id={id}&bucket={bucket}&object_key={objectKey}
  • 合并段:
    GET https://{endpoint}/v1.0/{project_id}/asset/authority?http_verb=POST&upload_id={id}&bucket={bucket}&object_key={objectKey}
  • 取消段:
    GET https://{endpoint}/v1.0/{project_id}/asset/authority?http_verb=DELETE&bucket={bucket}&object_key={objectKey}&upload_id={uploadId}
  • 列举已上传的段:
    GET https://{endpoint}/v1.0/{project_id}/asset/authority?http_verb=GET&bucket={bucket}&object_key={objectKey}&upload_id={uploadId}

响应示例

状态码: 200

处理成功返回。

{
  "sign_str" : "AWSAccessKeyId=UBWV*********N4NOJ&Expires=1730739600&Signature=47rXht3Qrd**********GiIxM40%3D"
}

状态码

状态码

描述

200

处理成功返回。

403

处理失败返回。

错误码

请参见错误码