• 沒有找到結果。

SDK介绍_媒体处理 MPC_SDK参考_华为云

N/A
N/A
Protected

Academic year: 2022

Share "SDK介绍_媒体处理 MPC_SDK参考_华为云"

Copied!
81
0
0

加載中.... (立即查看全文)

全文

(1)

SDK 参考

文档版本 01

发布日期 2021-11-04

(2)

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

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

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

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

(3)

目 录

1 SDK 介绍... 1

2 Java SDK(3.x.x)... 2

2.1 开发前准备... 2

2.2 视频转码...7

2.2.1 新建转码任务...8

2.2.2 取消转码任务... 10

2.2.3 查询转码任务... 11

2.3 抽帧截图... 12

2.3.1 新建截图任务... 13

2.3.2 取消截图任务... 14

2.3.3 查询截图任务... 16

2.4 独立加密... 17

2.4.1 新建独立加密任务... 17

2.4.2 取消独立加密任务... 19

2.4.3 查询独立加密任务... 20

2.5 动图管理... 22

2.5.1 新增动图任务... 22

2.5.2 查询动图任务... 24

2.5.3 取消动图任务... 25

2.6 视频解析... 26

2.6.1 创建视频解析任务... 27

2.6.2 查询视频解析任务... 28

2.6.3 取消视频解析任务... 30

2.7 转封装管理... 31

2.7.1 创建转封装任务...31

2.7.2 查询转封装任务...32

2.7.3 取消转封装任务...34

2.8 配置转码模板...35

2.8.1 新建转码模板... 35

2.8.2 删除转码模板... 37

2.8.3 更新转码模板... 38

2.8.4 查询转码模板... 41

2.9 配置水印模板...42

(4)

2.9.1 新建水印模板... 42

2.9.2 更新水印模板... 44

2.9.3 查询水印配置模板... 45

2.9.4 删除水印模板... 46

2.10 SDK & API 对应关系... 48

3 Python SDK... 50

4 Go SDK... 55

A 附录... 59

A.1 JDK 安装... 59

A.2 错误码表... 60

A.3 返回状态码... 74

A.4 获取关键参数... 75

(5)

1 SDK 介绍

媒体处理SDK提供了创建转码任务、取消转码任务、查询转码任务、创建转码配置模 板、删除转码配置模板、更新转码配置模板、查询转码配置模板等。

目前暂提供了JAVA、Python和Go三种语言SDK,若您有其它开发语言的需求,建议您 通过媒体处理API进行调用。

1-1 服务端 SDK

语言 下载地址 参考文档

JAVA(3.x.x 版)

huaweicloud-sdk-java-v3 Java SDK使用指导(3.x.x)

Python

huaweicloud-sdk-python-

v3 Python SDK使用指导

Go

huaweicloud-sdk-go-v3 Go SDK使用指导

(6)

2 Java SDK(3.x.x)

2.1 开发前准备 2.2 视频转码 2.3 抽帧截图 2.4 独立加密 2.5 动图管理 2.6 视频解析 2.7 转封装管理 2.8 配置转码模板 2.9 配置水印模板

2.10 SDK & API对应关系

2.1 开发前准备

本章节介绍了Java SDK的使用说明,您可以参考本章节进行快速集成开发。

开发前准备

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

● 已具备开发环境 ,支持Java JDK 1.8 及其以上版本。

● 已获取华为云账号对应的 Access Key(AK)和 Secret Access Key(SK)。请在 华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的 AK/SK。具体请参 见访问密钥。

● 已获取转码服务对应区域的项目ID,请在华为云控制台“我的凭证 > API凭证”页 面上查看项目ID。具体请参见API凭证。

● 已将需要处理的媒资文件上传至MPC同区域的OBS桶中,并将OBS桶进行授权,

允许MPC访问。具体请参见上传音视频文件和获取云资源授权。

(7)

Maven 安装配置

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

1. 在profiles节点中添加如下内容:

<profile>

<id>MyProfile</id>

<repositories>

<repository>

<id>HuaweiCloudSDK</id>

<url>https://repo.huaweicloud.com/repository/maven</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>false</enabled>

</snapshots>

</repository>

</repositories>

<pluginRepositories>

<pluginRepository>

<id>HuaweiCloudSDK</id>

<url>https://repo.huaweicloud.com/repository/maven</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>false</enabled>

</snapshots>

</pluginRepository>

</pluginRepositories>

</profile>

2. 在mirrors节点中增加:

<mirror>

<id>huaweicloud</id>

<mirrorOf>*,!HuaweiCloudSDK</mirrorOf>

<url>https://repo.huaweicloud.com/repository/maven</url>

</mirror>

3. 增加activeProfiles标签激活配置:

<activeProfiles>

<activeProfile>MyProfile</activeProfile>

</activeProfiles>

4. 配置pom.xml,添加媒体处理的SDK依赖,媒体处理服务具体的SDK版本号请参见

SDK开发中心。

<dependency>

<groupId>com.huaweicloud.sdk</groupId>

<artifactId>huaweicloud-sdk-mpc</artifactId>

<version>3.0.39-rc</version>

</dependency>

开始使用

步骤1 导入依赖模块。

// 用户身份认证

import com.huaweicloud.sdk.core.auth.BasicCredentials;

// 请求异常类

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ServerResponseException;

// Http 配置

import com.huaweicloud.sdk.core.http.HttpConfig;

// 导入mpc的客户端

import com.huaweicloud.sdk.mpc.v1.MpcClient;

// 导入待请求接口的 request 和 response 类

(8)

import com.huaweicloud.sdk.mpc.v1.model.ListTranscodingTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.ListTranscodingTaskResponse;

// 日志打印

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

步骤2 配置客户端属性。

1. 默认配置。

// 使用默认配置

HttpConfig config = HttpConfig.getDefaultHttpConfig();

2. 代理配置(可选)。

// 使用代理服务器(可选)

config.withProxyHost("http://proxy.huaweicloud.com") .withProxyPort(8080)

.withProxyUsername("test") .withProxyPassword("test");

3. 连接配置(可选)。

// 配置连接超时(可选)

config.withTimeout(3);

4. SSL配置(可选)。

// 配置跳过服务端证书验证(可选)

config.withIgnoreSSLVerification(true);

步骤3 初始化认证信息。

支持两种方式认证,您可以根据实际情况进行选择。

● 使用永久AK/SK

首先需要获取永久AK和SK,以及projectId,您可以参考开发前准备获取。

BasicCredentials credentials = new BasicCredentials() .withAk(ak)

.withSk(sk)

.withProjectId(projectId)

● 使用临时AK/SK

首先需要获取临时AK、SK和SecurityToken,您可以通过token获取或者通过委托 授权获取。

BasicCredentials credentials = new BasicCredentials() .withAk(ak)

.withSk(sk)

.withSecurityToken(securityToken) .withProjectId(projectId)

相关参数说明如下所示:

ak:华为云账号 Access Key。

sk:华为云账号 Secret Access Key 。

projectId:云服务所在区域的项目 ID ,根据你想操作的项目所属区域选择对应 的项目 ID。

securityToken:采用临时AK/SK认证场景下的安全票据。

步骤4 初始化客户端。

//初始化MPC的客户端

MpcClient MpcClient = MpcClient.newBuilder() .withHttpConfig(config)

.withCredential(credentials) .withEndpoint(endpoint) .build();

endpoint:MPC应用区域和各服务的终端节点,具体请参见地区和终端节点。

(9)

步骤5 发送请求并查看响应。

// 初始化请求,以调用查询转码模板接口为例 ListTranscodingTaskResponse response = mpcClient.

listTranscodingTask(new ListTranscodingTaskRequest().withTaskId(Collections.singletonList(1900293L)) ));logger.info(response.toString());

步骤6 异常处理。

2-1 异常处理

一级分类 一级分类说

二级分类 二级分类说明

ConnectionExce

ption 连接类异常 HostUnreachableEx

ception 网络不可达、被拒绝

SslHandShakeExcep

tion SSL认证异常

RequestTimeout

Exception 响应超时异

常 CallTimeoutExcepti

on 单次请求,服务器处理超

时未返回 RetryOutageExcepti

on 在重试策略消耗完成已

后,仍无有效的响应 ServiceResponse

Exception 服务器响应 异常

ServerResponseExce

ption 服务端内部错误,Http响

应码:[500,]

ClientRequestExcep

tion 请求参数不合法,Http响

应码:[400, 500)

// 异常处理 try {

ListTranscodingTaskResponse response= mpcClient.listTranscodingTask(new ListTranscodingTaskRequest().withTaskId(Collections.singletonList(1900293L)));

} catch(ServiceResponseException e) {

logger.error("HttpStatusCode: " + e.getHttpStatusCode());

logger.error("RequestId: " + e.getRequestId());

logger.error("ErrorCode: " + e.getErrorCode());

logger.error("ErrorMsg: " + e.getErrorMsg());

}

步骤7 异步客户端使用。

// 初始化异步客户端

MpcAsyncClient mpcAsyncClient = MpcAsyncClient.newBuilder() .withHttpConfig(config) .withCredential(credentials) .withEndpoint(endpoint) .build();

// 发送异步请求

CompletableFuture<ListTranscodingTaskResponse> future = mpcAsyncClient.listTranscodingTaskAsync(new ListTranscodingTaskRequest().withTaskId(Collections.singletonList(1900293L)));

// 获取异步请求结果

ListTranscodingTaskResponse response = future.get();

logger.info(response.toString());

(10)

步骤8 访问日志。

SDK在运行的时候采用了slf4j进行日志打印,如果在运行代码实例时,未配置日志实现 库,会有提示如下:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

您可以根据目标项目实际情况引入对应的日志实现,请在对应的工程项目的 pom.xml 文件中引入日志实现的依赖,如下所示:

● slf4j

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-simple</artifactId>

<version>1.7.21</version>

</dependency>

logback

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>1.2.3</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-core</artifactId>

<version>1.2.3</version>

</dependency>

● log4j

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

SDK默认会打印访问日志,每次请求都会有一条记录,日志名称为"HuaweiCloud- SDK-Access", 日志格式如下所示:

"{httpMethod} {uri}" {httpStatusCode} {responseContentLength} {requestId}

其中“requestId”是华为云APIG返回的请求ID,可以用于问题跟踪。

可以根据项目情况在对应的日志配置文件中对访问日志进行屏蔽,或者单独打印到独 立文件中。例如在logback中关闭访问日志:

<logger name="HuaweiCloud-SDK-Access" level="OFF"> </logger>

步骤9 原始HTTP侦听器。

在某些场景下可能对业务发出的Http请求进行Debug,需要看到原始的Http请求和返 回信息,SDK提供侦听器功能来获取原始的为加密的Http请求和返回信息。

注意

原始信息打印仅在debug阶段使用,请不要在生产系统中将原始的Http头和Body信息 打印到日志,这些信息并未加密且其中包含敏感数据;当Body体为二进制内容,即 Content-Type标识为二进制时,body为"***",详细内容不输出。

HttpConfig config = new HttpConfig().addHttpListener(HttpListener.forRequestListener(requestListener ->

// 注册侦听器后打印Http Request 原始信息,请勿在生产系统中使用 logger.debug("REQUEST: {} {} {} {}",

(11)

requestListener.httpMethod(), requestListener.uri(),

requestListener.headers().entrySet().stream().flatMap(entry ->

entry.getValue().stream().map(value -> entry.getKey() + " : " + value)) .collect(Collectors.joining(";")),

requestListener.body().orElse(""))));

.addHttpListener(HttpListener.forResponseListener(responseListener ->

// 注册侦听器后打印Http Request 原始信息,请勿在生产系统中使用 logger.debug("RESPONSE: {} {} {} {} {}",

responseListener.httpMethod(), responseListener.uri(), responseListener.statusCode(),

responseListener.headers().entrySet().stream().flatMap(entry ->

entry.getValue().stream().map(value -> entry.getKey() + " : " + value)) .collect(Collectors.joining(";")),

responseListener.body().orElse(""))));

MpcClient mpcClient = MpcClient.newBuilder() .withHttpConfig(config)

.withCredential(auth) .withEndpoint(endpoint) .build();

----结束

代码示例 - 初始化 MpcClient

以下示例endpoint为上海2,调用前请根据实际情况填写,并替换如下变量: {your ak string}、{your sk string}、{your endpoint string} 和 {your project id}。

package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

public class InitMpc {

private static HttpConfig httpConfig;

private static BasicCredentials auth;

private static String endpoint;

private static MpcClient mpcClient;

public static MpcClient getMpcClient() {

httpConfig = HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxx").withProxyPort(xxxxx).withProxyUsername("xxxxx").

// withProxyPassword("xxxxx");

String ak = "xxxxx";

String sk = "xxxxx";

String projectId = "xxxxx";

endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

mpcClient = MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

return mpcClient;

} }

2.2 视频转码

(12)

2.2.1 新建转码任务

您可以通过创建转码MpcClient实例并设置相关参数新建转码任务。

核心代码

1. 创建转码MpcClient实例。

public static MpcClient initMpcClient() { //设置httpConfig

HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//根据实际需要,是否设置http代理

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

//withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

}

2. 创建转码请求,并设置请求体。

转码请求包括输入文件、输出文件和转码模板设置。具体参数含义请参考新建转 码任务。//设置转码输入视频地址

ObsObjInfo input = new ObsObjInfo() //设置桶名

.withBucket("mpc-east-2") //设置OBS桶所在区域 .withLocation("cn-east-2") //设置输入视频对象

.withObject("input/ok.mp4");

//设置转码输出视频路径

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn-east-2") //设置输出路径

.withObject("output");

//创建转码请求

CreateTranscodingTaskRequest request

= new CreateTranscodingTaskRequest().withBody(new CreateTranscodingReq() .withInput(input)

.withOutput(output)

//设置转码模板,预置模板Id可以在MPC console页面“全局设置” - “预置模板”上查看 .withTransTemplateId(Collections.singletonList(7000530))

//设置输出名称,名称个数需要与模板个数一一对应 .withOutputFilenames(Collections.singletonList("output_")) //设置截图参数,根据实际需要填充Thumbnail结构

//.withThumbnail(new Thumbnail())

//设置加密参数,根据实际需要填充Encryption结构 //.withEncryption(new Encryption())

);

3. 发送转码请求。

//发送媒体处理服务请求

CreateTranscodingTaskResponse response = initMpcClient().createTranscodingTask(request);

//返回消息

System.out.println("CreateTranscodingTaskResponse=" + response);

(13)

示例代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.CreateTranscodingReq;

import com.huaweicloud.sdk.mpc.v1.model.CreateTranscodingTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.CreateTranscodingTaskResponse;

import com.huaweicloud.sdk.mpc.v1.model.ListTranscodingTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.ListTranscodingTaskResponse;

import com.huaweicloud.sdk.mpc.v1.model.ObsObjInfo;

import com.obs.services.internal.ServiceException;

import org.junit.Test;

import java.util.Arrays;

import java.util.Collections;

public class TestTranscode { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 创建转码任务 * @param args */

public static void main(String[] args) { //设置转码输入视频地址

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("ok.mp4");

//设置转码输出视频路径

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建转码请求

CreateTranscodingTaskRequest request

= new CreateTranscodingTaskRequest().withBody(new CreateTranscodingReq() .withInput(input)

.withOutput(output)

//设置转码模板,预置模板Id可以在MPC console页面“全局设置” - “预置模板”上查看 .withTransTemplateId(Collections.singletonList(7000530))

//设置输出名称,名称个数需要与模板个数一一对应 .withOutputFilenames(Collections.singletonList("output_")) //设置截图参数

//.withThumbnail(new Thumbnail()) //设置加密参数

//.withEncryption(new Encryption())

(14)

);

try {

CreateTranscodingTaskResponse response = initMpcClient().createTranscodingTask(request);

System.out.println("CreateTranscodingTaskResponse=" + response);

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.2.2 取消转码任务

说明

● 取消转码任务需要用户提供所要取消任务的taskId。

● 待取消的taskId只能是正在转码任务队列中排队的转码任务。已开始转码或已完成 的转码任务不能取消。

● 错误处理请参考错误码表。

设置取消转码参数

//取消任务,TaskId是转码请求响应中返回的任务ID

DeleteTranscodingTaskRequest req = new DeleteTranscodingTaskRequest().withTaskId(3273178);

//发送请求

DeleteTranscodingTaskResponse deleteTranscodingTaskResponse = initMpcClient().deleteTranscodingTask(req);

//返回处理消息

System.out.println(JsonUtils.toJSON(deleteTranscodingTaskResponse));

示例代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.DeleteTranscodingTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.DeleteTranscodingTaskResponse;

import com.obs.services.internal.ServiceException;

public class TestDeleteTranscode { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig)

(15)

.withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 取消排队中的任务 */

public static void main(String[] args) { try {

//取消任务请求,TaskId是转码请求响应中返回的任务ID

DeleteTranscodingTaskRequest req = new DeleteTranscodingTaskRequest().withTaskId(3273178);

//发送请求

DeleteTranscodingTaskResponse deleteTranscodingTaskResponse = initMpcClient().deleteTranscodingTask(req);

//返回处理消息

System.out.println(JsonUtils.toJSON(deleteTranscodingTaskResponse));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.2.3 查询转码任务

您可根据转码任务ID、状态、页码数、开始和结束时间,查询单个或多个转码任务的 执行情况。

在查询到的结果集中,如果不提供页码数和显示条数并且数据大于10条,会默认显示 10条数据并进行分页处理。

具体查询条件和查询结果参数请参考查询转码任务接口。

查询单个转码任务

//按单个TaskId查询任务,TaskId是转码请求响应中返回的任务ID ListTranscodingTaskRequest req = new

ListTranscodingTaskRequest().withTaskId(Collections.singletonList(3273178L));

//发送请求

ListTranscodingTaskResponse listTranscodingTaskResponse = initMpcClient().listTranscodingTask(req);

System.out.println(JsonUtils.toJSON(listTranscodingTaskResponse));

查询多个转码任务

//按多个TaskId查询任务,TaskId是转码请求响应中返回的任务ID

ListTranscodingTaskRequest req = new ListTranscodingTaskRequest().withTaskId(Arrays.asList(3273178L, 3273179L));

//发送请求

ListTranscodingTaskResponse listTranscodingTaskResponse = initMpcClient().listTranscodingTask(req);

System.out.println(JsonUtils.toJSON(listTranscodingTaskResponse));

根据状态查询

//按状态查询任务

ListTranscodingTaskRequest req = new ListTranscodingTaskRequest().withStatus("FAILED");

//发送请求

ListTranscodingTaskResponse listTranscodingTaskResponse = initMpcClient().listTranscodingTask(req);

System.out.println(JsonUtils.toJSON(listTranscodingTaskResponse));

根据开始时间和结束时间查询

//根据转码任务开始和结束时间查询 ListTranscodingTaskRequest req = new

ListTranscodingTaskRequest().withStartTime("20210401001517").withEndTime("20210402081517");

(16)

//发送请求

ListTranscodingTaskResponse listTranscodingTaskResponse = initMpcClient().listTranscodingTask(req);

System.out.println(JsonUtils.toJSON(listTranscodingTaskResponse));

根据页码查询

//根据页码和每页条数查询

ListTranscodingTaskRequest req = new ListTranscodingTaskRequest().withPage(0).withSize(4);

//发送请求

ListTranscodingTaskResponse listTranscodingTaskResponse = initMpcClient().listTranscodingTask(req);

System.out.println(JsonUtils.toJSON(listTranscodingTaskResponse));

示例代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.ListTranscodingTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.ListTranscodingTaskResponse;

public class TestListTranscode { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 查询转码任务 */

public static void main(String[] args) { try {

//按TaskId查询任务,TaskId是转码请求响应中返回的任务ID ListTranscodingTaskRequest req = new

ListTranscodingTaskRequest().withTaskId(Collections.singletonList(3273178L));

//发送请求

ListTranscodingTaskResponse listTranscodingTaskResponse = initMpcClient().listTranscodingTask(req);

System.out.println(JsonUtils.toJSON(listTranscodingTaskResponse));

} catch (Exception e) { System.out.println(e);

} } }

2.3 抽帧截图

(17)

2.3.1 新建截图任务

前提条件

● 已购买对象存储服务,并参考上传媒体文件在媒体处理服务同区域(如华北-北京 四)上传媒体处理的源视频。

● 已参考获取云资源授权,完成媒体处理服务授权。

核心代码

1. 创建截图任务请求。

新建截图任务请求包括输入文件、输出文件的路径。具体参数请参考新建截图任 务接口。//设置截图输入视频地址

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("ok.mp4");

//设置截图输出路径

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建截图请求

CreateThumbnailsTaskRequest req = new CreateThumbnailsTaskRequest() .withBody(new CreateThumbReq().withInput(input).withOutput(output) //设置截图类型,此处理按时间点截图

.withThumbnailPara(new ThumbnailPara().withType(ThumbnailPara.TypeEnum.DOTS) //设置截图输出文件名称

.withOutputFilename("photo") //设置截图的时间点

.withDots(Collections.singletonList(2)) //设置截图的宽

.withWidth(480) //设置截图的高 .withHeight(360)));

说明:生成的截图文件按截图时间戳命名,从首帧开始截取,中间按时间间隔截 取,最后末帧截取一张。如视频文件20s,截图间隔为11s,则生成的截图文件为 0.jpg,11.jpg,20.jpg。

2. 发送创建截图任务请求并显示返回消息。

CreateThumbnailsTaskResponse rsp = initMpcClient().createThumbnailsTask(req);

System.out.println("CreateThumbnailsTaskResponse=" + JsonUtils.toJSON(rsp));

示例代码

package SdkTestCase.thumbnail;

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.CreateThumbReq;

import com.huaweicloud.sdk.mpc.v1.model.CreateThumbnailsTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.CreateThumbnailsTaskResponse;

import com.huaweicloud.sdk.mpc.v1.model.ObsObjInfo;

import com.huaweicloud.sdk.mpc.v1.model.ThumbnailPara;

import com.obs.services.internal.ServiceException;

import java.util.Collections;

public class TestThumbnail { /**

* 初始化 MpcClient

(18)

* @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 创建截图任务 * @param args */

public static void main(String[] args) { //设置截图输入视频地址

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("ok.mp4");

//设置截图输出路径

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建截图请求

CreateThumbnailsTaskRequest req = new CreateThumbnailsTaskRequest() .withBody(new CreateThumbReq().withInput(input).withOutput(output) //设置截图类型,此处理按时间点截图

.withThumbnailPara(new ThumbnailPara().withType(ThumbnailPara.TypeEnum.DOTS) //设置截图文件名称

.withOutputFilename("photo") //设置截图的时间点

.withDots(Collections.singletonList(2)) //设置截图的宽

.withWidth(480) //设置截图的高 .withHeight(360)));

//发送截图请求 try {

CreateThumbnailsTaskResponse rsp = initMpcClient().createThumbnailsTask(req);

System.out.println("CreateThumbnailsTaskResponse=" + JsonUtils.toJSON(rsp));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.3.2 取消截图任务

说明

● 取消任务需要用户提供所要取消任务的taskId。

● 待取消的taskId只能是正在截图任务队列中排队的。已开始或已完成的截图任务不 能删除。

(19)

核心代码

// 发送取消截图任务请求给媒体处理服务

DeleteThumbnailsTaskRequest req = new DeleteThumbnailsTaskRequest().withTaskId("2210744");

DeleteThumbnailsTaskResponse rsp = initMpcClient().deleteThumbnailsTask(req);

// 返回消息

System.out.println("DeleteThumbnailsTaskResponse=" + JsonUtils.toJSON(rsp));

完整代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.DeleteThumbnailsTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.DeleteThumbnailsTaskResponse;

import com.obs.services.internal.ServiceException;

public class TestDeleteThumbnail { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 取消截图任务 * @param args */

public static void main(String[] args) {

DeleteThumbnailsTaskRequest req = new DeleteThumbnailsTaskRequest().withTaskId("2210744");

try {

DeleteThumbnailsTaskResponse rsp = initMpcClient().deleteThumbnailsTask(req);

System.out.println("DeleteThumbnailsTaskResponse=" + JsonUtils.toJSON(rsp));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

(20)

2.3.3 查询截图任务

说明

● 查询截图任务,支持根据任务ID查询、任务状态、时间段、分页查询和复合查 询。

● 在查询到的结果集中,如果不提供页码数page和显示条数size并且数据大于10条 时,会默认显示10条数据并进行分页处理。

根据任务 ID 查询

//根据任务ID查询,最多支持10个任务ID ListThumbnailsTaskRequest req = new

ListThumbnailsTaskRequest().withTaskId(Collections.singletonList("2210744"));

// 发送查询截图任务请求给媒体处理服务

ListThumbnailsTaskResponse rsp = initMpcClient().listThumbnailsTask(req);

// 返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

分页查询

//分页查询

ListThumbnailsTaskRequest req = new ListThumbnailsTaskRequest().withPage(1).withSize(4);

//发送查询截图任务请求给媒体处理服务

ListThumbnailsTaskResponse rsp = initMpcClient().listThumbnailsTask(req);

//返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

根据时间段查询

ListThumbnailsTaskRequest req = new

ListThumbnailsTaskRequest().withStartTime("20201220131400").withEndTime("20201220131400");

// 发送查询截图任务请求给媒体处理服务

ListThumbnailsTaskResponse rsp = initMpcClient().listThumbnailsTask(req);

// 返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

根据任务状态查询

// 根据任务的状态查询

ListThumbnailsTaskRequest req = new

ListThumbnailsTaskRequest().withStatus(ListThumbnailsTaskRequest.StatusEnum.FAILED);

// 发送查询截图任务请求给媒体处理服务

ListThumbnailsTaskResponse rsp = initMpcClient().listThumbnailsTask(req);

// 返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

复合查询

//复合查询

ListThumbnailsTaskRequest req = new ListThumbnailsTaskRequest().withPage(1).withSize(4) .withStartTime("20201220131400")

.withEndTime("20201220131400")

.withStatus(ListThumbnailsTaskRequest.StatusEnum.FAILED);

完整代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

(21)

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.ListThumbnailsTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.ListThumbnailsTaskResponse;

import com.obs.services.internal.ServiceException;

public class TestListThumbnail { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 查询截图任务 * @param args */

public static void main(String[] args) {

ListThumbnailsTaskRequest req = new ListThumbnailsTaskRequest().withPage(1).withSize(4) .withStartTime("20201220131400")

.withEndTime("20201220131400")

.withStatus(ListThumbnailsTaskRequest.StatusEnum.FAILED);

try {

ListThumbnailsTaskResponse rsp = initMpcClient().listThumbnailsTask(req);

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.4 独立加密

2.4.1 新建独立加密任务

您可以通过创建MpcClient实例并设置相关参数新建独立加密任务。

前提条件

● 已购买对象存储服务,并参考上传媒体文件在媒体处理服务同区域(如华北-北京 四)上传媒体处理的源视频。

● 已参考获取云资源授权,完成媒体处理服务授权。

(22)

核心代码

1. 创建独立加密请求。

独立加密请求包括输入文件、输出文件和加密参数设置。

//设置输入视频地址和输出路径

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("input/hls/index.m3u8");

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建请求

CreateEncryptTaskRequest req = new CreateEncryptTaskRequest()

.withBody(new CreateEncryptReq().withInput(input).withOutput(output) .withEncryption(new Encryption().withHlsEncrypt(new HlsEncrypt() // 设置加密算法

.withAlgorithm("AES-128-CBC") // 密钥获取服务的地址

.withUrl("www.xxxxx.com") // 设置初始向量

.withIv("xxxxxxxxxxxxxxxxxxx") // 设置初始向量

.withKey("xxxxxxxxxxxxxxxxxxxxxx"))));

//向转码服务发送请求

CreateEncryptTaskResponse rsp = initMpcClient().createEncryptTask(req);

//打印返回消息

System.out.println("CreateEncryptTaskResponse=" + JsonUtils.toJSON(rsp));

完整代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.CreateEncryptReq;

import com.huaweicloud.sdk.mpc.v1.model.CreateEncryptTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.CreateEncryptTaskResponse;

import com.huaweicloud.sdk.mpc.v1.model.Encryption;

import com.huaweicloud.sdk.mpc.v1.model.HlsEncrypt;

import com.huaweicloud.sdk.mpc.v1.model.ObsObjInfo;

import com.obs.services.internal.ServiceException;

public class TestEncrypt { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

}

(23)

/**

* 创建加密任务 * @param args */

public static void main(String[] args) { //设置输入视频地址和输出路径

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("input/hls/index.m3u8");

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建请求

CreateEncryptTaskRequest req = new CreateEncryptTaskRequest()

.withBody(new CreateEncryptReq().withInput(input).withOutput(output) .withEncryption(new Encryption().withHlsEncrypt(new HlsEncrypt() // 设置加密算法

.withAlgorithm("AES-128-CBC") // 密钥获取服务的地址

.withUrl("www.xxxxx.com") // 设置初始向量

.withIv("xxxxxxxxxxxxxxxxxxx") // 设置初始向量

.withKey("xxxxxxxxxxxxxxxxxxxxxx"))));

//发送加密请求 try {

CreateEncryptTaskResponse rsp = initMpcClient().createEncryptTask(req);

System.out.println("CreateEncryptTaskResponse=" + JsonUtils.toJSON(rsp));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.4.2 取消独立加密任务

说明

● 取消任务需要用户提供所要取消任务的taskId。

● 待取消的taskId只能是正在任务队列中排队的任务。已开始或已完成的独立加密任 务不能删除。

核心代码

// 向MPC发送取消独立加密任务的请求

DeleteEncryptTaskRequest req = new DeleteEncryptTaskRequest().withTaskId("3223179");

DeleteEncryptTaskResponse rsp = initMpcClient().deleteEncryptTask(req);

// 打印返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

完整代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.DeleteEncryptTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.DeleteEncryptTaskResponse;

import com.obs.services.internal.ServiceException;

public class TestDeleteEncrypt { /**

* 初始化 MpcClient

(24)

* @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 取消排队中的加密任务 * @param args */

public static void main(String[] args) {

DeleteEncryptTaskRequest req = new DeleteEncryptTaskRequest().withTaskId("3223179");

try {

DeleteEncryptTaskResponse rsp = initMpcClient().deleteEncryptTask(req);

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

System.out.println(rsp.toString());

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.4.3 查询独立加密任务

说明

● 查询独立加密任务,支持根据任务ID查询、任务状态、时间段、分页查询和复合 查询。

● 在查询到的结果集中,如果不提供页码数page和显示条数size并且数据大于10条 时,会默认显示10条数据并进行分页处理。

根据任务 ID 查询

//根据任务ID查询,最多支持10个任务ID ListEncryptTaskRequest req = new

ListEncryptTaskRequest().withTaskId(Collections.singletonList("3223179"));

// 向MPC发送查询独立加密任务的请求

ListEncryptTaskResponse rsp = initMpcClient().listEncryptTask(req);

// 打印返回消息

System.out.println(rsp.toString());

分页查询

// 分页查询

ListEncryptTaskRequest req = new ListEncryptTaskRequest().withPage(1).withSize(4);

// 向MPC发送查询独立加密任务的请求

ListEncryptTaskResponse rsp = initMpcClient().listEncryptTask(req);

(25)

// 打印返回消息

System.out.println(rsp.toString());

根据时间段查询

// 根据时间段查询

ListEncryptTaskRequest req = new

ListEncryptTaskRequest().withStartTime("20201220131400").withEndTime("20201221131400");

// 向MPC发送查询独立加密任务的请求

ListEncryptTaskResponse rsp = initMpcClient().listEncryptTask(req);

// 打印返回消息

System.out.println(rsp.toString());

根据任务状态查询

// 根据任务的状态查询

ListEncryptTaskRequest req = new

ListEncryptTaskRequest().withStatus(ListEncryptTaskRequest.StatusEnum.FAILED);

// 向MPC发送查询独立加密任务的请求

ListEncryptTaskResponse rsp = initMpcClient().listEncryptTask(req);

// 打印返回消息

System.out.println(rsp.toString());

复合查询

// 复合查询

ListEncryptTaskRequest req = new ListEncryptTaskRequest().withPage(1).withSize(4) .withStartTime("20201220131400").withEndTime("20201221131400") .withStatus(ListEncryptTaskRequest.StatusEnum.FAILED);

// 向MPC发送查询独立加密任务的请求

ListEncryptTaskResponse rsp = initMpcClient().listEncryptTask(req);

// 打印返回消息

System.out.println(rsp.toString());

完整代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.ListEncryptTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.ListEncryptTaskResponse;

import com.obs.services.internal.ServiceException;

public class TestListEncrypt { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth)

(26)

.withEndpoint(endpoint) .build();

} /**

* 查询加密任务 * @param args */

public static void main(String[] args) {

ListEncryptTaskRequest req = new ListEncryptTaskRequest().withPage(1).withSize(4) .withStartTime("20201220131400").withEndTime("20201221131400") .withStatus(ListEncryptTaskRequest.StatusEnum.FAILED);

try {

ListEncryptTaskResponse rsp = initMpcClient().listEncryptTask(req);

System.out.println(rsp.toString());

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.5 动图管理

2.5.1 新增动图任务

您可以通过创建MpcClient实例并设置相关参数新建动图任务,动图任务用于将视频转 换为动态图。

前提条件

● 已购买对象存储服务,并参考上传媒体文件在媒体处理服务同区域(如华北-北京 四)上传媒体处理的源视频。

● 已参考获取云资源授权,完成媒体处理服务授权。

核心代码

1. 创建动图任务。

动图任务需要设置输入视频文件、输出动图路径、动图帧率、动图宽高等参数。

//设置输入视频地址和输出路径

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("ok.mp4");

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建动图请求

CreateAnimatedGraphicsTaskRequest req = new CreateAnimatedGraphicsTaskRequest() .withBody(new CreateAnimatedGraphicsTaskReq().withInput(input).withOutput(output) .withOutputParam(new AnimatedGraphicsOutputParam()

//设置动图格式

.withFormat(AnimatedGraphicsOutputParam.FormatEnum.GIF) //设置动图帧率

.withFrameRate(15) //设置起始时间,单位毫秒 .withStart(0)

//设置结束时间,单位毫秒,最大时间间隔60s .withEnd(3_000)));

// 发起请求

CreateAnimatedGraphicsTaskResponse rsp = initMpcClient().createAnimatedGraphicsTask(req);

// 打印结果

System.out.println("CreateAnimatedGraphicsTaskResponse=" + JsonUtils.toJSON(rsp));

(27)

完整代码

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.AnimatedGraphicsOutputParam;

import com.huaweicloud.sdk.mpc.v1.model.CreateAnimatedGraphicsTaskReq;

import com.huaweicloud.sdk.mpc.v1.model.CreateAnimatedGraphicsTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.CreateAnimatedGraphicsTaskResponse;

import com.huaweicloud.sdk.mpc.v1.model.ObsObjInfo;

import com.obs.services.internal.ServiceException;

public class TestAnimation { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 创建动图任务 * @param args */

public static void main(String[] args) { //设置输入视频地址和输出路径

ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("ok.mp4");

ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn- east-2").withObject("output");

//创建动图请求

CreateAnimatedGraphicsTaskRequest req = new CreateAnimatedGraphicsTaskRequest() .withBody(new CreateAnimatedGraphicsTaskReq().withInput(input).withOutput(output) .withOutputParam(new AnimatedGraphicsOutputParam()

//设置动图格式

.withFormat(AnimatedGraphicsOutputParam.FormatEnum.GIF) //设置动图帧率

.withFrameRate(15) //设置起始时间,单位毫秒 .withStart(0)

//设置结束时间,单位毫秒,最大时间间隔60s .withEnd(3_000)));

try {

CreateAnimatedGraphicsTaskResponse rsp = initMpcClient().createAnimatedGraphicsTask(req);

System.out.println("CreateAnimatedGraphicsTaskResponse=" + JsonUtils.toJSON(rsp));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

(28)

} } }

2.5.2 查询动图任务

说明

● 查询动图任务,支持根据任务ID查询、任务状态、时间段、分页查询和复合查 询。

● 在查询到的结果集中,如果不提供页码数page和显示条数size并且数据大于10条 时,会默认显示10条数据并进行分页处理。

根据任务 ID 查询

//根据任务ID查询,最多支持10个任务ID ListAnimatedGraphicsTaskRequest req = new

ListAnimatedGraphicsTaskRequest().withTaskId(Collections.singletonList("3198527"));

// 发送查询动图任务请求给媒体处理服务

ListAnimatedGraphicsTaskResponse rsp = initMpcClient().listAnimatedGraphicsTask(req);

// 打印返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

分页查询

// 分页查询

ListAnimatedGraphicsTaskRequest req = new ListAnimatedGraphicsTaskRequest().withPage(1).withSize(10);

// 发送查询动图任务请求给媒体处理服务

ListAnimatedGraphicsTaskResponse rsp = initMpcClient().listAnimatedGraphicsTask(req);

// 打印返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

根据时间段查询

// 根据时间段查询

ListAnimatedGraphicsTaskRequest req = new

ListAnimatedGraphicsTaskRequest().withStartTime("20201220131400").withEndTime("20201221131400");

// 发送查询动图任务请求给媒体处理服务

ListAnimatedGraphicsTaskResponse rsp = initMpcClient().listAnimatedGraphicsTask(req);

// 打印返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

根据任务状态查询

// 根据任务的状态查询

ListAnimatedGraphicsTaskRequest req = new

ListAnimatedGraphicsTaskRequest().withStatus(ListAnimatedGraphicsTaskRequest.StatusEnum.FAILED);

// 发送查询动图任务请求给媒体处理服务

ListAnimatedGraphicsTaskResponse rsp = initMpcClient().listAnimatedGraphicsTask(req);

// 打印返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

复合查询

// 复合查询

ListAnimatedGraphicsTaskRequest req = new ListAnimatedGraphicsTaskRequest().withPage(0).withSize(10) .withStartTime("20201220131400").withEndTime("20201221131400")

.withStatus(ListAnimatedGraphicsTaskRequest.StatusEnum.FAILED);

// 发送查询动图任务请求给媒体处理服务

ListAnimatedGraphicsTaskResponse rsp = initMpcClient().listAnimatedGraphicsTask(req);

// 打印返回消息

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

(29)

完整代码

package com.huawei.mpc;

import com.huaweicloud.sdk.core.auth.BasicCredentials;

import com.huaweicloud.sdk.core.exception.ClientRequestException;

import com.huaweicloud.sdk.core.exception.ConnectionException;

import com.huaweicloud.sdk.core.exception.RequestTimeoutException;

import com.huaweicloud.sdk.core.http.HttpConfig;

import com.huaweicloud.sdk.core.utils.JsonUtils;

import com.huaweicloud.sdk.mpc.v1.MpcClient;

import com.huaweicloud.sdk.mpc.v1.model.ListAnimatedGraphicsTaskRequest;

import com.huaweicloud.sdk.mpc.v1.model.ListAnimatedGraphicsTaskResponse;

import com.obs.services.internal.ServiceException;

import java.util.Collections;

public class TestListAnimation { /**

* 初始化 MpcClient * @return */

public static MpcClient initMpcClient() { HttpConfig httpConfig =

HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);

//http代理设置,请根据实际情况设置

//httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").

// withProxyPassword("xxxxxx");

//根据实际填写ak,sk,华为云控制台账号名下“我的凭证”>访问密钥上创建和查看您的AK/SK String ak = "xxxxxx";

String sk = "xxxxxx";

//根据实际填写项目ID,华为云控制台账号名下“我的凭证”>API凭证下查看您的项目ID String projectId = "xxxxxx";

//根据实际填写所需endpoint,这里以华东2为例

String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";

BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);

return MpcClient.newBuilder() .withHttpConfig(httpConfig) .withCredential(auth) .withEndpoint(endpoint) .build();

} /**

* 查询动图任务 * @param args */

public static void main(String[] args) {

//按TaskId查询任务,TaskId是动图图请求响应中返回的任务ID ListAnimatedGraphicsTaskRequest req = new

ListAnimatedGraphicsTaskRequest().withTaskId(Collections.singletonList("3198527"));

try {

ListAnimatedGraphicsTaskResponse rsp = initMpcClient().listAnimatedGraphicsTask(req);

System.out.println("rsp=" + JsonUtils.toJSON(rsp));

} catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) { System.out.println(e);

} } }

2.5.3 取消动图任务

说明

● 取消任务需要用户提供所要取消任务的taskId。

● 待取消的taskId只能是正在任务队列中排队的任务。已开始或已完成的动图任务不 能删除。

參考文獻

相關文件

volume suppressed mass: (TeV) 2 /M P ∼ 10 −4 eV → mm range can be experimentally tested for any number of extra dimensions - Light U(1) gauge bosons: no derivative couplings. =&gt;

Courtesy: Ned Wright’s Cosmology Page Burles, Nolette &amp; Turner, 1999?. Total Mass Density

• Formation of massive primordial stars as origin of objects in the early universe. • Supernova explosions might be visible to the most

To complete the “plumbing” of associating our vertex data with variables in our shader programs, you need to tell WebGL where in our buffer object to find the vertex data, and

A=fscanf(fid , format, size) reads data from the file specified by file identifier fid , converts it according to the specified format string, and returns it in matrix A..

(Another example of close harmony is the four-bar unaccompanied vocal introduction to “Paperback Writer”, a somewhat later Beatles song.) Overall, Lennon’s and McCartney’s

The well-known halting problem (a decision problem), which is to determine whether or not an algorithm will terminate with a given input, is NP-hard, but

(b) Write a program (Turing machine, Lisp, C, or other programs) to simulate this expression, the input of the program is these six Boolean variables, the output of the program