Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3) 的所有 API 操作。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中创建和管理转码作业 MediaConvert
此 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/CommonJS 语法
配置开发工具包
如前所示配置 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控制台
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