在 MediaConvert 中使用作业模板 - AWS SDK for JavaScript

帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 MediaConvert 中使用作业模板

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何创建 AWS Elemental MediaConvert 作业模板。

  • 如何使用作业模板来创建转码作业。

  • 如何列出您的所有作业模板。

  • 如何删除作业模板。

场景

在中创建转码作业所需的 JSON MediaConvert 详细说明,包含大量设置。您可以将已知工作正常的设置保存在作业模板中并用于创建以后的作业,从而节省大量时间。在此示例中,您使用 Node.js 模块调用。 MediaConvert 以创建、使用和管理作业模板。该代码使用 SDK JavaScript 要通过 MediaConvert 客户端类的以下方法来完成此操作:

先决条件任

要设置和运行此示例,请先完成以下任务:

  • 设置项目环境以运行这些节点 TypeScript 示例,然后安装所需的AWS SDK for JavaScript和第三方模块。按照上的说明操作GitHub.

  • 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息,请参阅从共享凭证文件加载 Node.js 中的凭证

  • 创建 IAM 角色,以此提供 MediaConvert 访问输入文件以及存储输出文件的 Amazon S3 存储桶。有关详细信息,请参阅。设置 IAM 权限中的AWS Elemental MediaConvert 用户指南.

重要

这些示例使用 ECMascript6 (ES6)。这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅Node.js 下载内容:。.

但是,如果你更喜欢使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法

创建作业模板

创建libs创建文件名为的 Node.js 模块。emcClient.js. 将以下代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace领域使用您的AWS区域。Replace终端节点使用您的 MediaConvert 账户终端节点,您可以在账户页面 MediaConvert 控制台。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the AWS Region. const REGION = "REGION"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

可以找到以下示例代码:GitHub 上的.

创建文件名为 emc_create_jobtemplate.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括安装所需的客户端和软件包。

指定用于创建模板的参数 JSON。您可以使用来自以前成功作业中的大部分 JSON 参数来指定模板中的 Settings 值。此示例使用来自 在 MediaConvert 中创建和管理转码作业 的作业设置。

调用CreateJobTemplateCommand方法是创建一个 promise 来调用MediaConvert传递参数的客户端服务对象。

注意

ReplaceJOB_QUEUE_ARN要检查任务队列的 Amazon 资源名称 (ARN),以及BUCKET_NAME使用目标 Amazon S3 存储桶的名称-例如,“s3: //BUCKET_NAME/”。

// Import required AWS-SDK clients and commands for Node.js import { CreateJobTemplateCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { Category: "YouTube Jobs", Description: "Final production transcode", Name: "DemoTemplate", Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "BUCKET_NAME", // BUCKET_NAME e.g., "s3://BUCKET_NAME/" }, }, Outputs: [ { VideoDescription: { ScalingBehavior: "DEFAULT", TimecodeInsertion: "DISABLED", AntiAlias: "ENABLED", Sharpness: 50, CodecSettings: { Codec: "H_264", H264Settings: { InterlaceMode: "PROGRESSIVE", NumberReferenceFrames: 3, Syntax: "DEFAULT", Softness: 0, GopClosedCadence: 1, GopSize: 90, Slices: 1, GopBReference: "DISABLED", SlowPal: "DISABLED", SpatialAdaptiveQuantization: "ENABLED", TemporalAdaptiveQuantization: "ENABLED", FlickerAdaptiveQuantization: "DISABLED", EntropyEncoding: "CABAC", Bitrate: 5000000, FramerateControl: "SPECIFIED", RateControlMode: "CBR", CodecProfile: "MAIN", Telecine: "NONE", MinIInterval: 0, AdaptiveQuantization: "HIGH", CodecLevel: "AUTO", FieldEncoding: "PAFF", SceneChangeDetect: "ENABLED", QualityTuningLevel: "SINGLE_PASS", FramerateConversionAlgorithm: "DUPLICATE_DROP", UnregisteredSeiTimecode: "DISABLED", GopSizeUnits: "FRAMES", ParControl: "SPECIFIED", NumberBFramesBetweenReferenceFrames: 2, RepeatPps: "DISABLED", FramerateNumerator: 30, FramerateDenominator: 1, ParNumerator: 1, ParDenominator: 1, }, }, AfdSignaling: "NONE", DropFrameTimecode: "ENABLED", RespondToAfd: "NONE", ColorMetadata: "INSERT", }, AudioDescriptions: [ { AudioTypeControl: "FOLLOW_INPUT", CodecSettings: { Codec: "AAC", AacSettings: { AudioDescriptionBroadcasterMix: "NORMAL", RateControlMode: "CBR", CodecProfile: "LC", CodingMode: "CODING_MODE_2_0", RawFormat: "NONE", SampleRate: 48000, Specification: "MPEG4", Bitrate: 64000, }, }, LanguageCodeControl: "FOLLOW_INPUT", AudioSourceName: "Audio Selector 1", }, ], ContainerSettings: { Container: "MP4", Mp4Settings: { CslgAtom: "INCLUDE", FreeSpaceBox: "EXCLUDE", MoovPlacement: "PROGRESSIVE_DOWNLOAD", }, }, NameModifier: "_1", }, ], }, ], AdAvailOffset: 0, Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO", PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, }; const run = async () => { try { // Create a promise on a MediaConvert object const data = await emcClient.send(new CreateJobTemplateCommand(params)); console.log("Success!", data); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node emc_create_jobtemplate.js

可以找到以下示例代码:GitHub 上的.

从作业模板创建转码作业

创建libs创建文件名为的 Node.js 模块。emcClient.js. 将以下代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace领域使用您的AWS区域。Replace终端节点使用您的 MediaConvert 账户终端节点,您可以在账户页面 MediaConvert 控制台。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the AWS Region. const REGION = "REGION"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

可以找到以下示例代码:GitHub 上的.

创建文件名为 emc_template_createjob.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括安装所需的客户端和软件包。

创建作业创建参数 JSON,其中包括要使用的作业模板名称,以及所要使用的特定于您正在创建的作业的 Settings。然后调用CreateJobsCommand方法是创建一个 promise 来调用MediaConvert传递参数的客户端服务对象。

注意

ReplaceJOB_QUEUE_ARN要检查任务队列的 Amazon 资源名称 (ARN),KEY_PAIR_NAME有,TEMPLATE_NAME有,ROLE_ARN使用角色的 Amazon 资源名称 (ARN),以及INPUT _BUCKET_AND_FILENAME使用输入存储桶和文件名-例如,“s3: //BUCKET_NAME/FILE_NAME”。

// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { Queue: "QUEUE_ARN", //QUEUE_ARN JobTemplate: "TEMPLATE_NAME", //TEMPLATE_NAME Role: "ROLE_ARN", //ROLE_ARN Settings: { Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO", PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME" }, ], }, }; const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Success! ", data); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node emc_template_createjob.js

可以找到以下示例代码:GitHub 上的.

列出你的作业模板

创建libs创建文件名为的 Node.js 模块。emcClient.js. 将以下代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace领域使用您的AWS区域。Replace终端节点使用您的 MediaConvert 账户终端节点,您可以在账户页面 MediaConvert 控制台。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the AWS Region. const REGION = "REGION"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

可以找到以下示例代码:GitHub 上的.

创建文件名为 emc_listtemplates.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括安装所需的客户端和软件包。

创建一个对象以传递 MediaConvert 客户端类的 listTemplates 方法的请求参数。包含值以确定要列出哪些模板(NAMECREATION DATESYSTEM)、要列出多少个模板及其排序顺序。调用ListTemplatesCommand创建一个 promise 来调用 MediaConvert 客户端服务对象并传递参数。

// Import required AWS-SDK clients and commands for Node.js import { ListJobTemplatesCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { ListBy: "NAME", MaxResults: 10, Order: "ASCENDING", }; const run = async () => { try { const data = await emcClient.send(new ListJobTemplatesCommand(params)); console.log("Success ", data.JobTemplates); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node emc_listtemplates.js

可以找到以下示例代码:GitHub 上的.

删除作业模板

创建libs创建文件名为的 Node.js 模块。emcClient.js. 将以下代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace领域使用您的AWS区域。Replace终端节点使用您的 MediaConvert 账户终端节点,您可以在账户页面 MediaConvert 控制台。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the AWS Region. const REGION = "REGION"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com" }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

可以找到以下示例代码:GitHub 上的.

创建文件名为 emc_deletetemplate.js 的 Node.js 模块。请确保按前面所示配置开发工具包,包括安装所需的客户端和软件包。

创建一个对象,以将您要删除的作业模板的名称作为 MediaConvert 客户端类的 DeleteJobTemplateCommand 方法的参数传递。调用DeleteJobTemplateCommand方法,请创建一个 promise 来调用 MediaConvert 传递参数的客户端服务对象。

// Import required AWS-SDK clients and commands for Node.js import { DeleteJobTemplateCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { Name: "test" }; //TEMPLATE_NAME const run = async () => { try { const data = await emcClient.send(new DeleteJobTemplateCommand(params)); console.log( "Success, template deleted! Request ID:", data.$metadata.requestId ); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符处输入以下内容。

node emc_deletetemplate.js

可以找到以下示例代码:GitHub 上的这里.