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

LaAWS SDK for JavaScript versión 3 (v3) es una reescritura de la versión 2 con algunas funciones nuevas y excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de la versiónAWS SDK for JavaScript 3.

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 enlace 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 para crear y gestionar trabajos de transcodificación. El código utiliza el SDK para JavaScript para realizar esta operación mediante los métodos de MediaConvert clase de cliente de:

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.

  • Cree y configure buckets de Amazon S3 que proporcionan almacenamiento para archivos de entrada de trabajo y archivos de salida. Para obtener más información, consulte .Crear almacenamiento para archivosen laAWS Elemental MediaConvert Guía del usuario de.

  • 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 vídeo de entrada, consulteCódecs y contenedores de entrada compatiblesen laAWS Elemental MediaConvert Guía del usuario de.

  • Crear un rol de IAM que conceda 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 .configurar los permisos de IAMen laAWS Elemental MediaConvert Guía del usuario de.

Configuración del SDK

Configuración del SDK para JavaScript mediante la creación de un objeto de configuración global y, a continuación, configure la región de su código. En este ejemplo, la región está establecida en us-west-2. Porque MediaConvert utiliza puntos de enlace personalizados para cada cuenta, también se debe configurar laAWS.MediaConvertclase de cliente para utilizar el punto de enlace específico de la 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 el JSON de los parámetros del trabajo eligiendo la configuración del trabajo en la consola y, a continuación, eligiendo Show job JSON (Mostrar JSON del trabajo) en la parte inferior de la sección Job (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.