}
2.2 视频转码
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);
示例代码
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");
String endpoint = "https://mpc.cn-east-2.myhuaweicloud.com";
BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);
return MpcClient.newBuilder()
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())
);
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)
.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");
//发送请求
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);
} } }