先日、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
ですか?