文档首页/ 视频点播 VOD/ API参考/ 媒资上传/ 获取分段上传授权
更新时间:2024-11-05 GMT+08:00

获取分段上传授权

功能介绍

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

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

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

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

URI

GET /v1.1/{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

带授权签名字符串的URL。具体调用示例请参见示例2:媒资分段上传(20M以上)。示例:https://{obs_domain}/{bucket}?AWSAccessKeyId={AccessKeyID}&Expires={ExpiresValue}&Signature={Signature}

状态码: 403

表5 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

error_msg

String

错误描述。

请求示例

  • 初始化上传任务:

    GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=POST&content_type={type}&bucket={bucket}&object_key={objectKey}
  • 上传段:

    GET https://{endpoint}/v1.1/{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.1/{project_id}/asset/authority?http_verb=POST&upload_id={id}&bucket={bucket}&object_key={objectKey}
  • 取消段:

    GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=DELETE&bucket={bucket}&object_key={objectKey}&upload_id={uploadId}
  • 列举已上传的段:

    GET https://{endpoint}/v1.1/{project_id}/asset/authority?http_verb=GET&bucket={bucket}&object_key={objectKey}&upload_id={uploadId}

响应示例

状态码: 200

处理成功返回。

{
  "sign_str" : "https://obs.cn-north-4.myhuaweicloud.com:443/obs-vod-1/%7Bproject_id%7D/f488337c31c8e4622f1590735b134c65/Avatar_480P.mp4?AWSAccessKeyId=CBN2J**********0RCSN&Expires=1518147618&Signature=kZYh0hEos2V**********AHGyXA%3D"
}

状态码: 403

处理失败返回。

{
  "error_code" : "VOD.10053",
  "error_msg" : "The request parameter is illegal, illegal field: {xx}."
}

状态码

状态码

描述

200

处理成功返回。

403

处理失败返回。

错误码

请参见错误码