如何在AWS MediaLive HLS流输出中添加squeezeback广告
基于AWS MediaLive为S3存储交付的HLS流添加Squeezeback广告配置方案
Squeezeback广告(主内容缩至屏幕角落、广告占据剩余显示区域的效果)可以直接在MediaLive转码编排环节完成合成,最终输出的HLS流直接存储到S3即可,不需要播放端做额外适配,具体操作如下:
前置准备
- 提前准备广告素材:优先编码为和主视频一致的H.264/AAC格式MP4文件,分辨率匹配主HLS输出分辨率。如果选择「广告层全屏铺底、主视频缩小后悬浮在上层」的实现逻辑,广告素材不需要做透明通道;如果选择「广告层在上、预留主视频显示窗」的逻辑,需要给广告素材对应位置加Alpha透明通道。
- 提前确认广告触发规则:明确是固定时间点触发、固定间隔触发,还是基于源内容自带的SCTE-35标记触发,提前梳理好每个广告的时长、插入位置。
具体配置步骤
1. 补充输入源配置
保留原有存储在S3的主视频输入不变,给当前MediaLive通道新增广告素材输入附件:
- 固定不变的预录广告直接存在S3,作为文件输入挂载即可
- 需要动态更新的广告可以配置为RTMP推送输入,或者后续对接MediaTailor做动态广告拼接
2. 配置画面合成规则(核心步骤)
进入通道的「视频合成(Video Compositing)」配置项,按需求设置两层画面的布局和触发逻辑:
- 主视频轨规则:广告触发时段,将主输入画面按比例缩小至原尺寸的20%-30%,锚定到预设角落(一般为右下角),开启
Maintain Aspect Ratio开关避免画面拉伸变形;广告结束后自动恢复全屏尺寸。 - 广告轨规则:广告触发时段,将广告输入画面铺满全屏,画面层级设置为主视频层下方即可(如果用带透明通道的上层广告素材,就把广告层级设为主视频上方)。
- 触发规则配置:固定时间点插入的广告直接在通道调度Schedule里添加定时事件,到点自动触发画面布局切换、启动广告输入播放,广告时长结束后自动切回原布局;基于SCTE-35触发的广告,直接配置事件触发规则,匹配到对应splice_insert标记时自动执行布局切换即可。
3. 调整HLS输出配置
输出组保持原有HLS输出配置即可,目标存储路径还是原来的S3桶路径,注意几个细节:
- 多码率自适应流的所有码率输出,要配置完全一致的合成规则、触发时间,避免不同码率切流时出现画面跳变
- HLS分片时长保持原有配置(通常2-6秒),不要随意修改,避免已有的播放端缓存策略失效导致卡顿
- 如果需要后续做广告播放统计,可以开启SCTE-35/ID3标记透传,不需要的话直接关闭即可,不影响画面效果
4. 动态广告场景可选配置
如果需要频繁更换squeezeback广告内容、不想每次修改MediaLive通道配置,可以把MediaLive输出的原始HLS流接入AWS MediaTailor,在MediaTailor侧配置squeezeback广告的动态拼接规则,由MediaTailor完成广告素材拉取、画面合成后,再将最终流交付到S3或分发给观众,适合广告投放量级大、更新频繁的场景。
常见问题排查
- 触发广告时音画不同步:检查广告素材的音频采样率、帧率是否和主视频完全一致,不一致的话重新编码广告素材对齐参数
- 多码率流切流时广告位置偏移:确认所有码率输出的画面缩放坐标、层级配置完全相同,不要给不同码率设置不同的小窗位置
- 主视频缩放后出现黑边:检查缩放配置的宽高比计算是否正确,不要给主视频小窗设置和原视频比例不匹配的分辨率
内容的提问来源于stack exchange,提问作者muraliv
相关产品推荐
相关产品推荐

