Files
game-driver/pkg/audio/bgm.go
2024-11-06 15:44:35 +08:00

32 lines
675 B
Go

package audio
import (
"github.com/gopxl/beep/v2"
"github.com/gopxl/beep/v2/mp3"
"github.com/gopxl/beep/v2/speaker"
"io"
"log"
)
func PlayBgmMP3(r io.ReadCloser, opts ...beep.LoopOption) (*beep.Ctrl, func() error) {
streamer, format, err := mp3.Decode(r)
if err != nil {
return nil, func() error { return nil }
}
loop2, err := beep.Loop2(streamer, opts...)
if err != nil {
log.Println("循环播放异常: ", err)
return nil, streamer.Close
}
s := beep.Resample(4, format.SampleRate, DefaultSampleRate, loop2)
ctrl := &beep.Ctrl{Streamer: s}
speaker.Play(beep.Seq(ctrl, beep.Callback(func() {
streamer.Close()
})))
return ctrl, streamer.Close
}