我使用官方二进制文件在 macOS (Sonoma) 上安装了 GStreamer 1.22.10。我意识到 gst-python 不会自动安装,因此我克隆了 GStreamer Gitlab 存储库,并按照 gst-python 子项目中的相关说明进行安装。
我使用的是通过自制软件安装的Python(3.12),所以我在安装过程中将其pygi覆盖目录给了介子:
meson setup builddir -Dpygi-overrides-dir=/opt/homebrew/lib/python3.12/site-packages/gi/overrides
Pygobject3也通过brew安装在路径中:
/opt/homebrew/Cellar/pygobject3/3.46.0_1
现在当我做
python -c "import gi; gi.require_version('Gst', '1.0');"
时,
我收到一个错误,指出名称空间 Gst 不可用。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/opt/homebrew/lib/python3.12/site-packages/gi/__init__.py", line 126, in require_version
raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace Gst not available
如有任何帮助,我们将不胜感激。
注意:如果使用brew安装GStreamer,则包含gst-python,但这不是我的首选方法,因为brew版本不包含我需要的一些包,例如webrtc。
我也遇到同样的问题。
据我了解,gst-python只是常规 GStreamer Python 绑定的扩展,并添加了一些 Python 风格的“语法糖”。因此,在 Python 中创建 GStreamer 应用程序并不是真正的要求。
错误
Namespace Gst not available
意味着它无法找到为 GStreamer 动态创建常规 Python 绑定所需的 gobject-introspection 信息。
此信息通常存储在 *.typelib 文件中(例如
Gst-1.0.typelib
)。
使用官方二进制文件安装适用于 MacOS 的最新 GStreamer 时,这些文件似乎丢失了。
但是,当我通过 Homebrew 安装 GStreamer 时,它们安装正确:
$ find /opt/homebrew -name "Gst*.typelib"
/opt/homebrew/lib/girepository-1.0/GstVideo-1.0.typelib
/opt/homebrew/lib/girepository-1.0/GstRtsp-1.0.typelib
/opt/homebrew/lib/girepository-1.0/GstCodecs-1.0.typelib
/opt/homebrew/lib/girepository-1.0/GstAllocators-1.0.typelib
/opt/homebrew/lib/girepository-1.0/GstSdp-1.0.typelib
/opt/homebrew/lib/girepository-1.0/GstNet-1.0.typelib
/opt/homebrew/lib/girepository-1.0/Gst-1.0.typelib
...
和
python -c "import gi; gi.require_version('Gst', '1.0');"
有效。
但遗憾的是,Homebrew 安装对我来说似乎已损坏(MacOS 14.3.1、GStreamer 1.22.10)。