Criação e gerenciamento de trabalhos de transcodificação no MediaConvert - AWS SDK for JavaScript

O Guia de API referência da AWS SDK for JavaScript V3 descreve detalhadamente todas as API operações da AWS SDK for JavaScript versão 3 (V3).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criação e gerenciamento de trabalhos de transcodificação no MediaConvert

JavaScript code example that applies to Node.js execution

Este exemplo de código Node.js mostra:

  • Como especificar o endpoint específico da região com o qual usar. MediaConvert

  • Como criar trabalhos de transcodificação em. MediaConvert

  • Como cancelar uma tarefa de transcodificação.

  • Como recuperar o JSON para um trabalho de transcodificação concluído.

  • Como recuperar uma JSON matriz para até 20 dos trabalhos criados mais recentemente.

O cenário

Neste exemplo, você usa um módulo Node.js para chamar MediaConvert para criar e gerenciar trabalhos de transcodificação. O código usa o SDK for JavaScript para fazer isso usando estes métodos da classe MediaConvert cliente:

Tarefas de pré-requisito

Para configurar e executar este exemplo, primeiro conclua estas tarefas:

  • Configure o ambiente do projeto para executar esses TypeScript exemplos de Node e instale os módulos necessários AWS SDK for JavaScript e de terceiros. Siga as instruções em GitHub.

  • Crie um arquivo de configurações compartilhado com as credenciais de usuário. Para obter mais informações sobre como fornecer um arquivo de credenciais compartilhado, consulte Arquivos de configuração e credenciais compartilhados no Guia de referência de ferramentas AWS SDKs e ferramentas.

  • Crie e configure buckets do Amazon S3 que forneçam armazenamento para arquivos de entrada e de saída da tarefa. Para obter detalhes, consulte Criar armazenamento para arquivos no Guia do usuário do AWS Elemental MediaConvert .

  • Faça upload do vídeo de entrada no bucket do Amazon S3 provisionado para armazenamento de entrada. Para obter uma lista dos codecs de vídeo de entrada e contêineres compatíveis, consulte Codecs e contêineres de entrada compatíveis no Guia do usuário do AWS Elemental MediaConvert .

  • Crie uma IAM função que dê MediaConvert acesso aos seus arquivos de entrada e aos buckets do Amazon S3 onde seus arquivos de saída são armazenados. Para obter detalhes, consulte Configurar IAM permissões no Guia AWS Elemental MediaConvert do usuário.

Importante

Este exemplo usa ECMAScript6 (ES6). Isso requer o Node.js versão 13.x ou superior. Para baixar e instalar a versão mais recente do Node.js, consulte Downloads do Node.js.

No entanto, se você preferir usar a sintaxe CommonJS, consulte Sintaxe ES6/CommonJS de JavaScript.

Configurando o SDK

Configure o SDK conforme mostrado anteriormente, incluindo o download dos clientes e pacotes necessários. Como MediaConvert usa endpoints personalizados para cada conta, você também deve configurar a classe MediaConvert cliente para usar seu endpoint específico da região. Para isso, defina o parâmetro endpoint em mediaconvert(endpoint).

// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js";

Definição de uma tarefa de transcodificação simples

Crie um diretório libs e um módulo Node.js com o nome de arquivo emcClient.js. Copie e cole o código abaixo nele, o que cria o objeto MediaConvert cliente. Substituir REGION com sua AWS região. Substituir ENDPOINT com o endpoint MediaConvert da sua conta, que você pode acessar na página Conta no MediaConvert console.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

Esse código de exemplo pode ser encontrado aqui em GitHub.

Crie um módulo do Node.js com o nome de arquivo emc_createjob.js. Certifique-se de configurar o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários. Crie o JSON que define os parâmetros do trabalho de transcodificação.

Esses parâmetros são bem detalhados. Você pode usar o AWS Elemental MediaConvert console para gerar os parâmetros do JSON trabalho escolhendo suas configurações de trabalho no console e, em seguida, escolhendo Mostrar trabalho JSON na parte inferior da seção Trabalho. Este exemplo mostra o JSON para um trabalho simples.

nota

Substituir JOB_QUEUE_ARN com a fila MediaConvert de trabalhos, IAM_ROLE_ARN com o Amazon Resource Name (ARN) da IAM função, OUTPUT_BUCKET_NAME com o nome do bucket de destino - por exemplo, “s3://OUTPUT_ BUCKET _NAME/” e INPUT_BUCKET_AND_FILENAME com o bucket de entrada e o nome do arquivo - por exemplo, “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", }, }, };

Criar uma tarefa de transcodificação

Depois de criar os parâmetros do trabalhoJSON, chame o run método assíncrono para invocar um objeto de atendimento ao MediaConvert cliente, transmitindo os parâmetros. O ID da tarefa criado é retornado no data da resposta.

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 executar o exemplo, digite o seguinte no prompt de comando.

node emc_createjob.js

Esse código de exemplo completo pode ser encontrado aqui em GitHub.

Cancelar uma tarefa de transcodificação

Crie um diretório libs e um módulo Node.js com o nome de arquivo emcClient.js. Copie e cole o código abaixo nele, o que cria o objeto MediaConvert cliente. Substituir REGION com sua AWS região. Substituir ENDPOINT com o endpoint MediaConvert da sua conta, que você pode acessar na página Conta no MediaConvert console.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

Esse código de exemplo pode ser encontrado aqui em GitHub.

Crie um módulo do Node.js com o nome de arquivo emc_canceljob.js. Certifique-se de configurar o SDK conforme mostrado anteriormente, incluindo o download dos clientes e pacotes necessários. Crie o JSON que inclua o ID do trabalho a ser cancelado. Depois, chame o método CancelJobCommand criando uma promessa para invocar um objeto de serviço de cliente do MediaConvert, passando os parâmetros. Lide com a resposta no retorno de chamada da promessa.

nota

Substituir JOB_ID com o ID do trabalho a ser cancelado.

// 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 executar o exemplo, digite o seguinte no prompt de comando.

node ec2_canceljob.js

Esse código de exemplo pode ser encontrado aqui em GitHub.

Como lista tarefas de transcodificação recentes

Crie um diretório libs e um módulo Node.js com o nome de arquivo emcClient.js. Copie e cole o código abaixo nele, o que cria o objeto MediaConvert cliente. Substituir REGION com sua AWS região. Substituir ENDPOINT com o endpoint MediaConvert da sua conta, que você pode acessar na página Conta no MediaConvert console.

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

Esse código de exemplo pode ser encontrado aqui em GitHub.

Crie um módulo do Node.js com o nome de arquivo emc_listjobs.js. Certifique-se de configurar o SDK conforme mostrado anteriormente, incluindo a instalação dos clientes e pacotes necessários.

Crie os parâmetrosJSON, incluindo valores para especificar se a lista deve ser classificada ASCENDING ou DESCENDING ordenada pelo Amazon Resource Name (ARN) da fila de trabalhos a serem verificados e o status dos trabalhos a serem incluídos. Depois, chame o método ListJobsCommand criando uma promessa para invocar um objeto de serviço de cliente do MediaConvert, passando os parâmetros.

nota

Substituir QUEUE_ARN com o Amazon Resource Name (ARN) da fila de trabalhos a ser verificada e STATUS com o status da fila.

// 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 executar o exemplo, digite o seguinte no prompt de comando.

node emc_listjobs.js

Esse código de exemplo pode ser encontrado aqui em GitHub.