• 沒有找到結果。

4.1 示例 1:媒资上传(20M 以下)

场景描述

若您需要将存储在本地的音视频文件上传到点播服务,并在上传后,自动处理音视 频,如发布、转码等,您可以调用VOD API进行媒资创建,并通过OBS API将音视频文 件上传到VOD的存储桶中。

本章节指导用户如何使用API调用的方式上传一个大小20M以下的视频文件。

前提条件

● 已明确需要上传媒资的点播服务所在的区域信息,并获取该区域的Endpoint,您 可以从地区和终端节点获取。

● 已获取需要上传到对应点播服务所在区域的项目ID,具体获取方法请参见15.3 获 取项目ID。

总体流程

4-1 媒资上传流程

1. 调用创建媒资:上传方式接口创建媒资。

2. 使用PUT方法将本地媒资文件上传。

3. 调用确认媒资上传接口完成媒资创建确认。

操作步骤

步骤1 获取用户Token,用于调用点播接口时进行认证鉴权。

详细信息请参见3.1 构造请求。以“华北-北京四”为示例,若您需要调用其它区域的 点播接口,请替换成对应区域的IAM终端节点。

POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json

{ "auth": { "identity": { "methods": [ "password"

],

"password": { "user": {

"name": "username", "password": "password", "domain": {

"name": "domainname"

} } } }, "scope": { "project": {

"name": "projectname"

} } }}

如图4-2所示,红框中的信息为获取用户Token。

4-2 获取用户 Token

步骤2 调用创建媒资:上传方式接口,创建媒资,在请求头中增加“X-Auth-Token”字段,

其中“Value”为步骤1获取的。

POST https://vod.cn-north-4.myhuaweicloud.com/v1.0/{project_id}/asset { "title": "test",

"description": "test", "category_id": 87748, "video_name": "test.mp4", "video_type": "MP4", "cover_type": "PNG", "tags":"mytags,test", "auto_publish": 0,

"template_group_name":"test", "subtitles":[

说明

调用IAM接口的区域需与调用点播接口的区域一致,如调用“cn-north-4”区域的IAM接口获取 用户Token,则该Token仅能用于调用“cn-north-4”区域点播接口的鉴权。

步骤3 在返回参数中获取“video_upload_url”,“cover_upload_url”和

“subtitle_upload_urls”。

{ "asset_id": "3f40a2c7c60454f5f84381e0313ca230",

"video_upload_url": "https://vod-bucket-81.obs.cn-north-4.myhuaweicloud.com:

443/474bcff2992f4be5b883a2fb9cec7343/3f40a2c7c60454f5f84381e0313ca230/

cdeda86cd1b7b3dd760a3ff28a5ee497.mp4?

AWSAccessKeyId=BG923RWHL4HFXOGKCVAL&Expires=1560420274&Signature=9f

%2BZcdD6SwjIU5ARHYiP6YY1Lyw%3D",

"cover_upload_url": "https://vod-bucket-81.obs.cn-north-4.myhuaweicloud.com:

443/474bcff2992f4be5b883a2fb9cec7343/3f40a2c7c60454f5f84381e0313ca230/cover/Cover0.png?

AWSAccessKeyId=BG923RWHL4HFXOGKCVAL&Expires=1560420274&Signature=4Aa88NK%2By

%2By1Xo0RvLpOvuaFCoE%3D", "subtitle_upload_urls": [

"https://vod-bucket-81.obs.cn-north-4.myhuaweicloud.com:

443/474bcff2992f4be5b883a2fb9cec7343/3f40a2c7c60454f5f84381e0313ca230/subtitle/1.srt?

AWSAccessKeyId=BG923RWHL4HFXOGKCVAL&Expires=1560420274&Signature=l0UclE9yfaVrxkl0kaNnr

%2BemG98%3D"

], "target": {

"bucket": "vod-bucket-81", "location": "cn-north-4",

"object": "474bcff2992f4be5b883a2fb9cec7343/3f40a2c7c60454f5f84381e0313ca230/

cdeda86cd1b7b3dd760a3ff28a5ee497.mp4"

}}

步骤4 使用PUT请求分别向“video_upload_url”,“cover_upload_url”和

“subtitle_upload_urls”中上传视频文件、封面图片和字幕文件。

其中,请求头“Content-Type”需要根据上传的文件类型分别设置,如下所示:

● 视频文件:video/视频格式,如:“video/mp4”。更多视频文件格式对应的请求 头填写规则,请参见表4-1。

● 图片文件:image/图片格式,如:“image/png”。

● 字幕文件:application/octet-stream。

4-1 请求头填写说明

文件后缀 Content-Type

MP4 video/mp4

MOV video/quicktime

MXF application/mxf

TS video/mp2t

MPG video/mpeg

FLV video/flv

WMV video/x-ms-wmv

AVI video/x-msvideo

文件后缀 Content-Type

M4V video/m4v

F4V application/f4v

MPEG video/mpeg

M3U8 application/octet-stream

_3GP/3GP video/3gpp

ASF video/x-ms-asf

MKV video/x-matroska

WEBM video/webm

MPD video/dash

步骤5 调用接口确认媒资上传接口,完成媒资上传。

POST https://vod.cn-north-4.myhuaweicloud.com/v1.0/{project_id}/asset/status/uploaded { "asset_id": "0f4d3f1f32ec353d8866f2d84a036124",

"status":"CREATED"

}

----结束

媒资上传成功后,您可以在视频点播控制台查看媒资相关详细信息。

4.2 示例 2:媒资分段上传(20M 以上)

场景描述

4.1 示例1:媒资上传(20M以下)已介绍了如何将小于20M大小的音视频文件上传到 点播服务。若您需要上传的音视频文件的大小大于20M,您可以调用VOD API进行分 段上传。

本章节指导用户如何使用API调用的方式上传一个文件大小大于20M的视频文件。

前提条件

● 已明确需要上传媒资的点播服务所在的区域信息,并获取该区域的Endpoint,您 可以从地区和终端节点获取。

● 已获取需要上传到对应点播服务所在区域的项目ID,具体获取方法请参见15.3 获 取项目ID。

● 待上传的视频文件已完成二进制流分割,每个分段的大小不能超过20M。

总体流程

4-3 媒资上传流程

1. 获取用户Token

2. 创建点播媒资

3. 获取初始化上传任务的授权

4. 初始化上传任务

5. 获取上传分段的授权

步骤1 获取用户Token,用于调用点播接口时进行认证鉴权。

详细信息请参见3.1 构造请求。以“华北-北京四”为示例,若您需要调用其它区域的 点播接口,请替换成对应区域的IAM终端节点。

POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json

{ "auth": {

4-4 获取用户 Token

步骤2 调用创建媒资:上传方式接口,创建媒资。

1. 选择POST请求方法并输入URI。

https://vod.cn-north-4.myhuaweicloud.com/v1.0/{project_id}/asset

2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。

3. Request Body中传入参数如下:

{ "title": "testVideo", "description": "test", "category_id": 87748, "video_name": "test.mp4", "video_type": "MP4", "auto_publish": 0 }

说明

示例仅设置了部分媒资参数,您可以根据实际需求参考创建媒资:上传方式接口的请求参 数设置。

4. 请求响应成功后,返回处理媒资ID、视频上传地址及存储视频文件的OBS桶信 息。{

"asset_id": "fea62a2845e43c37b4cbfb017c0d0821",

"video_upload_url": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4?

AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596700132&Signature=GiHTcO2avO9B84sH8A 5wL2GieCI%3D",

"cover_upload_url": null, "subtitle_upload_urls": [], "target": {

"bucket": "vod-bucket-65-cn-north-4", "location": "cn-north-4",

"object": "05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4"

} }

步骤3 调用获取分段上传授权接口,向OBS获取初始化上传任务的授权。

1. 选择GET请求方法并输入URI。

https://vod.cn-north-4.myhuaweicloud.com/v1.1/{project_id}/asset/authority?

http_verb=POST&content_type=video/mp4&bucket=vod-bucket-65-cn-north-4&object_key=05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4

– http_verb:分段上传时调用OBS接口的HTTP方法,具体操作需要的HTTP方 法请参见OBS API参考。

– content_type:文件类型对应的HTTP Content-type,您需要根据上传的视频 格式进行设置,如MP4格式对应的是“video/mp4”。

– bucket:存储视频文件的OBS桶,步骤2.d中返回的对应“bucket”字段。

– object_key:OBS桶中的对象名,步骤2.d中返回的对应“object”字段。

2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。

3. 请求响应成功后,返回授权信息。

{ "sign_str": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

1. 选择POST请求方法并输入步骤3.c返回的已授权URI。

https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4?

uploads&AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596706429&Signature=5D15iJUcTko WLpE2vn54FQZskXA%3D

2. 请求消息头中增加“Content-Type”,值设置为文件类型,请根据实际上传,如 MP4格式设置为“video/mp4”。

3. 请求成功,返回初始化信息。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<InitiateMultipartUploadResult xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">

<Bucket>vod-bucket-65-cn-north-4</Bucket>

<Key>05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4</Key>

<UploadId>00000173C2ED862344C835374DFE33C8</UploadId>

</InitiateMultipartUploadResult>

步骤5 调用获取分段上传授权接口,获取分段上传的授权。

1. 选择GET请求方法并输入URI。

https://vod.cn-north-4.myhuaweicloud.com/v1.1/{project_id}/asset/authority?

http_verb=PUT&content_type=video/mp4&bucket=vod-bucket-65-cn-north-4&object_key=05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4&content_md5=hHZXtgjYL2fmLpu%2byQ%2bXgg%3d

%3d&upload_id=00000173C2ED862344C835374DFE33C8&part_number=1

– http_verb:分段上传的HTTP方法为PUT。

– content_type:文件类型对应的HTTP Content-type,您需要根据上传的视频 格式进行设置,如MP4格式对应的是“video/mp4”。

– bucket:存储视频文件的OBS桶,步骤2.d中返回的对应“bucket”字段。

– object_key:OBS桶中的对象名,步骤2.d中返回的对应“object”字段。

– content_md5:每个视频分段的MD5值,该值为可选设置,具体生成方法可 以参考15.5 生成MD5值。

– upload_id:上传任务的id,步骤4.c返回的“UploadId”字段。

– part_number:每一个上传段的段号。

2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。

3. 请求响应成功后,返回分段上传的授权信息。

{ "sign_str": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

1. 选择PUT请求方法并输入步骤5.c返回的已授权URI。

https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4?

AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596708691&partNumber=1&uploadId=000001 73C2ED862344C835374DFE33C8&Signature=cjw3CmUFeNBFAuLWBTsPRp9NfsQ%3D

2. 请求消息头中增加“Content-Type”,值设置为“application/octet-stream”。

1. 选择GET请求方法并输入URI。

https://vod.cn-north-4.myhuaweicloud.com/v1.1/{project_id}/asset/authority?

http_verb=GET&bucket=vod-bucket-65-cn-north-4&object_key=05041fffa4002****f6dc009cc6f8f33/

fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4&upload_id=000001717E28524B44CEFF2C2CE1B06A

– http_verb:合并段的HTTP方法为GET。

– bucket:存储视频文件的OBS桶,步骤2.d中返回的对应“bucket”字段。

– object_key:OBS桶中的对象名,步骤2.d中返回的对应“object”字段。

– upload_id:上传任务的id,步骤4.c返回的“UploadId”字段。

2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。

3. 请求响应成功后,返回列举已上传段的授权信息。

{ "sign_str": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

1. 择GET请求方法并输入步骤8.c返回的已授权URI。

https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<ListPartsResult xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">

<Bucket>vod-bucket-65-cn-north-4</Bucket>

<Key>05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4</Key>

<UploadId>00000173C2ED862344C835374DFE33C8</UploadId>

<Initiator>

<ID>d9235b9f3cf549499924f6de095241af:a96ecebcb3994e34b074e48f3dfc8237</ID>

<DisplayName>xxx</DisplayName>

</Initiator>

<Owner>

<ID>d9235b9f3cf549499924f6de095241af</ID>

<DisplayName>xxx</DisplayName>

</Owner>

<StorageClass>STANDARD</StorageClass>

<PartNumberMarker>0</PartNumberMarker>

<NextPartNumberMarker>4</NextPartNumberMarker>

<MaxParts>1000</MaxParts>

<IsTruncated>false</IsTruncated>

<Part>

<PartNumber>1</PartNumber>

<LastModified>2020-08-06T09:05:10.192Z</LastModified>

<ETag>"847657b608d82f67e62e9bbec90f9782"</ETag>

<Size>10000000</Size>

</Part>

<Part>

<PartNumber>2</PartNumber>

<LastModified>2020-08-06T08:02:02.821Z</LastModified>

<ETag>"9a6a36ed9086a3a2fea130220e1e809c"</ETag>

<Size>10000000</Size>

</Part>

<Part>

<PartNumber>3</PartNumber>

<LastModified>2020-08-06T08:04:19.711Z</LastModified>

<ETag>"3a3afe552832bee0faf081c1e720067e"</ETag>

<Size>10000000</Size>

</Part>

<Part>

<PartNumber>4</PartNumber>

<LastModified>2020-08-06T07:23:17.160Z</LastModified>

<ETag>"6335af859c20ccef26b27ea691e7ecf7"</ETag>

<Size>7472445</Size>

</Part>

</ListPartsResult>

步骤10 调用获取分段上传授权接口,获取合并段授权。

1. 选择GET请求方法并输入URI。

https://vod.cn-north-4.myhuaweicloud.com/v1.1/{project_id}/asset/authority?

http_verb=POST&bucket=vod-bucket-65-cn-north-4&object_key=05041fffa4002****f6dc009cc6f8f33/

fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4&upload_id=00000173C2ED862344C835374DFE33C8

– http_verb:合并段的HTTP方法为POST。

– bucket:存储视频文件的OBS桶,步骤2.d中返回的对应“bucket”字段。

– object_key:OBS桶中的对象名,步骤2.d中返回的对应“object”字段。

– upload_id:上传任务的id,步骤4.c返回的“UploadId”字段。

2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。

3. 请求响应成功后,返回合上传段的授权信息。

{ "sign_str": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

1. 选择POST请求方法并输入步骤10.c返回的已授权URI。

https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:

443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/

d1f221f09f6bffefb882c8f9e167483a.mp4?

AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596708691&partNumber=1&uploadId=000001 73C2ED862344C835374DFE33C8&Signature=cjw3CmUFeNBFAuLWBTsPRp9NfsQ%3D

2. 请求消息头中增加“Content-Type”,值设置为“application/xml”。

3. Request Body中传入参数如下:

<CompleteMultipartUpload>

<Part>

<PartNumber>1</PartNumber>

<ETag>"847657b608d82f67e62e9bbec90f9782"</ETag>

</Part>

<Part>

<PartNumber>2</PartNumber>

<ETag>"9a6a36ed9086a3a2fea130220e1e809c"</ETag>

</Part>

<Part>

<PartNumber>3</PartNumber>

<ETag>"3a3afe552832bee0faf081c1e720067e"</ETag>

<ETag>"3a3afe552832bee0faf081c1e720067e"</ETag>