如何在Monodevelop/Xamarin中构建GStreamer-sharp?

4
我是AudioCuesheetEditor的开发者,这是一个用于编辑音频Cuesheets的应用。新版本应该能够播放声音,因此我想使用gstreamer作为后端。我调查了一下gstreamer,并发现我需要使用带有gstreamer-sharp 0.99.x绑定的1.x版本。没有问题,我下载了gstreamer-sharp 0.99.0,在Linux上使用monodevelop或在Windows上使用xamarin打开解决方案并尝试构建dll,但失败了。我收到了“未找到Gst.GLib命名空间”的错误信息。
我正在使用xamarin/monodevelop进行开发,并需要具有可移植性的应用程序(使用mono/.net运行)。
有人可以帮我构建gstreamer-sharp吗?
谢谢!
2个回答

13

目前 Windows 不支持 gstreamer-sharp,但您可以在 Linux 上编译托管部分,并使用 Visual Studio 在 Windows 上编译粘合剂:

  1. https://github.com/mono/gtk-sharp 安装 gtk-sharp 3.0。
  2. 使用 ./autogen.sh && make 编译 gstreamer-sharp。
  3. 拿出已编译的 glib-sharp 和 gstreamer-sharp 二进制文件以及 sources/glue/ 目录下的所有 .c 文件。
  4. http://gstreamer.freedesktop.org/data/pkg/windows/1.2.2/ 下载并安装所需架构的 gstreamer 二进制文件和开发包。您可以使用 gstreamer 1.0 或 1.2。
  5. 使用 gstreamer-devel 包中的 Visual Studio 模板,并将项目类型更改为库。添加来自 sources/glue 文件夹的 c 文件并编译 glue 库。库应该被称为 libgstreamersharpglue-1.0.0.dll。
  6. 将托管部分与本地符号组合在一起。

编辑: 现在,在 Windows 上编译粘合剂更加容易了!有人建立了一个项目,可以在 Windows 上使用 Visual Studio 编译粘合剂。我有一个包含二进制文件的 fork,位于 https://github.com/xDarkice/libgstreamersharpglue


1
我不确定什么是后期绑定,但手动绑定gstreamer比为Windows编译要麻烦得多。托管部分在Windows上可以完美运行,只是粘合剂不是平台无关的。在Windows上编译粘合剂只需要设置一个小的VC++项目即可。 - Stephan
2
如果你只对二进制文件感兴趣,你甚至可以直接从 https://github.com/Vocaluxe/Vocaluxe/tree/develop/Output 获取这些二进制文件。你可以在 x64 和 x86 文件夹中找到所有内容。 - Stephan
1
你甚至可以从那里获取gstreamer-sharp.dll,基本上那个git存储库包含了你需要运行基本设置的所有内容。我认为本地依赖项是1.0.11。 - Stephan
1
请查看以下链接:https://github.com/Vocaluxe/Vocaluxe/blob/develop/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs - Stephan
1
嗯,我不确定AccessViolationException引起了什么问题,我唯一能建议的就是下载Vocaluxe,编译它并检查是否也遇到了AccessViolationException。 - Stephan
显示剩余36条评论

2

gstreamer-sharp使用autotools作为其构建系统,您无法使用IDE构建它。请执行autotools舞蹈:

./autogen.sh --prefix=/the/prefix/where/you/want/to/install
make
sudo make install

谢谢你的帮助,但我需要使用IDE进行打包等操作。为什么没有IDE支持时会有解决方案呢? - Sven
3
你仍可以使用IDE开发你的应用程序,但要获取gstreamer-sharp的二进制文件,你需要使用autotools。如果你不喜欢这种情况,我们欢迎你的帮助,我们接受补丁(我自己是gstreamer-sharp的开发者)。 - knocte
1
gstreamer-sharp目前尚不兼容Windows,我们在这方面需要帮助(如果您不了解如何帮助我们,您也可以聘请我们作为承包商)。谢谢。 - knocte
1
我猜你指的是v0.10而不是v0.9,它是映射到gstreamer0.10的版本。Banshee的最新Windows二进制文件仅使用gstreamer-sharp0.10。我们还没有发布与gstreamer-sharp0.99.0兼容的版本,它仅是主分支中的默认后端。我们估计当我们发布Banshee 3.0时,将有与GStreamerSharp1.0的Windows兼容性,但我们不知道那会是什么时候。再次强调,志愿者欢迎加入。 - knocte
1
目前gstreamer在Windows系统上有支持,但我们还没有开始开发gstreamer-sharp的Windows支持。 - knocte
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接