视频业务在各领域的兴起,大量的音视频文件需要一个平台对其进行处理并加速分发,华为云视频点播服务就是一个实现视频上传、自动化转码处理、媒资管理、分发加速的一站式媒体服务。在使用点播服务的丰富的媒资处理功能前,您需要将这些音视频文件上传到点播服务。为了满足源文件不同的存储方式的场景,华为云点播服务同样也提供了多样的上传方式。上传音视频的方式有如下几种:
● 华为云Console本地上传:适用于将存储在本地磁盘的音视频文件上传至VOD服务。
● URL拉取:适用于将网络服务器上的音视频文件拉取存储至VOD服务的场景。
● API上传:适用于客户业务管理平台对接华为云VOD服务,需要上传本地音视频的场景。
● 端侧SDK上传:适用于客户终端APP将本地的音视频内容上传至华为云VOD服务的场景,支持Web、Android、IOS终端。
● OBS转存:适用于将OBS桶中的音视频复制迁移至VOD的场景。
● OBS托管:适用于仅需要使用VOD的音视频处理、分发等能力,但源文件和处理后的文件仍存储在租户自己OBS桶的场景。
支持批量上传音视频文件,便于快速将媒资上传到点播服务中,使用浏览器登录控制台即可进行上传。
华为云点播服务提供的本地上传功能有如下限制:
● 控制台由于安全策略,长时间上传可能会由于登录失效导致大文件上传失败,在上传大量文件时,需要操作控制台,从而保证控制台不自动退出登录。
● 支持上传的格式如下所示:
视频文件:MP4,TS,MOV,MXF,MPG,FLV,WMV,AVI,M4V,F4V,MPEG,3GP,ASF,MKV
音频文件:MP3,OGG,WAV,WMA,APE,FLAC,AAC,AC3,MMF,AMR,M4A,M4R,WV,MP2
1. 登录[视频点播控制台]: https://console.huaweicloud.com/vod2。
2. 在左侧导航栏选择“上传音视频 > 本地上传”,进入本地上传页面。
3. 单击“添加音视频”,添加存储在本地的音视频文件。
您可以根据实际需求在“音视频处理”中选择转码模板或工作流。上传成功后自动对上传的音视频进行处理。
4. 单击“开始上传”,开始上传音视频文件。
上传所需时间与文件大小以及网络情况都有关。
支持将其它网络音视频拉取上传到点播服务,华为云点播服务提供的URL提取功能具有如下限制:
● 控制台一次最多支持拉取100条音视频,API一次最多支持拉取16条音视频。
● 拉取的URL需要直接指向音视频文件,不能是某个网站的页面链接,且后缀必须是音视频格式,当前支持拉取的URL后缀如下所示:
视频文件:MP4,TS,MOV,MXF,MPG,FLV,WMV,AVI,M4V,F4V,MPEG,3GP,ASF,MKV
音视频文件:MP3,OGG,WAV,WMA,APE,FLAC,AAC,AC3,MMF,AMR,M4A,M4R,WV,MP2
● 拉取的URL协议暂只支持HTTPS和HTTP协议,其中,HTTP协议存在安全风险,建议使用HTTPS协议。
● 从其它云服务商拉取过来的音视频将会生成新的媒资ID,无法继承原有媒资ID。
通过控制台拉取上传
1. 登录[视频点播控制台]: https://console.huaweicloud.com/vod2。
2. 在左侧导航栏选择“上传音视频 > URL拉取”,进入URL拉取页面。
3. 单击“URL拉取”,输入符合要求的音视频URL。
您可以根据实际需求在“音视频处理”中选择转码模板或工作流。拉取成功后会自动对拉取的音视频进行处理。
4. 单击“确认”,可在URL拉取列表中查看到任务执行情况。
调用点播API拉取上传
1. 获取调用API的用户Token,具体请参见[构造请求]: https://support.huaweicloud.com/api-vod/vod_04_0108.html。
2. 调用[创建媒资:URL拉取注入]: https://support.huaweicloud.com/api-vod/vod_04_0052.html 接口,在请求参数中设置批量拉取的URL及音视频处理参数。
3. 调用[查询媒资列表]: https://support.huaweicloud.com/api-vod/vod_04_0203.html 接口,查看拉取结果。
建议您等待一段时间后(具体根据视频文件的大小有所差别),再查询媒资拉取结果。
场景描述
若您需要将存储在本地的音视频文件上传到点播服务,并在上传后,自动处理音视频,如发布、转码等,您可以调用VOD API进行媒资创建,并通过OBS API将音视频文件上传到VOD的存储桶中。
本章节指导用户如何使用API调用的方式上传一个大小20M以上的视频文件。
总体流程
媒资上传流程
1. 获取用户Token
2. 创建点播媒资
3. 获取初始化上传任务的授权
4. 初始化上传任务
5. 获取上传分段的授权
6. 上传分段
7. 参考5-6,将所有视频分段上传
8. 获取列举已上传分段的授权
9. 获取已上传的分段
10. 获取合并段的授权
11. 合并上传的分段
12. 确认媒资上传
操作步骤
1. [获取用户Token]: https://support.huaweicloud.com/api-iam/iam_30_0001.html,用于调用点播接口时进行认证鉴权。
详细信息请参见[构造请求]: https://support.huaweicloud.com/api-vod/vod_04_0108.html。以“华北-北京四”为示例,若您需要调用其它区域的点播接口,请替换成对应区域的[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"
}
}
}
}
如下图所示,红框中的信息为获取用户Token。
2. 调用创建媒资:上传方式接口,创建媒资。
a. 选择POST请求方法并输入URI。
https://vod.cn-north-4.myhuaweicloud.com/v1.0/{project_id}/asset
b. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
c. Request Body中传入参数如下:
{
"title": "testVideo",
"description": "test",
"category_id": 87748,
"video_name": "test.mp4",
"video_type": "MP4",
"auto_publish": 0
}
说明:示例仅设置了部分媒资参数,您可以根据实际需求参考[创建媒资:上传方式](https://support.huaweicloud.com/api-vod/vod_04_0196.html)接口的请求参数设置。
d. 请求响应成功后,返回处理媒资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=GiHTcO2avO9B84sH8A5wL2GieCI%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. 调用[获取分段上传授权]: https://support.huaweicloud.com/api-vod/vod_04_0197.html 接口,向OBS获取初始化上传任务的授权。
a. 选择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参考]: https://support.huaweicloud.com/api-obs/obs_04_0098.html。
● content_type:文件类型对应的HTTP Content-type,您需要根据上传的文件类型进行设置。
视频文件:video/视频格式,如:“video/mp4”。更多视频文件格式对应的请求头填写规则,请参见表1。
音频文件:audio/音频格式,如:“audio/mp3”。更多音频文件格式对应的请求头填写规则,请参见表2。
图片文件:image/图片格式,如:“image/png”。
字幕文件:application/octet-stream。
● bucket:存储视频文件的OBS桶,步骤2.d中返回的对应“bucket”字段。
● object_key:OBS桶中的对象名,步骤2.d中返回的对应“object”字段。
表1 视频文件请求头填写说明
表2 音频文件请求头填写说明
b. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
c. 请求响应成功后,返回授权信息。
{
"sign_str": "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=5D15iJUcTkoWLpE2vn54FQZskXA%3D"
}
4. 调用OBS的[初始化上传段任务]: https://support.huaweicloud.com/api-obs/obs_04_0098.html 接口,初始化视频分段上传任务。
a. 选择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=5D15iJUcTkoWLpE2vn54FQZskXA%3D
b. 请求消息头中增加“Content-Type”,值设置为文件类型,请根据实际上传。文件类型填写规则请参见步骤3。
c. 请求成功,返回初始化信息。
<?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. 调用[获取分段上传授权]: https://support.huaweicloud.com/api-vod/vod_04_0197.html 接口,获取分段上传的授权。
a. 选择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,您需要根据上传的文件类型进行设置,文件类型填写规则请参见步骤3。
● bucket:存储视频文件的OBS桶,步骤2.d中返回的对应“bucket”字段。
● object_key:OBS桶中的对象名,步骤2.d中返回的对应“object”字段。
● content_md5:每个视频分段的MD5值,该值为必填项,具体生成方法可以参考[生成MD5值]: https://support.huaweicloud.com/api-vod/vod_04_0212.html。注意:需进行UrlEncode转义。
● upload_id:上传任务的id,步骤4.c返回的“UploadId”字段。
● part_number:每一个上传段的段号。
b. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
c. 请求响应成功后,返回分段上传的授权信息。
{
"sign_str": "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=00000173C2ED862344C835374DFE33C8&Signature=cjw3CmUFeNBFAuLWBTsPRp9NfsQ%3D"
}
6. 调用[OBS的上传段]: https://support.huaweicloud.com/api-obs/obs_04_0099.html 接口,上传视频文件的第一个分段。
a. 选择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=00000173C2ED862344C835374DFE33C8&Signature=cjw3CmUFeNBFAuLWBTsPRp9NfsQ%3D
b. 请求消息头中增加“Content-Type”,值设置为“application/octet-stream”。若步骤5.a设置了“content_md5”参数,则请求消息头中必须增加“Content-MD5”,值设置为对应分段的MD5值(不需要转义),否则将会导致上传失败。
c. 请求Body中使用二进制方式上传视频文件的第一个分段。
d. 请求成功,返回状态码“200 OK”。
7. 参考操作步骤5-步骤6,上传视频文件的所有分段。
8. 调用[获取分段上传授权]: https://support.huaweicloud.com/api-vod/vod_04_0197.html 接口,获取列举已上传段的授权。
a. 选择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”字段。
b. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
c. 请求响应成功后,返回列举已上传段的授权信息。
{
"sign_str": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/d1f221f09f6bffefb882c8f9e167483a.mp4?AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596710054&uploadId=000001717E28524B44CEFF2C2CE1B06A&Signature=G5EOUr488cyPIretp8lgQZmpPw0%3D"
}
9. 调用OBS的[列举已上传的段]: https://support.huaweicloud.com/api-obs/obs_04_0101.html 接口,获取视频文件所有上传段的相关信息。
注意:请求消息头中的“Content-Type”属性设置成null或者不携带。
a. 选择GET请求方法并输入步骤8.c返回的已授权URI。
https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/d1f221f09f6bffefb882c8f9e167483a.mp4?AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596710054&uploadId=000001717E28524B44CEFF2C2CE1B06A&Signature=G5EOUr488cyPIretp8lgQZmpPw0%3D
b. 请求成功,返回已上传段的相关信息。
<?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. 调用[获取分段上传授权]: https://support.huaweicloud.com/api-vod/vod_04_0197.html 接口,获取合并段授权。
a. 选择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”字段。
b. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
c. 请求响应成功后,返回合上传段的授权信息。
{
"sign_str": "https://vod-bucket-65-cn-north-4.obs.cn-north-4.myhuaweicloud.com:443/05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/d1f221f09f6bffefb882c8f9e167483a.mp4?AWSAccessKeyId=MZH0LUL329N1SSXNB3S4&Expires=1596709340&uploadId=000001717E28524B44CEFF2C2CE1B06A&Signature=Pa6IaMbH1Ofa0Vi%2BCbkdgmWzm70%3D"
}
11. 调用[OBS的合并段]: https://support.huaweicloud.com/api-obs/obs_04_0102.html 接口,将上传的分段合并成一个视频文件。
a. 选择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=00000173C2ED862344C835374DFE33C8&Signature=cjw3CmUFeNBFAuLWBTsPRp9NfsQ%3D
b. 请求消息头中增加“Content-Type”,值设置为“application/xml”。
c. 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>
</Part>
<Part>
<PartNumber>4</PartNumber>
<ETag>"6335af859c20ccef26b27ea691e7ecf7"</ETag>
</Part>
</CompleteMultipartUpload>
● PartNumber:上传的段号。
● ETag:上传段成功后返回的ETag值,步骤9.b中的返回信息有每个段对应的ETag值。
d. 请求成功,返回合并段的相关信息。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUploadResult xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">
<Location>05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/d1f221f09f6bffefb882c8f9e167483a.mp4</Location>
<Bucket>vod-bucket-65-cn-north-4</Bucket>
<Key>05041fffa4002****f6dc009cc6f8f33/fea62a2845e43c37b4cbfb017c0d0821/d1f221f09f6bffefb882c8f9e167483a.mp4</Key>
<ETag>"87f450dd18b666dfcdf902ac6b162b5a-4"</ETag>
</CompleteMultipartUploadResult>
12. 调用[确认媒资上传]: https://support.huaweicloud.com/api-vod/vod_04_0198.html 接口,完成媒资上传确认。
a. 选择POST请求方法并输入URI。
https://vod.cn-north-4.myhuaweicloud.com/v1.0/{project_id}/asset/status/uploaded
b. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
c. Request Body中传入参数如下:
{
"asset_id": "fea62a2845e43c37b4cbfb017c0d0821",
"status":"CREATED"
}
d. 请求响应成功后,返回媒资ID。
{
"asset_id": "fea62a2845e43c37b4cbfb017c0d0821"
}
SDK 集成
在HTML页面上引入如下js文件:
<script src="./dist/jquery-3.3.1.min.js"></script>
<script src="./js-apig/moment.min.js"></script>
<script src="./js-apig/moment-timezone-with-data.min.js"></script>
<script src="./js-apig/hmac-sha256.js"></script>
<script src="./js-apig/signer.js"></script>
<script src="./dist/js-vod-sdk.min.js"></script>
SDK 使用
1. 获取临时凭证AK、SK和securityToken
客户端上传是直接上传到点播服务,未经过服务端中转,所以点播服务需要对上传的客户端进行鉴权。APP客户端向APP服务端发送媒资上传请求,APP服务端向华为请求[临时AK、SK和securityToken]: https://support.huaweicloud.com/api-iam/iam_04_0002.html#toTop,具体请参见获取临时AK、SK和securityToken。请求成功后,返回临时AK、SK和securityToken,APP服务端将其返回给APP用户端。
说明:JavaScript SDK仅支持使用临时AK、SK和securityToken进行鉴权,不支持使用永久AK,SK。
2. 构建一个VodClient实例,并初始化回调
var vodClient = new VodClient({
// 必选,临时凭证AK
access_key_id : "NQC51NFINJS1JXX...",
// 必选,临时凭证SK
secret_access_key : "EY74MByPZ46kTRJL9ay5DskqXX...",
// 必选,临时凭证security_token
security_token : "gAAAAABY9GbWUaGtoa9DPj7_dE4qUSnAXXX...",
// 必选,项目ID project_id
project_id : "093bb6b6c4fc460ab90a4...",
// 必选,点播的终端节点Endpoint,默认值是vod.cn-north-4.myhuaweicloud.com
vod_server : "vod.cn-north-4.myhuaweicloud.com",
// 可选,点播终端节点端口号,默认值为空
vod_port : "",
//可选,设置分片大小,单位MB
partSize : 3,
// 开始上传,如果SDK内部创建媒资,则创建媒资成功回调开始上传。
onUploadstarted:function(assetInfo) {
console.log(assetInfo.file.name + "开始上传");
},
// 上传进度回调
onUploadProgress:function(assetInfo) {
console.log(assetInfo.progress);
},
// 上传成功,如果SDK内部创建媒资,则确认媒资完成回调上传成功。
onUploadSucceed:function(assetInfo) {
console.log(assetInfo.file.name+" 上传成功");
},
// 上传异常,上传失败
onUploadFailed:function(assetInfo,err) {
try {
console.log(assetInfo,err);
}catch(err) {
console.log(err);
}
},
// 若凭证失效,重新设置凭证并上传
onUploadTokenExpired:function() {
console.log("onUploadTokenExpired");
// 重新设置临时凭证并重新上传
vodClient.resumeUploadWithAuth("ak","sk","security_token");
}
})
说明:以上参数值仅为示例,您需要根据实际返回的值进行设置。
3. 选择上传文件和媒资信息添加到上传文件列表
<form action="">
<input type="file" name="file" id="files" multiple />
</form>
<script>
document.getElementById("files").addEventListener('change', function (event) {
event.target.files.forEach(function(file) {
//添加到上传文件列表
vodClient.addAsset({
//可选,通过服务端创建媒资返回的OBS桶
bucket : "vod-bucket-78",
//可选,通过服务端创建媒资返回的文件上传路径
object : "0503dda897000fed2f78c00909158a4d/ef69df671ebf78e9b08fe863aca9e51f/12cd3709eea9fc0fbe1b9438201ff8ce.mp4",
//可选,通过服务端创建媒资返回的媒资ID(asset_id)
asset_id : "ef69df671ebf78e9b08fe863aca9e51f",
//必选,选择上传的文件
videoFile : file,
//非必选,是否进行重复上传校验,默认值为false
is_check:false
})
});
});
</script>
媒资(bucket 、object 、asset_id )信息为可选字段,如果不设置,SDK就会默认创建媒资,并用于上传该文件。如果设置,就会使用设置的媒资信息来上传该文件。一般建议,APP客户端向APP服务端发送请求,APP服务端向VOD请求创建媒资,具体请参见[创建媒资接口]: https://support.huaweicloud.com/api-vod/vod_04_0196.html 或[服务端SDK]: https://console.huaweicloud.com/apiexplorer/#/sdkcenter/VOD?lang=Java。请求成功后,返回“bucket”,“object”,“asset_id”信息,APP服务端将其返回给APP客户端。客户端需要在步骤3的代码中填写对应的返回参数值。
{
"asset_id": "ef69df671ebf78e9b08fe863aca9e51f",
"video_upload_url": "https://vod-bucket-78.obs.cnnorth-4.myhuaweicloud.com:443/0503dda897000fed2f78c00909158a4d/ef69df671ebf78e9b08fe863aca9e51f/12cd3709eea9fc0fbe1b9438201ff8ce.mp4?AWSAccessKeyId=BG923RWHL4HFXOGKCVAL&Expires=1566458900&Signature=ruZllCvSdbTcRtojA4hpgEElwSE%3D",
"cover_upload_url": null,
"subtitle_upload_urls": [],
"target": {
"bucket": "vod-bucket-78",
"location": "cn-north-4",
"object": "0503dda897000fed2f78c00909158a4d/ef69df671ebf78e9b08fe863aca9e51f/12cd3709eea9fc0fbe1b9438201ff8ce.mp4"
}
}
说明:以上参数值仅为示例,您需要根据实际返回的值进行设置。
4. 开始上传
vodClient.startUpload(index);
index为listAssets接口返回列表中元素的索引,为可选字段,会优先从index开始上传,然后从列表的开始位置依次上传,默认值为0,即从第一个文件开始上传。
5. 确认媒资
如果媒资由addAsset接口传入,则需要确认媒资。一般建议,APP客户端向APP服务端发送请求,APP服务端向VOD发送确认媒资上传请求,具体请参见确认媒资上传。若请求成功,将返回请求对应的媒资ID。如果媒资由SDK默认创建,则SDK内部会自动确认媒资。
6. 其它API接口使用。
● 取消上传(支持取消正在上传的音视频)
vodClient.cancelUpload(index);
● 断点续传(当上传中止后,再次上传该文件时,可以从中断处继续上传)
vodClient.restartUpload(index);
● 获取上传列表
vodClient.listAssets();
● 删除传列表对应的媒资信息
vodClient.delListsAsset(index);
● 重置临时凭证,并继续开始上传(需要在初始化回调onUploadTokenExpired中调用)
vodClient.resumeUploadWithAuth("ak","sk","security_token");
注意:VOD端侧上传SDK, 请在华为云提工单获取。
若在开通点播服务前,已在华为云OBS桶中存储了大量的音视频文件,希望使用视频点播的转码、截图等功能对这些音视频进行处理。您可以使用该功能将OBS桶中的音视频文件复制转存到点播服务中,然后使用点播服务的相关功能。
华为云点播服务提供的OBS转存功能有如下限制:
● 不支持跨区域转存,如“华北-北京四”OBS桶中的音视频只能转存到“华北-北京四”点播服务中。
● 转存是指将OBS桶中的音视频文件复制一份到点播服务中,因此,若OBS桶中的音视频不删除,则OBS和点播服务中都将会有相关的存储费用产生。
● 支持转存的格式如下所示:
视频文件:MP4、TS、MOV、MXF、MPG、FLV、WMV、AVI、M4V、F4V、MPEG、3GP、ASF、MKV
音频文件:MP3、OGG、WAV、WMA、APE、FLAC、AAC、AC3、MMF、AMR、M4A、M4R、WV、MP2
OBS转存方式暂只支持调用API实现,您可以调用[创建媒资:OBS转存]: https://support.huaweicloud.com/api-vod/vod_04_0201.html 接口实现该功能。
若您已有大量的音视频文件存储在华为云OBS桶中,希望使用视频点播的转码、截图等功能对这些音视频进行处理。虽然使用OBS转存方式能满足该场景,但会导致OBS和点播服务中分别存储有相同的音视频文件,不仅造成额外的存储费用,且OBS桶中有新增音视频时,需要再次使用工具进行手动转存。因此,华为云点播服务还提供了OBS托管功能,源文件仍存储在OBS桶中,将该OBS桶授权托管给点播服务,这样您就可以直接在点播服务中对源文件进行处理,且处理后生成的相关媒资文件可以选择存储在点播服务或者自己的OBS桶中。
华为云点播服务提供的OBS托管功能有如下限制:
● 不支持跨区域托管,如“华北-北京四”OBS桶中的音视频只能托管到“华北-北京四”点播服务中。
● IAM子账号暂不支持使用OBS托管功能。
● 支持托管的格式如下所示:
视频文件:MP4,FLV,TS,MOV,MXF,MPEG,WMV,AVI,M4V,F4V,MPG
音视频文件:MP3,OGG,WAV,WMA,APE,FLAC,AAC,AC3,MMF,AMR,M4A,M4R,WV,MP2
通过控制台托管
您可以在视频点播控制台使用存量托管和增量托管完成音视频托管,具体操作请参见[使用VOD处理OBS中的音视频]: https://support.huaweicloud.com/bestpractice-vod/vod_10_0002.html。
调用API完成OBS托管
1. 获取调用API的用户Token,具体请参见[构造请求]: https://support.huaweicloud.com/api-vod/vod_04_0108.html。
2. 调用[桶授权接口]: https://support.huaweicloud.com/api-vod/vod_04_0199.html,将需要被托管的OBS桶授权给点播服务。
3. 调用[创建媒资:OBS托管方式]: https://support.huaweicloud.com/api-vod/vod_04_0051.html 接口,在请求参数中设置存量托管的相关参数。
点播API暂只提供了存量托管功能,若您需要OBS有新增音视频文件时,会自动同步到点播服务中,则还需要在点播控制台配置[增量托管]: https://support.huaweicloud.com/usermanual-vod/vod010032.html。
4. 调用[查询媒资列表]: https://support.huaweicloud.com/api-vod/vod_04_0203.html 接口,查看托管结果。
托管成功后,即可使用视频点播服务处理被托管的音视频文件。
查看常见的[VOD使用问题]: https://support.huaweicloud.com/vod_faq/index.html