Amazon web services 将AWS MediaConvert作业模板输出到同一目录

Amazon web services 将AWS MediaConvert作业模板输出到同一目录,amazon-web-services,aws-media-convert,Amazon Web Services,Aws Media Convert,我正试图在亚马逊的MediaConvert服务中设置一个作业,该作业将把我上传的任何视频带到S3存储桶中,并将其转换为流媒体友好格式。在大多数情况下,这似乎是可行的——每次我上传视频时,我的应用程序都会调用API来运行作业 但是,为了方便(为了更容易找到特定文件的输出),我想将输出文件放在输入文件所在的目录中 有没有办法将作业模板的输出设置为相对于输入的路径?或者,是否可以覆盖输出目录,而不必在Java代码中从头定义整个作业 以下是我在Java API中设置输入目录的方式: CreateJobR

我正试图在亚马逊的MediaConvert服务中设置一个作业,该作业将把我上传的任何视频带到S3存储桶中,并将其转换为流媒体友好格式。在大多数情况下,这似乎是可行的——每次我上传视频时,我的应用程序都会调用API来运行作业

但是,为了方便(为了更容易找到特定文件的输出),我想将输出文件放在输入文件所在的目录中

有没有办法将作业模板的输出设置为相对于输入的路径?或者,是否可以覆盖输出目录,而不必在Java代码中从头定义整个作业

以下是我在Java API中设置输入目录的方式:

CreateJobRequest request = CreateJobRequest.builder()
    .role(roleName)
    .jobTemplate("Process uploaded videos") // Matches a custom template I made in AWS
    .settings(JobSettings.builder()
        .inputs(Input.builder()
            .fileInput("s3://" + mConfig.bucket + "/" + mFolder + filename)
            .build())
        .build())
    .build();
指定了输出路径的更新版本:

CreateJobRequest request = CreateJobRequest.builder()
    .role(MEDIACONVERT_ROLE)
    .jobTemplate("Process uploaded videos") // Matches a custom template I made in AWS
    .settings(JobSettings.builder()
        .inputs(Input.builder()
            .fileInput("s3://" + mConfig.bucket + "/" + mFolder + filename)
            .build())
        .outputGroups(OutputGroup.builder()
            .name("Streaming video") // Matches the name of the output group in the template
            .outputGroupSettings(OutputGroupSettings.builder()
                .type(OutputGroupType.FILE_GROUP_SETTINGS)
                .fileGroupSettings(FileGroupSettings.builder()
                    .destination("s3://" + mConfig.bucket + "/" + mFolder) // Put output in the same folder as the input
                    .build())
                .build())
            .build())
        .build())
    .build();

AWS Elemental MediaConvert中没有用于根据输入位置设置输出的相对路径的本机方法,但是您可以从模板中重写参数,而无需从头定义整个作业

例如,这里有一个AWS CLI(boto3)JSON示例,使用不引用预设的模板提交作业

注意:此模板包含一个输入数组对象(请注意,没有FileURI参数,您将在创建作业时添加此参数)

下面的JSON有效负载在输入上添加了一个输入和一个标题选择器,并在输出上添加了一个标题跟踪,并且它更改了输出文件的目标位置

注意:您需要确保包括您的工作模板名称以及您希望服务承担的角色(即您在使用IAM设置中设置的内容)

要仅更改目标,请使用以下JSON:

{
  "Settings": {
    "OutputGroups": [
      {
        "OutputGroupSettings": {
          "Type": "FILE_GROUP_SETTINGS",
          "FileGroupSettings": {
            "Destination": "s3://myawsbucket/newfolder/out/"
          }
        }
      }
    ],
    "Inputs": [
      {
        "FileInput": "s3://myawsbucket/input/test.mp4"
      }
    ]
  },
  "JobTemplate": "Test_MP4",
  "Role": "arn:aws:iam::111122223333:role/MediaConvertRole"
}

美好的因此,如果我理解正确,匹配的名称“文件组”将导致请求将每个作业JSON合并到模板的定义中?必须将作业创建JSON与预先存在的模板匹配的是JobTemplate值。然后合并其他参数并覆盖模板中的设置。我尝试将OutputGroups->OutputGroupSettings块从示例中复制出来,现在我得到一个关于“/OutputGroups/0/OutputGroupSettings:最多应该有2个属性”的错误。您的示例JSON的任何其他部分似乎都不是添加到我的代码中所必需的-是我遗漏了什么,还是其他原因造成的?您可能希望使用以下内容:
{“设置”:{“OutputGroups”:[{“OutputGroupSettings”:{“Type”:“FILE\u GROUP\u Settings”,“FileGroupSettings”:{“Destination”:“s3://myawsbucket/newfolder/out/“}}}}}],“Inputs”:[{“FileInput”:“s3://myawsbucket/input/test.mp4”,}}],“JobTemplate”:“test_mp4”,“Role”:“arn:aws:iam::111122223333:Role/MediaConvertRole”}
好吧,这看起来很糟糕-在答案中添加了这一点。如果您在尝试更新的JSON格式示例后仍然有问题,请您注销您的createJobRequest,以便我可以查看您发送的JSON?我只是在我的一端对它进行了测试,以确保没有留下任何拼写错误。除了我不小心留下的逗号之外,我n我在此行末尾的上一条评论:
“FileInput”:“s3://myawsbucket/input/test.mp4”,
{
  "Settings": {
    "OutputGroups": [
      {
        "Name": "File Group",
        "Outputs": [
          {
          "CaptionDescriptions": [
              {
                "DestinationSettings": {
                  "DestinationType": "EMBEDDED"
                },
                "CaptionSelectorName": "Captions Selector 1",
                "LanguageCode": "ENG"
              }
            ]
          }
        ],
        "OutputGroupSettings": {
          "Type": "FILE_GROUP_SETTINGS",
          "FileGroupSettings": {
            "Destination": "s3://myawsbucket/newfolder/out/"
          }
        }
      }
    ],
    "AdAvailOffset": 0,
    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "Offset": 0,
            "DefaultSelection": "DEFAULT",
            "ProgramSelection": 1
          }
        },
        "VideoSelector": {
          "ColorSpace": "FOLLOW"
        },
        "FilterEnable": "AUTO",
        "PsiControl": "USE_PSI",
        "FilterStrength": 0,
        "DeblockFilter": "DISABLED",
        "DenoiseFilter": "DISABLED",
        "TimecodeSource": "EMBEDDED",
        "FileInput": "s3://myawsbucket/input/test.mp4",
        "CaptionSelectors": {
          "Captions Selector 1": {
            "SourceSettings": {
              "SourceType": "SCC",
              "FileSourceSettings": {
                "SourceFile": "s3://myawsbucket/input/Captions/SCC/test.scc"
              }
            }
          }
        }
      }
    ]
  },
  "JobTemplate": "Test_MP4",
  "Role": "arn:aws:iam::111122223333:role/MediaConvertRole"
}
{
  "Settings": {
    "OutputGroups": [
      {
        "OutputGroupSettings": {
          "Type": "FILE_GROUP_SETTINGS",
          "FileGroupSettings": {
            "Destination": "s3://myawsbucket/newfolder/out/"
          }
        }
      }
    ],
    "Inputs": [
      {
        "FileInput": "s3://myawsbucket/input/test.mp4"
      }
    ]
  },
  "JobTemplate": "Test_MP4",
  "Role": "arn:aws:iam::111122223333:role/MediaConvertRole"
}