AWS MediaConvert生成的DASH MPD文件在Android Exoplayer无音频问题
ExoPlayer播放AWS MediaConvert生成的DASH流无音频的核心差异点
核心差异点
- 音频编码格式差异:你生成的MPD中音频编码为
mp4a.40.5(即HE-AAC v1),可正常播放的参考MPD音频编码为mp4a.40.2(即LC-AAC)。ExoPlayer 2.15.1版本对SegmentBase单文件封装的HE-AAC流适配存在缺陷,部分安卓设备的硬件解码器也默认不兼容该封装格式的HE-AAC,会直接跳过音频轨加载。 - 音频AdaptationSet配置错误:你的音频AdaptationSet中
segmentAlignment属性值为0(即不启用段对齐),且未添加startWithSAP="1"属性,参考MPD对应属性为segmentAlignment="true"且明确标注了随机接入点配置。ExoPlayer解析非对齐、无随机接入点标记的音频段时,会判定音频轨不可用,不进行加载。 - 缺少音频声道配置字段:参考MPD的音频Representation节点下明确配置了
<AudioChannelConfiguration>标签标注声道数,你的MPD中完全缺失该字段。ExoPlayer 2.15.1的DASH解析器解析urn:mpeg:dash:profile:isoff-main:2011profile的静态MPD时,无此字段会无法识别音频声道参数,直接忽略音频轨。 - 音频轨分设独立AdaptationSet:你将96kbps、64kbps两个码率的音频放在两个独立的AdaptationSet中,且二者语言参数均为
eng。ExoPlayer 2.15.1的轨选择逻辑存在已知bug,面对同语言多独立音频AdaptationSet时会默认不选择任何音频轨,正确的做法是将同语言多码率音频Representation放在同一个AdaptationSet节点下。
快速验证方案
你可以先手动修改本地MPD文件测试:将两个音频Representation合并到同一个AdaptationSet,补充segmentAlignment="true" startWithSAP="1"属性到AdaptationSet节点,给每个音频Representation节点添加<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>,修改后如果可以正常输出音频,再对应调整MediaConvert的输出配置即可。
内容的提问来源于stack exchange,提问作者Cb32019
相关产品推荐
相关产品推荐

