La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.
Creación y administración de trabajos de transcodificación en MediaConvert
Este ejemplo de código de Node.js muestra:
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 administrar trabajos de transcodificación. El código usa el SDK de 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:
-
Configure el entorno del proyecto para ejecutar estos ejemplos de Node TypeScript e instale los módulos de AWS SDK for JavaScript y de terceros necesarios. Siga las instrucciones en GitHub
. Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de las herramientas y los SDK de AWS.
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 Configurar los permisos de IAM en la Guía del usuario de AWS Elemental MediaConvert.
importante
Este ejemplo usa ECMAScript6 (ES6). Requiere la versión 13.x o superior de Node.js. Para descargar e instalar la versión más reciente de Node.js, consulte Descargas de Node.js
No obstante, si prefiere utilizar la sintaxis CommonJS, consulte Sintaxis ES6/commonJS de JavaScript.
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 como se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios. 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
nota
Sustituya JOB_QUEUE_ARN por la cola de trabajos de MediaConvert, IAM_ROLE_ARN por el Nombre de recurso de Amazon (ARN) del rol de IAM, OUTPUT_BUCKET_NAME por el nombre del bucket de destino (por ejemplo, “s3://OUTPUT_BUCKET_NAME/”) y INPUT_BUCKET_AND_FILENAME por el bucket de entrada y el nombre de archivo (por ejemplo, “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", }, }, };
Creación de un trabajo de transcodificación
Después de crear el JSON de los parámetros del trabajo, llame al método run asincrónico para que invoque un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros. El ID del trabajo creado se devuelve en la respuesta data.
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();
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node emc_createjob.js
Este código de ejemplo 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 como se ha mostrado anteriormente, incluida la descarga de los clientes y paquetes necesarios. Cree el JSON que incluye el ID del trabajo que desea cancelar. Luego llame al método CancelJobCommand creando una promesa para invocar un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros. Gestione la respuesta en la devolución de llamada de la promesa.
nota
Sustituya JOB_ID por el ID del trabajo que desea cancelar.
// 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();
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node ec2_canceljob.js
Este código de ejemplo 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 como se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
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 Nombre de recurso de Amazon (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 ListJobsCommand creando una promesa para invocar un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros.
nota
Sustituya QUEUE_ARN por el Nombre de recurso de Amazon (ARN) de la cola de trabajos que va a comprobar y STATUS por el estado de la cola.
// 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();
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node emc_listjobs.js
Este código de ejemplo se puede encontrar aquí en GitHub