1

在过去的一天里,当我们尝试使用 PHP SDK 推送转码作业时,我们开始遇到一个有趣的错误:

'Aws\ElasticTranscoder\Exception\ElasticTranscoderException' with message 'Error executing "CreateJob" on "https://elastictranscoder.us-east-1.amazonaws.com/2012-09-25/jobs"; AWS HTTP error: Client error: 400 ValidationException (client): Playlists '64k' is a duplicate of an output key. - {"message":"Playlists '64k' is a duplicate of an output key."}' in /var/www/html/app/1.0/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:152

我们推送到 Elastic Transcoder 的设置:

        'PipelineId'      => $this->config['pipeline_id'],
        'OutputKeyPrefix' => "$prefix/",
        'Input'           => [
            'Key' => "uploads/$input_filename.$input_extension",
        ],
        'Playlists'       => [
            'OutputKeys' => [$bitrate],
            'Name'       => $bitrate,
            'Format'     => 'HLSv4',
        ],
        'Outputs'         => [
            'PresetId'        => $preset_id,
            'Key'             => $bitrate,
            'SegmentDuration' => '9.0',
        ],

哪里$bitrate'64k'创建文件的转码作业的(目标)最终结果:64k.ts, 64k.m3u8, 64k_v4.m3u8.

我的第一个想法可能是由于前缀已经存在而导致 S3 密钥冲突,但即使在清除输出存储桶之后,错误仍然存​​在。据我所知64k.ts64k.m3u8在 S3 中被视为不同的对象。

在这种情况下,重复的输出键是指 S3 对象还是可能是转码作业中的冲突?

更多信息:更改Playlists:Name为比特率以外的任何内容$bitrate . '_v3',似乎可以防止错误。我仍然可以进入指定前缀的输出存储桶并重命名64k_v3.m3u864k.m3u8没有问题。在这种情况下,为什么 Elastic Transcoder 会阻止创建名为 的播放列表64k.m3u8

4

0 回答 0