问题标签 [ttml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2527 浏览

c# - 如何在运行时将任意命名空间添加到 XslCompiledTransform?

我正在尝试对定时文本标记语言 (TTML) 文档进行非常简单的转换。这是一个 TTML 文件的极简示例:

请注意文档的默认命名空间。这是我遇到的问题的关键。

这是我正在使用的转换。这就是全部,非常简单。

我们的数据集有数百个文档,它们并不都具有相同的默认命名空间。但是,正如您从上面的 XSLT 中看到的那样,转换很简单并且基于核心数据元素<p />,因此最终命名空间变化并不重要。

由于 XSLT 文件具有明确定义的名称空间前缀 ( tt),因此上述 XSL 当前适用于某些源文件。但是,当遇到另一个具有不同默认命名空间的源文件时,这不起作用。

所以我需要找到一种方法,为 XSLT 提供一个已知前缀的任意未知名称空间值。我有可用于查找源文档默认命名空间的代码:

这正确地给了我http://www.w3.org/2006/04/ttaf1. 但是,我似乎无法弄清楚如何处理这个值。我已经搜索和试验了很多小时,试图以某种方式为XslCompiledTransform实例提供变量命名空间。似乎在变换本身的区域内没有任何东西可以接受它。

我已经尝试将 XSLT 文件显式加载到一个XmlDocument中以操作名称表(在删除xmlns:tt="..."上述 XSLT 中的显式命名空间声明之后):

这一直运行到实际的转换,在那里我得到一个XslLoadException说明Prefix 'tt' is not defined.

我在这一点上不知所措。我可以从搜索中找到的所有内容都讨论了将名称空间放入 XSLT 文档(我已经拥有,它适用于一个名称空间值)。我在 MSDN 文档或其他地方找不到任何解释如何将命名空间定义动态添加到转换中的内容。

有人有想法么?

0 投票
3 回答
1715 浏览

xml - Use AS3 to parse XML node attribute that has a colon

I have the following XML document:

I load the contents into my flash object using AS3 successfully. But how do print/trace the value of the attribute in <div xml:lang="it">? When I try the code:

The compiler complains about the syntax error presented by the colon.

0 投票
2 回答
3870 浏览

c# - 解析 XML 以将时间文本标记转换为 WebVTT

我正在开发一个 Web 应用程序,它可以接收时间文本标记(TTML)或WebVTT格式的字幕文件。如果文件是定时文本,我想把它翻译成 WebVTT。这基本上不是问题,我遇到的一个问题是,如果 TTML 将 HTML 作为文本内容的一部分,那么 HTML 标记就会被删除。

例如:

结果是:

我使用的代码是:

任何关于我遗漏的想法,或者是否有更好的方法,或者即使已经有将时间文本转换为 WebVTT 的解决方案,我们都将不胜感激。谢谢。

0 投票
1 回答
1585 浏览

c# - XDocument.Save() 在每个 XElement 上添加不需要的命名空间

我有以下 XML:

当我加载它XDocument.Load()然后保存它XDocument.Save()而不做任何更改时,我拥有的新 XML 文件如下:

有没有一种优雅的方式来加载和保存这种 XML 而无需更改任何内容?

谢谢!

0 投票
1 回答
1162 浏览

javascript - 添加带有 Popcorn TTML 字幕的视频元素

我有一个页面,我想使用 PopcornJS 插入带有 TTML 字幕的视频元素,如您在此 Fiddle中所见。一切正常,除了字幕。他们不显示。当我做诸如<video src="myvideo.mp4" data-timeline-sources="data.ttml" />字幕之类的事情时,它可以正常工作。

那么我在这里做错了什么,还是 PopcornJS 无法插入video元素,设置data-timeline-sources属性并使用该字幕文件播放视频?

我的 data.ttml 字幕文件如下所示:

0 投票
3 回答
550 浏览

specifications - W3C TTML时序属性说明

W3C TTML dfxp 标准中,一个div元素可以包含begin,endduration属性。

如何解读这些时序属性的值?

例子:

何时呈现p元素?

任何指向 TTML 规范/实现的指针都会有所帮助。

0 投票
2 回答
1469 浏览

google-cast - ChromeCast TTML 隐藏式字幕与平滑流和 PlayReady

嗨!

我想创建一个支持 TTML 类型隐藏字幕的应用程序。

我的 ism/manifest 文件包含基于 TTML 的隐藏式字幕,请问我该如何使用它?

我找到了这个网站, https://developers.google.com/cast/docs/player ,他们在其中描述了以下内容:

分段 TTML 和 WebVTT

使用分段 TTML 进行平滑流式处理和 WebVTT - HLS 的 Web 视频文本轨道。

启用:

protocol_.enableStream(streamIndex, true); player_.enableCaptions(true);

但我找不到我的问题的例子。在接收方创建主机后是否必须启用此功能?是否有任何示例应用程序?

更新#1

这是我的代码:

它不起作用。所以我决定获取流:

streamCount 包含 0。清单包含隐藏式字幕,我应该使用其他东西,而不是 getStreamCount()?

非常感谢!

0 投票
2 回答
650 浏览

google-cast - Chromecast 将 TTML URL 添加到 Smooth Stream 清单

我想在我的接收器应用程序中使用 TTML 字幕 URL 更新 SmoothStreaming chromecast 播放器。我的清单文件从一开始就不包含这个 URL,所以我需要添加它:

我在播放器启动并将元数据加载到媒体元素后立即执行此操作(如其他帖子中所建议的那样),但是在查看

我只得到两个流:一个用于视频,一个用于音频。我在那里看不到任何字幕的迹象。我还尝试覆盖主机对象中的清单信息(这适用于许可证 url):

但是在我调用 enableCaptions 函数之前不会调用此函数(并且仅在我添加第三个参数时才调用,此时第三个参数是不必要的,因为它被 updateCationsRequestInfo 函数覆盖)。

有谁知道如何检查字幕请求是否在某处被接受或拒绝,以及如何处理?最好不要使用 updateCationsRequestInfo(),因为这样我就可以在播放期间更改字幕。

问题可能是 url 看起来不像 ttml 链接(它是通过转换器传递的另一种格式)?

感谢您的帮助!

关于 CORS 的更新:

我在调用 player.enableCaptions() 之前记录了 ttml-url,如果我跟随 url,我会得到 ttml 文件(响应标题:Content-Type:text/xml 和一些与 CORS 相关的标题)。在谷歌开发工具中,我看不到任何与 player.enableCaptions() 相关的内容,没有错误或成功消息。所以它与 CORS 问题无关。

0 投票
2 回答
311 浏览

google-cast - ChromeCast 解析分段 TTML

嗨!

我有一个带有 Smooth Streaming 和 PlayReady 的 ism 文件。这个ism包含分段ttml格式的标题。

但是这个 ttml 有一个换行符,例如: p8:br 我如何解析它并将这些字符替换为 /n (或 Google ChromeCast 可以处理的任何内容)?

所以我可以看到两行而不是一行的字幕。

我知道我可以使用 protocol.getStreamInfo(index) 获取流信息,但是之后我能做什么?

更新#1

我们为其他平台做一个应用程序,方法如下。ttml 变量包含电影的标题。

在换行符替换为“\n”后,应用程序开始显示当前文本取决于时间(例如,电影底部有一个标签。)

更新#2

以下是 dfxp 的示例:

在示例的最后一行,设备无法识别字符并以下列方式显示字幕:

A cukornádföldön voltam.Akkor kapott el, mikor egyedül voltam。

代替

一个 cukornádföldön 伏特姆。

Akkor kapott el, mikor egyedül voltam。

所以我想在 ChromeCast API 的帮助下做一些类似的操作。但这只是简单地更改字符会更容易,因为 ChromeCast 可以完美地处理时间。

非常感谢!

0 投票
2 回答
1248 浏览

chromecast - Chromecast 字幕支持

玩了很多 Chromecast 以找到一个很好的隐藏式字幕解决方案(在我的项目中,我们已经使用 TTML 和分段 WEBVtt - 两者都不能“按原样”工作)我非常惊讶地发现我的最后一个好主意,不支持手动将“new VTTCue()”添加到 textTrack 元素。

我在这里阅读了很多问题的答案,其中的答案类似于“自己动手”,比如这个Chromecast 支持 TTML 吗?.

您可以简单地编写一个 Javascript 解析器来解析 [ttml] 文件,并使用 addTextTrack() 等方法在 javascript 中将提示添加到您的视频元素

好吧,它确实说这里支持 TTML https://github.com/googlecast/CastClosedCaptioning-chrome但没关系。

因此,未能通过谷歌搜索答案(VTTCue 的替代代码)我求助于专业人士 - 我如何添加不支持 VTTCue 的提示?

我真正真正认为(希望)会起作用:

注意:这是为了避免将 TTML 写入 WEBVtt 转换器或分段 WEBVtt 组合器