This is a Golang library to manipulate subtitles.
It allows you to manipulate srt
, stl
, ttml
, ssa/ass
, webvtt
and teletext
files for now.
Available operations are parsing
, writing
, syncing
, fragmenting
, unfragmenting
, merging
and optimizing
.
To install the library:
go get github.com/molotovtv/go-astisub
WARNING: the code below doesn't handle errors for readibility purposes. However you SHOULD!
// Open subtitles
s1, _ := astisub.OpenFile("/path/to/example.ttml")
s2, _ := astisub.ReadFromSRT(bytes.NewReader([]byte("00:01:00.000 --> 00:02:00.000\nCredits")))
// Add a duration to every subtitles (syncing)
s1.Add(-2*time.Second)
// Fragment the subtitles
s1.Fragment(2*time.Second)
// Merge subtitles
s1.Merge(s2)
// Optimize subtitles
s1.Optimize()
// Unfragment the subtitles
s1.Unfragment()
// Write subtitles
s1.Write("/path/to/example.srt")
var buf = &bytes.Buffer{}
s2.WriteToTTML(buf)
- parsing
- writing
- syncing
- fragmenting/unfragmenting
- merging
- ordering
- optimizing
- .srt
- .ttml
- .vtt
- .stl
- .ssa/.ass
- .teletext
- .smi