avframes/main.go

44 lines
847 B
Go
Raw Permalink Normal View History

2021-01-25 08:03:24 +00:00
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
2021-01-27 23:01:05 +00:00
"git.netflux.io/rob/avframes/pkg/mpeg"
)
2021-01-27 23:01:05 +00:00
const fname = "/home/rob/share/home-office/example.mp3"
2021-01-25 08:03:24 +00:00
func main() {
f, err := os.Open(fname)
if err != nil {
log.Fatal(err)
}
bufreader := bufio.NewReader(f)
buf := make([]byte, 4)
2021-01-25 08:03:24 +00:00
var i int
for {
_, err := io.ReadFull(bufreader, buf)
if err != nil {
2021-01-25 18:35:18 +00:00
if err == io.EOF {
break
}
2021-01-25 08:03:24 +00:00
log.Fatal(err)
}
2021-01-27 23:01:05 +00:00
if h := mpeg.Header(buf); h.IsValid() {
2021-01-27 17:09:38 +00:00
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 {
2021-01-27 17:09:38 +00:00
fmt.Println("Discarding a byte")
bufreader.Discard(3)
2021-01-25 18:35:18 +00:00
}
2021-01-25 08:03:24 +00:00
i++
}
}