avframes/main.go

44 lines
847 B
Go

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++
}
}