Video streaming 当发生以下情况时,如何在DASH URL模板中替换$Time$SegmentTemplate@presentationTimeOffset有人在场吗?
下面是对该问题的较长介绍,该问题是对ISO/IEC规范23009-1:2019(“信息技术-HTTP上的动态自适应流传输(DASH)-第1部分:媒体呈现描述和片段格式”)的分析 介绍 ISO/IEC 23009-1:2019,5.3.9.4.4,表20规定了在构建短线流的段URL时如何替换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$
$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的存在