0

我想通过 Lambda (NodeJS) 创建一个 ElasticTranscoder 作业。

如果我定义一个输入(见下文),它工作正常。但我有几个源文件。如果我修改我的编码,使输入是一个数组,我会得到错误。

有人能帮我吗?

这工作正常:

    transcoder.createJob({
    PipelineId: '12345678-vsyssc',
    Input: {
        Key: fileName,
        FrameRate: 'auto',
        Resolution: 'auto',
        AspectRatio: 'auto',
        Interlaced: 'auto',
        Container: 'auto'
    },
    Output: {
        Key: 'Output.mp4',
        ThumbnailPattern: '',
        PresetId: '1351620000001-000030',
        Rotate: 'auto'
    }
}, function (err, data) {
    if (err) {
        console.log('Something went wrong:', err)
    } else {
        console.log('Converting is done');
    }
    callback(err, data);
});

这不起作用:

    transcoder.createJob({
    PipelineId: '12345678-vsyssc',
    Input: [{
        Key: 'VID-20180217-WA0002.mp4',
        FrameRate: 'auto',
        Resolution: 'auto',
        AspectRatio: 'auto',
        Interlaced: 'auto',
        Container: 'auto'
    }, {
        Key: 'VID-20180411-WA0012.mp4',
        FrameRate: 'auto',
        Resolution: 'auto',
        AspectRatio: 'auto',
        Interlaced: 'auto',
        Container: 'auto'
    },
    ],
    Output: {
        Key: 'test123445.mp4',
        ThumbnailPattern: '',
        PresetId: '1351620000001-000030',
        Rotate: 'auto'
    }
}, function (err, data) {
    if (err) {
        console.log('Something went wrong:', err)
    } else {
        console.log('Converting is done');
    }
    callback(err, data);
});

我得到错误:

  • UnexpectedParameter:在 ParamValidator.validate 的 params.Input 中发现意外的键“1”(C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:40:28 ) 在 Request.VALIDATE_PARAMETERS (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\event_listeners.js:125:42) 在 Request.callListeners (C:\Users\ Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\sequential_executor.js:105:20) 在 callNextListener (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\ node_modules\aws-sdk\lib\sequential_executor.js:95:12) 在 C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\event_listeners.js:85:9结束时(C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\config.js:315:7) 在 C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test \node_modules\aws-sdk\lib\config.js:333:9 在 SharedIniFileCredentials.get (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\credentials.js :126:7) 在 getAsyncCredentials (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\config.js:327:24) 在 Config.getCredentials (C:\ Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\config.js:347:9) 消息:'有 2 个验证错误:\n* UnexpectedParameter: Unexpected key \'0 \' 在 params.Input\n* UnexpectedParameter: 在 params 中找到意外的键 \'1\'。输入',代码:'MultipleValidationErrors',错误:[ { UnexpectedParameter: UnexpectedParameter: Unexpected key '0' found in params.Input at ParamValidator.fail (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\ aws-sdk\lib\param_validator.js:50:37) 在 ParamValidator.validateStructure (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:77 :14) 在 ParamValidator.validateMember (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:88:21) 在 ParamValidator.validateStructure (C:\用户\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:75:14) 在 ParamValidator.validateMember (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:88:21) 在 ParamValidator.validate (C:\Users\Volkm\Google Drive\Quellcode\nodejs \ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:34:10) 在 Request.VALIDATE_PARAMETERS (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\ lib\event_listeners.js:125:42) 在 Request.callListeners (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\sequential_executor.js:105:20) 在callNextListener (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\sequential_executor.js:95:12) 在 C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\event_listeners.js:85:9 message: 'Unexpected key \'0\' found in params.Input',代码: 'UnexpectedParameter',时间:2018-06-10T11:39:59.749Z },{ UnexpectedParameter:在 params.Input 在 ParamValidator.fail (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:50:37) 在 ParamValidator.validateStructure (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib \param_validator.js:77:14) 在 ParamValidator.validateMember (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:88:21) 在 ParamValidator .validateStructure (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:75:14) 在 ParamValidator.validateMember (C:\Users\Volkm\Google Drive \Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\param_validator.js:88:21) 在 ParamValidator.validate (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\ aws-sdk\lib\param_validator.js:34:10) 在 Request.VALIDATE_PARAMETERS (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\event_listeners.js:125 :42) 在 Request.callListeners (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\sequential_executor.js:105:20) 在 callNextListener (C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test\node_modules\aws-sdk\lib\sequential_executor.js:95:12) 在 C:\Users\Volkm\Google Drive\Quellcode\nodejs\ElasticTranscoderJob\test \node_modules\aws-sdk\lib\event_listeners.js:85:9 消息:'在 params.Input 中找到意外键 \'1\',代码:'UnexpectedParameter',时间:2018-06-10T11:39:59.749 Z}],时间:2018-06-10T11:39:59.749Z}

亲切的问候斯特凡

4

1 回答 1

1

createJob操作一个文件和多个文件使用不同的属性。

对于单个输入/输出文件:

transcoder.createJob({
    PipelineId: '12345678-vsyssc',
    Input: { <input info> },
    Output: { <output info> },
});

对于多个输入/输出文件:

transcoder.createJob({
    PipelineId: '12345678-vsyssc',
    Inputs: [ {<input #1 info>}, {<input #2 info>} ],
    Outputs: [ {<output #1 info}, {<output #2 info} ],
});

您在前者中使用Input& Output(单数),而在后者中使用Inputs& Outputs(复数)。

猜测一下,原来的createJobs方法只支持单个文件,后来增强为支持多个文件。为了避免破坏向后兼容性,AWS 添加了Inputs& Outputs

于 2018-06-11T00:32:50.030 回答