package converter import ( "bytes" "fmt" "github.com/bluenviron/mediacommon/v2/pkg/codecs/g711" "github.com/gen2brain/aac-go" ) // ConvertG711ToAAC converts PCM to AAC. func ConvertG711ToAAC(g711Samples []byte, mulaw bool) ([]byte, error) { var pcmSamples []byte if mulaw { pcmSamples = g711.DecodeMulaw(g711Samples) } else { pcmSamples = g711.DecodeAlaw(g711Samples) } var buf bytes.Buffer opts := &aac.Options{ SampleRate: 8000, // Исходная частота G711 NumChannels: 1, } enc, err := aac.NewEncoder(&buf, opts) if err != nil { return nil, fmt.Errorf("error creating encoder: %v", err) } defer enc.Close() r := bytes.NewReader(pcmSamples) if err := enc.Encode(r); err != nil { return nil, fmt.Errorf("error encoding: %v", err) } return buf.Bytes(), nil }