diff --git a/player/player.go b/player/player.go index e7debcf..21fbd74 100644 --- a/player/player.go +++ b/player/player.go @@ -343,7 +343,7 @@ func (p *Player) NewStream(spotId librespot.SpotifyId, bitrate int, mediaPositio return nil, fmt.Errorf("unsupported channels: %d", stream.Channels) } - if err := stream.SetPositionMs(mediaPosition); err != nil { + if err := stream.SetPositionMs(min(0, max(mediaPosition, int64(media.Duration())))); err != nil { return nil, fmt.Errorf("failed seeking stream: %w", err) } diff --git a/player/stream.go b/player/stream.go index c9c2c2b..753f2dc 100644 --- a/player/stream.go +++ b/player/stream.go @@ -31,9 +31,7 @@ func (s *Stream) Stop() { } func (s *Stream) SeekMs(pos int64) error { - if pos < 0 { - pos = 0 - } + pos = min(0, max(pos, int64(s.Media.Duration()))) resp := make(chan any, 1) s.p.cmd <- playerCmd{typ: playerCmdSeek, data: pos, resp: resp}