AWS MediaConvert 如何配置作业模板输出至输入文件同目录
AWS MediaConvert 同目录输出配置问题解答
核心问题答复
1. 作业模板是否支持配置相对输入路径的输出规则
- MediaConvert原生支持通过占位符实现输出路径自动匹配输入文件所在目录,无需手动在代码中拼接路径。
- 作业模板中无法直接配置通用的“相对输入路径”规则,但支持在输出
destination字段中使用内置动态变量:比如配置s3://目标桶/{{inputs:0:filepath}}作为模板内的输出前缀,MediaConvert在执行任务时会自动读取当前作业的第一个输入文件的目录路径,替换占位符内容,最终让输出文件落到和输入文件完全相同的S3目录下。 - 注意:纯静态的作业模板字段不支持自动关联当前作业的输入路径,所有动态匹配能力完全依赖内置占位符实现。
2. 是否可以在不重写完整作业配置的前提下覆写输出目录
- 完全支持,这是MediaConvert作业模板设计的核心特性之一。
- 覆写规则为:CreateJob请求中显式传入的settings字段,会逐字段覆盖作业模板中定义的同名字段;未显式传入的字段会自动沿用模板中的配置,完全不需要从头定义完整的转码参数。
- 覆写时的核心要求:被覆写的OutputGroup名称必须和模板内的输出组名称完全匹配,否则MediaConvert会判定为新增独立输出组,而非对原有模板内的输出组做配置修改,会导致输出行为不符合预期。
现有代码的修正优化
你目前补充的代码版本方向正确,仅需调整两处即可正常运行:
- 移除覆写配置中冗余的、和模板配置完全重复的固定字段(比如OutputGroup的type配置),仅保留需要修改的destination路径字段即可,减少不必要的代码维护成本。
- 严格校验OutputGroup名称和模板内的名称完全一致,避免名称不匹配导致的覆写失效。
可正常运行的代码示例:
CreateJobRequest request = CreateJobRequest.builder() .role(MEDIACONVERT_ROLE) .jobTemplate("Process uploaded videos") // 保持原自定义模板引用 .settings(JobSettings.builder() .inputs(Input.builder() .fileInput("s3://" + mConfig.bucket + "/" + mFolder + filename) .build()) // 仅覆写目标输出组的路径,其余转码配置自动沿用模板规则 .outputGroups(OutputGroup.builder() .name("Streaming video") // 需与模板内的输出组名称完全一致 .outputGroupSettings(OutputGroupSettings.builder() .fileGroupSettings(FileGroupSettings.builder() .destination("s3://" + mConfig.bucket + "/" + mFolder) .build()) .build()) .build()) .build()) .build();
简化方案说明
如果想进一步减少代码量,甚至不需要在Java代码中编写OutputGroup的覆写逻辑,可以直接在作业模板的输出destination字段中配置动态占位符s3://你的目标输出桶/$$,MediaConvert会自动将$$解析为当前任务输入文件的所在目录,实现输入输出同目录的效果。
内容的提问来源于stack exchange,提问作者John Brink
相关产品推荐
相关产品推荐

