是否有一个解析/显示SMPTE定时文本(字幕)xml文件的android库?

时间:2013-08-07 20:11:22

标签: android xml captions closed-captions

我正在远程检索SMPTE Timed Text xml文件,我需要将其解析并作为标题绘制到表面。

此处定义了完整的文件格式:

https://www.smpte.org/sites/default/files/st2052-1-2010.pdf

xml看起来像这样:

<tt xmlns="http://www.w3.org/ns/ttml">
    <head>
        ...
    </head>
    <body>
        <p begin="00:00:33:03" end="00:00:37:24" region="pop1" style="basic" tts:origin="20% 79.33%" tts:extent="60% 5.33%">It is on a little world,</p>
        <p begin="00:01:29:23" end="00:01:31:10" region="pop2" style="basic" tts:origin="30% 84.67%" tts:extent="50% 5.33%">GIVING INSTRUCTIONS)</p>
        ...
    </body>
</tt>

基本上每个p标签都定义了时间和位置以及一些要绘制的文本。我无法在Android上找到任何本地或第三方库来帮助解决这个问题。

我正在寻找一个库来将xml文件读入某种有组织的数据结构中。从那里我可以处理绘图,如果需要的话。

在我自己开始编写之前,任何指针都会有所帮助,因为考虑到所有不同的参数都会变得非常复杂。

三江源。

1 个答案:

答案 0 :(得分:0)

我能够使用simple库编组到以下类中。为简洁起见,移除了塞特和吸气剂。在这一点上,代码只是一个概念证明,但你明白了。

Caption.java

// single caption to display (from SMPE-TT file)
@Root (name="p", strict=false)
public class Caption
{
    @Element (required = false, name = "font")
    private String caption;

    @Attribute
    private String begin;

    @Attribute
    private String end;

    @Attribute (required = false)
    private String origin;

    @Attribute (required = false)
    private String style;

    @Attribute (required = false)
    private String space;
}

TimedText.java

// class for marshalling the entire SMPE-TT file
@Root (name="tt")
public class TimedText
{
    @Attribute (required=false)
    private String lang;

    @Element (required=false)
    private String head;

    @Element (name = "body")
    private TTBody ttb;
}

class TTBody
{
    @Element (name = "div")
    private TTDiv ttd;
}

class TTDiv
{
    @ElementList (inline = true)
    private List<Caption> captionList;
}