在中创建和管理转码作业 MediaConvert - AWS SDK for JavaScript

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

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

在中创建和管理转码作业 MediaConvert

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何指定要与之配合使用的特定区域终端节点。 MediaConvert

  • 如何在中创建转码作业。 MediaConvert

  • 如何取消转码作业。

  • 如何检索已完成JSON的转码任务。

  • 如何为最多 20 个最近创建的作业检索JSON数组。

情景

在此示例中,您使用 Node.js 模块进行调用, MediaConvert 以创建和管理转码作业。代码使用 f SDK or JavaScript 通过使用 MediaConvert 客户端类的以下方法来实现此目的:

完成先决条件任务

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

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

  • 使用用户凭证创建共享配置文件。有关提供共享凭据文件的更多信息,请参阅工具参考指南中的共享配置AWS SDKs和凭据文件

  • 创建和配置 Amazon S3 桶,提供作业输入文件和输出文件的存储。有关详细信息,请参阅《AWS Elemental MediaConvert 用户指南》中的创建用于文件的存储

  • 将输入视频上传到您为输入存储预置的 Amazon S3 存储桶。有关支持的输入视频编解码器和容器的列表,请参阅《AWS Elemental MediaConvert 用户指南》中的支持的输入编解码器和容器

  • 创建一个IAM角色来 MediaConvert 访问您的输入文件和存储输出文件的 Amazon S3 存储桶。有关详细信息,请参阅《AWS Elemental MediaConvert 用户指南》中的设置IAM权限

重要

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

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

正在配置 SDK

SDK如前所示进行配置,包括下载所需的客户端和软件包。由于每个账户都 MediaConvert 使用自定义终端节点,因此您还必须将MediaConvert客户端类配置为使用特定于区域的终端节点。为此,您需要在 mediaconvert(endpoint) 上设置 endpoint 参数。

// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js";

定义简单的转码作业

创建一个 libs 目录,然后使用文件名 emcClient.js 创建一个 Node.js 模块。将下面的代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace(替换) REGION 与您所在 AWS 的地区。Replace(替换) ENDPOINT 使用您的 MediaConvert 账户终端节点,您可以在 MediaConvert 控制台的账户页面上进行操作。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // 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_createjob.js 的 Node.js 模块。请务必按照前面SDK所示进行配置,包括安装所需的客户端和软件包。创建用于JSON定义转码作业参数的。

这些参数有非常详细的说明。您可以使用AWS Elemental MediaConvert 控制台生成JSON作业参数,方法是在控制台中选择您的作业设置,然后在 “作业” 部分JSON底部选择 “显示作业”。此示例显示JSON了简单作业的。

注意

Replace(替换) JOB_QUEUE_ARN 有了 MediaConvert 任务队列,IAM_ROLE_ARN 使用IAM角色的 Amazon 资源名称 (ARN),OUTPUT_BUCKET_NAME 使用目标存储桶名称,例如 “s3://OUTPUT_ BUCKET _NAME/”,以及 INPUT_BUCKET_AND_FILENAME 使用输入存储桶和文件名——例如,“s3:/BUCKET/INPUT_ FILE _NAME”。

const params = { Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN UserMetadata: { Customer: "Amazon", }, Role: "IAM_ROLE_ARN", //IAM_ROLE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "OUTPUT_BUCKET_NAME", //OUTPUT_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", FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME" }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, };

创建转码作业

创建作业参数后JSON,调用异步run方法调用MediaConvert客户端服务对象,并传递参数。所创建作业的 ID 在响应 data 中返回。

const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Job created!", data); return data; } catch (err) { console.log("Error", err); } }; run();

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

node emc_createjob.js

完整的示例代码可以在此处找到 GitHub

取消转码作业

创建一个 libs 目录,然后使用文件名 emcClient.js 创建一个 Node.js 模块。将下面的代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace(替换) REGION 与您所在 AWS 的地区。Replace(替换) ENDPOINT 使用您的 MediaConvert 账户终端节点,您可以在 MediaConvert 控制台的账户页面上进行操作。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // 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_canceljob.js 的 Node.js 模块。请务必按照前面SDK所示进行配置,包括下载所需的客户端和软件包。创建JSON包含要取消的任务 ID 的。然后,通过创建一个 promise 来调用 MediaConvert 客户端服务对象并传递参数,以此调用 CancelJobCommand 方法。承诺处理响应中的回调。

注意

Replace(替换) JOB_ID 并附上要取消的任务的 ID。

// Import required AWS-SDK clients and commands for Node.js import { CancelJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { Id: "JOB_ID" }; //JOB_ID const run = async () => { try { const data = await emcClient.send(new CancelJobCommand(params)); console.log(`Job ${params.Id} is canceled`); return data; } catch (err) { console.log("Error", err); } }; run();

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

node ec2_canceljob.js

可以在此处找到此示例代码 GitHub。

列出最近的转码作业

创建一个 libs 目录,然后使用文件名 emcClient.js 创建一个 Node.js 模块。将下面的代码复制并粘贴到其中,这将创建 MediaConvert 客户端对象。Replace(替换) REGION 与您所在 AWS 的地区。Replace(替换) ENDPOINT 使用您的 MediaConvert 账户终端节点,您可以在 MediaConvert 控制台的账户页面上进行操作。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // 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_listjobs.js 的 Node.js 模块。请务必按照前面SDK所示进行配置,包括安装所需的客户端和软件包。

创建参数JSON,包括用于指定是按要检查的任务队列的 Amazon 资源名称 (ARN) 对列表进行排DESCENDING序的值,以及要包含的任务的状态。ASCENDING然后,通过创建一个 promise 来调用 MediaConvert 客户端服务对象并传递参数,以此调用 ListJobsCommand 方法。

注意

Replace(替换) QUEUE_ARN 带有要检查的任务队列的 Amazon 资源名称 (ARN),以及 STATUS 显示队列的状态。

// Import required AWS-SDK clients and commands for Node.js import { ListJobsCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { MaxResults: 10, Order: "ASCENDING", Queue: "QUEUE_ARN", Status: "SUBMITTED", // e.g., "SUBMITTED" }; const run = async () => { try { const data = await emcClient.send(new ListJobsCommand(params)); console.log("Success. Jobs: ", data.Jobs); } catch (err) { console.log("Error", err); } }; run();

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

node emc_listjobs.js

可以在此处找到此示例代码 GitHub。