Criar e gerenciar tarefas de transcodificação no MediaConvert - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Criar e gerenciar tarefas 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 por região a ser usado com o MediaConvert.

  • Como criar tarefas de transcodificação no MediaConvert.

  • Como cancelar uma tarefa de transcodificação.

  • Como recuperar o JSON para concluir uma tarefa de transcodificação.

  • Como recuperar uma matriz JSON para até 20 das tarefas criadas mais recentemente.

O cenário

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

Tarefas de pré-requisito

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

  • Instale o Node.js. Para obter mais informações, consulte o website Node.js.

  • 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 compartilhadas, consulte Carregar credenciais em Node.js do arquivo de credenciais compartilhado.

  • 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 .

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

Como configurar o SDK

Configure o criando um objeto de configuração global e definindo a região do código. Neste exemplo, a região é definida como us-west-2. Como o MediaConvert usa endpoints personalizados para cada conta, você também deve configurar a classe de cliente AWS.MediaConvert para usar o endpoint específico da conta. Para isso, defina o parâmetro endpoint em 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" };

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

Crie um módulo do Node.js com o nome de arquivo emc_createjob.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Crie o JSON que define os parâmetros da tarefa de transcodificação.

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

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

Criar uma tarefa de transcodificação

Depois de criar o JSON de parâmetros de tarefa, chame o método createJob criando uma promessa para invocar um objeto de serviço AWS.MediaConvert e passando os parâmetros. Depois, lide com a resposta no retorno de chamada da promessa. O ID da tarefa criado é retornado no data da resposta.

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

node emc_createjob.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Cancelar uma tarefa de transcodificação

Crie um módulo do Node.js com o nome de arquivo emc_canceljob.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente. Crie o JSON que inclua o ID da tarefa a ser cancelada. Depois, chame o método cancelJob criando uma promessa para invocar um objeto de serviço AWS.MediaConvert passando os parâmetros. Lide com a resposta no retorno de chamada da promessa.

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

node ec2_canceljob.js

Este código de exemplo pode ser encontrado aqui no GitHub.

Listagem de tarefas de transcodificação recentes

Crie um módulo do Node.js com o nome de arquivo emc_listjobs.js. Não se esqueça de configurar o SDK conforme mostrado anteriormente.

Crie o JSON de parâmetros, inclusive valores para especificar se você deseja classificar a lista em ordem ASCENDING ou DESCENDING, o ARN da fila de trabalhos a ser verificada e o status de tarefas a ser incluído. Depois, chame o método listJobs criando uma promessa para invocar um objeto de serviço AWS.MediaConvert passando os parâmetros. Lide com a resposta no retorno de chamada da promessa.

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

node emc_listjobs.js

Este código de exemplo pode ser encontrado aqui no GitHub.