跳转到:清单和内容要求 | 软件包、平台和播放器
多时段清单与单时段清单
Ad Manager 支持提取 DASH 的多时段清单和单时段清单。
对于单时段清单,发布商提供的 DASH 视频流只有一个时段,其中包含所有内容和插播广告投放机会,而不是使用多个时段来区分它们。DAI 会在每次提取时将单时段清单转换为多时段清单,从而支持单时段清单。
启用调节功能后,您可以将清单选为单时段清单。
为单时段 MPEG-DASH 启用调节功能
若要使用 VOD DAI,请设置一个内容来源,以便 Google Ad Manager 可以提取视频点播 (VOD) 内容。DAI 将使用 MRSS Feed 元素来确定是否应对内容进行 DASH 单时段清单调节。
- 将
ingestUrl
设置为 MPD 内容网址。 - 将
preconditioned
设置为 false。
如果preconditioned
设置为 true,则系统不会为中贴片广告插播时间点调节单时段 DASH 清单。 - 清单将根据清单中的
Event@presentationTime
属性进行拆分,即使广告插入点因以下原因不一致也是如此。 - 如果清单中没有任何
EventStream
元素,则系统会根据广告插入点拆分清单。 - 广告插入点需要与媒体片段边界对齐,否则调节将会失败。
- 在
splice_insert
事件后的 100 毫秒内设置广告插入点。这由广告插入点和Event@presentationTime
属性决定。
清单和内容要求
对于多时段清单
多时段 MPEG-DASH 清单
对多时段 MPEG-DASH 清单的预期
Google DAI 对原始 MPD 执行以下验证。
MPD 元素验证
请设置以下 MPD 元素验证:
type
设置为static
。profiles
设置为以下值:urn:mpeg:dash:profile:isoff-on-demand:2011
.urn:mpeg:dash:profile:isoff-live:2011
.
- 对于同一 MPD 中引用的整体 DASH 内容,必须使用 HTTPS。
Period 元素验证
“Period”元素必须满足以下要求:
- 每个时段都必须指定一个
duration
属性。 - 每个时段都不得指定
start
属性。 - 音频和视频自适应设置在各个时段必须保持一致。
对于单时段清单
单时段 MPEG-DASH 清单 (Alpha)
仅面向少数发布商提供。
对单时段 MPEG-DASH 清单的预期
Google DAI 对原始 MPD 执行以下验证。
内容要求
DASH 内容必须遵循 DASH-IF Interoperability Points(DASH-IF 互操作性要点)中指定的所有规则。
MPEG-DASH
Google DAI 会执行以下验证,并对原始 MPD 做出以下假设。
- MPD 元素验证:
@profiles
设置为urn:mpeg:dash:profile:isoff-live:2011
。@type
设置为static
。- MPD 有且只有一个 Period 元素。
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" type="static" profiles="urn:mpeg:dash:profile:isoff-live:2011" maxSegmentDuration="PT2S" minBufferTime="PT2S">
<Period …>
…
</Period>
…
</MPD>
- Period 元素验证:
- Period 至少有一个
@AdaptationSet
元素。 - 必须至少包含一个嵌套的
EventStream
元素,且该元素包含的Event
元素用要拆分的时段的接合点编码。如需了解接合点编码要求,请参阅 SCTE-35。
<Period id=”1” start="PT0S">
<AdaptationSet …>
…
</AdaptationSet>
<AdaptationSet …>
…
</AdaptationSet>
</Period>
- Period 至少有一个
AdaptationSet
元素验证必须满足以下条件。
确保AdaptationSet
至少有一个@Representation
元素。支持缩略图和字幕自适应集。必须提供字幕自适应集。<AdaptationSet mimeType="video/mp4" startWithSAP="1" contentType="text" par="16:9" minWidth="640" maxWidth="640" minHeight="360" maxHeight="360" maxFrameRate="60/2" segmentAlignment="true">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role>
<ContentComponent id="0" contentType="video" />
<Representation …>
…
</Representation>
<Representation …>
…
</Representation>
</AdaptationSet>
- 完成
Representation
元素验证:- 确保
@id
不为空。 - 不得有
@SegmentBase
或@SegmentList
元素。
<Representation width="640" height="360" sar="1:1" frameRate="60/2" codecs="avc1.64001e" id="V300" bandwidth="300000">
…
</Representation/>
- 确保
- 使用
$Time$
验证SegmentTemplate
:- 确保
SegmentTemplate
元素包含一个嵌套的SegmentTimeline
元素,以便明确指定媒体片段。 SegmentTimeline S
元素可以包含用于媒体网址的S@t
属性。- 如果未提供值,则假定第一个
S
元素的值为0
,后续S
元素的值为前一个S
元素的最早呈现时间和连续时长的和(即,前一个S@t + @d * (@r + 1)
)。 - 未使用
SegmentTemplate@startNumber
。
<SegmentTemplate timescale="90000" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/$Time$.m4s">
<SegmentTimeline>
<S t="0" d="270000" r="20" />
</SegmentTimeline>
</SegmentTimeline>
- 如果未提供值,则假定第一个
- 确保
-
Google DAI 支持 ISO-8601 时长的时间分量部分,并且支持可选的整数“天”分量:
P0Y0M[n]DT[n]H[n]M[n]S
。系统将 1 天视为 24 小时来将“天”分量转换为时长,然后将其加到时间分量中。纳秒是我们认可的最低细分单位。
有效格式示例:
P0Y0M
P0Y0M2D
P2D
PT3H
PT0H3M
P0Y0M0DT0H0M1.000S
P0Y0M1DT2H4M10S
PT0.000000001S
无效格式示例:
P
PT
2007-03-01
P5Y0M1DT2H4M1.000S
P0Y1.5M1DT2H4M1.000S
P0YiM1DT2H4M1.000S
P0Y0M.3DT0H0M1.000S
3h
PT100,000H
字幕
- Google DAI 同时支持 TTML 和 WebVTT 格式的字幕。
- Google DAI 支持通过 MRSS Feed 提供的所有辅助信息字幕文件。
- 在 DASH 清单中指定的辅助信息字幕文件不会转换,也不会出现在调节后的清单中。如果需要辅助信息字幕,则必须通过 MRSS Feed 指定。
不受支持的 DASH 清单辅助信息字幕
<AdaptationSet
id="3"
group="3"
contentType="text"
lang="fr"
mimeType="application/ttml+xml"
startWithSAP="1">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
<Representation
id="textstream_fra=0"
bandwidth="0">
<BaseURL>sub/tears-of-steel-fr.ttml</BaseURL>
</Representation>
</AdaptationSet>
- 支持在
AdaptationSet
中通过contentType
="text" 和SegmentTimeline
指定的片段式字幕,但字幕片段也需要将其片段边界与接合点标记对齐,才能通过验证。
支持的 DASH 清单片段式字幕
<AdaptationSet
id="2"
group="3"
contentType="text"
lang="en"
mimeType="application/mp4"
codecs="stpp.ttml.im1t"
startWithSAP="1">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="subtitle" />
<SegmentTemplate
timescale="1000"
initialization="tears-of-steel-en-$RepresentationID$.dash"
media="tears-of-steel-en-$RepresentationID$-$Time$.dash">
<SegmentTimeline>
<S t="0" d="4000" r="140" />
<S d="3000" />
</SegmentTimeline>
</SegmentTemplate>
<Representation
id="texttream_eng=1000"
bandwidth="1000">
</Representation>
</AdaptationSet>
SCTE-35
- 如果接合点通过以下验证,Google DAI 只会将接合点识别为 DASH
MPD@Period@EventStream@Event
元素中携带的 SCTE-35 标记:- 采用 Base64 编码的 SCTE-35 数据必须包含在
Event@Signal@Binary
元素中。
仅支持splice_insert
。 - 包含带有 SCTE-35 标记的
Events
的EventStream
元素必须将schemeIdUri
设置为urn:scte:scte35:2014:xml+bin
。 - 必须设置
EventStream@timescale
,否则系统会假定将其设置为1
(时间刻度为秒)。 - 必须为每个
Event
元素设置Event@presentationTime
。 Event@Signal@namespace
必须具有命名空间http://www.scte.org/schemas/35/2016
。EventStream
中的事件必须按Event@presentationTime
进行排序。
- 采用 Base64 编码的 SCTE-35 数据必须包含在
Splice_insert
假设
EventStream
中的所有splice_insert
标记都将被视为在广告插播时间点投放广告的机会,也就是说,单时段调节不区分 cue-out 和 cue-in,而是将所有信号都视为在广告插播时间点投放广告的机会。- 用于 DASH VOD 的 Google DAI 不支持拆分片段,因此接合点的呈现时间与最近的片段边界最多只能相差 100 毫秒。
VOD 支持的平台、打包器和播放器
平台 |
||
---|---|---|
设备/浏览器 |
版本 |
DRM |
Chrome 浏览器 |
66+ |
Widevine |
Firefox 浏览器 |
60+ |
Widevine |
Microsoft Edge |
18 |
PlayReady |
Android |
4.4+ |
Widevine |
Chromecast |
第 2 代、Ultra (CAF API) |
Widevine |
Roku |
3、4(固件 8.1) |
PlayReady |
打包器 |
||
---|---|---|
2.1.0 |
多时段支持 |
|
1.47.3 |
多时段支持 |
|
1.11.17 | 单时段支持 |
播放器 |
||
---|---|---|
Shaka |
推荐用于测试 |
|
Bitmovin |
||
Exo-Player |
||
Dash.js |