skills/gst-plugin-finder/SKILL.md
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.
npx skillsauth add flejz/skills gst-plugin-finderInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Identify the right GStreamer elements for any multimedia task. Covers codecs, protocols, effects, sources, sinks, and utility 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
| 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 | - | - |
| 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 |
| 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 |
| 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 | 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 | 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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
gst-inspect-1.0 ELEMENT to verify an element exists before using itvaapi*, nv*, v4l2*) depend on driver support - fall back to software if unavailabledecodebin3 and playbin3 auto-select the best decoder/sink, useful for quick prototypingdevops
Optimize GStreamer pipeline performance. Use when a user needs to reduce latency, increase throughput, fix dropped frames, tune buffer sizes, leverage hardware acceleration, or profile pipeline bottlenecks.
development
Debug and fix broken GStreamer pipelines. Use when a user has a pipeline that fails, produces errors, hangs, or behaves unexpectedly. Covers error message interpretation, GST_DEBUG, dot graph generation, and common failure patterns.
development
Build GStreamer pipelines from high-level descriptions. Use when a user wants to construct a multimedia pipeline for tasks like video playback, transcoding, streaming, recording, mixing, or any media processing workflow using GStreamer.
development
Understand and resolve GStreamer caps negotiation issues. Use when a user encounters caps-related errors, format mismatches, or needs to control media formats between pipeline elements.