SwiftWebVTT 1.0.1

SwiftWebVTT 1.0.1

Mike Apurin 维护。



  • Mike Apurin

Swift WebVTT

概述

Swift WebVTT 是一个基于 WebVTT 文件的解析器,它基于 规范 中的示例解析器。

最初作为 Skipjack 的一部分编写。

功能

目前的功能仅限于提取包含其时间戳和文本内容的时间线索引列表。尚未实现提取区域、样式表等。也没有实现粗体、斜体、ruby 等文本样式。

作为解析时间线索引文本内容的一部分,该项目实现了基于 HTML 5.1 规范 的自定义 HTML 字符实体解析器。

将文件保存为 WebVTT 格式和在屏幕上显示线索引不在本项目的范围内。

使用方法

// Assuming `fileContents` is a `String` with WebVTT file data
let parser = WebVTTParser(string: fileContents)
let webVTT = try? parser.parse()
// webVTT?.cues holds an array of cues

制作从YouTube自动生成的可读WebVTT

YouTube使用不同的本地格式(SRV3)进行字幕,但他们的服务器可以将字幕转换为多种不同的格式,包括WebVTT。然而,对于它们的ASR(自动语音识别)字幕,YouTube会在其中嵌入一种特定的展示方式,这实际上会导致标记重复。

当逐个展示字幕时,这没有负面影响,但当提取所有文本或一次性展示所有字幕时,这会使内容难以阅读。

Swift WebVTT 有一个辅助函数可以消除重复并重新格式化此类文件。

// var webVTT: WebVTT // A parsed file
let filteredCues = WebVTTParser.deduplicateCues(webVTT.cues)
webVTT = WebVTT(cues: filteredCues)

HTML字符引用

HTML字符引用的自定义解析器也可以单独使用,用于解解码包含HTML实体的文本。

let text = "Hello, world! 👋"
print(text.decodingHTMLEntities())
// > "Hello, world! 👋"

性能

此实现速度合理,内存消耗不大。一个大约1 MB的文件,包含2小时30分钟的字幕,在iPhone 7 Plus上加载不到1秒钟。

许可证

Swift WebVTT 根据MIT许可证提供。更多信息请参阅LICENSE文件。