在中创建和管理转码作业 MediaConvert - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

从 2022 年 10 月 1 日起,Amazon SDK for JavaScript(v3) 将终止对 Internet Explorer 11(IE 11)的支持。有关详细信息,请参阅 Amazon SDK for JavaScript(v3) 中宣布终止对 Internet Explorer 11 的支持

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

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

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何指定区域特定的终端节点以用于 MediaConvert.

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

  • 如何取消转码作业。

  • 如何检索已完成转码作业的 JSON。

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

场景

在此示例中,您使用 Node.js 模块调用 MediaConvert 创建和管理转码作业。该代码使用 SDK 用于 JavaScript 通过以下方法来完成此操作 MediaConvert 客户类:

先决条件任务

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

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

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

  • 创建并配置为任务输入文件和输出文件提供存储的 Amazon S3 存储桶。有关详细信息,请参阅。为文件创建存储空间中的AWS Elemental MediaConvert 用户指南.

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

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

重要

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

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

配置开发工具包

如前所示配置 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目录,并创建文件名为的 Node.js 模块emcClient.js. 复制以下代码并粘贴到其中,这创建了 MediaConvert 客户对象。Replace领域使用您的Amazon区域。Replace终端节点使用您的 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 模块。请确保按前面所示配置开发工具包。创建定义转码任务参数的 JSON。

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

注意

ReplaceJOB_QUEUE_ARN用 MediaConvert 作业队列,IAM_ROLE_ARN使用 IAM 角色的 Amazon 资源名称 (ARN),OUTPUT_BUCKET_NAME使用目标存储桶名称-例如 “s3://OUTPUT_BUCKET_NAME/”,以及INPUT_BUCKET_AND_FILENAME使用输入存储桶和文件名-例如,“s3://INPUT_BUCKET/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调用 a 的方法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目录,并创建文件名为的 Node.js 模块emcClient.js. 复制以下代码并粘贴到其中,这创建了 MediaConvert 客户对象。Replace领域使用您的Amazon区域。Replace终端节点使用您的 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 模块。请确保按前面所示配置开发工具包。创建包含要取消的作业的 ID 的 JSON。然后调用CancelJobCommand通过创建一个 promise 来调用一个MediaConvert客户端服务对象,传递参数。承诺处理响应中的回调。

注意

ReplaceJOB_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目录,并创建文件名为的 Node.js 模块emcClient.js. 复制以下代码并粘贴到其中,这创建了 MediaConvert 客户对象。Replace领域使用您的Amazon区域。Replace终端节点使用您的 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 模块。请确保按前面所示配置开发工具包。

创建包括值的参数 JSON,这些值指定是否对列表排序。ASCENDING,或者DESCENDING订单、要检查的任务队列的 Amazon 资源名称 (ARN),以及要包含的任务的状态。然后调用ListJobsCommand通过创建一个 promise 来调用一个MediaConvert客户端服务对象,传递参数。

注意

ReplaceQUEUE_ARN包含任务队列的 Amazon 资源名称 (ARN),状态包含队列的状态。

// 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.