AWS Media Convert输出至S3:如何取消GUID下的子文件夹?
我基于AWS Video on Demand Foundation方案搭建工作流,将MP4文件上传至S3存储桶后,转换后的文件路径结构为<guid>/<OutputGroups/CustomName>/file.xxx。若删除job-settings.json中的CustomName,路径则变为<guid>/AppleHLS1/file.xxx或<guid>/FileGroup1/file.xxx。我希望所有文件组的文件直接存放在GUID文件夹下,不生成其子文件夹,请问能否覆盖Media Convert默认创建子文件夹的行为?
可以覆盖MediaConvert默认创建子文件夹的行为,具体需要修改job-settings.json中的配置,步骤如下:
统一设置OutputGroup的Destination路径
针对每个OutputGroup,将Destination字段直接指向GUID对应的S3根路径,不要在其后追加子文件夹名称。比如把原本的s3://your-bucket/<guid>/<CustomName>/修改为s3://your-bucket/<guid>/。调整文件名避免冲突
多个OutputGroup的文件存放在同一目录时,必须确保文件名不重复。可以通过两种方式实现:- 在Output的
NameModifier中添加唯一标识,比如_1080p、_hls、_audio - 对于HLS输出组,可在
HlsSettings里设置SegmentModifier,给所有分片文件添加统一后缀
- 在Output的
移除OutputGroup的CustomName配置
删除所有OutputGroup中的CustomName字段,避免MediaConvert自动生成默认子文件夹名称(如AppleHLS1、FileGroup1)。
修改后的job-settings.json中OutputGroup部分示例:
"OutputGroups": [ { "Name": "Apple HLS", "OutputGroupSettings": { "Type": "HLS_GROUP_SETTINGS", "HlsGroupSettings": { "Destination": "s3://your-bucket/${jobMetadata:guid}/", "SegmentLength": 10, "SegmentModifier": "_hls" } }, "Outputs": [ { "VideoDescription": {...}, "AudioDescriptions": [...], "NameModifier": "_1080p" } ] }, { "Name": "MP4 File", "OutputGroupSettings": { "Type": "FILE_GROUP_SETTINGS", "FileGroupSettings": { "Destination": "s3://your-bucket/${jobMetadata:guid}/" } }, "Outputs": [ { "VideoDescription": {...}, "AudioDescriptions": [...], "NameModifier": "_720p_mp4" } ] } ]
- 确认MediaConvert执行角色拥有目标S3路径的写入权限
- 必须通过文件名后缀或标识区分不同输出组的文件,防止文件被覆盖
- HLS输出的m3u8索引文件和ts分片都会直接存放在GUID目录下,SegmentModifier可确保分片文件名不会和其他输出冲突
内容的提问来源于stack exchange,提问作者Rex Reyes

