华为云-使用VOD华为云服务进行音视频文件上传

场景说明收起

视频业务在各领域的兴起,大量的音视频文件需要一个平台对其进行处理并加速分发,华为云视频点播服务就是一个实现视频上传、自动化转码处理、媒资管理、分发加速的一站式媒体服务。在使用点播服务的丰富的媒资处理功能前,您需要将这些音视频文件上传到点播服务。为了满足源文件不同的存储方式的场景,华为云点播服务同样也提供了多样的上传方式。上传音视频的方式有如下几种:

● 华为云Console本地上传:适用于将存储在本地磁盘的音视频文件上传至VOD服务。

● URL拉取:适用于将网络服务器上的音视频文件拉取存储至VOD服务的场景。

● API上传:适用于客户业务管理平台对接华为云VOD服务,需要上传本地音视频的场景。

● 端侧SDK上传:适用于客户终端APP将本地的音视频内容上传至华为云VOD服务的场景,支持Web、Android、IOS终端。

● OBS转存:适用于将OBS桶中的音视频复制迁移至VOD的场景。

● OBS托管:适用于仅需要使用VOD的音视频处理、分发等能力,但源文件和处理后的文件仍存储在租户自己OBS桶的场景。

华为云Console本地上传收起

支持批量上传音视频文件,便于快速将媒资上传到点播服务中,使用浏览器登录控制台即可进行上传。

华为云点播服务提供的本地上传功能有如下限制:

● 控制台由于安全策略,长时间上传可能会由于登录失效导致大文件上传失败,在上传大量文件时,需要操作控制台,从而保证控制台不自动退出登录。

● 支持上传的格式如下所示:

视频文件: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拉取收起

支持将其它网络音视频拉取上传到点播服务,华为云点播服务提供的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 接口,查看拉取结果。

建议您等待一段时间后(具体根据视频文件的大小有所差别),再查询媒资拉取结果。

API上传收起

场景描述

若您需要将存储在本地的音视频文件上传到点播服务,并在上传后,自动处理音视频,如发布、转码等,您可以调用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上传(以JS SDK为例)收起

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桶中的音视频不删除,则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托管功能有如下限制:

● 不支持跨区域托管,如“华北-北京四”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