Comcast / gots

MPEG Transport Stream handling in Go
Other
308 stars 88 forks source link

Go Reference Build Status Go Report Card Coverage Status

goTS (Go Transport Streams)

gots (Go Transport Streams) is a library for working with MPEG transport streams. It provides abstractions for reading packet information and program specific information (psi)

Bug / Feature Reporting

Add requests to Github issues. To submit a PR see CONTRIBUTING

Tests

go test -race ./...

Travis-CI will run these tests:

go test -v ./...

License

This software is licensed under the MIT license. For full text see LICENSE

Code of Conduct

We take our code of conduct very seriously. Please abide by it.

Examples

This is a simple example that extracts all PIDs from a ts file and prints them. CLI example parser can be found here

func main() {
    pidSet := make(map[uint16]bool, 5)
    filename := "./scenario1.ts"
    file, err := os.Open(filename)
    if err == nil {
        pkt := make([]byte, packet.PacketSize)
        for read, err := file.Read(pkt); read > 0 && err == nil; read, err = file.Read(pkt) {
                        if err != nil {
                                println(err)
                                return
                        }
            pid, err := packet.Pid(pkt)
            if err != nil {
                println(err)
                continue
            }
            pidSet[pid] = true
        }

            for v := range pidSet {
                fmt.Printf("Found pid %d\n", v)
            }
    } else {
        fmt.Printf("Unable to open file [%s] due to [%s]\n", filename, err.Error())
}