player

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2025 License: GPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const Channels = 2
View Source
const DisableCheckMediaRestricted = true
View Source
const MaxStateVolume = 65535
View Source
const SampleRate = 44100

Variables

This section is empty.

Functions

This section is empty.

Types

type Event

type Event struct {
	Type EventType
}

type EventType

type EventType int
const (
	EventTypePlaying EventType = iota
	EventTypePaused
	EventTypeStopped
	EventTypeNotPlaying
)

type Options added in v0.2.0

type Options struct {
	Spclient *spclient.Spclient
	AudioKey *audio.KeyProvider

	Log librespot.Logger

	// NormalisationEnabled specifies if the volume should be normalised according
	// to Spotify parameters. Only track normalization is supported.
	NormalisationEnabled bool
	// NormalisationPregain specifies the pre-gain to apply when normalising the volume
	// in dB. Use negative values to avoid clipping.
	NormalisationPregain float32

	// CountryCode specifies the country code to use for media restrictions.
	CountryCode *string

	// AudioBackend specifies the audio backend to use (alsa, pulseaudio, etc).
	AudioBackend string
	// AudioDevice specifies the audio device name.
	//
	// This feature is support only for the alsa backend.
	AudioDevice string
	// MixerDevice specifies the audio mixer name.
	//
	// This feature is support only for the alsa backend.
	MixerDevice string
	// MixerControlName specifies the mixer control name.
	//
	// This only works in combination with Mixer.
	MixerControlName string

	// AudioBufferTime is the buffer time in microseconds.
	//
	// This is only supported on the alsa backend.
	AudioBufferTime int
	// AudioPeriodCount is the number of periods to request.
	//
	// This is only supported on the alsa backend.
	AudioPeriodCount int

	// ExternalVolume specifies, if the volume is controlled outside the app.
	//
	// This is only supported on the alsa and pipe backends.
	// The PulseAudio backend always uses external volume.
	ExternalVolume bool

	// VolumeUpdate is a channel on which volume updates will be sent back to
	// Spotify. This must be a buffered channel.
	VolumeUpdate chan float32

	// AudioOutputPipe is the path to the output pipe.
	//
	// This is only supported on the pipe backend.
	AudioOutputPipe string

	// AudioOutputPipeFormat is the format of the output pipe.
	// Available formats are: "s16le", "s32le", "f32le". Default is "s16le".
	//
	// This is only supported on the pipe backend.
	AudioOutputPipeFormat string
}

type Player

type Player struct {
	// contains filtered or unexported fields
}

func NewPlayer

func NewPlayer(opts *Options) (*Player, error)

func (*Player) Close

func (p *Player) Close()

func (*Player) HasBeenPlayingFor

func (p *Player) HasBeenPlayingFor() time.Duration

func (*Player) NewStream

func (p *Player) NewStream(ctx context.Context, client *http.Client, spotId librespot.SpotifyId, bitrate int, mediaPosition int64) (*Stream, error)

func (*Player) Pause

func (p *Player) Pause() error

func (*Player) Play

func (p *Player) Play() error

func (*Player) PositionMs

func (p *Player) PositionMs() int64

func (*Player) Receive

func (p *Player) Receive() <-chan Event

func (*Player) SeekMs

func (p *Player) SeekMs(pos int64) error

func (*Player) SetPrimaryStream

func (p *Player) SetPrimaryStream(source librespot.AudioSource, paused, drop bool) error

func (*Player) SetSecondaryStream

func (p *Player) SetSecondaryStream(source librespot.AudioSource)

func (*Player) SetVolume

func (p *Player) SetVolume(val uint32)

func (*Player) Stop

func (p *Player) Stop()

type Stream

type Stream struct {
	Source librespot.AudioSource
	Media  *librespot.Media
	File   *metadatapb.AudioFile
}

func (*Stream) Is

func (s *Stream) Is(id librespot.SpotifyId) bool

type SwitchingAudioSource

type SwitchingAudioSource struct {
	// contains filtered or unexported fields
}

func NewSwitchingAudioSource

func NewSwitchingAudioSource() *SwitchingAudioSource

func (*SwitchingAudioSource) Close

func (s *SwitchingAudioSource) Close() error

func (*SwitchingAudioSource) Done

func (s *SwitchingAudioSource) Done() <-chan struct{}

func (*SwitchingAudioSource) PositionMs

func (s *SwitchingAudioSource) PositionMs() int64

func (*SwitchingAudioSource) Read

func (s *SwitchingAudioSource) Read(p []float32) (n int, err error)

func (*SwitchingAudioSource) SetPositionMs

func (s *SwitchingAudioSource) SetPositionMs(pos int64) error

func (*SwitchingAudioSource) SetPrimary

func (s *SwitchingAudioSource) SetPrimary(source librespot.AudioSource)

func (*SwitchingAudioSource) SetSecondary

func (s *SwitchingAudioSource) SetSecondary(source librespot.AudioSource)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL