GStreamer-sharp无法创建管道

时间:2019-11-06 14:33:42

标签: c# wpf gstreamer-1.0 gstreamer-sharp

我尝试在WPF应用程序中使用Gstreamer显示RTSP流。

所以我到目前为止为止:

  • 将GStreamer安装到Lo文件夹F:/ gstreamer
  • 创建了新的WPF应用程序
  • 添加了glib-sharp和gstreamer-sharp作为依赖项。

我用来初始化库的以下代码:

Gst.Application.Init(); // (1)

mainLoop = new GLib.MainLoop();
mainGLibThread = new System.Threading.Thread(mainLoop.Run);
mainGLibThread.Start();

Element uriDecodeBin = ElementFactory.Make("playbin", "uriDecodeBin0"); // (2)
  

无法加载DLL'libgstreamer-1.0-0.dll':找不到指定的模块。

在行(1)上

。如果我将所有gstreamer dll复制到bin / Debug文件夹中,则该异常消失了,但第(2)行中的ElementFactory.Make总是返回null,没有任何异常。如果我尝试做

Parse.Launch(@"videotestsrc ! videoconvert ! autovideosink")

测试库功能时出现错误:

  

没有元素“ videotestsrc”

但是如果我从命令行运行它:

  

gst-launch-1.0 videotestsrc!视频转换!自动视频接收器

可以正常工作。

所以我的问题-如何使GStreamer更加清晰?

1 个答案:

答案 0 :(得分:0)

更改GStream的路径,并在开始之前添加此代码

        string path = @"G:\gstreamer\1.0\x86\"; // path to your gstream
        string pluginpath = @"G:\gstreamer\1.0\x86\lib\gstreamer-1.0\"; // path to your gstream
        string registry = System.IO.Path.Combine(path, "registry.bin");

        Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + path);
        Environment.SetEnvironmentVariable("GST_PLUGIN_PATH", pluginpath + ";" + Environment.GetEnvironmentVariable("GST_PLUGIN_PATH"));
        Environment.SetEnvironmentVariable("GST_PLUGIN_SYSTEM_PATH_1_0", pluginpath + ";" + Environment.GetEnvironmentVariable("GST_PLUGIN_SYSTEM_PATH_1_0"));
        Environment.SetEnvironmentVariable("GST_PLUGIN_SYSTEM_PATH", pluginpath + ";" + Environment.GetEnvironmentVariable("GST_PLUGIN_SYSTEM_PATH"));
        Environment.SetEnvironmentVariable("GST_DEBUG", "*:4");
        Environment.SetEnvironmentVariable("GST_DEBUG_FILE", System.IO.Path.Combine(path, "gstreamer.log"));
        Environment.SetEnvironmentVariable("GST_REGISTRY", registry);