| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
go-timecode is a Go library for SMPTE ST 12-1-2014 timecodes.
Many timecode libraries treat timecode values as literal wall-clock time which they are not. Instead, timecodes are mere address labels for edit units in a sequence of video frames or audio samples. With a different edit rate, the same frame in a sequence has a different timecode address.
It's probably the reason why drop-frame timecodes are often misunderstood. I guess it's better to call them skip-timecodes because that's what's happening. At 29.97fps each edit unit has a duration of 33.3666ms, 30 such edit units last for 1.001s. Hence, a 29.97DF timecode of 00:00:01;00 actually means 1.001s instead of 1s. Now this makes it obvious that the time-part of the timecode runs a bit slower than realtime. To compensate for this speed issue, a drop-frame timecode skips some address labels now and then. To be precise, it skips frame labels ??:??:??;00 and ??:??:??;01 every minute but not every 10th minute. That's all.
Install go-timecode using the "go get" command:
go get github.com/trimmer-io/go-timecode/timecode
The Go distribution is go-timecode's only dependency.
import "github.com/trimmer-io/go-timecode/timecode"
tc := timecode.Parse("00:00:59;29")
tc.SetRate(timecode.Rate30DF)
tc.Add(2*time.Minute)
fmt.Println("Frame number at TC", tc, "is", tc.Frame())
See CONTRIBUTING.md.
go-timecode is available under the Apache License, Version 2.0.
| Back | FazBrowse Home | New Git URL |