以下是对该问题的较长介绍,该问题是对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$
的SegmentTemplate
元素,则媒体段i的URL为MediaSegment。URL[i]
,通过将$Time$
标识符替换为MediaSegment[i]获得。在
SegmentTemplate@media
string,如第5.3.9.5.3款所述。
自<代码>媒体段[i]。startTime早前定义为:
— MediaSegment[N].startTime=t[s]−o
(尽管
MediaSegment[N].startTime的单位是秒,这显然是不正确的,因为替换的值应以时间刻度单位表示,以避免四舍五入造成的混淆)
但是第二种方法,指定为与第一种方法等效(“[...]这意味着这个标识符被
SegmentTimeline@t
属性[...]”的值替换),直接与第一种方法相矛盾。
同样在5.3.9.6.1的末尾,我们发现:
-媒体段的段URL是通过将
$Time$
标识符替换为从SegmentTimeline
获得的最早呈现时间来获得的。
这似乎符合第二种方法,因为术语最早呈现时间在3.1.13中根据媒体片段定义,与MPD文档无关。
根据ISO/IEC23009-1:2019,替换
$Time$
的正确值是什么?是SegmentTimeline.S@t
还是SegmentTimeline.S@t
-SegmentTemplate@presentationTimeOffset
?
看起来,使用
$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$
的SegmentTemboard
元素,则通过将$Time$
标识符替换为与此段关联的时间地址来确定位置k处的媒体段的URL。时间地址确定如下:
[...]
如果SegmentTimeline元素存在,则时间地址应通过将
$Time$
标识符替换为5.3.9.6中Segment时间线中记录的第k个段的最早呈现时间来确定。
这似乎传达了与2019年规范部分内容相同的意图。还有2019年标准中的部分:
媒体片段的片段URL是通过将$Time$标识符替换为从片段时间线获得的最早呈现时间来获得的。
在2014年的标准中出现。
然而,2014年的规范已经包含了以下案文:
如果表示包含或继承了带有
$Time$
的SegmentTemplate
元素,则媒体段i的URL为MediaSegment。URL[i]
,通过将$Time$
标识符替换为MediaSegment[i]获得。在
SegmentTemplate@media
string。
而
MediaSegment[i]具有相同的伪代码定义。startTime
作为2019年的标准,这与上述陈述相当混乱和矛盾。尽管如此,我发现2014年的标准没有那么令人困惑,因为上面的引文是我发现的唯一一条建议在计算段URL时应考虑PTO的引文。
如果我们再回到过去,2012年的规范似乎不会对
$Time$
的替换造成混淆,因为它只引用了两次,一次声称应该使用最早的呈现时间,另一次,应该使用@t
并且可以认为这两个引用是等效的。此外,在这个版本的规范中,PresationTimeOffset
的存在几乎可以忽略不计,如果在以后的版本中没有引入更改,很难理解其相关性。
根据ISO/IEC23009-1:2019,什么是正确的值来代替$Time$?是SegmentTimeline.S@t还是SegmentTimeline.S@t-SegmentTemplate@presentationTimeOffset?
正确的值为0。S@t.
presentationTimeOffset
用于偏移介质内部的时间戳,以便将样本放置在介质时间线上的正确位置。
我有一段代码,它是做模板专门化的常用模式。为了移除main函数第一行中为Processor1指定DataType1的要求,我想改为接收一个template模板参数。看起来using指令不支持分配“open”模板参数,而且我在web中找不到任何这样的示例(可能我没有使用适当的关键字进行搜索...) 所以问题很“简单”,我如何让这段代码编译呢?在FindDefaultProcessor中,使用type
在这里,我与Java一起做自动化,与放心一起做宁静。因此,我想用模板中的空白字符串替换第二个 &标记。 这里我附上了模板 我正在使用下面的代码替换第2个 和标记。但它被替换为所有 标记(第一个和最后一个 标记) 如何只替换第2个 和标记?请帮助我完成我的工作。
编辑:我发现如果我向UnmarshallFromTemplate.docx添加一些文本并保存它,它不会替换新的文本行。-标记以某种方式拆分为多个标记: 编辑document.xml中的文本并添加缺少的信息没有多大帮助。 编辑2: 伙计们。我找到了一个非常适合自己的解决办法,不知道为什么花了这么长时间才弄明白。正如我所说的:运行在哪里分裂,原因是在我看来是${}。因此,我只是在占位符之前使用了一个#
问题内容: 看起来新的AngularJS1.5组件概念中没有“替换”选项(就像用于指令一样)。 如果我想将 表格行 元素作为组件,您会提出什么建议?就有效的HTML而言,这是不可能的吗? 实际示例:mailBox组件内部具有邮件组件。通过标记,mail-box-component是table,而mail-box是tr。 UPD :有关指令的相关讨论-为什么AngularJS中不推荐使用replac
我们希望替换整个xml文件中的一些特殊字符,并使用XSLT1.0对xml应用一些模板。 它将产生预期的输出。但这是示例xml文件,但实际上我们有许多节点的xml文件,其中可能包含需要用“*”替换的字符。在选择值时应用转换函数是一个巨大的过程。 有谁能指导我如何替换xml文件中的字符,然后应用模板来使用XSLT1.0获得预期的响应吗?。
问题内容: 我想加载模板Word文档以向其添加内容并另存为新文档。我正在处理.doc文件。 经过长时间的研究,我仅找到docx的解决方案: http://www.smartjava.org/content/create-complex-word-docx-documents- programatically-docx4j http://www.sambhashanam.com/mail-merge