Creazione e gestione di lavori di transcodifica in MediaConvert - AWS SDK for JavaScript

Abbiamo annunciato l'imminente uscita end-of-support per la AWS SDK for JavaScript v2. Ti consigliamo di migrare alla AWS SDK for JavaScript v3. Per date, dettagli aggiuntivi e informazioni su come effettuare la migrazione, consulta l'annuncio collegato.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione e gestione di lavori di transcodifica in MediaConvert

JavaScript code example that applies to Node.js execution

Questo esempio di codice di Node.js illustra:

  • Come specificare l'endpoint specifico della regione con cui utilizzare. MediaConvert

  • Come creare lavori di transcodifica in. MediaConvert

  • Come annullare un processo di transcodifica.

  • Come recuperare il file JSON per un processo di transcodifica completato.

  • Come recuperare un array JSON per un massimo di 20 processi creati più di recente.

Lo scenario

In questo esempio, si utilizza un modulo Node.js per effettuare una chiamata per creare e gestire lavori MediaConvert di transcodifica. A tale scopo, il codice utilizza l' JavaScript SDK utilizzando questi metodi della MediaConvert classe client:

Attività prerequisite

Per configurare ed eseguire questo esempio, è necessario completare queste attività:

  • Installa Node.js. Per ulteriori informazioni, consultare il sito Web di Node.js.

  • Creazione di un file di configurazione condiviso con le credenziali utente. Per ulteriori informazioni sulla fornitura di un file delle credenziali condiviso, consulta Caricamento delle credenziali su Node.js dal file delle credenziali condiviso.

  • Crea e configura bucket Amazon S3 che forniscono storage per i file di input e output dei job. Per i dettagli, consulta Create Storage for Files nella Guida per l'AWS Elemental MediaConvertutente.

  • Carica il video di input nel bucket Amazon S3 che hai fornito per lo storage di input. Per un elenco dei codec e contenitori di input video supportati, consulta Codecs e contenitori di input supportati nella Guida per l'utente. AWS Elemental MediaConvert

  • Crea un ruolo IAM che dia MediaConvert accesso ai tuoi file di input e ai bucket Amazon S3 in cui sono archiviati i file di output. Per i dettagli, consulta Configurare le autorizzazioni IAM nella Guida per l'AWS Elemental MediaConvertutente.

Configurazione dell'SDK

Configura l'SDK per JavaScript creando un oggetto di configurazione globale e quindi impostando la regione per il codice. Nell'esempio, la regione è impostata su us-west-2. Poiché MediaConvert utilizza endpoint personalizzati per ogni account, devi anche configurare la classe AWS.MediaConvert client per utilizzare l'endpoint specifico della regione. A questo proposito, imposta il parametro endpoint su AWS.config.mediaconvert.

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

Definizione di un processo di transcodifica semplice

Crea un modulo Node.js con il nome del file emc_createjob.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Crea il file JSON che definisce i parametri del processo di transcodifica.

Questi parametri sono dettagliati. È possibile utilizzare la AWS Elemental MediaConvertconsole per generare i parametri del lavoro JSON scegliendo le impostazioni del processo nella console e quindi selezionando Mostra lavoro JSON nella parte inferiore della sezione Job. Questo esempio illustra il JSON per un processo semplice.

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

Creazione di un processo di transcodifica

Dopo aver creato il JSON dei parametri del processo, chiama il metodo createJob creando una promessa per chiamare un oggetto di servizio AWS.MediaConvert e trasferendo i parametri. Quindi gestisci la risposta nel callback della promessa. L'ID del processo creato viene restituito nei data della risposta.

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

Digita la seguente riga di comando per eseguire l'esempio.

node emc_createjob.js

Questo codice di esempio è disponibile qui. GitHub

Annullamento di un processo di transcodifica

Crea un modulo Node.js con il nome del file emc_canceljob.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Crea il file JSON che include l'ID del processo da annullare. Poi chiama il metodo cancelJob creando una promessa per chiamare un oggetto di servizio AWS.MediaConvert, trasferendo i parametri. Gestisci la risposta restituita dal callback della promessa.

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

Digita la seguente riga di comando per eseguire l'esempio.

node ec2_canceljob.js

Questo codice di esempio può essere trovato qui su GitHub.

Elenco dei processi di transcodifica recenti

Crea un modulo Node.js con il nome del file emc_listjobs.js. Assicurati di configurare il kit SDK come mostrato in precedenza.

Crea il JSON dei parametri, inclusi i valori per specificare se ordinare l'elenco in ordine ASCENDING o DESCENDING, l'ARN della coda dei processi da controllare e lo stato dei processi da includere. Poi chiama il metodo listJobs creando una promessa per chiamare un oggetto di servizio AWS.MediaConvert, trasferendo i parametri. Gestisci la risposta restituita dal callback della promessa.

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

Digita la seguente riga di comando per eseguire l'esempio.

node emc_listjobs.js

Questo codice di esempio può essere trovato qui su GitHub.