如何阻止AWS Elemental MediaConvert截断音频静音部分?
解决AWS MediaConvert/Elastic Transcoder截断静音音频的问题
一、AWS Elemental MediaConvert 调整方案
核心是强制MediaConvert保留完整的音频轨道时长,需修改以下两处配置:
1. 修正Input配置
在Job的Settings.Inputs中,确保AudioSelector的AudioDurationCorrection设为TRACK,同时TimecodeSource设为ZEROBASED(避免依赖嵌入时间码导致的截断),移除不必要的Offset参数:
"Settings": { "Inputs": [ { "AudioSelectors": { "Audio Selector 1": { "DefaultSelection": "DEFAULT", "SelectorType": "TRACK", "Tracks": [1], "AudioDurationCorrection": "TRACK" } }, "VideoSelector": { "ColorSpace": "FOLLOW" }, "FilterEnable": "AUTO", "PsiControl": "USE_PSI", "FilterStrength": 0, "DeblockFilter": "DISABLED", "DenoiseFilter": "DISABLED", "TimecodeSource": "ZEROBASED", "FileInput": "my-input-file" } ] }
2. 统一模板与Job的Timecode配置
确保JobTemplate中的TimecodeConfig.Source保持ZEROBASED,与Input的TimecodeSource一致,避免时间码不匹配:
"TimecodeConfig": { "Source": "ZEROBASED" }
二、对应ffmpeg -af aresample=async=1 的MediaConvert设置
ffmpeg的aresample=async=1作用是强制音频流时长严格匹配输入轨道,对应MediaConvert中的AudioDurationCorrection参数:
- 将AudioSelector的
AudioDurationCorrection设为TRACK,即可让MediaConvert以原始音频轨道的时长为准,不自动截断静音部分。
三、AWS Elastic Transcoder 替代方案
若使用Elastic Transcoder,可创建如下预设并配置Job:
1. 音频转码预设示例(MP3输出)
{ "Name": "Preserve-Full-Duration-MP3", "Container": "mp3", "Audio": { "Codec": "mp3", "BitRate": 96000, "SampleRate": 48000, "Channels": 2 }, "Thumbnails": { "Format": "none" } }
2. Job配置关键项
确保TimeSpan设置为完整文件,不做截断:
{ "PipelineId": "YOUR_PIPELINE_ID", "Input": { "Key": "my-input-file", "FrameRate": "auto", "Resolution": "auto", "AspectRatio": "auto", "Interlaced": "auto", "Container": "auto" }, "Output": { "Key": "my-output-file.mp3", "PresetId": "YOUR_PRESET_ID", "TimeSpan": { "StartTime": "0", "Duration": "auto" } } }
内容的提问来源于stack exchange,提问作者fblundun
相关产品推荐
相关产品推荐

