mopidy.audio
— Audio API¶
The audio API is the interface we have built around GStreamer to support our specific use cases. Most backends should be able to get by with simply setting the URI of the resource they want to play, for these cases the default playback provider should be used.
For more advanced cases such as when the raw audio data is delivered outside of GStreamer or the backend needs to add metadata to the currently playing resource, developers should sub-class the base playback provider and implement the extra behaviour that is needed through the following API:
-
mopidy.audio.
Audio
¶ alias of
<Mock object at 0x7fd8f67b4d10>
Audio listener¶
-
class
mopidy.audio.
AudioListener
[source]¶ Marker interface for recipients of events sent by the audio actor.
Any Pykka actor that mixes in this class will receive calls to the methods defined here when the corresponding events happen in the core actor. This interface is used both for looking up what actors to notify of the events, and for providing default implementations for those listeners that are not interested in all events.
-
position_changed
(position)[source]¶ Called whenever the position of the stream changes.
MAY be implemented by actor.
Parameters: position (int) – Position in milliseconds.
-
reached_end_of_stream
()[source]¶ Called whenever the end of the audio stream is reached.
MAY be implemented by actor.
-
state_changed
(old_state, new_state, target_state)[source]¶ Called after the playback state have changed.
Will be called for both immediate and async state changes in GStreamer.
Target state is used to when we should be in the target state, but temporarily need to switch to an other state. A typical example of this is buffering. When this happens an event with old=PLAYING, new=PAUSED, target=PLAYING will be emitted. Once we have caught up a old=PAUSED, new=PLAYING, target=None event will be be generated.
Regular state changes will not have target state set as they are final states which should be stable.
MAY be implemented by actor.
Parameters: - old_state (string from
mopidy.core.PlaybackState
field) – the state before the change - new_state (string from
mopidy.core.PlaybackState
field) – the state after the change - target_state (string from
mopidy.core.PlaybackState
field orNone
if this is a final state.) – the intended state
- old_state (string from
-
stream_changed
(uri)[source]¶ Called whenever the audio stream changes.
MAY be implemented by actor.
Parameters: uri (string) – URI the stream has started playing.
Called whenever the current audio stream’s tags change.
This event signals that some track metadata has been updated. This can be metadata such as artists, titles, organization, or details about the actual audio such as bit-rates, numbers of channels etc.
For the available tag keys please refer to GStreamer documentation for tags.
MAY be implemented by actor.
Parameters: tags ( set
of strings) – The tags that have just been updated.
-
Audio scanner¶
-
class
mopidy.audio.scan.
Scanner
(timeout=1000, proxy_config=None)[source]¶ Helper to get tags and other relevant info from URIs.
Parameters: - timeout – timeout for scanning a URI in ms
- proxy_config – dictionary containing proxy config strings.
-
scan
(uri, timeout=None)[source]¶ Scan the given uri collecting relevant metadata.
Parameters: - uri (string) – URI of the resource to scan.
- timeout (int) – timeout for scanning a URI in ms. Defaults to the
timeout
value used when creating the scanner.
Returns: A named tuple containing
(uri, tags, duration, seekable, mime)
.tags
is a dictionary of lists for all the tags we found.duration
is the length of the URI in milliseconds, orNone
if the URI has no duration.seekable
is boolean. indicating if a seek would succeed.
Audio utils¶
-
class
mopidy.audio.utils.
Signals
[source]¶ Helper for tracking gobject signal registrations
-
mopidy.audio.utils.
calculate_duration
(num_samples, sample_rate)[source]¶ Determine duration of samples using GStreamer helper for precise math.
-
mopidy.audio.utils.
clocktime_to_millisecond
(value)[source]¶ Convert an internal GStreamer time to millisecond time.
-
mopidy.audio.utils.
create_buffer
(data, timestamp=None, duration=None)[source]¶ Create a new GStreamer buffer based on provided data.
Mainly intended to keep gst imports out of non-audio modules.
Changed in version 2.0:
capabilites
argument was removed.
-
mopidy.audio.utils.
millisecond_to_clocktime
(value)[source]¶ Convert a millisecond time to internal GStreamer time.
-
mopidy.audio.utils.
setup_proxy
(element, config)[source]¶ Configure a GStreamer element with proxy settings.
Parameters: - element (
Gst.GstElement
) – element to setup proxy in. - config (
dict
) – proxy settings to use.
- element (
-
mopidy.audio.utils.
supported_uri_schemes
(uri_schemes)[source]¶ Determine which URIs we can actually support from provided whitelist.
Parameters: uri_schemes (list or set or URI schemes as strings.) – list/set of URIs to check support for. Return type: set of URI schemes we can support via this GStreamer install.