首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何浏览TTML并将所有的字幕转换成JSON文件

如何浏览TTML并将所有的字幕转换成JSON文件
EN

Stack Overflow用户
提问于 2019-09-03 03:42:32
回答 2查看 123关注 0票数 0

我有一个包含视频字幕的ttml文件,我想通过所有的时间\字幕对获取并将它们放到一个JSON文件中,我已经尝试过https://www.npmjs.com/package/ttml?activeTab=readme,但它不能工作。有什么想法吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-09-03 19:11:24

尝试在https://github.com/sandflow/imscJS中查找提取中间同步文档(ISD)的代码-例如,文件isd.js可能是相关的。

顺便说一句,值得注意的是,TTML中的数据模型并不完全匹配成对的时间和单个标题之间的映射。您可能会得到副本。

每个ISD都是时间线上两个时刻之间的快照,其中呈现的内容不会发生变化。

这是一个重要的区别,因为在TTML中,可能会有相同的“标题”出现在与其他标题出现和消失重叠的时间,例如:

代码语言:javascript
复制
...
<div begin="10s" end="20s">
  <p>This text appears at 10s and disappears by 20s</p>
  <p end="5s">This text appears at 10s and disappears by 15s</p>
  <p begin="5s">This text appears at 15s and disappears by 20s</p> 
</div>
...

因此,ISDs中的结果是:

0->10s nothing

10s->15s

此文本以10秒的速度显示,以20秒的速度消失

此文本以10s的速度显示,以15s的速度消失

15s->20s

此文本以10秒的速度显示,以20秒的速度消失

此文本在15s时出现,在20s时消失

20s->无

如您所见,第一行出现在两个ISD中。当然,这取决于您在应用程序中如何处理此问题。

票数 0
EN

Stack Overflow用户

发布于 2021-02-06 02:19:57

对于偏爱Python的人来说,ttconv可以将TTML/IMSC文档拆分成一系列中间同步文档( Intermediate Synchronic,is ),每个文档对应一段时间,其中TTML/IMSC文档的内容是静态的。

代码语言:javascript
复制
import ttconv.imsc.reader
import ttconv.isd
import xml.etree.ElementTree as et

tt_doc = """<?xml version="1.0" encoding="UTF-8"?>
  <tt xml:lang="fr" xmlns="http://www.w3.org/ns/ttml">
  <body>
    <div>
      <p begin="1s" end="2s">Hello</p>
      <p begin="3s" end="4s">Bonjour</p>
    </div>
  </body>
  </tt>"""

m = ttconv.imsc.reader.to_model(et.ElementTree(et.fromstring(tt_doc)))

st = ttconv.isd.ISD.significant_times(m)

for t in st:
  isd = ttconv.isd.ISD.from_model(m, t)
  
  # convert ISD to JSON

ttconv还支持从TTML/IMSC到SRT的转换,这是一种简单的基于文本的格式。但是,所有样式信息都会丢失。

代码语言:javascript
复制
tt.py convert -i <input .ttml file> -o <output .srt file> --otype SRT --itype TTML
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57761966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档