GStreamer plugins

From Strawberry Music Player Wiki
Jump to navigation Jump to search

Strawberry uses GStreamer for the audio backend, to play different audio formats you need different plugins.

On Linux distributions you need to install individual packages to get support for different formats.

Windows and macOS releases have all the listed plugins bundled in the installer.

On Linux plugin files are usually installed in a directory called gstreamer-1.0, examples are.: /usr/lib/gstreamer-1.0 or /usr/lib64/gstreamer-1.0

The gstreamer plugin files are called libgstPLUGIN.so, for example libgstflac.so


gst-inspect

To check if a plugin is installed and properly detected, you can use.:

  gst-inspect-1.0 <plugin>

For example.:

   gst-inspect-1.0 flac

Returns:

   Plugin Details:
     Name                     flac
     Description              The FLAC Lossless compressor Codec
     Filename                 /usr/lib64/gstreamer-1.0/libgstflac.so
     Version                  1.20.3
     License                  LGPL
     Source module            gst-plugins-good
     Source release date      2022-06-15
     Binary package           openSUSE GStreamer-plugins-good package
     Origin URL               http://download.opensuse.org
     flacdec: FLAC audio decoder
     flacenc: FLAC audio encoder
     flactag: FLAC tagger
     3 features:
     +-- 3 elements


Always required

These are not tied to any particular audio format, but are needed for any playback at all. coreelements ships as part of GStreamer itself (not a separate gst-plugins-* package), the rest ship inside gst-plugins-base, which is effectively always installed alongside GStreamer.

Plugin Type
coreelements Core elements (queue, filesrc, typefind, ...), part of GStreamer itself
playback Core playback framework (playbin/playbin3/decodebin/decodebin3)
typefindfunctions Automatic format detection
pbtypes Shared dynamic types used internally by other plugins
app appsrc/appsink, used internally for fingerprinting, waveform and loudness analysis
audioconvert Audio format/channel conversion, used internally by every pipeline
audioresample Audio sample rate conversion, used internally by every pipeline
volume Software volume control, fading, ReplayGain/EBU R128 gain application


gst-plugins-base

The base package is almost always installed whenever GStreamer is installed.

Plugin Type
ogg Ogg container formats
vorbis Ogg Vorbis decoding and encoding
opus Ogg Opus decoding and encoding
alsa ALSA audio output
dsd DSD-to-PCM conversion, used together with gst-libav for DSD (.dsf/.dff) playback


gst-plugins-good

The good package is required for common formats such as FLAC and MP3.

Plugin Type
flac FLAC decoding and encoding
speex Speex decoding and encoding
wavpack WavPack decoding and encoding
wavparse WAV decoding
wavenc WAV encoding
mpg123 MP3 decoding
lame MP3 encoding
taglib MP3 encoding (Adds ID3v2 tags via id3v2mux)
xingmux MP3 encoding (Adds a Xing header to VBR MP3 files)
soup HTTP/HTTPS client, used for internet radio, podcasts and streaming services
icydemux Reads ICY (Shoutcast/Icecast) metadata from internet radio streams
id3demux Reads ID3v1/ID3v2 tags while demuxing MP3/AIFF files
apetag Reads APEv1/APEv2 tags, used for Musepack/WavPack/APE-tagged files
isomp4 MP4/M4A container decoding and encoding (AAC, ALAC)
matroska Matroska/WebM container decoding
audiofx Audio effects, e.g. stereo balance
audioparsers Parsers for various audio formats, used ahead of most decoders
autodetect Automatic audio output selection
equalizer 10-band equalizer
replaygain ReplayGain volume normalization
spectrum Spectrum analyzer, used for Moodbar generation if Strawberry is built without FFTW3
pulseaudio PulseAudio audio output
rtsp RTSP network stream support
rtp RTP payload handling, required by RTSP streams
rtpmanager RTP session management (jitter buffer, synchronization), required by RTSP streams
udp UDP transport, used by raw udp:// stream URLs and required by RTSP streams
adaptivedemux2 Adaptive streaming (DASH/HLS/Smooth Streaming) support used by playbin3


gst-plugins-bad

Some distributions such as Fedora does not include some of the bad plugins for licensing reasons. On openSUSE, faad/faac/fdkaac are only available via the Packman repository, not the main OSS repository.

Plugin Type
faad AAC/MP4 decoding
faac AAC/MP4 encoding
fdkaac AAC/MP4 decoding and encoding
musepack MPC decoding
aiff AIFF decoding
asfmux Microsoft ASF format (WMA) encoding
openmpt Module music (MOD, S3M, XM, IT) decoding
bs2b Improve headphone listening of stereo audio records using the bs2b library
gme Game console music (SPC, VGM, NSF, and other chiptune formats) decoding
hls HTTP Live Streaming (HLS), used when playbin3 is disabled
dash Dynamic Adaptive Streaming over HTTP (DASH)
mpegtsdemux MPEG transport stream (.ts) demuxing, needed for HLS streams that use .ts segments


gst-plugins-ugly

Plugin Type
asf Microsoft ASF format (WMA) decoding
cdio Read audio from audio CDs


gst-libav

Plugin Type
libav Monkey's Audio, WMA, ALAC, DSD (.dsf/.dff) and various other formats supported through ffmpeg


gst-plugins-rs

Rust-based plugins, packaged separately from the classic C-based gst-plugins-* modules (e.g. as gstreamer-plugins-rs on openSUSE).

Plugin Type
spotify Spotify streaming support


MP3 encoding

For MP3 encoding (Transcoding to MP3 in Strawberry) you need lame, taglib (which provides id3v2mux) and xingmux.


Notes on specific features

HLS / DASH internet radio: Strawberry uses playbin3 when available, falling back to the older playbin otherwise (this can be toggled in settings). playbin3 plays HLS via adaptivedemux2's hlsdemux2, while playbin uses the older hls plugin's hlsdemux instead - both are needed to cover either setting. DASH is only used via adaptivedemux2's dashdemux2 (used for some Tidal streams). Many HLS streams still use .ts-segmented (MPEG transport stream) media internally, which additionally needs mpegtsdemux to demux.

DSD (.dsf/.dff) playback: there is no dedicated GStreamer DSD decoder. Demuxing (avdemux_dsf/avdemux_iff) and decoding (avdec_dsd_*) is done entirely by gst-libav; the dsd plugin's dsdconvert element then converts the decoded DSD samples to PCM for the audio sink.

RTSP / raw stream URLs: Strawberry allows raw rtsp://, rtspu://, rtspt://, rtsph://, udp:// and rtp:// stream URLs to be opened directly. This needs rtsp, rtp, rtpmanager and udp together.

Audio CD playback: needs cdio (provides cdiocddasrc).