我們宣布
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立和管理轉碼工作 MediaConvert
這個 Node.js 程式碼範例會說明:
如何指定要搭配使用的區域特定端點。 MediaConvert
如何在 MediaConvert.
如何取消轉碼任務。
如何擷取已完成轉碼任務的 JSON。
如何擷取高達 20 個最近建立任務的 JSON 陣列。
使用案例
在此範例中,您可以使用 Node.js 模組來呼叫 MediaConvert 以建立和管理轉碼工作。程式碼會使用 SDK JavaScript 來執行這項作業,方法是使用用 MediaConvert 戶端類別的下列方法:
先決條件任務
若要設定和執行此範例,請先完成這些任務:
安裝 Node.js。如需詳細資訊,請參閱 Node.js
網站。 透過使用者登入資料建立共用組態檔。如需提供共用登入資料檔案的詳細資訊,請參閱 從共用登入資料檔案中在 Node.js 中載入登入資料。
建立和設定 Amazon S3 儲存貯體,為任務輸入檔案和輸出檔案提供儲存。如需詳細資訊,請參閱《AWS Elemental MediaConvert使用指南》中的「為檔案建立儲存」
將輸入影片上傳到您佈建用於輸入儲存的 Amazon S3 儲存貯體。如需支援的輸入視訊轉碼器和容器清單,請參閱AWS Elemental MediaConvert使用指南中的支援的輸入轉碼器和容器。
建立可存 MediaConvert 取輸入檔案和存放輸出檔案的 Amazon S3 儲存貯體的 IAM 角色。如需詳細資訊,請參閱AWS Elemental MediaConvert使用指南中的設定 IAM 許可。
設定軟體開發套件
JavaScript 透過建立全域設定物件,然後為程式碼設定 [區域],以設定 SDK。在此範例中,區域會設為 us-west-2
。由於每個帳戶都 MediaConvert 使用自訂端點,因此您還必須將用戶AWS.MediaConvert
端類別設定為使用區域特定端點。若要這麼做,請在 AWS.config.mediaconvert
上設定 endpoint
參數。
// Load the SDK for JavaScript 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" };
定義簡單的轉碼任務
以檔名 emc_createjob.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。建立 JSON,定義轉碼任務參數。
這些參數相當詳細。您可以使用AWS Elemental MediaConvert主控台
var params = { Queue: "JOB_QUEUE_ARN", UserMetadata: { Customer: "Amazon", }, Role: "IAM_ROLE_ARN", Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "s3://OUTPUT_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: "s3://INPUT_BUCKET_AND_FILE_NAME", }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, };
建立轉碼任務
建立任務參數 JSON 後,透過為叫用 AWS.MediaConvert
服務物件建立 promise 來傳遞參數以呼叫 createJob
方法。接著在 promise 回呼中處理回應。回應 data
中會傳回所建立任務的 ID。
// Create a promise on a MediaConvert object var endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .createJob(params) .promise(); // Handle promise's fulfilled/rejected status endpointPromise.then( function (data) { console.log("Job created! ", data); }, function (err) { console.log("Error", err); } );
若要執行範例,請在命令列中輸入以下內容。
node emc_createjob.js
您可以在這裡
取消轉碼任務
以檔名 emc_canceljob.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。建立包含要取消任務 ID 的 JSON。接著,若要呼叫 cancelJob
方法,請建立叫用 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 MediaConvert to customer endpoint AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { Id: "JOB_ID" /* required */, }; // Create a promise on a MediaConvert object var endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .cancelJob(params) .promise(); // Handle promise's fulfilled/rejected status endpointPromise.then( function (data) { console.log("Job " + params.Id + " is canceled"); }, function (err) { console.log("Error", err); } );
若要執行範例,請在命令列中輸入以下內容。
node ec2_canceljob.js
您可以在這裡
列出最近的轉碼任務
以檔名 emc_listjobs.js
建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。
建立參數 JSON,包括指定以 ASCENDING
或 DESCENDING
順序排序清單的值、要檢查的任務佇列 ARN,以及要包含的任務狀態。接著,若要呼叫 listJobs
方法,請建立叫用 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 customer endpoint AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { MaxResults: 10, Order: "ASCENDING", Queue: "QUEUE_ARN", Status: "SUBMITTED", }; // Create a promise on a MediaConvert object var endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .listJobs(params) .promise(); // Handle promise's fulfilled/rejected status endpointPromise.then( function (data) { console.log("Jobs: ", data); }, function (err) { console.log("Error", err); } );
若要執行範例,請在命令列中輸入以下內容。
node emc_listjobs.js
您可以在這裡