No element avdec_*

I’m using GStreamer with Go, and GStreamer is configured to look for plugins in the “.” root folder where the whole project is located.

Up until now everything always worked, but ever since I updated to version 1.28.4, I keep getting errors saying that elements like avdec_g722, avdec_h264, avdec_h265, etc. don’t exist. My entire environment is installed via MSYS2/UCRT64, and I copied the necessary dependencies (DLLs) from ucrt64/bin and ucrt64/lib/gstreamer-1.0 into that root folder so the .exe could find them.

Is there a way to find out exactly which DLL files are needed to create these elements — maybe something changed between versions 1.28.1 and 1.28.4?

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:38.337: Failed to load plugin ‘.\avdevice-62.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:38.347: Failed to load plugin ‘.\avfilter-11.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:38.395: Failed to load plugin ‘.\libass-9.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:38.644: Failed to load plugin ‘.\libgstassrender.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:39.168: Failed to load plugin ‘.\libgstlibav.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:39.251: Failed to load plugin ‘.\libgstopenexr.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:39.649: Failed to load plugin ‘.\libOpenEXR-3_4.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:39.653: Failed to load plugin ‘.\libOpenEXRCore-3_4.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

(–gst-debug-level=0:7436): GStreamer-WARNING **: 10:38:39.661: Failed to load plugin ‘.\libOpenEXRUtil-3_4.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.

All these files that are listed as missing are already present inside the root folder.

avdec_* elements are provided by the ffmpeg wrapper library gst-plugins-libav. avdec_g722

It may be simply missing in your installation as a whole.

If updating from 1.28.1 to 1.28.4 triggered this then check the release logs for any changes mentioning these elements.

I successfully reinstalled all GStreamer packages to the latest version, 1.28.5.

When I run gst-inspect, all the elements I need are present, including avdec_*.

My program’s structure is as follows: I have a root folder containing launch.exe (similar to go-gst/examples/launch/main.go at main · go-gst/go-gst · GitHub), which is run with the argument --gst-plugin-path=., along with all the DLL files that GStreamer requires.

However, I’m still getting an error saying that the libgstlibav.dll plugin cannot be loaded.

How can I check exactly which DLL files are required to run my program, given that I already know which specific GStreamer elements I’ll be using?

For Win10 or Win11, you may try : Dependencies that would show the libs required by libgstlibav.dll and which ones are found or not in your system.

Also note that gstreamer creates a cache that is used by gst-inspect-1.0 (such as:C:\Users\<username>\AppData\Local\Microsoft\Windows\INetCache\gstreamer-1.0\registry.<arch>.bin where <arch>would be something like x86_64). If re-installing, better delete the cache file, it will be recreated next time you’ll run gst-inspect-1.0 again (or some other gst command).

Thanks, I managed to solve it yesterday.

The problem was that the new version of avfilter-11.dll requires additional dependencies that weren’t needed before, such as ggml.dll and libwhisper-1.dll. Adding these files to the root folder only partially solved the problem — GStreamer worked correctly on the first run, but for every subsequent run the registry cache had to be deleted, otherwise the program would hang due to a ggml assertion failure.

I resolved the issue by removing --gst-plugin-path=. from the GStreamer initialization and using the following folder structure instead:

root
├── launch.exe
├── *.dll (only the required DLLs from ucrt64/bin)
└── lib/
    └── gstreamer-1.0/
        └── *.dll (only the DLLs required for loading GStreamer elements, from ucrt64/lib/gstreamer-1.0/)

With this structure, GStreamer automatically resolves its dependencies on its own, and everything works as expected.