帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub
这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (V3)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 MediaConvert 中创建和管理转码作业
此 Node.js 代码示例演示:
如何指定特定于区域的终端节点以用于 MediaConvert。
如何在 MediaConvert 中创建转码作业。
如何取消转码作业。
如何检索已完成转码作业的 JSON。
如何检索最多 20 个最新创建的作业的 JSON 数组。
场景
在此示例中,您使用 Node.js 模块调用。 MediaConvert 创建和管理转码作业。该代码使用 SDK JavaScript 要做到这一点,请使用 MediaConvert 客户端类:
先决条件任
要设置和运行此示例,请先完成以下任务:
-
设置项目环境以运行这些节点 TypeScript 示例,然后安装所需的AWS 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领域
使用您的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_createjob.js
的 Node.js 模块。请确保按前面所示配置开发工具包,包括安装所需的客户端和软件包。创建定义转码任务参数的 JSON。
这些参数有非常详细的说明。您可以使用AWS Elemental MediaConvert 控制台
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
方法来调用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领域
使用您的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_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领域
使用您的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_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 上的