Skip to content


Repository files navigation

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


go test -race ./...

Travis-CI will run these tests:

go test -v ./...


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.


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 {
			pid, err := packet.Pid(pkt)
			if err != nil {
			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())