替换视频流参数是一项可选的操作。如果您想让播放器或应用在系统请求 HLS 或 DASH 播放列表时替换视频流创建参数的默认值或者替换所选变体或变体的默认顺序,则可执行此操作。对于 IMA SDK、服务器端信标 (SSB) 和 DAI API 实现,您都可从播放器或应用中传递这些参数。
替换变体选项和顺序
默认的播放列表顺序由发布商决定。如果您未指定任何排序参数,系统便会按照发布商设置的原始顺序返回播放列表。
您可以替换在创建视频流的过程中指定的变体选择和排序参数,以便指定在响应主播放列表请求时应包含哪一部分变体,以及这些变体应采用何种顺序。如果您想根据内容观看者的具体情况让某个特定变体优先于另一个变体,替换视频流变体参数可能会非常有用。
这部分变体及其顺序在相应视频流的整个播放期内将保持不变。这些参数可通过以下形式被接受:作为 adTagParameters 结构的一部分(使用 IMA SDK、DAI API 参数时),或作为额外的 HTTP GET
参数(使用 SSB 时)。
参数 | 流式传输协议 | 说明 | 示例 |
---|---|---|---|
dai-aor |
HLS、DASH | 要返回的音频变体的带宽范围。若要选择所有较高带宽,请仅指定 startBandwidth 。若要选择所有较低带宽,请仅指定 :endBandwidth (以英文冒号“:”为前缀)。 |
dai-aor=60000 |
dai-dlid |
HLS、DASH |
当您为视频点播内容创建 CDN 配置时,可以指定默认的 CDN 配置以及额外的 CDN 投放设置。这样您就可以设置多个 CDN,并在会话开始时使用键值对动态地选择希望从哪个 CDN 分发内容。 在您设置并保存 CDN 配置后,Ad Manager 会为每个配置分配一个名称。此名称应以 如果未向相应请求传递任何名称,则 Ad Manager 会使用默认的 CDN。 |
( |
dai-excl |
HLS、DASH | 要从播放列表中排除的转译版本。支持 subtitles 、codec 、audio-lang 、subtitle-lang 、iframe 和 resolution 。您可使用单个值或一系列以英文逗号分隔的值来排除分辨率、音频编解码器、视频编解码器以及音频和/或字幕语言。系统还支持带有后缀“*”的 Codec 前缀,这会排除带有指定前缀的 codec 的所有转义版本。 |
一个编解码器 多个编解码器 前缀编解码器 一种音频语言 一种字幕语言 多项选择 分辨率 |
dai-os |
HLS | 要放置在主播放列表顶部的视频变体带宽。系统会选择与 startBandwidth 值最接近的变体。如果有两个值与此值同等接近,系统会选择最低值。如果提供了此参数,而未提供 dai-aor ,系统将排除所有仅限音频的变体。 |
dai-os=1700000 |
dai-ot |
HLS |
这是顺序类型信息,用于描述 如果指定了 |
dai-ot=bw dai-ot=bw_res |
dai-ov |
HLS |
这是一系列以英文逗号分隔的值,用于指定要返回的媒体播放列表的顺序。必须和 如果多个变体具有相同的顺序值(例如,带宽相同但分辨率不同的两个变体),这些变体会保持原始顺序。 |
|
dai-sr |
HLS、DASH |
要返回的视频变体的带宽范围。若要选择所有较高带宽,请仅指定 带宽强制执行仅适用于视频内容。
|
dai-sr=1300000:2500000 |
其他可替换参数
参数 | 流式传输协议 | 说明 | 示例 |
---|---|---|---|
dai-ah |
HLS、DASH | 指定某个直播活动是否应该应用暂停显示广告。必须在直播活动配置中指定暂停显示广告的时长。 | 启用“暂停显示广告”:dai-ah=1 |
dai-apto (Beta 版) |
HLS、DASH |
广告连播决策超时时限(以毫秒为单位),用于限制 VOD 和直播活动创建。 此值用于创建视频流期间的中间广告插播决策或既往广告插播决策(而不是创建视频流后的所有未来广告决策)。对于既往的广告插播时间点,这一时限仅在使用 EVENT 类型的播放列表或 dai-dpb 参数时可用。 这一时限可设为任何大于 0 且不大于 10,000 的值。
将这一时限设为非常低/高的值可能会影响广告填充或用户体验。 |
dai-apto=4000 |
dai-dpb |
HLS、DASH |
指定是否要为非 SSB 线性视频流启用既往广告插播决策(对于 SSB 视频流,此参数会被忽略)。如果启用,既往广告插播决策会与中间广告插播决策一同制定。 这可能会影响启动延迟时间,您可以使用 既往广告插播不会被用户看到,除非用户回放,而这可能会导致代码调用次数增多。 |
启用“既往广告插播决策”:dai-dpb=true 为 HLS EVENT 类型的播放列表停用“既往广告插播决策”: dai-dpb=false |
dai-dvr |
HLS、DASH | 用户可以向回滚动并保持播放流畅的直播内容和广告的 DVR 时长(以秒为单位)。
此时长的当前默认值是 100 秒,或是在直播活动设置期间指定的值。不过,您可为每个直播活动指定一个新的上限(对于 SSB,最长可以指定 100 秒;如果使用 SDK 或 API,最长可以指定 1800 秒)。如果您需要更长的 DVR 时长,请与您的客户经理联系。 指南和用法所返回播放列表的实际 DVR 时长可能会略长或略短,具体取决于基本细分的时长。此外,不同变体之间也可能会略有不同。 实际回溯期的最大值不应高于事件中指定的 DVR 回溯期值。否则,系统会自动为此值设置上限。此外,系统也会为 SSB 视频流的 DVR 回溯期设置一个比 SDK 或公共 API 视频流更低的上限值。 虽然我们会尽最大努力返回兼容的清单,但指定非常小或非常大的值可能会导致出现播放问题。您需要使用预期的 DVR 回溯期时长全面测试播放,以确保一切正常。 请避免为不同设备使用不同的回溯期。从效果的角度来看,为一部设备指定 30 秒的回溯期时长,但为其他设备指定 31 秒或 35 秒,并不是合适的做法。您应按不同范围应用回溯期(例如,为一组设备指定 35 秒的回溯期时长,为另一组设备指定 10 分钟的回溯期时长,等等)。这样可以实现更高效的资源分配和效果。 |
dai-dvr=60 |
dai-emsgv |
HLS |
Event Message 版本是一个视频流创建参数,允许调用方为 Common Media Application Format (CMAF) 内容指定“emsg”版本。 HLS 标准要求使用“emsg”版本 1。 对于不支持标准版本 1 且需要版本 0 的平台(例如 Roku),此设置非常有用。
|
dai-emsgv=1 |
dai-pre (Beta 版) |
HLS、DASH | 指定启用了前贴片广告的直播活动是否应在前贴片广告和中贴片广告重叠的情况下展示前贴片广告,而不展示中贴片广告。默认行为是展示重叠部分的中贴片广告,而不展示前贴片广告。 | dai-pre=1 |
参数替换示例
请求
https://dai.google.com/linear/hls/event/<asset_key>/master.m3u8?dai-ot=bw&dai-ov=2025837,1406061
响应
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2025837,RESOLUTION=960x540,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/2025837.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/1406061.m3u8
请求
https://dai.google.com/linear/hls/event/<asset_key>/master.m3u8?dai-ot=bw&dai-ov=audio,1406061
响应
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000,RESOLUTION=480x270,CODECS="mp4a.40.2"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/audio.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/1406061.m3u8
请求
https://dai.google.com/linear/hls/event/<asset_key>/master.m3u8?dai-ot=bw_res&dai-ov=1400000:640x360,audio
响应
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/1406061.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000,RESOLUTION=480x270,CODECS="mp4a.40.2"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/audio.m3u8
请求
https://dai.google.com/linear/hls/event/<asset_key>/master.m3u8?dai-sr=1300000:2500000&dai-aor=60000
响应
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/1406061.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2025837,RESOLUTION=960x540,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/2025837.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000,RESOLUTION=480x270,CODECS="mp4a.40.2"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/audio.m3u8
请求
https://dai.google.com/linear/hls/event/<asset_key>/master.m3u8?dai-os=1700000
响应
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/1406061.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2025837,RESOLUTION=960x540,CODECS="mp4a.40.2,avc1.4d401f"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/2025837.m3u8
包含字幕的原始清单
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="en",NAME="English",AUTOSELECT=YES,URI="tt-en.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="de",NAME="Deutsch",AUTOSELECT=YES,URI="tt-de.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=889549,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f" SUBTITLES="subs"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/889549.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f" SUBTITLES="subs"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/2025837.m3u8
请求
https://dai.google.com/linear/hls/event/<asset_key>/master.m3u8?dai-excl=subtitles
响应
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=889549,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f" SUBTITLES="subs"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/889549.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1406061,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401f" SUBTITLES="subs"
https://dai.google.com/linear/hls/event/<asset_key>/encoder/<encoder_id>/session/<session_id>/bandwidth/2025837.m3u8
包含 ac-3、eac-3 的原始清单
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=6107776,RESOLUTION=1920x1080,CODECS="avc1.640028,ec-3",AUDIO="AUDIO-EAC3"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/6107776.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2212301,RESOLUTION=960x540,CODECS="avc1.640028,ec-3",AUDIO="AUDIO-EAC3"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/2212301.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=6295776,RESOLUTION=1920x1080,CODECS="ac-3,avc1.640028",AUDIO="AUDIO-AC3"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/6295776.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2400301,RESOLUTION=960x540,CODECS="ac-3,avc1.640028",AUDIO="AUDIO-AC3"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/2400301.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=6045381,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2",AUDIO="AUDIO-AAC"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/6045381.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2149906,RESOLUTION=960x540,CODECS="avc1.640028,mp4a.40.2",AUDIO="AUDIO-AAC"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/2149906.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-eac3.m3u8",GROUP-ID="AUDIO-EAC3",LANGUAGE="en",NAME="ENGLISH",AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-ac3.m3u8",GROUP-ID="AUDIO-AC3",LANGUAGE="en",NAME="ENGLISH",AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-aac.m3u8",GROUP-ID="AUDIO-AAC",LANGUAGE="en",NAME="ENGLISH",AUTOSELECT=YES
排除一个编解码器
请求
http://truman.com/ssai/event/<event_code>/master.m3u8?dai-excl=codec:ec-3
响应
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=6295776,RESOLUTION=1920x1080,CODECS="ac-3,avc1.640028",AUDIO="AUDIO-AC3"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/6295776.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2400301,RESOLUTION=960x540,CODECS="ac-3,avc1.640028",AUDIO="AUDIO-AC3"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/2400301.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=6045381,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2",AUDIO="AUDIO-AAC"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/6045381.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2149906,RESOLUTION=960x540,CODECS="avc1.640028,mp4a.40.2",AUDIO="AUDIO-AAC"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/2149906.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-ac3.m3u8",GROUP-ID="AUDIO-AC3",LANGUAGE="en",NAME="ENGLISH",AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-aac.m3u8",GROUP-ID="AUDIO-AAC",LANGUAGE="en",NAME="ENGLISH",AUTOSELECT=YES
排除多个编解码器
请求
http://truman.com/ssai/event/<event_code>/master.m3u8?dai-excl=codec:ec-3,codec:ac-3
响应
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=6045381,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2",AUDIO="AUDIO-AAC"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/6045381.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2149906,RESOLUTION=960x540,CODECS="avc1.640028,mp4a.40.2",AUDIO="AUDIO-AAC"
https://truman.com/ssai/hls/event/<event_code>/encoder/<encoder_id>/session/<session_id>/bandwidth/2149906.m3u8
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-aac.m3u8",GROUP-ID="AUDIO-AAC",LANGUAGE="en",NAME="ENGLISH",AUTOSELECT=YES