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.
Uso de plantillas de trabajo en MediaConvert
Este ejemplo de código de Node.js muestra:
Cómo crear plantillas de trabajos de AWS Elemental MediaConvert.
Cómo utilizar una plantilla de trabajo para crear un trabajo de transcodificación.
Cómo generar una lista de todas sus plantillas de trabajo.
Cómo eliminar plantillas de trabajos.
El escenario
El JSON necesario para crear un trabajo de transcodificación en MediaConvert es detallado, ya que contiene un gran número de opciones de configuración. Puede simplificar en gran medida la creación del trabajo guardando la configuración de funcionalidad comprobada en una plantilla de trabajo que pueda utilizar para crear trabajos posteriores. En este ejemplo, se utiliza un módulo de Node.js para llamar a MediaConvert para crear, utilizar y administrar plantillas de trabajos. 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.
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
En estos ejemplos se utiliza 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.
Creación de una plantilla de trabajo
Cree un módulo de Node.js con el nombre de archivo emc_create_jobtemplate.js. Asegúrese de configurar el SDK como se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Especifique los parámetros JSON para la creación de plantillas. Puede utilizar la mayoría de los parámetros JSON de un trabajo anterior realizado correctamente para especificar los valores de Settings en la plantilla. En este ejemplo se utiliza la configuración de trabajo de Creación y administración de trabajos de transcodificación en MediaConvert.
Llame al método CreateJobTemplateCommand creando una promesa para invocar un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros.
nota
Sustituya JOB_QUEUE_ARN por el nombre de recurso de Amazon (ARN) de la cola de trabajos que desea comprobar y BUCKET_NAME por el nombre del bucket de Amazon S3 de destino (por ejemplo, “s3://BUCKET_NAME/”).
// Import required AWS-SDK clients and commands for Node.js import { CreateJobTemplateCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { Category: "YouTube Jobs", Description: "Final production transcode", Name: "DemoTemplate", Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "BUCKET_NAME", // 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", }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, }; const run = async () => { try { // Create a promise on a MediaConvert object const data = await emcClient.send(new CreateJobTemplateCommand(params)); console.log("Success!", 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_create_jobtemplate.js
Este código de ejemplo se puede encontrar aquí en GitHub
Creación de un trabajo de transcodificación a partir de una plantilla de trabajo
Cree un módulo de Node.js con el nombre de archivo emc_template_createjob.js. Asegúrese de configurar el SDK como se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree los parámetros JSON de creación del trabajo, como el nombre de la plantilla de trabajo que desea utilizar y el método Settings que se utilizará, que son específicos del trabajo que está creando. Luego llame al método CreateJobsCommand creando una promesa para invocar un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros.
nota
Sustituya JOB_QUEUE_ARN por el Nombre de recurso de Amazon (ARN) de la cola de trabajos que desea comprobar, KEY_PAIR_NAME por, TEMPLATE_NAME por, ROLE_ARN por el Nombre de recurso de Amazon (ARN) del rol y INPUT_BUCKET_AND_FILENAME por el bucket de entrada y el nombre del archivo (por ejemplo, “s3://BUCKET_NAME/FILE_NAME”).
// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { Queue: "QUEUE_ARN", //QUEUE_ARN JobTemplate: "TEMPLATE_NAME", //TEMPLATE_NAME Role: "ROLE_ARN", //ROLE_ARN Settings: { 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" }, ], }, }; const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Success! ", 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_template_createjob.js
Este código de ejemplo se puede encontrar aquí en GitHub
Generación de una lista de sus plantillas de trabajo
Cree un módulo de Node.js con el nombre de archivo emc_listtemplates.js. Asegúrese de configurar el SDK como se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para pasar los parámetros de solicitud vacíos para el método listTemplates de la clase de cliente MediaConvert. Incluya valores para determinar qué plantillas incluirá en la lista (NAME, CREATION DATE, SYSTEM), la cantidad que se incluirán en la lista y su orden de clasificación. Para llamar al método ListTemplatesCommand, cree una promesa para invocar un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros.
// Import required AWS-SDK clients and commands for Node.js import { ListJobTemplatesCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { ListBy: "NAME", MaxResults: 10, Order: "ASCENDING", }; const run = async () => { try { const data = await emcClient.send(new ListJobTemplatesCommand(params)); console.log("Success ", data.JobTemplates); return data; } catch (err) { console.log("Error", err); } }; run();
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node emc_listtemplates.js
Este código de ejemplo se puede encontrar aquí en GitHub
Eliminación de una plantilla de trabajo
Cree un módulo de Node.js con el nombre de archivo emc_deletetemplate.js. Asegúrese de configurar el SDK como se ha mostrado anteriormente, incluida la instalación de los clientes y paquetes necesarios.
Cree un objeto para transferir el nombre de la plantilla de trabajo que desea eliminar como parámetros para el método DeleteJobTemplateCommand de la clase de cliente MediaConvert. Para llamar al método DeleteJobTemplateCommand, cree una promesa para invocar un objeto de servicio de cliente de MediaConvert mediante la transferencia de los parámetros.
// Import required AWS-SDK clients and commands for Node.js import { DeleteJobTemplateCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { Name: "test" }; //TEMPLATE_NAME const run = async () => { try { const data = await emcClient.send(new DeleteJobTemplateCommand(params)); console.log( "Success, template deleted! Request ID:", data.$metadata.requestId, ); return data; } catch (err) { console.log("Error", err); } }; run();
Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.
node emc_deletetemplate.js
Este código de ejemplo se puede encontrar aquí en GitHub