You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
847 B
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++
|
|
}
|
|
}
|