Back to skills
extension
Category: Content & MediaNo API key required

gst-plugin-finder

Find the right GStreamer elements and plugins for a given task. Use when a user needs to identify which GStreamer element handles a specific codec, protocol, effect, or media operation.

personAuthor: jakexiaohubgithub

GStreamer Plugin Finder

Identify the right GStreamer elements for any multimedia task. Covers codecs, protocols, effects, sources, sinks, and utility elements.

How to Search for Elements

# List all elements
gst-inspect-1.0

# Search by keyword
gst-inspect-1.0 | grep -i h264
gst-inspect-1.0 | grep -i rtmp
gst-inspect-1.0 | grep -i pulse

# Inspect element details
gst-inspect-1.0 x264enc

# List elements in a plugin package
gst-inspect-1.0 --plugin x264

# Check which package provides an element (Debian/Ubuntu)
apt-file search gst-plugin-scanner  # Find plugin dirs
apt list --installed 2>/dev/null | grep gstreamer

Element Catalog by Task

Video Decoders

| Codec | Software | Hardware (VAAPI) | Hardware (NVIDIA) | Hardware (V4L2) | |-------|----------|------------------|-------------------|-----------------| | H.264 | avdec_h264 | vaapih264dec | nvh264dec | v4l2h264dec | | H.265 | avdec_h265 | vaapih265dec | nvh265dec | v4l2h265dec | | VP8 | vp8dec | vaapivp8dec | - | v4l2vp8dec | | VP9 | vp9dec | vaapivp9dec | nvvp9dec | v4l2vp9dec | | AV1 | av1dec, dav1ddec | vaapiav1dec | nvav1dec | - | | MPEG-2 | avdec_mpeg2video | vaapimpeg2dec | - | - |

Video Encoders

| Codec | Software | Hardware (VAAPI) | Hardware (NVIDIA) | Hardware (V4L2) | |-------|----------|------------------|-------------------|-----------------| | H.264 | x264enc | vaapih264enc | nvh264enc | v4l2h264enc | | H.265 | x265enc | vaapih265enc | nvh265enc | v4l2h265enc | | VP8 | vp8enc | vaapivp8enc | - | - | | VP9 | vp9enc | vaapivp9enc | nvvp9enc | - | | AV1 | av1enc, svtav1enc | vaav1enc | nvav1enc | - | | JPEG | jpegenc | vaapijpegenc | - | v4l2jpegenc |

Audio Codecs

| Codec | Encoder | Decoder | Plugin Package | |-------|---------|---------|----------------| | AAC | voaacenc, fdkaacenc, avenc_aac | avdec_aac, faad | gst-plugins-bad, gst-libav | | MP3 | lamemp3enc | mpg123audiodec, avdec_mp3 | gst-plugins-good/ugly, gst-libav | | Opus | opusenc | opusdec | gst-plugins-base | | Vorbis | vorbisenc | vorbisdec | gst-plugins-base | | FLAC | flacenc | flacdec | gst-plugins-good | | PCM/WAV | wavenc | wavparse | gst-plugins-good |

Muxers / Demuxers

| Container | Muxer | Demuxer | |-----------|-------|---------| | MP4/MOV | mp4mux, qtmux | qtdemux | | MKV | matroskamux | matroskademux | | WebM | webmmux | matroskademux | | MPEG-TS | mpegtsmux | tsdemux | | FLV | flvmux | flvdemux | | AVI | avimux | avidemux | | Ogg | oggmux | oggdemux | | WAV | wavenc | wavparse |

Source Elements

| Source | Element | Notes | |--------|---------|-------| | File | filesrc | Any file type | | URI (auto) | uridecodebin, urisourcebin | HTTP, file, RTSP | | Webcam (Linux) | v4l2src | /dev/video* | | Webcam (macOS) | avfvideosrc | - | | Screen (X11) | ximagesrc | X11 screen capture | | PulseAudio | pulsesrc | Linux audio capture | | PipeWire | pipewiresrc | Modern Linux audio/video | | ALSA | alsasrc | Direct ALSA capture | | RTSP | rtspsrc | RTSP client | | RTMP | rtmpsrc | RTMP pull | | SRT | srtsrc | SRT receive | | UDP/RTP | udpsrc | Raw UDP packets | | Test video | videotestsrc | Test patterns | | Test audio | audiotestsrc | Sine wave, noise | | App (programmatic) | appsrc | Push buffers from code |

Sink Elements

| Sink | Element | Notes | |------|---------|-------| | File | filesink | Write to file | | Auto video | autovideosink | Best available display | | Auto audio | autoaudiosink | Best available output | | X11 | ximagesink, xvimagesink | X11 display | | Wayland | waylandsink | Wayland display | | PulseAudio | pulsesink | PulseAudio output | | PipeWire | pipewiresink | PipeWire output | | ALSA | alsasink | Direct ALSA output | | RTMP | rtmpsink, rtmp2sink | RTMP push | | SRT | srtsink | SRT send | | UDP | udpsink | Raw UDP output | | TCP | tcpserversink, tcpclientsink | TCP streaming | | Fake (discard) | fakesink | Drop data (testing) | | App (programmatic) | appsink | Receive buffers in code | | HLS | hlssink, hlssink2 | HLS output |

Video Processing

| Task | Element | |------|---------| | Color format conversion | videoconvert | | Scaling | videoscale | | Framerate adjustment | videorate | | Cropping | videocrop | | Flipping / rotating | videoflip | | Compositing / mixing | compositor | | Text overlay | textoverlay, clockoverlay, timeoverlay | | Image overlay | gdkpixbufoverlay | | Color balance | videobalance | | Box drawing | rsvgoverlay | | Deinterlacing | deinterlace |

Audio Processing

| Task | Element | |------|---------| | Format conversion | audioconvert | | Resampling | audioresample | | Mixing | audiomixer | | Volume control | volume | | Equalization | equalizer-3bands, equalizer-10bands | | Echo / effects | audioecho | | Level metering | level | | Noise suppression | webrtcdsp |

Network / Streaming

| Protocol | Elements | |----------|----------| | RTP | rtpbin, rtph264pay/depay, rtpvp8pay/depay, rtpopuspay/depay | | RTSP | rtspsrc, rtspclientsink | | RTMP | rtmpsrc, rtmpsink, rtmp2src, rtmp2sink | | SRT | srtsrc, srtsink | | WebRTC | webrtcbin | | HLS | hlssink, hlssink2, hlsdemux | | DASH | dashdemux, dashsink |

Utility Elements

| Purpose | Element | |---------|---------| | Thread decoupling | queue, queue2, multiqueue | | Branching | tee | | Selecting streams | input-selector, output-selector | | Caps filtering | capsfilter | | Identity / debugging | identity | | Valve (block flow) | valve | | Type finding | typefind | | Auto decoder | decodebin, decodebin3 | | Auto playback | playbin, playbin3 | | Parse H.264 | h264parse | | Parse H.265 | h265parse | | Parse AAC | aacparse |

Plugin Packages (Debian/Ubuntu)

gstreamer1.0-plugins-base    # Core elements: playback, conversion, encoding basics
gstreamer1.0-plugins-good    # High-quality plugins: matroska, jpeg, png, pulse, v4l2
gstreamer1.0-plugins-bad     # Varied quality: x265, opus, srt, webrtc, hls
gstreamer1.0-plugins-ugly    # Patent-encumbered: x264, mp3, mpeg2
gstreamer1.0-libav           # FFmpeg/libav decoders and encoders
gstreamer1.0-vaapi           # VAAPI hardware acceleration
gstreamer1.0-tools           # gst-launch-1.0, gst-inspect-1.0
libgstreamer1.0-dev          # Development headers

Guidelines

  • Use gst-inspect-1.0 ELEMENT to verify an element exists before using it
  • Hardware-accelerated elements (vaapi*, nv*, v4l2*) depend on driver support - fall back to software if unavailable
  • When multiple elements do the same thing, prefer: plugins-base > plugins-good > plugins-bad > plugins-ugly > libav
  • decodebin3 and playbin3 auto-select the best decoder/sink, useful for quick prototyping
  • For production, pin specific elements rather than relying on auto-selection