本文介绍使用广告插入过程中涉及的协议。
HLS协议
广告插入功能支持HLS协议。以下是常见的HLS协议(m3u8)主清单和媒体清单内容示例:
主清单
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=100000,CODECS="mp4a.40.2,avc1.64001e",RESOLUTION=640x302
video/player-ld.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=200000,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=848x402
video/player-sd.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=300000,CODECS="mp4a.40.2,avc1.640020",RESOLUTION=1280x606
video/player-hd.m3u8
媒体清单
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:17
#EXTINF:15.500,
1723518810_120.ts
#EXT-X-DISCONTINUITY
#EXTINF:16.666,
1723518884_121.ts
#EXTINF:2.533,
1723518886_122.ts
#EXT-X-ENDLIST使用广告插入时,需注意以下事项:
清单必须可公网访问。
清单必须是直播或视频点播(VOD)。
清单
EXT-X-VERSION>=3。HLS清单必须符合主+子的清单结构(主清单+媒体清单),支持HLS+TS(.m3u8 + .ts)和HLS+CMAF(.m3u8 + .m4s)的清单源。
HLS主清单中的
#EXT-X-STREAM-INF必须包含RESOLUTION、BANDWIDTH和CODEC字段。对于直播内容,清单必须包含描述广告效用的标记。对于VOD内容,广告标记是可选的,可以改用VMAP时间偏移。
广告标记
插入了广告标记的m3u8媒体清单示例:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:14
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-DISCONTINUITY
#EXT-OATCLS-SCTE35:{BASE64}(可选)
#EXT-X-CUE-OUT:60.00
...
#EXT-X-CUE-OUT-CONT:ElapsedTime=5.0,Duration=10.0,SCTE35={BASE64}(可选)
...
#EXT-X-CUE-IN
#EXTINF:16.666,
1723518884_121.ts
#EXTINF:2.533,
1723518886_122.ts
#EXT-X-ENDLIST#EXT-OATCLS-SCTE35,#EXT-X-CUE-OUT,#EXT-X-CUE-IN,#EXT-X-CUE-OUT-CONT为广告标记。
#EXT-X-CUE-OUT与#EXT-X-CUE-IN之间的切片为广告内容。
广告服务器要求
接入的广告服务器需要遵循 VAST 和 VMAP 规范以及 IAB 制定的行业标准。
目前只支持VAST线性广告,只支持MP4格式,支持返回多个广告,每个广告中如果有多个MediaUrl则优先选择最高分辨率的广告。
支持VMAP协议,其中AdTagURI必须响应VAST协议。
IAB标准相关资料:https://iabtechlab.com/standards/video-player-ad-interface-definition-vpaid/
VAST相关资料:https://www.iab.com/guidelines/vast/
VMAP相关资料:https://www.iab.com/guidelines/vmap/