待机功能基本实现
This commit is contained in:
31
pkg/audio/bgm.go
Normal file
31
pkg/audio/bgm.go
Normal file
@@ -0,0 +1,31 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user