* 初始化 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实例并设置相关参数新建独立加密任务。
前提条件
● 已购买对象存储服务,并参考上传媒体文件在媒体处理服务同区域(如华北-北京 四)上传媒体处理的源视频。
● 已参考获取云资源授权,完成媒体处理服务授权。
核心代码
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();
}
/**
* 创建加密任务 * @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
* @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);
// 打印返回消息
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)
.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);
} } }