From 67be7684dcb3ed461a2c4630a1c722957f06963c Mon Sep 17 00:00:00 2001 From: Rob Watson Date: Mon, 25 Jan 2021 09:03:24 +0100 Subject: [PATCH] Read some bytes --- go.mod | 3 +++ internal/mpeg/mpeg.go | 1 + main.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 go.mod create mode 100644 internal/mpeg/mpeg.go create mode 100644 main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..438d886 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.netflux.io/rob/avframes + +go 1.15 diff --git a/internal/mpeg/mpeg.go b/internal/mpeg/mpeg.go new file mode 100644 index 0000000..fb49537 --- /dev/null +++ b/internal/mpeg/mpeg.go @@ -0,0 +1 @@ +package mpeg diff --git a/main.go b/main.go new file mode 100644 index 0000000..ed4d18d --- /dev/null +++ b/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "bufio" + "fmt" + "io" + "log" + "os" +) + +const fname = "/home/rob/Desktop/example.mp3" + +const syncHeader1 = 0xFF +const syncHeader2 = 0xFE + +func main() { + f, err := os.Open(fname) + if err != nil { + log.Fatal(err) + } + + bufreader := bufio.NewReader(f) + + buf := make([]byte, 4) + var i int + for { + _, err := io.ReadFull(bufreader, buf) + if err != nil { + log.Fatal(err) + } + + if parseBytes(buf) { + fmt.Printf("Got possible header %X at %d\n", buf, i) + } + + i++ + bufreader.UnreadByte() + } +} + +func parseBytes(buf []byte) bool { + return buf[0]&syncHeader1 == syncHeader1 || buf[0]&syncHeader2 == syncHeader2 +}