starting audio player

This commit is contained in:
2025-03-22 19:40:11 -04:00
parent eba3187f39
commit fe177ef788
8 changed files with 118 additions and 2 deletions
+58
View File
@@ -0,0 +1,58 @@
package player
import (
"context"
"fmt"
"os"
"time"
"github.com/gopxl/beep/mp3"
"github.com/gopxl/beep/speaker"
)
type Player struct {
ctx context.Context
state PlayerState
}
type PlayerState int
const (
Playing PlayerState = iota
Paused
Stopped
)
func NewPlayer() *Player {
return &Player{}
}
func (p *Player) Init(ctx context.Context) {
p.ctx = ctx
p.state = Stopped
}
func (p *Player) ChangeState(desiredState PlayerState) error {
return nil
}
func (p *Player) Play() error {
f, err := os.Open("test_data/music_library_test/03 anything.mp3")
if err != nil {
return fmt.Errorf("Failed to open file %w", err)
}
streamer, format, err := mp3.Decode(f)
if err != nil {
return fmt.Errorf("Failed to decode mp3 %w", err)
}
defer streamer.Close()
err = speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
if err != nil {
return fmt.Errorf("Failed to initialize speaker %w", err)
}
speaker.Play(streamer)
select {}
return nil
}