# WebVTT · TTML · SBV · SRT 字幕转换器

在 WebVTT、TTML（含 SMPTE 帧时序与样式）、YouTube SBV 与 SRT 之间互转字幕——帧精度时间轴（23.976/24/25/29.97 丢帧/30/50/59.94 丢帧/60）、TTML tts 样式桥接 WebVTT ::cue CSS、cue-id 唯一性、IMSC 1.0.1 兼容检查。

> 标准页面: https://elysiatools.com/zh/tools/webvtt-ttml-sbv-subtitle-time-axis-and-cue-style-converter

- **分类:** Media

- **关键词:** 字幕转换, ttml 转 srt, webvtt 转换器, srt 转 vtt, youtube sbv, ttml 转 webvtt, 丢帧时间码, imsc 1.0.1, smpte 字幕时间码, 字幕格式转换

## 概述

四种格式共用一套 cue 模型：WebVTT（STYLE/REGION 块、cue 设置、唯一标识符）、TTML（ttp:frameRate + frameRateMultiplier 1000:1001 + dropMode dropNTSC/dropPAL 时间表达式、经 引用的样式继承、span 内联样式）、YouTube SBV 与 SRT。所有时间戳先归一化为毫秒，再按目标语法精确重排——SRT 逗号毫秒、WebVTT 点号时间戳、SBV 小时压缩形式、TTML 时钟时间或 SMPTE HH:MM:SS:FF 帧码。SMPTE 路径实现真正的丢帧数学：每分钟开头丢帧（第 10 的倍数分钟除外），29.97 丢 2 帧、59.94 丢 4 帧，24 小时内与广播时间码误差不超过 1 帧。选择帧率后 cue 边界吸附到帧网格，并报告多少条 cue 移动及其幅度，23.976 母带可在 TTML SMPTE 时间与毫秒之间无损往返。TTML 的 tts:fontFamily/textAlign/backgroundColor/color/… 映射为 WebVTT ::cue(.class) CSS 并把 cue 文本包进 <c.class>，textAlign 同时转为 align: cue 设置；反方向 WebVTT 类名还原为 TTML 样式引用。IMSC 检查覆盖 1.0.1 档案的实用子集：profile 声明、ittp:aspectRatio、帧时间必须声明 ttp:frameRate、允许的样式属性集、逐条 cue 的时间合理性。</x-turndown>

## 输入项

- **字幕源内容** (textarea): Paste SRT / WebVTT / TTML / SBV content here…
- **源文件（可选）** (file)
- **源格式** (select)
- **目标格式** (select)
- **帧率** (select)
- **SMPTE 帧时间（TTML 目标）** (checkbox)
- **IMSC 1.0.1 检查** (checkbox)
- **输出语言（TTML）** (text): en

## 适用场景

- 需要将流媒体或母带 TTML 字幕转换为网页端使用的 WebVTT 并保留样式与对齐方式时。
- 需要在电影（23.976/24fps）或电视广播（29.97DF/59.94DF）不同帧率间校准字幕时间戳以避免音画跑位时。
- 需要从 YouTube 导出的 SBV 或通用 SRT 字幕快速转换为符合 IMSC 规范的 TTML 文档时。

## 工作原理

- 解析输入的 SRT、WebVTT、TTML 或 SBV 文本/文件，提取 cue 节点、时间戳、文本标签及样式属性。
- 将所有时间表达式归一化为毫秒基准，若指定了帧率或 SMPTE 模式，则精确吸附到对应帧网格并计算丢帧（Drop-Frame）偏移。
- 将 TTML tts 样式属性（字体、对齐、颜色、背景色）与 WebVTT ::cue CSS/类名进行双向转换映射。
- 执行 IMSC 1.0.1 规范与时间合理性校验后，按照目标格式语法重新生成规范的字幕输出。

## 使用案例

- 影视后期与母带制作：将 25fps 或 24fps 影视 TTML 制作母带转为网页 HLS/DASH 播放适用的 WebVTT 字幕。
- 跨平台视频分发：将 YouTube 导出的 SBV 字幕批量转换为通用的 SRT 或带样式的 WebVTT 格式。
- 广播电视合规交付：将外部字幕转换为包含 SMPTE 帧时间码与丢帧模式的 TTML，满足 IMSC 1.0.1 规范。

## 常见问题

### 什么是 29.97DF / 59.94DF 丢帧时间码？

丢帧时间码通过在特定分钟开头跳过部分时间码编号，校准每秒 29.97 或 59.94 帧与实际物理时间的累计误差，确保字幕与广播视频完全同步。

### TTML 中的样式如何转换为 WebVTT？

TTML 的 tts 样式（如 color、backgroundColor）会提取并转换为 WebVTT STYLE 块中的 ::cue(.class) CSS 规则，对应文本则以 包裹。

### 工具如何处理 SRT 中的 HTML 标签？

转换至 WebVTT 时会保留 _、 **等内联排版标签；转换为 TTML 时则会映射为对应的 span 内联样式或 XML 结构。**_

### IMSC 1.0.1 检查会验证哪些内容？

主要检查 profile 声明、ittp:aspectRatio、帧时序是否声明 ttp:frameRate、样式属性合法性以及 cue 时间起止的逻辑顺序。

### 支持直接粘贴字幕内容和上传文件吗？

支持，既可以在文本框内直接粘贴字幕源码，也可以上传 .srt、.vtt、.ttml 等文本文件进行批量转换。

## 相关工具

- [SVG转JPG转换器](https://elysiatools.com/zh/tools/svg-to-jpg): 将SVG矢量图形转换为JPG光栅格式，支持自定义分辨率、质量和背景选项
- [SVG转PNG转换器](https://elysiatools.com/zh/tools/svg-to-png): 将SVG矢量图形转换为PNG光栅格式，支持自定义分辨率、质量和透明度选项
- [SVG转WebP转换器](https://elysiatools.com/zh/tools/svg-to-webp): 将SVG矢量图形转换为WebP光栅格式，支持现代压缩和透明度
- [GraphML / GEXF / 边列表网络转换器](https://elysiatools.com/zh/tools/graphml-gexf-edge-list-network-converter): 在 GraphML、GEXF、DOT、邻接矩阵和边列表 CSV 间转换，并预览网络指标
- [PDF页眉页脚片段](https://elysiatools.com/zh/tools/pdf-header-footer-snippets): 将HTML转换为PDF，并插入Logo/标题/日期等页眉页脚片段
- [XLSX CSV 批量转换器](https://elysiatools.com/zh/tools/xlsx-csv-batch-converter): 批量 CSV/TSV 与 XLSX 互转，支持编码与分隔符处理，减少乱码
- [Data URI 生成器](https://elysiatools.com/zh/tools/data-uri-generator): 将文件转换为 Data URI（Base64 或百分号编码），用于直接在 HTML、CSS 或 Markdown 中内联图片、字体等资源
- [Word文本提取器](https://elysiatools.com/zh/tools/word-text-extractor): 从Word文档中提取文本内容，支持格式选项、段落选择和多语言处理

## 示例

- [大小写转换样本](https://elysiatools.com/zh/samples/text-case-formats): 不同命名约定之间的大小写转换测试样本
- [Nginx 日志解析示例](https://elysiatools.com/zh/samples/nginx-log-samples): 用于测试 log-parser 工具的综合 Nginx 日志样本，包括访问日志和错误日志的各种格式和场景
- [Android Java 序列化示例](https://elysiatools.com/zh/samples/android-serialization-java): Android Java 序列化示例，包括JSON序列化、反序列化和XML解析
- [Android Kotlin 序列化示例](https://elysiatools.com/zh/samples/android-serialization-kotlin): Android Kotlin 序列化示例，包括JSON序列化、反序列化和XML解析
