• 沒有找到結果。

}

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);

} } }

相關文件