AWS SDK for JavaScript V3 API 参考指南详细描述了 AWS SDK for JavaScript 版本 3 (V3) 的所有API操作。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中创建和管理转码作业 MediaConvert
此 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 };
可以在此处找到此
创建文件名为 emc_createjob.js
的 Node.js 模块。请务必按照前面SDK所示进行配置,包括安装所需的客户端和软件包。创建用于JSON定义转码作业参数的。
这些参数有非常详细的说明。您可以使用AWS Elemental MediaConvert
控制台
注意
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 };
可以在此处找到此
创建文件名为 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
可以在此处找到此
列出最近的转码作业
创建一个 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 };
可以在此处找到此
创建文件名为 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
可以在此处找到此