package main import ( "bufio" "fmt" "io" "log" "os" "git.netflux.io/rob/avframes/pkg/mpeg" ) const fname = "/home/rob/share/home-office/example.mp3" 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 { if err == io.EOF { break } log.Fatal(err) } if h := mpeg.Header(buf); h.IsValid() { fmt.Printf("Got header: %v, audio version: %d, layer index: %d, bitrate: %d, samplerate: %d, samplesPerFrame: %d, padding: %d, size: %d\n", h, h.AudioVersionId(), h.Layer(), h.BitRate(), h.SampleRate(), h.SamplesPerFrame(), h.PaddingBytes(), h.Len()) bufreader.Discard(h.Len() - 4) } else { fmt.Println("Discarding a byte") bufreader.Discard(3) } i++ } }