在过去的一天里,当我们尝试使用 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.ts
并64k.m3u8
在 S3 中被视为不同的对象。
在这种情况下,重复的输出键是指 S3 对象还是可能是转码作业中的冲突?
更多信息:更改Playlists:Name
为比特率以外的任何内容$bitrate . '_v3'
,似乎可以防止错误。我仍然可以进入指定前缀的输出存储桶并重命名64k_v3.m3u8
为64k.m3u8
没有问题。在这种情况下,为什么 Elastic Transcoder 会阻止创建名为 的播放列表64k.m3u8
?