Transcodierungsaufträge erstellen und verwalten in MediaConvert - AWS SDK for JavaScript

Das AWS SDK for JavaScript V3-API-Referenzhandbuch beschreibt im Detail alle API-Operationen für die AWS SDK for JavaScript Version 3 (V3).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Transcodierungsaufträge erstellen und verwalten in MediaConvert

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So geben Sie den regionsspezifischen Endpunkt an, mit dem verwendet werden soll. MediaConvert

  • So erstellen Sie Transcodierungsaufträge in. MediaConvert

  • So stornieren Sie einen Trancodierungsauftrag.

  • So rufen Sie die JSON für einen abgeschlossenen Transcodierungsauftrag ab.

  • So rufen Sie ein JSON-Array für bis zu 20 der zuletzt erstellten Aufträge ab.

Das Szenario

In diesem Beispiel verwenden Sie ein Modul Node.js zum Aufrufen, um Transcodierungsaufträge MediaConvert zu erstellen und zu verwalten. Der Code verwendet JavaScript dazu das SDK, indem er die folgenden Methoden der MediaConvert Client-Klasse verwendet:

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels schließen Sie zunächst diese Aufgaben ab:

  • Richten Sie die Projektumgebung ein, um diese TypeScript Node-Beispiele auszuführen, und installieren Sie die erforderlichen Module AWS SDK for JavaScript und Module von Drittanbietern. Folgen Sie den Anweisungen auf GitHub.

  • Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere Informationen zur Bereitstellung einer Datei mit gemeinsam genutzten Anmeldeinformationen finden Sie unter Dateien mit gemeinsam genutzten Konfigurationen und Anmeldeinformationen im Referenzhandbuch für AWS SDKs und Tools.

  • Erstellen und konfigurieren Sie Amazon S3 S3-Buckets, die Speicherplatz für Auftragseingabedateien und Ausgabedateien bereitstellen. Einzelheiten finden Sie unter Speicher für Dateien erstellen im AWS Elemental MediaConvertBenutzerhandbuch.

  • Laden Sie das Eingabevideo in den Amazon S3 S3-Bucket hoch, den Sie für den Eingabespeicher bereitgestellt haben. Eine Liste der unterstützten Eingabe-Videocodecs und Container finden Sie im Benutzerhandbuch unter Unterstützte Eingabecodecs und Container. AWS Elemental MediaConvert

  • Erstellen Sie eine IAM-Rolle, die MediaConvert Zugriff auf Ihre Eingabedateien und die Amazon S3 S3-Buckets gewährt, in denen Ihre Ausgabedateien gespeichert sind. Einzelheiten finden Sie unter Einrichten von IAM-Berechtigungen im AWS Elemental MediaConvert Benutzerhandbuch.

Wichtig

In diesem Beispiel wird ECMAScript6 (ES6) verwendet. Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen und Installieren der neuesten Version von Node.js finden Sie unter Node.js downloads. .

Wenn Sie jedoch die CommonJS-Syntax bevorzugen, finden Sie weitere Informationen unter. JavaScript ES6/CommonJS-Syntax

Konfigurieren des SDKs

Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich des Herunterladens der erforderlichen Clients und Pakete. Da für jedes Konto benutzerdefinierte Endpunkte MediaConvert verwendet werden, müssen Sie auch die MediaConvert Client-Klasse so konfigurieren, dass sie Ihren regionsspezifischen Endpunkt verwendet. Setzen Sie zu diesem Zweck den endpoint-Parameter auf mediaconvert(endpoint).

// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js";

Definition eines einfachen Transcodierungsauftrags

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamenemcClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das MediaConvert Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region. Ersetzen Sie ENDPOINT durch Ihren MediaConvert Kontoendpunkt. Dies können Sie auf der Kontoseite in der MediaConvert Konsole tun.

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 };

Diesen Beispielcode finden Sie hier unter GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen emc_createjob.js. Stellen Sie sicher, dass Sie das SDK wie zuvor gezeigt konfigurieren, einschließlich der Installation der erforderlichen Clients und Pakete. Erstellen Sie die JSON für die Definition der Transcodierungsauftragsparameter.

Diese Parameter sind sehr detailliert. Sie können die AWS Elemental MediaConvertKonsole verwenden, um die JSON-Jobparameter zu generieren, indem Sie Ihre Job-Einstellungen in der Konsole auswählen und dann am Ende des Job-Abschnitts die Option Job-JSON anzeigen wählen. Dieses Beispiel enthält die JSON für einen einfachen Auftrag.

Anmerkung

Ersetzen Sie JOB_QUEUE_ARN durch die MediaConvert Job-Warteschlange, IAM_ROLE_ARN durch den Amazon-Ressourcennamen (ARN) der IAM-Rolle, OUTPUT_BUCKET_NAME durch den Ziel-Bucket-Namen, zum Beispiel "s3://OUTPUT_BUCKET_NAME/ „, und INPUT_BUCKET_AND_FILENAME durch den Eingabe-Bucket und den Dateinamen, zum Beispiel" 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", }, }, };

Einen Transcodierungsauftrag erstellen

Rufen Sie nach dem Erstellen der JSON-Jobparameter die asynchrone run Methode auf, um ein MediaConvert Client-Dienstobjekt aufzurufen, und übergeben Sie dabei die Parameter. Die ID des erstellten Auftrags wird in den data der Antwort zurückgegeben.

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();

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node emc_createjob.js

Den vollständigen Beispielcode finden Sie hier unter GitHub.

Abbrechen eines Transcodierungsauftrags

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem Dateinamen. emcClient.js Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das MediaConvert Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region. Ersetzen Sie ENDPOINT durch Ihren MediaConvert Kontoendpunkt. Dies können Sie auf der Kontoseite in der MediaConvert Konsole tun.

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 };

Diesen Beispielcode finden Sie hier unter GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen emc_canceljob.js. Stellen Sie sicher, dass Sie das SDK wie zuvor gezeigt konfigurieren, einschließlich des Herunterladens der erforderlichen Clients und Pakete. Erstellen Sie die JSON, die die ID des zu stornierenden Auftrags enthält. Rufen Sie dann die CancelJobCommand Methode auf, indem Sie ein Versprechen zum Aufrufen eines MediaConvert Client-Dienstobjekts erstellen und die Parameter übergeben. Verarbeiten Sie die Antwort im Promise-Rückruf.

Anmerkung

Ersetzen Sie JOB_ID durch die ID des Jobs, der abgebrochen werden soll.

// 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();

Um das Beispiel auszuführen, geben Sie in der Befehlszeile Folgendes ein.

node ec2_canceljob.js

Dieser Beispielcode finden Sie hier unter GitHub.

Liste der letzten Transcodierungsaufträge

Erstellen Sie ein libs Verzeichnis und ein Modul Node.js mit dem DateinamenemcClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das MediaConvert Client-Objekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region. Ersetzen Sie ENDPOINT durch Ihren MediaConvert Kontoendpunkt. Dies können Sie auf der Kontoseite in der MediaConvert Konsole tun.

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 };

Diesen Beispielcode finden Sie hier unter GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen emc_listjobs.js. Stellen Sie sicher, dass Sie das SDK wie zuvor gezeigt konfigurieren, einschließlich der Installation der erforderlichen Clients und Pakete.

Erstellen Sie die JSON-Parameter, einschließlich Werten, um anzugebenASCENDING, ob DESCENDING die Liste nach dem Amazon-Ressourcennamen (ARN) der zu prüfenden Job-Warteschlange und dem Status der einzubeziehenden Jobs sortiert werden soll. Rufen Sie dann die ListJobsCommand Methode auf, indem Sie eine Zusage für den Aufruf eines MediaConvert Client-Serviceobjekts erstellen und die Parameter übergeben.

Anmerkung

Ersetzen Sie QUEUE_ARN durch den Amazon-Ressourcennamen (ARN) der zu prüfenden Job-Warteschlange und STATUS durch den Status der Warteschlange.

// 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();

Um das Beispiel auszuführen, geben Sie an der Befehlszeile Folgendes ein.

node emc_listjobs.js

Dieser Beispielcode finden Sie hier unter GitHub.