【问题标题】:Create ElasticTranscoder Job via Lambda with 2 Inputs通过 Lambda 使用 2 个输入创建 ElasticTranscoder 作业
【发布时间】:2018-11-18 12:21:02
【问题描述】:

我想通过 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:在 params.Input 中发现意外的键 '1' 在 ParamValidator.validate (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:在 params.Input 中找到意外的键 \'0\'\n* UnexpectedParameter:在 params.Input 中找到意外的键 \'1\', 代码:'MultipleValidationErrors', 错误: [ { UnexpectedParameter: 在 params.Input 中发现意外的键 '0' 在 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 message: '在 params.Input 中发现意外的键 \'0\', 代码:'UnexpectedParameter', 时间:2018-06-10T11:39:59.749Z}, { UnexpectedParameter:在 params.Input 中发现意外的键 '1' 在 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 message: '在 params.Input' 中找到了意外的键 \'1\', 代码:'UnexpectedParameter', 时间:2018-06-10T11:39:59.749Z } ], 时间:2018-06-10T11:39:59.749Z }

亲切的问候 斯蒂芬

【问题讨论】:

  • 请显示您尝试转码多个文件(使用输入和输出)而不是一个文件(使用输入和输出),并告诉我们您看到了什么错误。
  • @jarmod:我调整了我的问题,希望有人能告诉我什么问题
  • 文档表明您应该为多个文件传递(复数)输入和输出,而不是(单数)输入和输出。
  • 对不起,我不明白你的意思。我尝试提供多个对象,但它不起作用。我应该如何以其他方式传递多个对象?
  • 对不起,我明白了。你说的对。如果我使用“输入”-属性而不是“输入”它可以工作。非常感谢!

标签: amazon-web-services aws-lambda amazon-elastic-transcoder aws-sdk-nodejs


【解决方案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} ],
});

您在前者中使用InputOutput(单数),而在后者中使用InputsOutputs(复数)。

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

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2018-04-25
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多