我們宣布
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Job 範本 MediaConvert
這個 Node.js 程式碼範例會說明:
如何創建 MediaConvert 工作模板。
如何使用任務範本來建立轉譯任務。
如何列出所有任務範本。
如何刪除任務範本。
使用案例
中建立轉碼工作所需的 JSON 詳細資訊,其中 MediaConvert 包含大量的設定。您可以在您在建立後續任務能用的任務範本中儲存已知良好的設定,來大幅簡化任務的建立作業。在此範例中,您可以使用 Node.js 模組 MediaConvert 來呼叫建立、使用和管理工作範本。程式碼會使用 SDK JavaScript 來執行這項作業,方法是使用用 MediaConvert戶端類別的下列方法:
先決條件任務
若要設定和執行此範例,請先完成這些任務:
安裝 Node.js。如需詳細資訊,請參閱 Node.js
網站。 透過使用者登入資料建立共用組態檔。如需提供共用登入資料檔案的詳細資訊,請參閱 從共用登入資料檔案中在 Node.js 中載入登入資料。
建立可存 MediaConvert 取輸入檔案和存放輸出檔案的 Amazon S3 儲存貯體的 IAM 角色。如需詳細資訊,請參閱AWS Elemental MediaConvert使用指南中的設定 IAM 許可。
建立任務範本
以檔名 emc_create_jobtemplate.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。
為範本建立指定 JSON 參數。您可以使用來自先前成功任務的多數 JSON 參數,來在範本中指定 Settings
值。此範例使用來自 建立和管理轉碼工作 MediaConvert的任務設定。
建立呼叫 AWS.MediaConvert
服務物件的 promise 並傳遞參數,來呼叫 createJobTemplate
方法。接著在 promise 回呼中處理回應。
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Set the custom endpoint for your account
AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" };
var params = {
Category: "YouTube Jobs",
Description: "Final production transcode",
Name: "DemoTemplate",
Queue: "JOB_QUEUE_ARN",
Settings: {
OutputGroups: [
{
Name: "File Group",
OutputGroupSettings: {
Type: "FILE_GROUP_SETTINGS",
FileGroupSettings: {
Destination: "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",
},
],
TimecodeConfig: {
Source: "EMBEDDED",
},
},
};
// Create a promise on a MediaConvert object
var templatePromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" })
.createJobTemplate(params)
.promise();
// Handle promise's fulfilled/rejected status
templatePromise.then(
function (data) {
console.log("Success!", data);
},
function (err) {
console.log("Error", err);
}
);
若要執行範例,請在命令列中輸入以下內容。
node emc_create_jobtemplate.js
您可以在這裡
透過任務範本來建立轉譯任務
以檔名 emc_template_createjob.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。
建立任務建立參數 JSON,其中包含要用的任務範本名稱,以及專屬於您在建立之任務的要使用 Settings
。接著,若要呼叫 createJobs
方法,請建立叫用 AWS.MediaConvert
服務物件的 promise 來傳遞參數。在 promise 回呼中處理回應。
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Set the custom endpoint for your account
AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" };
var params = {
Queue: "QUEUE_ARN",
JobTemplate: "TEMPLATE_NAME",
Role: "ROLE_ARN",
Settings: {
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: "s3://BUCKET_NAME/FILE_NAME",
},
],
},
};
// Create a promise on a MediaConvert object
var templateJobPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" })
.createJob(params)
.promise();
// Handle promise's fulfilled/rejected status
templateJobPromise.then(
function (data) {
console.log("Success! ", data);
},
function (err) {
console.log("Error", err);
}
);
若要執行範例,請在命令列中輸入以下內容。
node emc_template_createjob.js
您可以在這裡
列出任務範本
以檔名 emc_listtemplates.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。
建立物件,傳遞 AWS.MediaConvert
用戶端類別的 listTemplates
方法的空請求參數。包含值來判斷要列出哪些範本 (NAME
, CREATION DATE
, SYSTEM
)、要列出多少以及這些範本的排序。要調用該listTemplates
方法,請創建一個用於調用 MediaConvert 服務對象的承諾,並傳遞參數。接著在 promise 回呼中處理回應。
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Set the customer endpoint
AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" };
var params = {
ListBy: "NAME",
MaxResults: 10,
Order: "ASCENDING",
};
// Create a promise on a MediaConvert object
var listTemplatesPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" })
.listJobTemplates(params)
.promise();
// Handle promise's fulfilled/rejected status
listTemplatesPromise.then(
function (data) {
console.log("Success ", data);
},
function (err) {
console.log("Error", err);
}
);
若要執行範例,請在命令列中輸入以下內容。
node emc_listtemplates.js
您可以在這裡
刪除任務範本
以檔名 emc_deletetemplate.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。
建立物件,為 AWS.MediaConvert
用戶端類別的 deleteJobTemplate
方法傳遞您要刪除做為參數的任務範本名稱。要調用該deleteJobTemplate
方法,請創建一個用於調用 MediaConvert 服務對象的承諾,並傳遞參數。在 promise 回呼中處理回應。
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the Region
AWS.config.update({ region: "us-west-2" });
// Set the customer endpoint
AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" };
var params = {
Name: "TEMPLATE_NAME",
};
// Create a promise on a MediaConvert object
var deleteTemplatePromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" })
.deleteJobTemplate(params)
.promise();
// Handle promise's fulfilled/rejected status
deleteTemplatePromise.then(
function (data) {
console.log("Success ", data);
},
function (err) {
console.log("Error", err);
}
);
若要執行範例,請在命令列中輸入以下內容。
node emc_deletetemplate.js
您可以在這裡