steep-balloon-41261
05/26/2023, 2:49 AMbest-france-45538
05/26/2023, 2:53 AM// I got no error, but get small files about 70 - 80 bytes
func OpusDecode(data []byte) ([]byte) {
ogg, _, err := utils.NewOggReader(bytes.NewReader(data))
if err != nil {
panic(err)
}
out := make([]byte, 1024)
out, err = ogg.ReadPacket()
if err != nil {
if err == io.EOF {
return nil
}
}
return out
}
// I got error: Expected BOS, got 2
func OggToOpus(data []byte) ([]byte) {
const BOS = 1 << iota
decoder := ogg.NewDecoder(bytes.NewReader(data))
page, err := decoder.Decode()
if err != nil {
logger.Errorw("Error while decoding opus file: %v", err)
return nil
}
if page.Type != BOS {
fmt.Println("Expected BOS, got ", page.Type)
return nil
}
if page.Serial != 1 {
fmt.Println("expected serial 1, got", page.Serial)
return nil
}
if page.Granule != 2 {
fmt.Println("expected granule 2, got", page.Granule)
return nil
}
//fmt.Println("ogg data has %d pages", len(page.Packets))
audiodata := make([]byte, 0)
for i:=0; i< len(page.Packets); i++ {
audiodata = append(audiodata, page.Packets[i]...)
}
return audiodata
}
// I got error {"error": "unsupported configuration mode: 3"}
func pionDecode(data []byte) []byte {
out := make([]byte, 19200)
ogg, _, err := oggreader.NewWith(bytes.NewReader(data))
if err != nil {
logger.Errorw("Error while creating opus stream: %v", err)
return nil
}
decoder := opus.NewDecoder()
for {
segments, _, err := ogg.ParseNextPage()
if <http://errors.Is|errors.Is>(err, io.EOF) {
break
} else if bytes.HasPrefix(segments[0], []byte("OpusTags")) {
continue
}
if err != nil {
logger.Errorw("Error while creating opus stream: %v", err)
}
for i := range segments {
if _, _, err = decoder.Decode(segments[i], out[:]); err != nil {
logger.Errorw("Error while creating opus stream: %v", err)
}
}
}
return out
}
and relevant library used
"<http://mccoy.space/g/ogg|mccoy.space/g/ogg>"
"encoding/binary"
"<http://github.com/pion/opus|github.com/pion/opus>"
"<http://github.com/pion/opus/pkg/oggreader|github.com/pion/opus/pkg/oggreader>"
"<http://github.com/livekit-examples/livegpt/pkg/utils|github.com/livekit-examples/livegpt/pkg/utils>"
//"<http://gopkg.in/hraban/opus.v2|gopkg.in/hraban/opus.v2>"