Skip to content

Media Plugins Reference

In a nutshell

These plugins are the playback backends that actually push audio/video to your speakers or screen (VLC, MPV, Chromecast, Spotify…). OVOS is mid-migration between the legacy audio-service backend and the upcoming ovos-media daemon, and a single plugin package is meant to ship a version for both. See Media playback: legacy vs. ovos-media.

Writing a plugin instead of choosing one? See Writing a Media Playback Backend Plugin.

Two interfaces, one package

A playback plugin can implement two separate entry-point families:

  • Old audio service: mycroft.plugin.audioservice (used by the deprecated ovos-ocp-audio-plugin / "old audio service", the shipped default).
  • ovos-media: opm.media.{audio,video,web} (the upcoming daemon).

Media classifiers are a separate concern from playback backends: they recognize the media intent and entities (artist, title, station, …) in an utterance before a stream is resolved and played. See ovos-media-classifier below.

These two families are separate (different entry-point groups and base classes), but a plugin package is meant to ship a version for both. This way a single pip install gives you a backend that works whichever playback system you run. Packages are not required to ship both families. See the table below for what each currently supports.

Package Player Ships for License Maturity
ovos-media-plugin-spotify Spotify Connect yes: both (old audio service + ovos-media) Apache-2.0 Stable
ovos-media-plugin-chromecast Chromecast (audio + video) yes: both Apache-2.0 Stable
ovos-media-plugin-vlc headless VLC (audio + video) yes: both Apache-2.0 Beta
ovos-media-plugin-mplayer MPlayer (audio + video) yes: both Apache-2.0 Stable
ovos-media-plugin-mpv MPV (audio + video) yes: both Apache-2.0 Stable
ovos-media-plugin-ffplay ffplay (audio) yes: both Apache-2.0 Stable
ovos-media-plugin-cli generic CLI-command player (audio) yes: both Apache-2.0 Alpha
ovos-plugin-vlc VLC old audio service only (legacy). Use ovos-media-plugin-vlc for ovos-media Apache-2.0 Stable
ovos-media-plugin-mass Music Assistant server (audio) yes: both (old audio service + ovos-media) Apache-2.0 Alpha
ovos-media-plugin-mpris external MPRIS player (audio + video) ovos-media only Not yet published

Maturity reflects repository health (age, activity, open issues/PRs, in-repo docs), not version. See the Maturity Scale.

License and Maturity are independent axes

The License column reports what the repository itself declares, or doesn't. "No license file" just means no SPDX license was found, not that the code is unmature. The Maturity column reports repository health (age, activity, issues/PRs, docs). A plugin can be Mature and still ship no license file, or be Stable with a permissive license but thin docs. Don't read one column as implying the other.

The ovos-ocp-audio-plugin below is not a playback backend. It is the old audio service itself (deprecated, still the shipped default).

ovos-media-plugin-spotify

  • GitHub: ovos-media-plugin-spotify

  • Description: Spotify Connect playback. Ships entry points for both the old audio service (mycroft.plugin.audioservice) and ovos-media (opm.media.audio).

pip install ovos-media-plugin-spotify

Then select it in your audio/media backend config. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-vlc

  • GitHub: ovos-media-plugin-vlc

  • Description: Headless VLC audio/video playback. Ships entry points for both ovos-media (opm.media.audio / opm.media.video, classes VLCOCPAudioService / VLCOCPVideoService) and the old audio service (mycroft.plugin.audioservice, type ovos_vlc). The older, old-audio-service-only ovos-plugin-vlc still exists as a separate package.

pip install --pre ovos-media-plugin-vlc

Needs the native libvlc system library

ovos-media-plugin-vlc wraps python-vlc, which needs the native libvlc system library to actually load. pip install alone will not error if libvlc is missing — the plugin just silently fails to load, and no audio backend is available. Install the system package too, e.g. apt install vlc (Debian/Ubuntu) or libvlc-dev/libvlc5 on distros that split the runtime from the dev headers. If you want a backend with no native binding to install, see ovos-media-plugin-ffplay below.

Then select it in your audio/media backend config, using the entry-point name (ovos-media-audio-plugin-vlc for audio, ovos-media-video-plugin-vlc for video) as the module value — this differs from the pip package name (ovos-media-plugin-vlc). See Media playback: legacy vs. ovos-media.


ovos-media-plugin-chromecast

pip install ovos-media-plugin-chromecast

Then select it in your audio/media backend config. See Media playback: legacy vs. ovos-media.


ovos-ocp-audio-plugin

  • GitHub: ovos-ocp-audio-plugin

  • Description: The legacy "old audio service" OCP backend. It combines OCP search orchestration, the player state machine, MPRIS and the GUI into a single ovos-audio AudioBackend. Warning: deprecated but still shipped and enabled by default (enable_old_audioservice: true). The standalone ovos-media daemon supersedes it. See the dedicated OCP Audio Plugin page for the full background, configuration, and migration path.


ovos-plugin-vlc

pip install ovos-plugin-vlc

Then select it in your audio/media backend config. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-mplayer

  • GitHub: ovos-media-plugin-mplayer

  • Description: MPlayer audio/video playback. Ships entry points for both ovos-media (opm.media.audio / opm.media.video) and the old audio service (mycroft.plugin.audioservice, type ovos_mplayer).

pip install --pre ovos-media-plugin-mplayer

Then select it in your audio/media backend config. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-mpv

  • GitHub: ovos-media-plugin-mpv (PyPI publishes under the same name; the pre-rename ovos-audio-plugin-mpv package still exists but stopped at 0.2.1 and lacks the dual-target backend).

  • Description: MPV audio/video playback. Ships entry points for both ovos-media (opm.media.audio / opm.media.video) and the old audio service (mycroft.plugin.audioservice, type ovos_mpv).

pip install --pre ovos-media-plugin-mpv

Then select it in your audio/media backend config. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-ffplay

  • GitHub: ovos-media-plugin-ffplay

  • Description: ffplay-based audio playback backend. Ships entry points for both ovos-media (opm.media.audio, class FFPlayOCPAudioService) and the old audio service (mycroft.plugin.audioservice, type ovos_ffplay). Direct programmatic access is available via FFPlayAudioPlayer.

pip install --pre ovos-media-plugin-ffplay

A good default for a headless box: it only needs ffmpeg/ffplay on the PATH, which most systems already have or can install with a single package (apt install ffmpeg), with no separate native binding to install (unlike ovos-media-plugin-vlc above).

Then select it in your audio/media backend config. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-cli

  • GitHub: ovos-media-plugin-cli

  • Description: Generic command-line playback backend. Shells out to any CLI media player. With an explicit command set (e.g. "mpv --no-terminal", "ffplay -nodisp -autoexit"), it appends the track URI as the final argument. With no command set it auto-detects the best available player for the platform (sox/play preferred, then mpg123/paplay/aplay on Linux, afplay on macOS). Pause/resume use process signals (SIGSTOP/SIGCONT). Ships entry points for both ovos-media (opm.media.audio, class CLIAudioService) and the old audio service (mycroft.plugin.audioservice, type ovos_cli).

pip install --pre ovos-media-plugin-cli

Only alpha releases exist on PyPI so far, matching its Alpha rating above — hence the --pre flag.

Then select it in your audio/media backend config, optionally setting the command to a specific CLI player. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-mass

  • GitHub: ovos-media-plugin-mass
  • Description: Hands playback off to a Music Assistant server instead of playing the stream directly. It registers under both opm.media.audio (ovos-media) and the legacy mycroft.plugin.audioservice group (old ovos-audio), each wrapping the same Music Assistant client — next()/previous(), play/pause, and seeking all go through the Music Assistant queue API rather than a locally decoded stream.
pip install ovos-media-plugin-mass

Then select it in your media.audio_players config. See Media playback: legacy vs. ovos-media.


ovos-media-plugin-mpris

  • Status: not yet published — no public repository or PyPI package exists, so it cannot be installed today.
  • Description: Drives an already-running external MPRIS player (e.g. a desktop media app) rather than playing the stream itself. opm.media.audio and opm.media.video, ovos-media only. Complements (but is separate from) ovos-media's own MPRIS exporter/reflector — see MPRIS Integration.

Then select it in your media.audio_players / media.video_players config. See Media playback: legacy vs. ovos-media.


ovos-media-classifier

  • GitHub: ovos-media-classifier

  • Description: Classifies an utterance's media intent and extracts entities (artist, title, station, …) ahead of stream resolution. Several backends are available depending on installed extras. KeywordMediaClassifier (bundled locale keyword lists) is the always-available default, with EmbeddingMediaClassifier, HybridMediaClassifier, OnnxMediaClassifier, an Aho-Corasick exact-entity-list matcher (AhocorasickMediaClassifier, [ner] extra), and a metadatarr-backed classifier (MetadatarrMediaClassifier) as optional upgrades. Every backend is importable from the top-level package. The optional ones resolve lazily so their extras are only touched when actually used.

pip install --pre ovos-media-classifier          # keyword backend only
pip install --pre ovos-media-classifier[ner]     # adds the Aho-Corasick NER backend
from ovos_media_classifier import KeywordMediaClassifier, load_media_classifier

The [ner] extra adds AhocorasickMediaClassifier (in ovos_media_classifier.ahocorasick), a gazetteer/entity-list backend built on Aho-Corasick matching.

Note

The [ner] extra's "NER" is exact entity-list matching, not statistical named-entity recognition: AhocorasickMediaClassifier compiles the configured entity lists (your actual library: artists, titles, stations) into an Aho-Corasick automaton and matches verbatim. No model guesses spans.

The package defines the opm.media.classifier entry-point group as the contract for third-party classifiers — its own keyword backend is loaded by direct import inside the package, not through that group, so writing an external classifier means registering your package under the group per the docstring in ovos_media_classifier/plugins.py.


Read next: GUI Protocol Related: OCP Extractors · Media Service (ovos-media) · Choosing Plugins