Video streaming 当发生以下情况时,如何在DASH URL模板中替换$Time$SegmentTemplate@presentationTimeOffset有人在场吗?

Video streaming 当发生以下情况时,如何在DASH URL模板中替换$Time$SegmentTemplate@presentationTimeOffset有人在场吗?,video-streaming,iso,mpeg-dash,Video Streaming,Iso,Mpeg Dash,下面是对该问题的较长介绍,该问题是对ISO/IEC规范23009-1:2019(“信息技术-HTTP上的动态自适应流传输(DASH)-第1部分:媒体呈现描述和片段格式”)的分析 介绍 ISO/IEC 23009-1:2019,5.3.9.4.4,表20规定了在构建短线流的段URL时如何替换$Time$标识符: 此标识符将替换为 正在访问的段的MPD开始时间。对于 段时间线,这意味着该标识符 被替换为的值 SegmentTimeline@t段的属性 正在访问。无论是$Number$还是$Time$

下面是对该问题的较长介绍,该问题是对ISO/IEC规范23009-1:2019(“信息技术-HTTP上的动态自适应流传输(DASH)-第1部分:媒体呈现描述和片段格式”)的分析

介绍 ISO/IEC 23009-1:2019,5.3.9.4.4,表20规定了在构建短线流的段URL时如何替换
$Time$
标识符:

此标识符将替换为 正在访问的段的MPD开始时间。对于 段时间线,这意味着该标识符 被替换为的值
SegmentTimeline@t
段的属性 正在访问。无论是
$Number$
还是
$Time$
都可以 可以同时使用,但不能同时使用

但是,当
SegmentTemplate@presentationTimeOffset
为非零,以上两种方法是互斥的

第5.3.9.5.3节中也重复了第一种方法(“用所访问段的MPD开始时间值替换该标识符”):

如果表示包含或继承带有
$Time$
分段模板
元素,则 位置k处媒体段的URL通过将
$Time$
标识符替换为 此段的MPD开始时间,如下所述

规范在5.3.9.6.1中定义了MPD开始时间:

@t
属性减去
@presentationTimeOffset
的值,指定第一次MPD的开始时间 系列中的片段

此外,A.3.3似乎更正式地确认了第一种方法:

如果表示包含或继承了带有
$Time$
段模板
元素,则 通过将
$Time$
标识符替换为,可以获得媒体段i,
mediasection.URL[i]
MediaSegment[i]。在
SegmentTemplate@media
string,如子条款所述 5.3.9.5.3

由于
MediaSegment[i].startTime
在前面定义为:

— MediaSegment[N].startTime=t[s]−o
(尽管MediaSegment[N].startTime的单位为秒,但这显然是不正确的,因为替换值应以时间刻度单位表示,以避免四舍五入造成混淆)

但是第二个方法被指定为与第一个方法等效(“[…”),这意味着该标识符被
SegmentTimeline@t
attribute[…]”,与第一个直接冲突

同样在5.3.9.6.1的末尾,我们发现:

-通过将
$Time$
标识符替换为最早的标识符,可以获得媒体段的段URL 从
分段时间线
获取的演示时间

这似乎与第二种方法一致,因为术语“最早呈现时间”在3.1.13中根据媒体段定义,与MPD文件没有任何关系

问题: 根据ISO/IEC 23009-1:2019,用什么值来代替
$Time$
?是
时间线。S@t
分段时间线。S@t
-
SegmentTemplate@presentationTimeOffset

ISO/IEC 23009-1的历史 似乎使用
$Time$
模板占位符寻址段的想法并不是根据其最早的显示时间,而是根据使用PTO调整的最早的显示时间,随着时间的推移而发展

如果我们回到ISO/IEC 23009-1:2014,我们可以看到5.3.9.4.4表16(2019年标准中的表20)中对
$Time$
的描述,没有使用术语“MPD开始时间”:

此标识符将替换为 SegmentTimeline@t段的属性 正在访问。[……]

这似乎并不令人困惑。我们还可以在5.3.9.5.3中看到:

-如果表示包含或继承带有
$Time$
分段模板
元素,则 位置k处媒体段的URL通过将
$Time$
标识符替换为 与此段关联的时间地址。时间地址确定如下:

[……]

如果存在时间段元素,则时间地址应由 将
$Time$
标识符替换为第k段的最早显示时间,如下所示: 记录在5.3.9.6中的分段时间线中

这似乎传达了与2019年规范部分内容相同的意图。此外,2019年标准中的部分:

通过将$Time$标识符替换为最早的标识符,可以获得媒体段的段URL 从时间轴获得的演示时间

在2014年标准中出现

然而,2014年的标准已经包含以下内容:

如果表示包含或继承了带有
$Time$
段模板
元素,则 通过将
$Time$
标识符替换为
MediaSegment[i]。在
SegmentTemplate@media
string

而与2019年标准相同的
MediaSegment[i].startTime
伪代码定义,这与上述陈述相当混乱和矛盾。 尽管如此,我发现2014年的标准没有那么令人困惑,因为上面的引文是我发现的唯一一条建议,即在计算段URL时应考虑PTO

如果我们再往回看一看,2012年的标准似乎不会引起关于替换
$time$
的混淆,因为它只引用了两次,一次声称应该使用最早的呈现时间,另一次则应该使用
@t
,这两个引用可以被认为是等效的。还有
presentation的存在