1

我正在尝试通过 AWS 设置 wav -> mp3 转换,我已经密切关注文档,但我找不到任何关于我面临的问题的信息,所以希望有人能在这里提供帮助。这是我在 AWS 上开始转换的代码:

$job_settings = '{
        "TimecodeConfig": {
          "Source": "ZEROBASED"
        },
        "OutputGroups": [
          {
            "Name": "File Group",
            "Outputs": [
              {
                "ContainerSettings": {
                  "Container": "RAW"
                },
                "AudioDescriptions": [
                  {
                    "AudioTypeControl": "FOLLOW_INPUT",
                    "AudioSourceName": "Audio Selector 1",
                    "CodecSettings": {
                      "Codec": "MP3",
                      "Mp3Settings": {
                        "Bitrate": 192000,
                        "Channels": 2,
                        "RateControlMode": "CBR",
                        "SampleRate": 48000
                      }
                    },
                    "LanguageCodeControl": "FOLLOW_INPUT"
                  }
                ]
              }
            ],
            "OutputGroupSettings": {
              "Type": "FILE_GROUP_SETTINGS",
              "FileGroupSettings": {
                "Destination": "{DESTINATION}"
              }
            }
          }
        ],
        "AdAvailOffset": 0,
        "Inputs": [
          {
            "AudioSelectors": {
              "Audio Selector 1": {
                "Tracks": [
                  1
                ],
                "Offset": 0,
                "DefaultSelection": "DEFAULT",
                "SelectorType": "TRACK",
                "ProgramSelection": 1
              }
            },
            "FilterEnable": "AUTO",
            "PsiControl": "USE_PSI",
            "FilterStrength": 0,
            "DeblockFilter": "DISABLED",
            "DenoiseFilter": "DISABLED",
            "InputScanType": "AUTO",
            "TimecodeSource": "ZEROBASED",
            "FileInput": "{INPUT}"
          }
        ]
      }';
   //Job starts here
   $job_settings = json_decode($job_settings, true);
   $convert_client = new MediaConvertClient(array(
        'version' => '2017-08-29',
        'region' => $this->login_details->region,
        'credentials' => $this->credentials
    ));
    
    try {
        $res = $convert_client->describeEndpoints([]);
    } catch(AwsException $e) {
        //echo $e->getMessage();
        return null;
    }
    
    //print_r($res);
    
    $single_endpoint = $res['Endpoints'][0]['Url'];
    $convert_client = new MediaConvertClient(array(
        'version' => '2017-08-29',
        'region' => $this->login_details->region,
        'credentials' => $this->credentials,
        'endpoint' => $single_endpoint
    ));
    $res = $client->createJob(array(
            "Role" => "arn:aws:iam::{$this->login_details->account_number}:role/MediaConvert_Default_Role",
            "Settings" => $job_settings,
            "Queue" => "arn:aws:mediaconvert:{$this->login_details->region}:{$this->login_details->account_number}:queues/Default"
        ));

我通过在 AWS 控制台上创建转换作业并复制作业的 JSON 来获取 JSON,在解码为 assoc 数组之前,目标和输入标签在 json 中被替换,但是我收到以下错误:

在“aws_url”上执行“CreateJob”时出错;AWS HTTP错误:客户端错误:POST aws_url导致400 Bad Request响应:{“errorType”:“BadRequestException”,“httpStatus”:400,“requestId”:“-----------”,(截断... ) BadRequestException (client): /outputGroups/0/outputs/0/audioDescriptions/0/codecSettings: 应该完全匹配“oneOf”中定义的一个模式 | /outputGroups/0/outputs/0/audioDescriptions/0/codecSettings:应该至少有 2 个属性 | /outputGroups/0/outputs/0/audioDescriptions/0/codecSettings/codec:应该等于 ["PASSTHROUGH","OPUS","VORBIS"] 中允许的值之一

这是使用 aws-3.93.3 PHP SDK。知道为什么会这样吗?当然,如果通过控制台运行,这项工作运行得非常好。

4

1 回答 1

1

实际上我只是发现了我怀疑的情况;此版本的库尚不支持此处所述的 MP3 摄取:

https://github.com/aws/aws-sdk-php/blob/master/CHANGELOG.md

更新到最新版本解决了这个问题。

于 2020-11-27T14:18:18.717 回答