mcat is currently a simple proof of concept using gots to read MPEG transport stream packets, and write them to an output.
This is only an early prototype for playing with the API surface at present and is not intended for any kind of production use.
You need to have Go installed and set up.
go get github.com/igilham/mcat
cd ${GOPATH}/src/github.com/igilham/mcat
go build
I have tested a simple use case with Big Buck Bunny, using VLC to convert to H264/MP3 TS. I ran the resulting transport stream packets through mcat and compared the output file to the original.
$ ./mcat ~/Downloads/bbb_sunflower_1080p_60fps_normal.ts > ~/Downloads/test.ts
$ cmp ~/Downloads/bbb_sunflower_1080p_60fps_normal.ts ~/Downloads/test.ts
$ echo $?
0
$ ./mcat -o ~/Downloads/test.ts ~/Downloads/bbb_sunflower_1080p_60fps_normal.ts
$ cmp ~/Downloads/bbb_sunflower_1080p_60fps_normal.ts ~/Downloads/test.ts
$ echo $?
0
## To do
I want to look into some of the following things to learn more about MPEG, the gots API, and Go in general.
- Explore options to correct the programme clock reference (PCR) while concatenating transport stream packets
- Explore options to drop null packets