go-astisub 是一个用 Go 语言编写的开源库,专注于多种字幕格式的解析、编辑和转换。支持主流格式如.srt、.ssa/.ass、.stl、.ttml、.vtt(WebVTT)、teletext等,提供时间轴调整、分段/合并、格式转换等实用功能。适合需要处理字幕的开发者或视频处理工具链集成。
GitHub 地址:https://github.com/asticode/go-astisub
# 转换格式
astisub convert -i input.srt -o output.ttml
# 时间轴线性校正(如修正不同步问题)
astisub apply-linear-correction -i input.srt -a1 1s -d1 2s -a2 5s -d2 7s -o output.srt
# 合并字幕
astisub merge -i s1.srt -i s2.ttml -o merged.srt通过 Go Modules 安装:
go get github.com/asticode/go-astisub场景:将 SRT 字幕转换为 WebVTT 格式,并整体延迟 2 秒。
package main
import (
"github.com/asticode/go-astisub"
"time"
)
func main() {
// 读取 SRT 文件
subs, err := astisub.OpenFile("input.srt")
if err != nil {
panic(err)
}
// 调整时间:整体延迟 2 秒
subs.Add(time.Second * 2)
// 保存为 WebVTT 格式
err = subs.Write("output.vtt")
if err != nil {
panic(err)
}
}srt.go、ttml.go),易于扩展。*_test.go),稳定性较高。go-astisub是 Go 生态中处理字幕的瑞士军刀,适合需要高可靠性字幕操作的场景。其简洁的 API 和多格式支持使其成为开发视频相关应用的理想选择。对于更复杂的字幕样式需求,建议结合专业工具(如 FFmpeg)使用。
GitHub 地址:asticode/go-astisub 推荐指数:★★★★☆(字幕处理需求的 Go 开发者必备)