本文提供了Node.js SDK转码的操作步骤及完整的代码示例。

转码相关API调用及参数详细信息请参见提交转码作业

  1. 创建Client实例。
    var RPCClient = require('@alicloud/pop-core').RPCClient;
    
    var client = initVodClient('<Your AccessKeyId>', '<Your AccessKeySecret>', '<Your RegionId>');
  2. 配置转码参数。
    说明
    • 通过SDK提交转码作业时Object需经URLEncode,否则会导致转码失败。更多信息,请参见URL Encoding说明
    • 请按照规范填写文件名称,否则会找不到文件导致转码失败。详细名称规范,请参见参数详情
    • Input(作业输入)
      input ={Location: "ossLocation",
              Bucket: "ossBucket",
              Object: encodeURIComponent(ossInputObject)
      };
    • Output(作业输出)
      output={Output: encodeURIComponent(ossOutputObject)};
    • Video(视频)
      说明 如果使用转码模板进行转码则无需配置此参数。如果配置此参数,则覆盖指定转码模板中的对应参数。
      video = {Codec:"H.264",
               Bitrate:"1500",
               Width:"1280",
               Fps:"25",
      };
      output.Video=video;
    • Audio(音频)
      说明 如果使用转码模板进行转码则无需配置此参数。如果配置此参数,则覆盖指定转码模板中的对应参数。
      audio = {Codec:"AAC",
           Bitrate:"128",
               Channels:"2",
               Samplerate:"44100"
      };
      output.Audio=audio;
    • TemplateId(转码模板ID)
      templateId='Your TemplateId';
      output.TemplateId=templateId;
    • PipelineId(管道ID)
      pipelineId='Your PipelineId';
  3. 发起API请求并显示返回值。
    client.request('SubmitJobs', {
      Input: input,
      PipelineId: pipelineId,
      OutputBucket: ossBucket,
      Output: output
      }, {}).then(function (response) {
        console.log('PipelineName is: = ' + response.JobResultList[0].Job.JobId);
        console.log('PipelineId is:' + response.PipelineList[0].Id);
    }).catch(function (response) {
        console.log('ErrorCode = ' + response.Code);
        console.log('ErrorNo = ' + response.Message);
    });
完整代码
var RPCClient = require('@alicloud/pop-core').RPCClient;

function initMtsClient(accessKeyId, accessKeySecret, regionId) {
    var client = new RPCClient({
        accessKeyId: accessKeyId,
        accessKeySecret: accessKeySecret,
        endpoint: 'http://mts.' + regionId + '.aliyuncs.com',
        apiVersion: '2014-06-18'
    });

    return client;
}

var ossBucket = 'xxx';
var ossInputObject = 'yourInputFilename.extension';
var ossLocation = 'xxx';
var pipelineId = 'xxx';
var ossOutputObject = "yourOutputFilename.extension";
var accessKeyId = 'xxx';
var accessKeySecret = 'xxx';
var regionId = 'xxx';
var templateId = 'S00000001-200010';


var client = initMtsClient(accessKeyId, accessKeySecret, regionId);

var input = {
    'Location': ossLocation,
    'Bucket': ossBucket,
    'Object': encodeURIComponent(ossInputObject)
};
var video = {
    'Codec': "H.264",
    'Bitrate': "1500",
    'Width': "1280",
    'Fps': "25",
};

var audio = {
    'Codec': "AAC",
    'Bitrate': "128",
    'Channels': "2",
    'Samplerate': "44100"
};

var output = {OutputObject: encodeURIComponent(ossOutputObject)};

output.Video = video;

output.Audio = audio;

output.TemplateId = templateId;

var outputs = new Array();
outputs.push(output);
client.request('SubmitJobs', {
    Input: JSON.stringify(input),
    Outputs: JSON.stringify(outputs),
    OutputBucket: ossBucket,
    PipelineId: pipelineId,
    OutputLocation: ossLocation
}, {}).then(function (response) {
    console.log('response success: = ' + response.JobResultList.JobResult[0].Success);
    console.log('response jobID: ' + response.JobResultList.JobResult[0].Job.JobId);
}).catch(function (response) {
    console.log(JSON.stringify(response));
});