43
视频点播 服务端 SDK 参考 文档版本 01 发布日期 2020-06-16 华为技术有限公司

服务端 SDK 参考 - Huawei点击右边的"Add External JARs...",将SDK的解压文件夹“vodJavaSdk”中的所有JAR 包导入。 步骤3 导入后打开工程,工程目录如下:

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

视频点播

服务端 SDK 参考

文档版本 01

发布日期 2020-06-16

华为技术有限公司

版权所有 © 华为技术有限公司 2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 i

目 录

1 SDK 介绍..................................................................................................................................... 1

2 SDK 下载..................................................................................................................................... 2

3 JAVA SDK................................................................................................................................... 33.1 开发前准备................................................................................................................................................................................. 33.2 初始化.......................................................................................................................................................................................... 63.3 媒资上传......................................................................................................................................................................................73.4 媒资管理................................................................................................................................................................................... 153.5 CDN 预热.................................................................................................................................................................................. 193.6 视频分类................................................................................................................................................................................... 203.7 视频更新................................................................................................................................................................................... 223.8 音频提取................................................................................................................................................................................... 243.9 视频处理................................................................................................................................................................................... 243.10 视频审核................................................................................................................................................................................. 253.11 查询密钥................................................................................................................................................................................. 263.12 统计分析................................................................................................................................................................................. 263.13 获取鉴权 URL........................................................................................................................................................................283.14 获取临时 AK/SK/securityToken....................................................................................................................................... 293.15 API&SDK 对应关系.............................................................................................................................................................. 303.16 异常处理................................................................................................................................................................................. 323.16.1 连接超时............................................................................................................................................................................. 323.16.2 错误处理............................................................................................................................................................................. 32

4 附录........................................................................................................................................... 344.1 JDK 环境配置........................................................................................................................................................................... 344.2 获取关键参数...........................................................................................................................................................................354.3 错误码参考............................................................................................................................................................................... 38

视频点播服务端 SDK 参考 目 录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 ii

1 SDK 介绍

VOD SDK 概述

VOD SDK是对点播服务接口请求的封装,提供的接口包括创建媒资、确认媒资上传、媒资更新、媒资发布、媒资发布取消、查询媒资信息、修改媒资属性、删除媒资、媒资处理、CDN预热、创建媒资分类、修改媒资分类、删除媒资分类、查询分类及其子分类等。请您在使用SDK前务必先去查看点播服务的接口文档,了解相关接口的功能、参数、规则和使用方法。

集成开发流程

SDK 工作流程

除了点播服务SDK之外,用户还需集成其他SDK(如OBS SDK)。在创建媒资过程中用户与这几个SDK之间的配合如下:

视频点播服务端 SDK 参考 1 SDK 介绍

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 1

2 SDK 下载

华为云视频点播服务提供了JAVA语言版本的服务端SDK,您可以在开发者中心下载如下对应版本的SDK。

视频点播服务端 SDK 参考 2 SDK 下载

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 2

3 JAVA SDK

3.1 开发前准备

3.2 初始化

3.3 媒资上传

3.4 媒资管理

3.5 CDN预热

3.6 视频分类

3.7 视频更新

3.8 音频提取

3.9 视频处理

3.10 视频审核

3.11 查询密钥

3.12 统计分析

3.13 获取鉴权URL

3.14 获取临时AK/SK/securityToken

3.15 API&SDK对应关系

3.16 异常处理

3.1 开发前准备

环境准备● 已安装JDK1.8及以上版本并完成环境配置,可参考JDK环境配置完成配置。

● 已安装Maven,如若未安装,请下载安装。

● 已具备Eclipse等开发环境。

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 3

Maven 安装配置

下载settings.xml文件,覆盖<Maven安装目录>/conf/settings.xml文件即可。如果您不想覆盖配置文件,可以依次按照下面方法手动修改settings.xml文件:

1. 在profiles节点中添加如下内容:<profile> <id>MyProfile</id> <repositories> <repository> <id>HuaweiCloudSDK</id> <url>https://mirrors.huaweicloud.com/repository/maven/huaweicloudsdk/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>

<pluginRepositories> <pluginRepository> <id>HuaweiCloudSDK</id> <url>https://mirrors.huaweicloud.com/repository/maven/huaweicloudsdk/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories></profile>

2. 在mirrors节点中增加华为云SDK镜像。<mirror> <id>huaweicloud</id> <mirrorOf>*,!HuaweiCloudSDK</mirrorOf> <url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror>

3. 增加activeProfiles标签激活配置。<activeProfiles> <activeProfile>MyProfile</activeProfile></activeProfiles>

4. 配置pom.xml,添加点播服务的SDK依赖,点播服务最新的SDK版本可以在华为开源镜像站查看。<dependencies> <dependency> <groupId>com.huawei.vod</groupId> <artifactId>cloud-java-sdk-vod</artifactId> <version>${vod-sdk-version}</version> </dependency></dependencies>

SDK 工程导入

以eclipse工具为例给出SDK工程导入步骤,如果使用其他IDE工具,请参照处理:

步骤1 解压下载的点播服务端SDK包,得到两个文件夹。

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 4

步骤2 运行Eclipse工具,在左侧工程上点击右键,选择“Build path->Configure BuildPath...”,在弹出框中左边选择"Java Build Path",在右边选择"Libraries"页签,然后点击右边的"Add External JARs...",将SDK的解压文件夹“vodJavaSdk”中的所有JAR包导入。

步骤3 导入后打开工程,工程目录如下:

步骤4 若您需要使用Demo包进行开发,请将“vodJavaSdkDemo”文件夹下的SDK Demo文件“VodDemo.java”拖入新建的工程的“src”目录下

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 5

----结束

3.2 初始化

前提条件

● 已注册华为云,并完成实名认证。

● 获取点播服务对应区域的EndPoint ( 如使用的“华北-北京四”的点播服务则EndPoint为vod.cn-north-4.myhuaweicloud.com ),具体请参见获取EndPoint。

● 获取访问密钥AK和SK,具体请参见获取AK和SK。

● 账号在点播服务对应区域的项目ID及用户名和账户名,具体请参考获取项目ID和账号名。

AK 和 SK 方式初始化import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;//初始化VOD服务和OBS服务public class Main {public static void main(String[] args) { VodClient vodClient = initVodClient(); }

public static VodClient initVodClient() { return new VodClient(initVodConfig(), initObsConfig()); }//VodConfig初始化配置public static VodConfig initVodConfig() { VodConfig vodConfig = new VodConfig(); //设置项目ID,参考前提条件获取。 vodConfig.setProjectId("projectId"); //设置点播服务节点地址,参考前提条件获取 vodConfig.setEndPoint("vod.cn-north-4.myhuaweicloud.com"); //设置ak,参考前提条件获取 vodConfig.setAk("ak"); //设置sk,参考前提条件获取 vodConfig.setSk("sk"); //设置IAM服务节点地址,参考前提条件获取,需要和点播服务节点地址在同一个区域(region)。在使用临时ak,sk场景下必须配置。 vodConfig.setIamEndPoint("iam.cn-north-4.myhuaweicloud.com"); return vodConfig; }//ObsConfig上传配置public static ObsConfig initObsConfig() { //因点播服务使用了对象存储服务(OBS)进行文件存储,因此文件的上传均需要和对象存储服务进行交互,所以此处需要配置OBS的EndPoint ObsConfig obsConfig = new ObsConfig(); //设置OBS服务节点地址 obsConfig.setEndPoint("obs.cn-north-4.myhuaweicloud.com"); obsConfig.setPartSize(5); //设置上传视频时分段上传时切分的每一段大小,最小为5M obsConfig.setConcurrencyLevel(0);//设置上传时的并发数,若设置后为则代表采用串行上传 return obsConfig; }}

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 6

账号和密码方式初始化import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;//初始化VOD服务和OBS服务public class Main {public static void main(String[] args) { VodClient vodClient = initVodClient(); }

public static VodClient initVodClient() { return new VodClient(initVodConfig(), initObsConfig()); }//VodConfig初始化配置public static VodConfig initVodConfig() { VodConfig vodConfig = new VodConfig(); //设置项目ID,参考前提条件获取。 vodConfig.setProjectId("projectId"); //设置点播服务节点地址,参考前提条件获取 vodConfig.setEndPoint("vod.cn-north-4.myhuaweicloud.com"); //设置IAM服务节点地址,参考前提条件获取,需要和点播服务节点地址在同一个区域(region)。在使用临时ak,sk场景下必须配置。 vodConfig.setIamEndPoint("iam.cn-north-4.myhuaweicloud.com"); //用户名、密码及账户名,参考前提条件获取 vodConfig.setUsername("username"); vodConfig.setPassword("password"); vodConfig.setDomainName("domainName");

return vodConfig; }//ObsConfig初始化配置public static ObsConfig initObsConfig() { // 因点播服务使用了对象存储服务(OBS)进行文件存储,因此文件的上传均需要和对象存储服务进行交互,所以此处需要配置OBS的EndPoint ObsConfig obsConfig = new ObsConfig(); //设置OBS服务节点地址 obsConfig.setEndPoint("obs.cn-north-4.myhuaweicloud.com"); obsConfig.setPartSize(5); //设置上传视频时分段上传时切分的每一段大小,最小为5M obsConfig.setConcurrencyLevel(0);//设置上传时的并发数,若设置后为则代表采用串行上传 return obsConfig; }}

3.3 媒资上传视频点播提供了本地上传,OBS转存、OBS托管、URL拉取四种媒资上传方式。

本地上传方式

1. 初始化客户端,具体请参见3.2 初始化。

2. 构建媒资创建请求,根据实际需求设置媒资信息,如标题、媒资本地存储地址、封面地址、字幕地址等。具体参数请参见创建媒资:上传方式接口。import com.huawei.vod.model.asset.CreateAssetByFileReq;

public static CreateAssetByFileReq buildCreateAssetReq() { CreateAssetByFileReq req = new CreateAssetByFileReq();//设置创建媒资请求参数,具体参数请参见API参考

req.setTitle("title");//设置媒资标题,长度不超过128个字节,utf-8编码

req.setDescription("description");//设置视频描述, 长度不超过1024个字节

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 7

req.setCategoryId(1);//设置媒资分类id

//设置媒资文件的本地存储地址,如d://test.mp4,若上传的是HLS格式,则需要设置为存储m3u8文件的文件夹,如E://tmp/transcode/out req.setVideoFileUrl("fileAddress");

//设置封面的本地存储地址,如d://cover.png,如果需要上传封面,则该参数必填 req.setCoverFileUrl( "coverAddress");

//设置字幕文件的本地存储地址,如d://subtitle.srt,如果需要上传字幕,则该参数必填 req.setSubtitleFileUrl("d://aa.srt"); req.setVideoName("videoName");//设置视频文件名,可以带后缀,也可以不带后缀

//设置上传文件类型。支持上传视频文件格式:MP4、TS、MOV、MXF、MPG、FLV、WMV、AVI、M4V、F4V、MPEG、3GP、ASF、MKV、HLS,支持上传音频文件格式:MP3、OGG、WAV、WMA、APE、FLAC、AAC、AC3、MMF、AMR、M4A、M4R、WV、MP2,若上传格式为音频文件,则不支持转码,添加水印,添加字幕。 req.setVideoType("MP4"); req.setCoverType("PNG");//设置封面图片文件类型,当前支持:JPG、PNG

//创建媒资请求体CreateAssetByFileReq 中新增 List<SubtitleReq> subtitles List<SubtitleReq> subtitleReqs = new ArrayList<>(); SubtitleReq subtitleReq = new SubtitleReq(); subtitleReq.setId(1);//字幕id,目前只支持上传一个字幕文件,取值为[1,8] subtitleReq.setType("SRT");//字幕文件类型,目前只支持SRT文件 subtitleReq.setLanguage("CN");//字幕语言类型,目前只能为“CN”,和“EN” subtitleReq.setMd5("EIq3IMk3Cx8Dh6ga/peS/Q==");//字幕文件MD5值 subtitleReqs.add(subtitleReq); req.setSubtitles(subtitleReqs); req.setAutoPublish(1);//是否自动发布,取值[0,1],0表示不自动发布,1表示自动发布;缺省值为0 req.setAutoPreheat(1);//是否自动预热到CDN,取值[0,1] req.setTemplateGroupName("templateGroupName");//设置媒资转码的模板组的Name,具体的模板组可以去点播Console进行创建和查看

// 初始化截图参数 Thumbnail thumbnail = new Thumbnail(); // 设置截图类型为固定时间间隔采样截图,TIME为定时采样,DOTS为指定时间点截图。 thumbnail.setType(Thumbnail.TypeEnum.TIME); thumbnail.setTime(10);// 设定时间间隔(取值为[1,100]区间的整数);type设置为DOTS时需设置dots数组指定截图时间点。 thumbnail.setCoverPosition(1);// 指定第1张截图结果作为封面 req.setThumbnail(thumbnail);// 设置截图参数到请求中 Review review = new Review();// 初始化审核参数,politics、terrorism、porn未传参时表示不进行此项检测,传-1表示采用默认的置信度。目前“华东-上海二”区域的点播服务暂不支持此功能。 review.setInterval(5);// 设置截图时间间隔,单位秒(取值为5或者10) review.setPolitics(80);// 设置政治人物检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值53) review.setTerrorism(80);// 设置暴恐元素检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值80) review.setPorn(80);// 设置涉黄内容检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值80) req.setReview(review);

req.setAutoEncrypt(1);// 设置是否自动加密

return req; }

3. 请求媒资创建并上传。import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.CreateAssetByFileReq;import com.huawei.vod.model.asset.CreateAssetByFileRsp;

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 8

import com.huawei.vod.service.ObsService;import com.obs.services.model.PartEtag;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端 CreateAssetByFileReq req = buildCreateAssetReq(); // 初始化创建媒资请求

/** * 发送创建媒资请求,带上传操作,无回调情况 * CreateAssetByFileRsp rsp = vodClient.createAssetByFileAuto(req); */

// 发送创建媒资请求,带上传操作,有回调,可以实时查询上传进度 CreateAssetByFileRsp rsp = vodClient.createAssetByFileAuto(req, new ObsService.OnPartEtagUploadedListener() { @Override public void onInitMultiUploadPart(String uploadId) { // 上传任务开始时回调 System.out.println("Init end: " + uploadId); }

@Override public void onUploadEachPart(PartEtag partEtag, int progress , String uploadId) {// 文件每上传完一段时回调 System.out.println(partEtag.toString() + " is end ! Progress: " + progress ); }

@Override public void onCompleteMultiUpload(String uploadId) { // 文件上传完成时回调 System.out.println("Complete end: " + uploadId); }

@Override public void onError(Throwable e) { // 上传过程中报错时回调 e.printStackTrace(); }}); System.out.println(new Gson().toJson(rsp)); //返回消息}

SDK支持创建媒资,暂不上传文件。一般用于在服务端创建媒资元数据,然后在客户端,如APP、浏览器完成文件上传操作。客户端上传完成后,服务端调用确认上传接口完成媒资上传。调用确认上传方法时需要配置已创建的媒资ID,根据媒资ID完成确认。

1. 创建媒资,暂不上传文件。public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端 CreateAssetByFileReq req = buildCreateAssetReq(); // 初始化创建媒资请求 UploadAssetRsp rsp = vodClient.createAssetByFile(req); // 发送创建媒资请求 String assetId = rsp.getAssetId(); // 获取创建的视频数据的ID,该ID用于后期调用确认上传接口进行上传结果的确认 System.out.println(new Gson().toJson(rsp)); //返回消息 }

2. 在客户端完成上传操作后,服务端调用确认上传接口。客户端上传可以参考上传SDK。确认上传的相关参数请参见确认媒资上传接口。import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.CreateAssetByFileReq;import com.huawei.vod.model.asset.UploadAssetRsp;

public static void main(String[] args) {

VodClient vodClient = initVodClient(); // 初始化客户端 ConfirmAssetUploadReq confirmAssetUploadReq = new ConfirmAssetUploadReq(); //设置媒资上传请求参数 confirmAssetUploadReq.setAssetId("assetId"); //设置媒资上传的媒资ID

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 9

confirmAssetUploadReq.setStatus(ConfirmAssetUploadReq.UPLOAD_STATUS_CREATED); // 通知点播服务上传成功

/** // 通知点播服务需要取消上传任务 * confirmAssetUploadReq.setStatus(ConfirmAssetUploadReq.UPLOAD_STATUS_CANCELLED); // 通知点播服务上传失败 * confirmAssetUploadReq.setStatus(ConfirmAssetUploadReq.UPLOAD_STATUS_FAILED); */ // 发送请求 ConfirmAssetUploadRsp confirmAssetUploadRsp = vodClient.confirmAssetUpload(confirmAssetUploadReq); System.out.println(new Gson().toJson(confirmAssetUploadReq));}

OBS 转存方式

若已有音视频文件存储在OBS桶中,可以使用该方式将音视频文件转存到点播服务中。OBS转存不支持跨区域转存,如存储在“华北-北京四”OBS桶中的音视频文件只能转存到“华北-北京四”的点播服务。

1. 获取项目ID,具体请参见获取项目ID和账号名

2. 初始化客户端,具体请参见3.2 初始化。

3. 将存储音视频文件的OBS桶授权给点播服务。import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.common.obs.model.BucketAuthorizedRequest;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.BaseResponse;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端 BucketAuthorizedRequest req = new BucketAuthorizedRequest();//设置桶授权请求参数,具体参数可以查看API参考 req.setProjectId("projectID");//设置用户的项目ID即projectID req.setBucket("bucket");//设置要进行桶授权的OBS桶名 req.setOperation("1");//设置是桶授权还是取消授权:1为授权,0为取消授权 BaseResponse rsp = vodClient.bucketAuthorized(req);//发送创建媒资请求 System.out.println(new Gson().toJson(rsp));//返回消息}

4. 点播服务从OBS桶中复制音视频文件,并重新在点播服务中创建对应的新媒资。具体参数请参见创建媒资:OBS转存方式接口。import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.ObsObjInfo;import com.huawei.vod.model.asset.*;

public static void main(String[] args) {

VodClient vodClient = initVodClient(); // 初始化客户端 PublishAssetFromObsReq req = new PublishAssetFromObsReq();//设置创建视频请求参数,具体参数可以查看API参考 ObsObjInfo obj = new ObsObjInfo();//设置待发布视频地址 obj.setBucket("bucket");//视频所在的OBS桶名 obj.setLocation("location");//视频所在的桶所在的区域,如使用“华北-北京四”的点播服务则填cn-

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 10

north-4 obj.setObject("object"); //视频的objectKey req.setInput(obj); req.setTitle("title");//设置视频标题,长度不超过128字节,utf-8编码 req.setDescription("description");//设置视频描述, 长度不超过1024个字节 req.setCategoryId(1);//设置视频分类id //设置上传文件类型。支持上传视频文件格式: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,若上传格式为音频文件,则不支持转码,添加水印,添加字幕。 req.setVideoType("videoType"); req.setTags("tags");//设置视频标签

// 设置转码模板组名称,设置后将根据该模板组进行转码,具体名称可以在点播服务控制台查看和管理 req.setTemplateGroupName("template_group_name");

req.setAutoPublish(1);// 设置是否自动发布,1为发布,0为不发布,默认为1自动发布

// 初始化审核参数,politics、terrorism、porn未传参时表示不进行此项检测,传-1表示采用默认的置信度。目前“华东-上海二”区域的点播服务暂不支持此功能。 Review review = new Review(); review.setInterval(5);// 设置截图时间间隔,单位为秒(取值为5或者10) review.setPolitics(80);// 设置政治人物检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值53) review.setTerrorism(80);// 设置暴恐元素检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值80) review.setPorn(80);// 设置涉黄内容检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值80) req.setReview(review);

//发送创建视频请求 PublishAssetFromObsRsp rsp = vodClient.publishAssetFromObs(req);

//返回消息 System.out.println(new Gson().toJson(rsp));}

OBS 托管方式

OBS托管是指将存储音视频文件的OBS授权给点播服务,允许点播服务对OBS桶中的音视频文件进行管理,如转码、截图等操作。OBS托管不支持跨区域托管,如存储在“华北-北京四”OBS桶中的音视频文件只能托管给“华北-北京四”的点播服务。

1. 获取项目ID,具体请参见获取项目ID和账号名

2. 初始化客户端,具体请参见3.2 初始化。

3. 将存储音视频文件的OBS桶授权给点播服务。import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.common.obs.model.BucketAuthorizedRequest;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.BaseResponse;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端 BucketAuthorizedRequest req = new BucketAuthorizedRequest();//设置桶授权请求参数,具体参数可以查看API参考 req.setProjectId("projectID");//设置用户的项目ID即projectID req.setBucket("bucket");//设置要进行桶授权的OBS桶名

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 11

req.setOperation("1");//设置是桶授权还是取消授权:1为授权,0为取消授权 BaseResponse rsp = vodClient.bucketAuthorized(req);//发送创建媒资请求 System.out.println(new Gson().toJson(rsp));//返回消息}

4. 点播服务直接在OBS桶中进行音视频托管。具体参数请参见创建媒资:OBS托管方式接口。import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.ObsObjInfo;import com.huawei.vod.model.asset.*;

public static void main(String[] args) {

VodClient vodClient = initVodClient(); // 初始化客户端 HostObsAssetReq req = new HostObsAssetReq();

ObsObjInfo obj = new ObsObjInfo();//设置待发布视频地址 obj.setBucket("bucket");//视频所在的OBS桶名 obj.setLocation("location");//视频所在的桶所在的区域,如使用“华北-北京四”的点播服务则填cn-north-4 obj.setObject("object"); //视频的objectKey req.setInput(obj); req.setTitle("title");//设置视频标题,长度不超过128字节,utf-8编码 req.setDescription("description");//设置视频描述, 长度不超过1024个字节 req.setCategoryId(1);//设置视频分类id //设置上传文件类型。支持上传视频文件格式: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,若上传格式为音频文件,则不支持转码,添加水印,添加字幕。 req.setVideoType("videoType"); req.setTags("tags");//设置视频标签

// 设置转码模板组名称,设置后将根据该模板组进行转码,具体名称可以在点播服务控制台查看和管理 req.setTemplateGroupName("template_group_name");

req.setAutoPublish(1);// 设置是否自动发布,1为发布,0为不发布,默认为1自动发布

// 初始化审核参数,politics、terrorism、porn未传参时表示不进行此项检测,传-1表示采用默认的置信度。目前“华东-上海二”区域的点播服务暂不支持此功能。 Review review = new Review(); review.setInterval(5);// 设置截图时间间隔,单位为秒(取值为5或者10) review.setPolitics(80);// 设置政治人物检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值53) review.setTerrorism(80);// 设置暴恐元素检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值80) review.setPorn(80);// 设置涉黄内容检测时的置信度(取值为[-1,100]之间的整数,取值-1表示为默认值80) req.setReview(review);

//发送创建视频请求 HostObsAssetRsp rsp = vodClient.hostAssetFromObs(req);

//返回消息 System.out.println(new Gson().toJson(rsp));}

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 12

URL 拉取方式

点播支持将其它地方存储的媒体文件离线拉取上传到点播服务。

1. 初始化客户端,具体请参见3.2 初始化。

2. 通过音视频URL,拉取文件存储到点播服务。具体参数请参见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

import com.huawei.vod.client.VodClient;import com.huawei.vod.model.asset.UploadMetaDataByUrlReq;import com.huawei.vod.model.asset.UploadMetaData;import com.huawei.vod.model.asset.UploadMetaDataByUrlRsp;public static void main(String[] args){ //创建并初始化VOD Client对象 VodClient vodClient = initVodClient(); UploadMetaDataByUrlReq uploadMetaDataByUrlReq = new UploadMetaDataByUrlReq(); UploadMetaData uploadMetaData = new UploadMetaData(); //设置视频源文件URL String url = ""; uploadMetaData.setUrl("https://bbs-video.huaweicloud.com/video/media/20180402/20180402153321_79533.mp4"); //设置媒资标题 uploadMetaData.setTitle("url拉取"); //设置媒资文件类型 uploadMetaData.setVideoType("MP4");

List<UploadMetaData> uploadMetaDataList = new ArrayList<>(); uploadMetaDataList.add(uploadMetaData); //设置url拉取创建的媒资列表 uploadMetaDataByUrlReq.setUploadMetaDatas(uploadMetaDataList);

UploadMetaDataByUrlRsp uploadMetaDataByUrlRsp = vodClient.uploadMetaDataByUrl(uploadMetaDataByUrlReq); System.out.println(new Gson().toJson(uploadMetaDataByUrlRsp));}

上传校验

上传校验是指上传媒资时,点播服务会校验是否已存在待上传的文件,避免重复上传。具体参数请参见上传校验接口。

import com.huawei.common.obs.ObsConfig;import com.huawei.common.util.Md5Utils;import com.huawei.obs.services.ObsClient;import com.huawei.obs.services.ObsConfiguration;import com.huawei.obs.services.model.GetObjectRequest;import com.huawei.obs.services.model.ObsObject;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.ObsObjInfo;import com.huawei.vod.model.asset.Md5CheckRequest;import com.huawei.vod.model.asset.Md5CheckRsp;import org.junit.Test;

import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 13

public class DuplicationCheckDemo { private VodClient getVodClient() { VodConfig vodConfig = new VodConfig(); vodConfig.setAk("********************"); vodConfig.setSk("****************************************"); vodConfig.setProjectId("********************************"); // 对应地区VOD节点地址, 请参考“获取关键参数”章节获取 vodConfig.setEndPoint("vod.cn-north-4.myhuaweicloud.com");

ObsConfig obsConfig = new ObsConfig(); // 对应地区OBS节点地址, 请参考“获取关键参数”章节获取 obsConfig.setEndPoint("obs.myhwclouds.com"); return new VodClient(vodConfig, obsConfig); }

/** * 上传前校验demo */ public void testCheckBeforeUploadDemo() throws IOException { // 获取VOD客户端 VodClient vodClient = getVodClient(); // 初始化请求参数 String fileUrl = "D:\\test.mp4";

// 调用SDK工具方法计算MD5值 String md5 = Md5Utils.computeMd5ByFile(fileUrl); // 获取文件大小 Path filePath = Paths.get(fileUrl); long size = Files.size(filePath);

// 利用文件名,文件大小,文件MD5构建校验请求 Md5CheckRequest checkReq = new Md5CheckRequest(); checkReq.setMd5(md5); checkReq.setSize(String.valueOf(size));

// 使用vod客户端检查媒资是否重复 Md5CheckRsp rsp = vodClient.checkAssetMd5(checkReq); if (rsp.getIsDuplicated() == 1) { // 输出重复媒资ID System.out.println(rsp.getAssetIds()); return; // 已存在重复媒资, 可选择返回或者抛出异常 }

// 如果媒资不重复,可继续媒资上传逻辑... }

/** * 发布前校验demo * @throws IOException */ @Test public void testCheckBeforePublish() throws IOException { // 获取VOD客户端 VodClient vodClient = getVodClient();

// 初始化OBS对象路径 String bucket = "test-bucket"; String objectKey = "test.mp4"; // 构建OBS对象路径 ObsObjInfo input = new ObsObjInfo(); input.setObject(objectKey); input.setBucket(bucket); input.setLocation("cn-north-4");

// 这里可获取VOD客户端中的配置或者用户使用自己的配置 String ak = vodClient.getVodConfig().getAk(); String sk = vodClient.getVodConfig().getSk();

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 14

String obsEndpoint = vodClient.getObsConfig().getEndPoint();

// 创建OBS客户端 ObsConfiguration config = new ObsConfiguration(); config.setEndPoint(obsEndpoint); ObsClient obsClient = new ObsClient(ak, sk, config);

// 下载OBS对象获取文件名 GetObjectRequest getReq = new GetObjectRequest(); getReq.setBucketName(bucket); getReq.setObjectKey(objectKey); ObsObject object = obsClient.getObject(getReq); // 获取对象大小 Long size = object.getMetadata().getContentLength(); // 计算对象MD5值 String md5 = Md5Utils.computeMd5ByObs(input, obsClient);

// 构建并请求文件上传校验接口 Md5CheckRequest checkReq = new Md5CheckRequest(); checkReq.setSize(String.valueOf(size)); checkReq.setMd5(md5); Md5CheckRsp md5CheckRsp = vodClient.checkAssetMd5(checkReq); if (md5CheckRsp.getIsDuplicated() == 1) { System.out.println(md5CheckRsp.getAssetIds()); return; // 已存在重复媒资 }

// 如果媒资不重复,可继续媒资发布逻辑... }}

3.4 媒资管理

媒资发布

将媒资设置为发布状态,可以通过传入多个媒资ID来完成多个媒资的发布。具体参数可以参考媒资发布。

import com.google.gson.Gson;import com.huawei.vod.client.ClientConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.PublishAssetReq;import com.huawei.vod.model.asset.PublishAssetRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

PublishAssetReq req = new PublishAssetReq(); String[] assets = {"asset1", " asset2"};//构造媒资ID参数。支持多个 req.setAssetId(assets);//设置媒资发布的媒资ID PublishAssetRsp rsp = vodClient.publishAssets(req);//发送媒资发布请求 System.out.println(new Gson().toJson(rsp));//返回处理结果 }

媒资发布取消

将媒资设置为未发布状态,可以通过传入多个媒资ID来完成多个媒资的取消发布。具体参数可以参考媒资发布取消。

import com.google.gson.Gson;import com.huawei.vod.client.ClientConfig;

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 15

import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.PublishAssetReq;import com.huawei.vod.model.asset.PublishAssetRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

PublishAssetReq req = new PublishAssetReq(); String[] assets = {"asset1", " asset2"};//构造媒资ID参数。支持多个 req.setAssetId(assets);//设置媒资发布的媒资ID PublishAssetRsp rsp = vodClient.unPublishAssets(req);//发送取消媒资发布请求 System.out.println(new Gson().toJson(rsp));//返回处理结果 }

查询媒资信息

查询用户媒资信息,支持指定媒资ID、分类、状态、起止时间、分页信息等条件查询,返回源视频的元数据:封装格式、大小、分辨率、码率、编码格式等。具体参数可以参考查询媒资信息。

指定媒资ID查询:每次最多查询10个,且指定了媒资ID,则起止时间、分页和每页记录数无效。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.QueryAssetMetaReq;import com.huawei.vod.model.asset.QueryAssetMetaRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端 QueryAssetMetaReq req = new QueryAssetMetaReq();//设置查询视频信息请求参数,具体参数可以参考点播API文档 String[] assets = {"asset1", " asset2"};//构造查询视频信息的媒资ID,最多支持同时查询10个 req.setAssetIds(assets);//设置查询视频信息的媒资ID req.setCategoryId(-1);//设置分类ID req.setStatus(new String[]{QueryAssetMetaReq.STATUS_CREATED});//设置视频状态,具体状态可以查看API文档 QueryAssetMetaRsp rsp = vodClient.queryAssetMeta(req);//发送查询视频信息请求 System.out.println(new Gson().toJson(rsp));//返回查询视频信息结果 }

指定其他条件查询:

import com.google.gson.Gson;import com.huawei.vod.client.ClientConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.Asset.QueryAssetMetaReq;import com.huawei.vod.model.Asset.QueryAssetMetaRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

QueryAssetMetaReq req = new QueryAssetMetaReq();//设置查询视频信息请求参数

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 16

req.setCategoryId(-1);//设置分类ID

//设置视频状态,具体状态可以查看API文档 req.setStatus(new String[]{QueryAssetMetaReq.STATUS_CREATING, QueryAssetMetaReq.STATUS_TRANSCODE_SUCCEED});

req.setPage(1);//设置分页编号,默认为0

req.setSize(20);//设置每页记录数。默认10,范围[1,100]

req.setStartTime("yyyymmddhhmmss");//设置起始时间,格式为yyyymmddhhmmss。必须是与时区无关的UTC时间

req.setEndTime("yyyymmddhhmmss");//设置结束时间,格式为yyyymmddhhmmss。必须是与时区无关的UTC时间

QueryAssetMetaRsp rsp = vodClient.queryAssetMeta(req);//发送查询视频信息请求

System.out.println(new Gson().toJson(rsp)); //返回查询视频信息结果

}

查询媒资列表

查询用户媒资列表,支持指定媒资ID、分类、状态、起止时间、分页信息等条件查询。具体参数可以参考查询媒资列表。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.QueryAssetMetaReq;import com.huawei.vod.model.asset.QueryAssetMetaRsp;

public static void main(String[] args) {

VodClient vodClient = initVodClient(); // 初始化客户端 QueryAssetListReq req = new QueryAssetListReq();//设置查询视频列表信息请求参数 String[] assets = {"asset1", " asset2"};//构造查询视频信息的媒资ID,最多支持同时查询10个

req.setAssetIds(assets);

req.setStatus(new String[]{"CREATING"});//设置视频状态, QueryAssetListRsp rsp = vodClient.queryAssetList(req);//发送查询视频列表信息请求

System.out.println(new Gson().toJson(rsp));//返回查询视频列表信息结果}

查询媒资详细信息

查询用户媒资详情,支持指定媒资ID条件查询。具体参数可以参考查询媒资详细信息。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.QueryAssetMetaReq;import com.huawei.vod.model.asset.QueryAssetMetaRsp;

public static void main(String[] args) {

VodClient vodClient = initVodClient(); // 初始化客户端

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 17

//设置查询视频详情请求参数,具体参数可以参考点播API文档 QueryAssetDetailReq req = new QueryAssetDetailReq(); //构造查询视频详情的媒资ID req.setAssetId("asset1");

//发送查询视频详情信息请求 QueryAssetDetailRsp rsp = vodClient.queryAssetDetail(req); //返回查询视频详情信息结果 System.out.println(new Gson().toJson(rsp)); }

修改视频属性

支持修改视频属性值,包括分类、分类名称、描述、所属的项目ID、tags、标题等。具体参数可以参考修改媒资属性。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.BaseResponse;import com.huawei.vod.model.asset.UpdateAssetMetaReq;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

UpdateAssetMetaReq req = new UpdateAssetMetaReq();//设置修改媒资属性请求参数

req.setAssetId("assetId");//设置媒资ID

req.setCategoryId("-1");//设置媒资分类id

req.setDescription("update assetmeta");//设置视频描述, 长度不超过1024个字节

req.setProjectId("projectId");//设置用户项目编号ProjectId,查看项目ID参考 "查看项目ID"章节

req.setTags("tags");//视频标签,单个标签不超过16个字节,最多不超过16个标签。多个用逗号分隔,UTF8编码 req.setTitle("title");//设置媒体标题,长度不超过128个字节,utf-8编码

BaseResponse rsp = vodClient.updateAssetMeta(req);//发送修改媒资属性请求

System.out.println(new Gson().toJson(rsp));//返回处理信息

删除视频

正在处理中的媒资不支持删除,包括转码中、审核中、截图中等。具体参数可以参考删除媒资。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.DeleteAssetReq;import com.huawei.vod.model.asset.DeleteAssetRsp;import java.util.ArrayList;import java.util.List;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 18

DeleteAssetReq req = new DeleteAssetReq();//设置删除视频请求参数

List<String> assetIds = new ArrayList<String>();//构造需要删除视频的媒资ID assetIds.add("assetId1"); assetIds.add("assetId2");

req.setAssetIds(assetIds);//设置需要删除的视频

DeleteAssetRsp rsp = vodClient.deleteAssets(req);//发送删除视频请求

System.out.println(new Gson().toJson(rsp)); //返回处理信息 }

3.5 CDN 预热点播发布后可向CDN预热,这样用户初次请求时,将由CDN节点提供内容分发。具体接口参数请参考CDN预热。

指定媒资 ID 预热import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.PreheatingAssetReq;import com.huawei.vod.model.asset.PreheatingAssetRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

//设置CDN预热请求参数 PreheatingAssetReq req = new PreheatingAssetReq();

//设置媒资ID,已发布的媒资 req.setAssetId("assetId");

//发送CDN预热请求 PreheatingAssetRsp rsp = vodClient.preheatAsset(req);

//返回请求消息 System.out.println(new Gson().toJson(rsp)); }

指定 URL 预热import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.PreheatingAssetReq;import com.huawei.vod.model.asset.PreheatingAssetRsp;import com.huawei.vod.model.asset.QueryPreheatingAssetReq;import com.huawei.vod.model.asset.QueryPreheatingAssetRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

//设置CDN预热请求参数 PreheatingAssetReq req = new PreheatingAssetReq();

//设置媒资URL,媒资播放地址(最多一次预热10个url) req.setUrls(Collections.singletonList("https://65.cdn-vod.huaweicloud.com/asset/b057c99bb8c6cd26b7df4205094b2be7/play_video/cd12023af81befc50643a3e48cc6ea75_H.264_1920X1080_HEAACV1_3000.mp4"));

//发送CDN预热请求

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 19

PreheatingAssetRsp preheatingAssetRsp = vodClient.preheatAsset(req);

//构建查询预热任务 QueryPreheatingAssetReq queryPreheatingAssetReq = new QueryPreheatingAssetReq();

//根据创建预热任务返回的taskId进行查询if (preheatingAssetRsp.getStatus() == BaseResponse.SUCCESS) { queryPreheatingAssetReq.setTaskId(preheatingAssetRsp.getTaskId());}

//发送查询预热任务请求QueryPreheatingAssetRsp queryPreheatingAssetRsp = vodClient.queryPreheatingAsset(queryPreheatingAssetReq);

//返回请求消息System.out.println(gson.toJson(queryPreheatingAssetRsp));

}

查询预热结果import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.QueryPreheatingAssetReq;import com.huawei.vod.model.asset.QueryPreheatingAssetRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient();//初始化客户端

QueryPreheatingAssetReq req = new QueryPreheatingAssetReq(); req.setTaskId("ff8080826798875a0167a081205c4f91"); QueryPreheatingAssetRsp rsp = vodClient.queryPreheatingAsset(req);

System.out.println(new Gson().toJson(rsp));}}

3.6 视频分类

创建视频分类

创建媒资分类,需要设置媒资分类ID、项目ID、分类级别、分类名、所属的上级分类。最大支持三级分类,每个分类最多支持创建128个子分类。具体接口参数请参考创建媒资分类。

import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.category.CreateCategoryReq;import com.huawei.vod.model.category.CreateCategoryRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

//设置创建媒资分类请求参数 CreateCategoryReq req=new CreateCategoryReq();

//设置媒资分类名称 req.setName("name");

//设置媒资父分类ID,一级分类父ID为0 req.setParentId(0);

//发送创建媒资分类请求

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 20

CreateCategoryRsp rsp=vodClient.createAssetCategory(req);

System.out.println(new Gson().toJson(rsp)); }

修改视频分类

支持修改视频分类属性值,包括分类名、项目ID、分类级别、所属的上级分类等。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.BaseResponse;import com.huawei.vod.model.category.EditCategoryReq;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

//设置修改视频分类请求参数 EditCategoryReq req = new EditCategoryReq();

//需要修改的分类的ID req.setId(123);

// 需要修改成的分类名称 req.setName("categoryName");

//发送修改视频分类请求 BaseResponse baseResponse=vodClient.modifyAssetCategory(req);

System.out.println(new Gson().toJson(baseResponse)); }

查询视频分类及子分类

支持查询指定媒资分类ID的分类信息,及其子分类(即下一级分类)的列表。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.category.QueryCategoryReq;import com.huawei.vod.model.category.QueryCategoryRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

//设置查询视频分类请求参数 QueryCategoryReq req=new QueryCategoryReq();

//设置视频分类ID,填0查询所有一级分类 req.setId(21);

//发送查询视频分类请求 QueryCategoryRsp queryCategoryRsp = vodClient.queryAssetCategory(req); System.out.println(new Gson().toJson(queryCategoryRsp)); }

删除视频分类

支持指定视频分类ID的删除操作。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 21

import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.BaseResponse;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

//媒资分类ID int id=19;

//发送删除视频分类请求 BaseResponse baseResponse=vodClient.deleteAssetCategory(id); System.out.println(new Gson().toJson(baseResponse)); }

3.7 视频更新

更新文件并上传

对一个已创建的视频单独进行上传封面、更新视频文件或已有封面。如果是更新视频文件,更新完后要通过“确认媒资上传”接口通知点播服务,但如果是更新封面或单独上传封面,则不需通知。具体接口参数请参考视频更新。

调用SDK方法创建媒资并上传视频,上传请参考初始化章节中的ObsConfig的配置进行。

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.UploadAssetReq;import com.huawei.vod.model.asset.UploadAssetRsp;import com.huawei.vod.service.ObsService;import com.obs.services.model.PartEtag;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

UploadAssetReq req = new UploadAssetReq();//设置媒资更新参数

req.setAssetId("assetId");//设置媒资ID

req.setVideoName("videoName");//设置视频文件名,可以带后缀,也可以不带后缀。

req.setVideoMd5("videoMD5");//设置视频文件MD5值

//设置上传文件类型。支持上传视频文件格式:MP4、TS、MOV、MXF、MPG、FLV、WMV、AVI、M4V、F4V、MPEG,支持上传音频文件格式:MP3、OGG、WAV、WMA、APE、FLAC、AAC、AC3、MMF、AMR、M4A、M4R、WV、MP2,若上传格式为音频文件,则不支持转码,添加水印,添加字幕。 req.setVideoType("MP4");

//设置视频文件的本地地址,即文件所在的文件地址,如/home/test.mp4、d://test.mp4,如果需要使用SDK上传则该项必填 req.setVideoFileUrl("d://test.mp4"); req.setCoverId(0);//设置封面ID,取值0-7。当前只支持一张封面,只能填0 req.setCoverType("PNG");//设置封面图片格式类型,当前支持JPG、PNG req.setCoverMd5("coverMD5");//设置封面文件MD5值

//创建媒资请求体UploadAssetReq 中新增 List<SubtitleReq> subtitles List<SubtitleReq> subtitleReqs = new ArrayList<>(); SubtitleReq subtitleReq = new SubtitleReq();

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 22

subtitleReq.setId(1); //字幕id,目前只支持上传一个字幕文件,取值为[1,8]

subtitleReq.setType("SRT");//字幕文件类型,目前只支持SRT文件

subtitleReq.setLanguage("CN");//字幕语言类型,目前只能为“CN”,和“EN”

subtitleReq.setMd5("EIq3IMk3Cx8Dh6ga/peS/Q==");//字幕文件MD5值 subtitleReqs.add(subtitleReq); req.setSubtitles(subtitleReqs);

//设置封面文件的本地地址,即文件所在的文件地址,如/home/test.jpg、d://test.jpg,如果需要使用SDK上传则该项必填 req.setCoverFileUrl("d://test.jpg");

// 启动上传,可以设置回调接口,但该回调接口仅会在更新视频源文件时回调 UploadAssetRsp rsp = vodClient.uploadAssetAuto(req, new ObsService.OnPartEtagUploadedListener() { @Override public void onInitMultiUploadPart(String uploadId) { // 视频文件更新上传任务开始时回调 System.out.println("Init end: " + uploadId); }

@Override public void onUploadEachPart(PartEtag partEtag, int progress , String uploadId) { // 文件每上传完一段时回调 System.out.println(partEtag.toString() + " is end ! Progress: " + progress ); }

@Override public void onCompleteMultiUpload(String uploadId) { // 文件上传完成时回调 System.out.println("Complete end: " + uploadId); }

@Override public void onError(Throwable throwable) { // 上传过程中报错时回调 throwable.printStackTrace(); }}); System.out.println(new Gson().toJson(rsp)); //返回信息 }

更新文件暂不上传

调用SDK方法更新视频文件或封面但不上传,一般发生在服务器发起更新请求,然后转交给客户端如App、浏览器上传(可以参考并使用点播服务的上传SDK),如果是更新视频文件则需要在客户端上传完之后,调用确认上传接口完成整个上传操作。(需要配置创建的视频的ID,并用该ID调用确认上传接口)

import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.PreheatingAssetReq;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

UploadAssetReq req = new UploadAssetReq();//设置媒资更新参数

req.setAssetId("assetId");//设置媒资ID

req.setVideoName("videoName");//设置视频文件名,可以带后缀,也可以不带后缀。

req.setVideoMd5("videoMD5");//设置视频文件MD5值,如果需要用响应结果的上传url进行上传,则该参数必填且需要正确填写。

//设置上传文件类型。支持上传视频文件格式:MP4、TS、MOV、MXF、MPG、FLV、WMV、AVI、

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 23

M4V、F4V、MPEG,支持上传音频文件格式:MP3、OGG、WAV、WMA、APE、FLAC、AAC、AC3、MMF、AMR、M4A、M4R、WV、MP2,若上传格式为音频文件,则不支持转码,添加水印,添加字幕。 req.setVideoType("MP4"); req.setCoverId(0);//设置封面ID,取值0-7。当前只支持一张封面,只能填0

req.setCoverType("PNG");//设置封面图片格式类型,当前支持JPG、PNG

req.setCoverMd5("coverMD5");//设置封面文件MD5值,如果需要用响应结果的上传url进行上传,则该参数必填且需要正确填写

//创建媒资请求体UploadAssetReq 中新增 List<SubtitleReq> subtitles List<SubtitleReq> subtitleReqs = new ArrayList<>(); SubtitleReq subtitleReq = new SubtitleReq();

subtitleReq.setId(1);//字幕id,目前只支持上传一个字幕文件,取值为[1,8]

subtitleReq.setType("SRT");//字幕文件类型,目前只支持SRT文件

subtitleReq.setLanguage("CN");//字幕语言类型,目前仅支持“CN”和“EN”

//字幕文件MD5值 subtitleReq.setMd5("EIq3IMk3Cx8Dh6ga/peS/Q=="); subtitleReqs.add(subtitleReq); req.setSubtitles(subtitleReqs);

UploadAssetRsp rsp = vodClient.uploadAsset(req);//发送媒资更新请求 System.out.println(new Gson().toJson(rsp));//返回信息 }

3.8 音频提取对已上传的视频进行音频提取,具体参数可以参考音频提取。

代码示例import com.google.gson.Gson;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.ExtractAudioTaskReq;import com.huawei.vod.model.asset.ExtractAudioTaskRsp;import com.huawei.vod.model.asset.Parameter;

public static void main(String[] args) {

VodClient vodClient = initVodClient(); ExtractAudioTaskReq req = new ExtractAudioTaskReq(); req.setAssetId("assetId");//设置媒体ID

//设置音频封装格式 Parameter parameter = new Parameter(); parameter.setFormat("MP3"); req.setParameter(parameter);

ExtractAudioTaskRsp rsp = vodClient.extractAudioTask(req);//发送提取音频请求

System.out.println(new Gson().toJson(rsp));//返回处理信息}

3.9 视频处理启动视频转码、视频截图、视频加密等处理。既可以同时启动多种操作,也可以只启动一种操作。具体接口参数请参考视频处理。

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 24

说明

目前仅支持视频转码处理。

代码示例import com.google.gson.Gson;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.asset.AssetProcessReq;import com.huawei.vod.model.asset.AssetProcessRsp;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

AssetProcessReq req = new AssetProcessReq(); req.setAssetId("assetId");//设置媒体ID req.setTemplateGroupName("templateGroupName");//设置视频转码的模板组的名称,具体模板组请在点播控制台创建并查看

Thumbnail thumbnail = new Thumbnail();// 初始化截图参数

// 设置截图类型为固定时间间隔采样截图,TIME为定时采样,// PERCENT为固定百分比截图, DOTS为固定时间点截图,// 目前仅支持TIME,DOTS类型。thumbnail.setType(Thumbnail.TypeEnum.TIME);

thumbnail.setTime(10);// 设定时间间隔,范围[1-100]。type设置为DOTS时,需设置dots数组来指定时间点

thumbnail.setCoverPosition(1);// 指定第一张截图结果作为封面

req.setThumbnail(thumbnail);// 设置截图参数到请求中

req.setAutoEncrypt(1);// 设置是否自动加密

AssetProcessRsp rsp = vodClient.processAsset(req);//发送媒体处理请求 System.out.println(new Gson().toJson(rsp));//返回处理信息 }

3.10 视频审核对媒资进行鉴政,鉴恐,鉴黄审核,具体参数可以参考媒资审核。

说明

目前“华东-上海二”区域的点播服务暂不支持此功能。

代码示例public static void main(String[] args){ VodClient vodClient = initVodClient();//创建并初始化VOD Client对象 //创建请求对象,往请求对象设置媒资ID AsssetReviewReq req = new AssetReviewReq(); req.setAssetId("{assetId}"); //初始化审核参数,politics、terrorism、porn未传参时表示不进行此项检测,传-1表示采用默认的置信度。目前“华东-上海二”区域的点播服务暂不支持此功能。 Review review = new Review(); review.setInterval(5);// 设置截图时间间隔

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 25

review.setPolitics(80);// 设置政治人物检测时的置信度 review.setTerrorism(80);// 设置暴恐元素检测时的置信度 review.setPorn(80);// 设置涉黄内容检测时的置信度 req.setReview(review); AssetReviewRsp rsp = vodClient.createAssetReviewTask(req); System.out.println(new Gson().toJson(rsp));}

3.11 查询密钥终端播放HLS AES128加密视频时,向租户管理系统请求密钥,租户管理系统先查询其本地有没有已缓存的密钥,没有时则向VOD查询。具体参数可以参考查询密钥。

代码示例public static void main(String[] args){ //创建并初始化VOD Client对象 VodClient vodClient = initVodClient();

//创建请求对象,往请求对象设置媒资ID QueryCipherReq req = new QueryCipherReq(); req.setAssetId("{assetId}");

//调用查询密钥接口 QueryCipherRsp rsp = vodClient.queryCipher(req);

//处理查询到的密钥信息 System.out.println(new Gson().toJson(rsp));}

3.12 统计分析

统计源站信息

用于查询点播源站相关数据,支持查询存储空间,转码时长。具体参数说明请参考查询源站统计信息。

@Testpublic void testQuerySummary(){

VodConfig vodConfig = new VodConfig(); //创建vod客户端

vodConfig.setProjectId("14ce1d4437164aba8b364ce15866154e"); //设置用户projectId

vodConfig.setEndPoint("vod.cn-north-4.myhuaweicloud.com"); //设置vod服务地址

//设置AK、SK vodConfig.setAk("YS0JVWUSSQ23QL2PBMVH"); vodConfig.setSk("HCxKJ2plAR8h5kmP3jOeaXo9sXAb1ROeOMcKOnkR");

//设置iam地址 vodConfig.setIamEndPoint("192.144.1.37:31943");

//创建请求 QueryStatReq req = new QueryStatReq();

//设置查询终止时间 req.setEnd_time("20180917044330");

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 26

//设置查询起始时间 req.setStart_time("20180916044338");

//设置查询时间粒度 req.setInterval(3600);

//调用vod查询源站客户端 QueryVodStatRsp queryVodStatRsp = new VodClient(vodConfig).queryVodstat(req);

System.out.println(new Gson().toJson(queryVodStatRsp));}

查询 cdn 统计信息

用于查询cdn相关数据信息,支持查询cdn峰值带宽、cdn流量、cdn请求命中率、流量命中率、请求总数。具体参数可以参考查询CDN统计信息。@Testpublic void testQueryCdnStat(){

//创建vod客户端 VodConfig vodConfig = new VodConfig();

//设置用户projectId vodConfig.setProjectId("14ce1d4437164aba8b364ce15866154e");

//设置vod地址 vodConfig.setEndPoint("vod.cn-north-4.myhuaweicloud.com");

//设置AK、SK vodConfig.setAk("YS0JVWUSSQ23QL2PBMVH");

vodConfig.setSk("HCxKJ2plAR8h5kmP3jOeaXo9sXAb1ROeOMcKOnkR");

//设置iam地址 vodConfig.setIamEndPoint("192.144.1.37:31943");

//创建请求 QueryStatReq req = new QueryStatReq();

//设置查询终止时间 req.setEnd_time("20180917044330");

//设置查询起始时间 req.setStart_time("20180916044338"); //设置统计数据类型,当前取值有五种,cdn_bw:CDN峰值带宽,cdn_flux:CDN流量,req_num:请求总数,req_hit_rate:请求命中率,flux_hit_rate:流量命中率 req.setStatType("cdn_bw");

//设置查询时间粒度 req.setInterval(3600);

//调用vod查询cdn客户端 QueryCdnStatRsp queryCdnStatRsp = new VodClient(vodConfig).queryCdnstat(req);

System.out.println(new Gson().toJson(queryVodStatRsp));}

查询 TopN 视频信息

用于查询某域名或者所有域名视频播放的信息。@Testpublic void testQueryTop(){ VodConfig vodConfig = new VodConfig(); vodConfig.setProjectId("14ce1d4437164aba8b364ce15866154e");

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 27

vodConfig.setEndPoint("vod.cn-north-4.myhuaweicloud.com"); vodConfig.setAk("YS0JVWUSSQ23QL2PBMVH"); vodConfig.setSk("HCxKJ2plAR8h5kmP3jOeaXo9sXAb1ROeOMcKOnkR");

vodConfig.setIamEndPoint("192.144.1.37:31943");

QueryTopStatReq req = new QueryTopStatReq(); //设置查询时间,精确到天,不支持查询当天的信息 req.setDate("20181101"); //设置域名,支持查询某一个域名或该用户所有域名,所有域名设置为“ALL” req.setDomain("2.cdn-vod.huaweicloud.com"); QueryTopStatRsp queryTopStatRsp = new VodClient(vodConfig).quertTopStat(req); System.out.println(new Gson().toJson(queryTopStatRsp));}

3.13 获取鉴权 URL给CDN加速域名设置Key防盗链后,需要调用本接口获取带有鉴权信息的URL,才能进行视频播放。

前提条件● 获取未带加密信息的原始加速域名URL

– 方法一:登录视频点播服务控制台,查询获取启用CDN加速服务后的URL。

i. 登录华为云,点击右上角“控制台”,单击“服务列表 > 视频 > 视频点播”进入视频点播服务控制台。

ii. 进入“视频管理”页面。单击视频右侧“管理 > 播放地址”,可获取视频播放URL。

– 方法二:调用查询媒资信息接口。

● 获取加速域名上配置的密钥值,请参见配置Key防盗链。

代码示例import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.BaseResponse;import com.huawei.vod.model.auth.CreateAuthInfoReq;

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 28

import com.huawei.vod.model.auth.CreateAuthInfoRsp;import com.huawei.vod.model.auth.CreateDomainAuthInfoReq;

public class DomainUrlAuthTest{ private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端

CreateDomainAuthInfoReq req = new CreateDomainAuthInfoReq();

//加速域名上配置的密钥值 req.setKey("Key"); // 设置加密算法,当前支持Algorithm_A,Algorithm_B,Algorithm_C,Algorithm_D req.setAlgorithm(CreateDomainAuthInfoReq.Algorithm_D); //未带加密信息的原始url req.setOriginalUrl("https://144.cdn-vod.huaweicloud.com/asset/eb501eb1e014fd8e7d15abd126dc3db9/81bc0ab9a7f64d9e9ff4703134bb236d.mp4"); CreateAuthInfoRsp rsp = vodClient.createDomainAuthInfoUrl(req); System.out.println(gson.toJson(rsp)); }}

3.14 获取临时 AK/SK/securityToken租户服务端使用公有云账户的账户密码来获取临时AK/SK/securityToken,用于上传SDK中的上传操作,用作上传SDK的初始化参数。

代码说明● SDK中封装接口为统一身份认证服务(IAM)的获取临时AK/SK接口,使用华为云

账号的用户名、密码、账户名换取有时间限制的临时AK、SK,需要配置IAM服务的EndPoint,具体可以查询IAM服务地区与终端节点对应关系。

● 临时AK、SK的有效时间在15分钟到24小时之间。

代码示例import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.huawei.common.obs.ObsConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.retrofit.model.TemporaryCredential;

public static void main(String[] args) { VodClient vodClient = initVodClient(); // 初始化客户端 // 配置IAM的EndPoint,请参考“获取关键参数”章节获取。vodClient.getVodConfig().setIamEndPoint("iam.cn-north-4.myhuaweicloud.com");

//传参并发送请求,此处有4个参数,分别为华为云账户的用户名、密码、账号名,请参考“获取关键参数”章节获取//临时AK、SK、securityToken的有效时间(在15分钟到24小时之间,单位为秒) TemporaryCredential result = vodClient.requestTemporaryCredential("username", "password", "domainName", 3600);

System.out.println(new GsonBuilder().disableHtmlEscaping().create().toJson(result));}

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 29

3.15 API&SDK 对应关系

表 3-1 SDK 与 API 对应关系

SDK API接口 说明

媒资上传

public CreateAssetByFileRspcreateAssetByFile(CreateAssetByFileReq req)

POST /v1.0/{project_id}/asset

创建媒资(本地上传方式)

public ConfirmAssetUploadRspconfirmAssetUpload(ConfirmAssetUploadReq req)

PUT /v1.0/{project_id}/asset/status/uploaded

确认媒资上传

public BaseResponsebucketAuthorized(BucketAuthorizedReq req)

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

桶授权

public PublishAssetFromObsRsppublishAssetFromObs(PublishAssetFromObsReqpublishAssetFromObsReq)

POST /v1.0/{project_id}/asset/reproduction

创建媒资(OBS转存方式)

媒资管理

public PublishAssetRsppublishAssets(PublishAssetReq req)

PUT /v1.0/{project_id}/asset/status/publish

发布媒资

public BaseResponseunPublishAssets(UpdateAssetMetaReq req)

PUT /v1.0/{project_id}/asset/status/unpublish

发布媒资取消

public BaseResponseupdateAssetMeta(UpdateAssetMetaReq req)

PUT /v1.0/{project_id}/asset/info

修改媒资属性

public DeleteAssetRspdeleteAssets(DeleteAssetReq req)

DELETE /v1.0/{project_id}/asset

删除媒资

public UploadAssetRspuploadAsset(UploadAssetReq req)

PUT /v1.0/{project_id}/asset

更新媒资

public QueryAssetMetaRspqueryAssetMeta(QueryAssetMetaReq req)

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

查询媒资信息

public QueryAssetDetailRspqueryAssetDetail(QueryAssetDetailReq req)

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

查询媒资详细信息

public QueryAssetListRspqueryAssetList(QueryAssetListReqreq)

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

查询媒资列表

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 30

SDK API接口 说明

CDN预热

public PreheatingAssetRsppreheatAsset(CdnPreheatingReq req)

POST /v1.0/{project_id}/asset/preheating

CDN预热

public PreheatingAssetRsppreheatAsset(PreheatingAssetReqreq)

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

查询预热结果

媒资处理

public AssetProcessRspprocessAsset(AssetProcessReq req)

POST /v1.0/{project_id}/asset/process

媒资处理

public ExtractAudioTaskRspextractAudioTask(ExtractAudioTaskReq extractAudioTaskReq)

POST /v1.0/{project_id}/asset/extract_audio

音频提取

public AssetReviewRspcreateAssetReviewTask(AssetReviewReq req)

POST /v1.0/{project_id}/asset/review

媒资审核

public QueryCipherRspqueryCipher(QueryCipherReqqueryCipherReq)

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

密钥查询

媒资分类

public CreateCategoryRspcreateAssetCategory(CreateCategoryReq req)

POST /v1.0/{project_id}/asset/category

创建媒资分类

public BaseResponsemodifyAssetCategory(ModifyCategoryReq req)

PUT /v1.0/{project_id}/asset/category

修改媒资分类

public BaseResponsedeleteAssetCategory(int categoryId)

DELETE /v1.0/{project_id}/asset/category

删除媒资分类

public QueryCategoryRspqueryAssetCategory(QueryCategoryReq req)

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

查询分类及其子分类

数据统计

public QueryCdnStatRspqueryCdnstat(QueryStatReqqueryCdnStatReq)

GET /v1.0/{project_id}/asset/cdn-statistics

查询CDN统计信息

public QueryVodStatRspqueryVodstat(QueryStatReqqueryCdnStatReq)

GET /v1.0/{project_id}/asset/vod-statistics

查询源站统计信息

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 31

SDK API接口 说明

public QueryTopStatRspquertTopStat(QueryTopStatReqqueryTopStatReq)

GET /v1.0/{project_id}/asset/top-statistics

查询TopN视频信息

3.16 异常处理

3.16.1 连接超时出现此类异常原因一般是服务地址(Endpoint)错误或网络不通导致无法连接服务,此时请检查服务地址、网络状况和代理设置。

3.16.2 错误处理在使用Java SDK时,当服务端或者SDK端出错时,SDK会返回相应的异常信息。这些异常信息中会包含具体的错误信息,例如错误码(Error Code)和错误消息(ErrorMessage)。

"Error Code"是错误码,可以查看错误码,找到对应的错误描述,找出对应的错误类型。

"Error Message"是错误信息,可以快速的帮助定位问题,找出错误原因并解决。

如果您需要对SDK的错误进行处理,可以参考如下示例编写代码:

/** 业务流程:* 1、首先需要导入点播SDK包VodSDK.jar* 2、设置点播服务配置项,包括点播服务节点地址、AK、SK和ProjectId等,用于连接点播服务和进行授权等。* 3、构造媒资发布请求参数,没有填必填字段* 4、发送媒资发布请求。* 5、返回处理信息。*/

import com.google.gson.Gson;import com.huawei.vod.client.ClientConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.Asset.PublishAssetReq;import com.huawei.vod.model.Asset.PublishAssetRsp;

//设置点播服务配置项构造方法VodConfig vodConfig = new VodConfig();//设置用户项目编号ProjectId,查看项目ID参考 "查看项目ID"章节vodConfig.setProjectId("projectId");//设置点播服务节点地址,如点播服务的Endpoint当前为“vod.cn-north-4.myhuaweicloud.com”vodConfig.setEndPoint("endPoint");//设置SK,SK的获取方法请参考"创建访问密钥" 章节vodConfig.setAk("ak");vodConfig.setSk("sk");

//点播服务构造方法,在没有配置代理的情况下使用该构造方法VodClient vodClient = new VodClient(vodConfig);

//设置媒资发布请求参数PublishAssetReq req = new PublishAssetReq();//媒资id是必填的,但在这里没有填写媒资id//String[] assets = {"asset1", " asset2"};

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 32

//设置媒资发布的媒资IDreq.setAsset_id(req);

//发送媒资发布请求PublishAssetRsp rsp = vodClient.publishAssets(req);

//如果返回错误if(BaseResponse.FAIL == rsp.getStatus()){ // 这里可以添加您自己的错误处理逻辑 // 例如,打印具体的错误信息 System.out.println("ErrorCode ="+ rsp.getErrorCode()); System.out.println("ErrorMsg ="+ rsp.getErrorMsg());}//如果返回成功else{ //返回处理结果 System.out.println(new Gson().toJson(rsp));}

视频点播服务端 SDK 参考 3 JAVA SDK

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 33

4 附录

4.1 JDK环境配置

4.3 错误码参考

4.1 JDK 环境配置步骤1 根据系统情况下载JDK安装包,建议下载JDK1.8。

您需要根据自己的Windows系统版本下载对应的JDK1.8版本,下载前请先勾选“Accept License Agreement”。

步骤2 双击安装包,根据安装向导完成JDK安装。

步骤3 Windows桌面右键单击“计算机”,选择“属性”。

步骤4 在左侧导航中选择“高级系统设置”,弹出“系统属性”窗口。

步骤5 单击“环境变量”,弹出“环境变量”窗口。

步骤6 配置环境变量。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 34

1. 在“用户变量”下单击“新建”,新建用户变量,变量名为“JAVA_HOME”,变量值为JDK的安装路径,如“C:\ProgramFiles\Java\jdk1.8.0_45”。

2. 在“系统变量”下选择“PATH”变量,单击“编辑”,将变量值末尾新增“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”。

3. 在“系统变量”下新建系统变量,变量名为“CLASSPATH”,变量值为“ .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。

4. 单击“确定”,完成环境变量的配置。

步骤7 选择“开始”->“运行”,输入“cmd”,执行命令:java -version。

若命令执行成功,则说明环境变量配置成功。

----结束

4.2 获取关键参数在使用SDK前,需要获取一些关键参数,用于签名认证,需要获取的参数如下所示:

● AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。

● SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 35

● Project_ID:项目ID,部分请求URL中需要包含该字段。

● 账户名:部分请求URL中需要包含该字段。

● Endpoint:华为云各服务应用区域和各服务的终端节点。

前提条件

已完成华为云官网注册,并进行了实名认证。

获取 AK 和 SK注意:访问密钥对账号具有完全的访问权限,如果访问密钥泄露,会带来数据泄露风险,为了账号安全性,建议您定期更换并妥善保存访问密钥。每个账号最多只能创建2个密钥。

步骤1 登录华为云官网,在右上角单击账号名,选择“账号中心”。

步骤2 在基本信息页面单击“管理我的凭证”,进入“我的凭证”页面。

步骤3 在左侧导航栏中选择“访问密钥”,单击“新增访问密钥”,在弹出的页面中输入华为云账号密码及短信验证码。

图 4-1 访问密钥

步骤4 单击“确定”,即可下载一个命名为“credentials.csv”的文件,其中包含AK和SK。

----结束

获取项目 ID 和账号名

步骤1 登录华为云官网,在右上角单击账号名,选择“账号中心”。

步骤2 在基本信息页面单击“管理我的凭证”,进入“我的凭证”页面。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 36

图 4-2 基本信息

步骤3 在左侧导航栏中选择“API凭证”,即可获取对应的项目ID信息。

图 4-3 获取项目 ID

----结束

获取 EndPoint在SDK初始化时需要使用到Endpoint,您可以在地区和终端节点页面获取EndPoint值。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 37

图 4-4 终端节点

4.3 错误码参考

错误码 错误信息描述

VOD.10051 系统问题,请联系华为工程师解决。

VOD.10052 服务内部通信异常,请联系华为工程师解决。

VOD.10053 请求参数非法,非法字段:{0}。

VOD.10054 身份认证失败。

VOD.10055 用户未实名认证,请检查。

VOD.10056 用户处于异常状态,请检查。

VOD.10057 租户ID校验失败,请检查。

VOD.10058 请求方式不正确,请检查。

VOD.10059 请求内容类型不正确,请检查。

VOD.10060 媒资处于未下载成功或者未发布状态,请检查。

VOD.10061 操作失败,当前媒资状态不允许更新。

VOD.10062 媒资或资源不存在,请检查。

VOD.10063 媒资类型暂不支持。

VOD.10064 媒资分类不存在,请检查。

VOD.10065 媒资分类已存在,请检查。

VOD.10066 媒资分类超过最大层级,请检查。

VOD.10067 媒资分类超过最大个数限制,请检查。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 38

错误码 错误信息描述

VOD.10068 主题不存在,请检查。

VOD.10069 主题已存在,请检查。

VOD.10070 设置消息通知失败,无权限发布消息到主题,请检查。

VOD.10071 Referer头域校验失败,请检查。

VOD.10072 url鉴权设置失败,旧密钥尚未过期,无法设置新密钥,过期后请再次设置新密钥。

VOD.10073 创建媒资转码任务失败,请联系华为工程师解决。

VOD.10074 无权限执行该操作。

VOD.10075 对象存储源地址或者目的地址不正确,请检查。

VOD.10076 获取对象存储源文件失败。

VOD.10077 hms请求播放接口鉴权失败。

VOD.10078 公测限额,用量超过阈值。

VOD.10079 任务处理成功。

VOD.10080 任务处理中。

VOD.10081 请求参数非法,请检查。

VOD.10082 模板组已存在。

VOD.10083 当前媒资状态不支持该操作。

VOD.10084 媒资发布失败。

VOD.10085 允许创建的域名数不能超过{0}个。

VOD.10086 预热url总数不能超过{0}个。

VOD.10087 刷新url总数不能超过{0}个。

VOD.10088 https配置中,请稍后重试。

VOD.10089 未开通cdn加速域名或者加速域名未生效。

VOD.10090 修改失败,请求先确认水印图片上传。

VOD.10091 媒资转码成功。

VOD.10092 媒资转码失败。

VOD.10093 OBS转存媒资发布成功。

VOD.10094 OBS转存媒资发布失败。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 39

错误码 错误信息描述

VOD.20051 Request parameters is invalid。

请求参数非法,缺少必要参数,或者参数值格式不正确,具体错误信息请查看错误描述message字段。

VOD.20052 Request is invalid。

响应体异常,具体错误信息请查看错误描述errorMsg字段。

VOD.20053 encrypt url failed。

加密失败,具体错误信息请查看错误描述errorMsg字段。

VOD.20055 Connect to VOD Fail,please check request url。连接VOD异常,URL地址有误或网络连接异常。

视频点播服务端 SDK 参考 4 附录

文档版本 01 (2020-06-16) 版权所有 © 华为技术有限公司 40