通过阅读本文,您可以了解通过服务端SDK调用OpenAPI发起并查询智能媒体服务转码任务的示例代码。
使用说明
发起转码任务时,需要先根据用户所提供的region(提供服务的区域)、name(转码任务名称)、inputPath(转码任务的输入OSS路径)、outputpath(转码任务的输出OSS路径)和templateId(转码模板ID)参数提交转码任务。转码任务处理成功后,可以根据返回的jobId(任务ID)查询该转码任务信息。
转码任务参数需注意以下几点:
- region目前仅支持服务地域中的区域。
- name可以为空。
- inputPath、outputpath必须和region在同一区域。
- templateId可通过转码模板管理页面获取。
示例代码
您可以通过阿里云OpenAPI开发者门户在线调试。
import Console from '@alicloud/tea-console';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util from '@alicloud/tea-util';
import ICE20201109, * as $ICE20201109 from '@alicloud/ice20201109';
import * as $tea from '@alicloud/tea-typescript';
import Credential, { Config } from '@alicloud/credentials';
/**
* Node.js环境版本为8.x及以上。
* 安装阿里云SDK Credentials工具。 npm install @alicloud/credentials
* 安装IMS SDK npm install --save @alicloud/ice20201109@1.3.11
*
*/
export default class Client {
/** Credentials方式初始化客户端
* @param regionId 提供服务的区域
* @return 发送请求的客户端
*/
static async createClient(regionId: string): Promise<ICE20201109> {
const cred = new Credential();
let config = new $OpenApi.Config({ });
config.credential = cred;
config.endpoint = `ice.${regionId}.aliyuncs.com`;
return new ICE20201109(config);
}
/** 明文方式初始化客户端
* 如需硬编码AccessKey ID和AccessKey Secret,代码如下,但强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
* @param accessKeyId 阿里云AK
* @param accessKeySecret 阿里云SK
* @param regionId 提供服务的区域
* @return 发送请求的客户端
*/
// static async createClient(accessKeyId: string, accessKeySecret: string, regionId: string): Promise<ICE20201109> {
// let config = new $OpenApi.Config({ });
// config.accessKeyId = accessKeyId;
// config.accessKeySecret = accessKeySecret;
// config.regionId = regionId;
// config.endpoint = `ice.${regionId}.aliyuncs.com`;
// return new ICE20201109(config);
// }
// 读取命令行参数
static async main(args: string[]): Promise<void> {
let regionId = args[0];
let name = args[1];
let inputPath = args[2];
let outputPath = args[3];
let templateId = args[4];
// 初始化客户端
let client = await Client.createClient(regionId);
// 构造提交任务请求
let request = new $ICE20201109.SubmitTranscodeJobRequest({
name: name,
// 输入信息
inputGroup: [
new $ICE20201109.SubmitTranscodeJobRequestInputGroup({
type: "OSS",
media: inputPath,
})
],
// 输出信息
outputGroup: [
new $ICE20201109.SubmitTranscodeJobRequestOutputGroup({
output: new $ICE20201109.SubmitTranscodeJobRequestOutputGroupOutput({
type: "OSS",
media: outputPath,
}),
processConfig: new $ICE20201109.SubmitTranscodeJobRequestOutputGroupProcessConfig({
transcode: new $ICE20201109.SubmitTranscodeJobRequestOutputGroupProcessConfigTranscode({
templateId: templateId,
}),
}),
})
],
});
// 发送提交任务请求
let response = await client.submitTranscodeJob(request);
// 打印结果信息
Console.log(Util.toJSONString($tea.toMap(response)));
// 提取任务ID,并构造查询任务请求
let jobId = response.body.transcodeParentJob.parentJobId;
let queryRequest = new $ICE20201109.GetTranscodeJobRequest({
jobId: jobId,
});
// 发送查询任务情况请求
let queryResponse = await client.getTranscodeJob(queryRequest);
// 打印结果信息
Console.log(Util.toJSONString($tea.toMap(queryResponse)));
}
}
Client.main(process.argv.slice(2));