使用MediaConvert创建任务时指定专属端点仍报错的问题
问题原因
你的代码存在两个关键错误:
- 端点配置位置错误:MediaConvert客户端的专属端点应该直接作为客户端构造函数的顶级配置项,而非嵌套在
settings对象中。 - 参数结构错误:
role不属于客户端配置,需要放到CreateJobCommand的参数里;同时CreateJobCommand的输入输出结构不符合MediaConvert的要求,Input和Output需要用数组形式,且输出格式需配置在OutputGroup中。
修正后的代码
import { MediaConvertClient, CreateJobCommand } from '@aws-sdk/client-mediaconvert'; // 正确配置客户端:端点直接作为顶级属性 const mediaConvertClient = new MediaConvertClient({ region: 'us-east-2', credentials: { accessKeyId, secretAccessKey }, endpoint: MY_ENDPOINT // 这里是正确的端点配置位置 }); // 构造符合要求的任务参数 const createJobCommand = new CreateJobCommand({ Role: MY_ROLE, // Role放在任务参数中 Settings: { Inputs: [ // Inputs为数组格式 { FileInput: `s3://${Bucket}/${Key}` } ], OutputGroups: [ // OutputGroups为数组,包含输出配置 { Name: 'Default Output Group', Outputs: [ { ContainerSettings: { Container: 'MP4' // 指定MP4容器格式 }, VideoDescription: { CodecSettings: { Codec: 'H_264', H264Settings: { Bitrate: 500000, // 可根据需求调整比特率 FramerateNumerator: 30, FramerateDenominator: 1 } } }, AudioDescriptions: [ { CodecSettings: { Codec: 'AAC', AacSettings: { Bitrate: 128000, SampleRate: 48000 } } } ] } ], OutputGroupSettings: { Type: 'FILE_GROUP_SETTINGS', FileGroupSettings: { Destination: `s3://${Bucket}/${OutputKey}` // 替换为你的输出文件路径 } } } ] } }); // 发送任务请求 mediaConvertClient.send(createJobCommand) .then(data => console.log(data)) .catch(err => console.error(err));
关键修正点说明
- 端点配置:将
endpoint从settings移到MediaConvertClient的顶级配置对象中,确保客户端使用指定的专属端点发起请求。 - Role位置:
Role是任务级别的参数,需要包含在CreateJobCommand的参数里,而非客户端全局配置。 - 任务结构:MediaConvert要求输入(Inputs)和输出组(OutputGroups)为数组格式,同时必须明确视频、音频的编码设置以及输出容器类型,不能直接简化为原始代码中的Input/Output字段。
内容的提问来源于stack exchange,提问作者Zohar
相关产品推荐
相关产品推荐

