Node.js使用amazon转码器格式化视频/音频文件

Mar*_*sen 1 javascript amazon-web-services node.js

我的目标是确保所有上传到我的应用程序的视频都是正确的格式,并且格式化为最小尺寸.

我在使用前做了这个,ffmpeg但是我最近把我的应用程序移到了亚马逊服务器上.

这使我可以选择使用Amazon Elastic Transcoder

但是从界面看起来,我无法设置查找视频或音频文件并转换它们的自动作业.

为此,我一直在看他们的SDK/api参考,但我不太确定如何在我的应用程序中使用它.

我的问题是,是否有人成功开始转码工作node.js并知道如何将视频从一种格式转换为另一种格式和/或降低设置比特率?我真的很感激,如果有人能指出我正确的方向,并提供一些如何运作的例子.

Fes*_*sto 8

但是从界面看起来,我无法设置查找视频或音频文件并转换它们的自动作业.

Node.js SDK不支持它,但您可以执行以下操作:如果您将视频存储在S3中(如果没有将它们移动到S3,因为弹性转码器使用S3),您可以在AWS触发的S3 putObject上运行Lambda函数.

http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html

我的问题是有没有人成功开始转换node.js中的作业并知道如何将视频从一种格式转换为另一种格式和/或设置比特率?我真的很感激,如果有人能指出我正确的方向,并提供一些如何运作的例子.

我们使用AWS进行节点视频转码,没有任何问题.找出每个参数都很费时间,但我希望这几行可以帮到你:

const aws = require('aws-sdk');

aws.config.update({
  accessKeyId: config.AWS.accessKeyId,
  secretAccessKey: config.AWS.secretAccessKey,
  region: config.AWS.region
});

var transcoder = new aws.ElasticTranscoder();

let transcodeVideo = function (key, callback) {
    // presets: http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/system-presets.html
    let params = {
      PipelineId: config.AWS.transcode.video.pipelineId, // specifies output/input buckets in S3 
      Input: {
        Key: key,
      },
      OutputKeyPrefix: config.AWS.transcode.video.outputKeyPrefix, 
      Outputs: config.AWS.transcode.video.presets.map(p => {
        return {Key: `${key}${p.suffix}`, PresetId: p.presetId};
      })
    };

    params.Outputs[0].ThumbnailPattern = `${key}-{count}`;
    transcoder.createJob(params, function (err, data) {
      if (!!err) {
        logger.err(err);
        return;
      }
      let jobId = data.Job.Id;
      logger.info('AWS transcoder job created (' + jobId + ')');
      transcoder.waitFor('jobComplete', {Id: jobId}, callback);
    });
  };
Run Code Online (Sandbox Code Playgroud)

示例配置文件:

let config = {
  accessKeyId: '',
  secretAccessKey: '',
  region: '',
  videoBucket: 'blabla-media',
  transcode: {
    video: {
      pipelineId: '1450364128039-xcv57g',
      outputKeyPrefix: 'transcoded/', // put the video into the transcoded folder
      presets: [ // Comes from AWS console
        {presetId: '1351620000001-000040', suffix: '_360'},
        {presetId: '1351620000001-000020', suffix: '_480'}
      ]
    }
  }
};
Run Code Online (Sandbox Code Playgroud)