Creación y administración de trabajos de transcodificación en MediaConvert - AWS SDK for JavaScript

Anunciamos la próxima AWS SDK for JavaScript versión end-of-support para la versión 2. Le recomendamos que migre a la AWS SDK for JavaScript versión 3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación y administración de trabajos de transcodificación en MediaConvert

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo especificar el punto de conexión específico de la región para usarlo con MediaConvert.

  • Cómo crear trabajos de transcodificación en MediaConvert.

  • Cómo cancelar un trabajo de transcodificación.

  • Cómo recuperar el JSON de un trabajo de transcodificación finalizado.

  • Cómo recuperar una matriz JSON para un máximo de 20 de los últimos trabajos creados.

El escenario

En este ejemplo, se utiliza un módulo de Node.js para llamar a MediaConvert con el fin de crear y administrar trabajos de transcodificación. El código usa el SDK para JavaScript para realizar esta operación mediante los métodos de la clase de cliente de MediaConvert siguientes:

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar las tareas siguientes:

  • Instale Node.js. Para obtener más información, consulte el sitio web de Node.js.

  • Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo crear un archivo de credenciales compartidas, consulte Carga de credenciales en Node.js desde el archivo de credenciales compartidas.

  • Crear y configurar buckets de Amazon S3 que proporcionan almacenamiento para archivos de entrada de trabajo y archivos de salida. Para obtener información detallada, consulte Crear almacenamiento para archivos en la Guía del usuario de AWS Elemental MediaConvert.

  • Cargar el vídeo de entrada en el bucket de Amazon S3 que ha aprovisionado para el almacenamiento de entrada. Para obtener una lista de los códecs y contenedores compatibles con la entrada de vídeo, consulte Códecs y contenedores de entrada compatibles en la Guía del usuario de AWS Elemental MediaConvert.

  • Cree un rol de IAM que conceda a MediaConvert acceso a los archivos de entrada y a los buckets de Amazon S3 donde se almacenan los archivos de salida. Para obtener más información, consulte Configuración de los permisos de IAM en la Guía del usuario de AWS Elemental MediaConvert.

Configuración del SDK

Configure el SDK para JavaScript creando un objeto de configuración global y luego configurando la región para su código. En este ejemplo, la región está establecida en us-west-2. Como MediaConvert utiliza puntos de conexión personalizados para cada cuenta, también tiene que configurar la clase de cliente de AWS.MediaConvert para utilizar el punto de conexión específico de su región. Para ello, establezca el parámetro endpoint en 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" };

Definición de un trabajo de transcodificación sencillo

Cree un módulo de Node.js con el nombre de archivo emc_createjob.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Cree el JSON que define los parámetros del trabajo de transcodificación.

Estos parámetros son bastante detallados. Puede utilizar la consola de AWS Elemental MediaConvert para generar los parámetros JSON del trabajo seleccionando la configuración del trabajo en la consola y, a continuación, seleccionando Mostrar JSON de trabajo en la parte inferior de la sección Trabajo. En este ejemplo, se muestra el JSON de un trabajo sencillo.

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

Creación de un trabajo de transcodificación

Después de crear el JSON de los parámetros del trabajo, llame al método createJob creando una promesa que invoque un objeto de servicio AWS.MediaConvert mediante la transferencia de los parámetros. Luego gestione la respuesta en la devolución de llamada de la promesa. El ID del trabajo creado se devuelve en la respuesta data.

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

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node emc_createjob.js

Este código de muestra se puede encontrar aquí en GitHub.

Cancelación de un trabajo de transcodificación

Cree un módulo de Node.js con el nombre de archivo emc_canceljob.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Cree el JSON que incluye el ID del trabajo que desea cancelar. Luego llame al método cancelJob creando una promesa para invocar un objeto de servicio AWS.MediaConvert mediante los parámetros. Gestione la respuesta en la devolución de llamada de la promesa.

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

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node ec2_canceljob.js

Este código de muestra se puede encontrar aquí en GitHub.

Listado de los trabajos de transcodificación recientes

Cree un módulo de Node.js con el nombre de archivo emc_listjobs.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente.

Cree el JSON de los parámetros, incluidos los valores que especificarán si se debe ordenar la lista en orden ASCENDING o DESCENDING, el ARN de la cola de trabajos que se va comprobar y el estado de los trabajos que se deben incluir. Luego llame al método listJobs creando una promesa para invocar un objeto de servicio AWS.MediaConvert mediante los parámetros. Gestione la respuesta en la devolución de llamada de la promesa.

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

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node emc_listjobs.js

Este código de muestra se puede encontrar aquí en GitHub.