无法加载 python gstreamer 元素

2024-04-08

我正在跟随指南https://mathieuduponchelle.github.io/2018-02-01-Python-Elements.html?gi-language=undefined https://mathieuduponchelle.github.io/2018-02-01-Python-Elements.html?gi-language=undefined在 Python 中创建示例 gstreamer 元素。但是,我无法让 GStreamer 加载它。我一直在摆弄GST_PLUGIN_PATH但我无法找到我的 python 文件。我可以让 GStreamer 找到已编译的 .so 元素,但 python 元素似乎逃避了插件加载器。

我已经尽我所能在 Debian 9.8 上安装了 gstreamer1.0、pygobject 和 gst-python,Linux fe34e822e54e 4.18.0-17-generic #18~18.04.1-Ubuntu SMP Fri Mar 15 15:27:12 UTC 2019 x86_64:

apt install gstreamer1.0-tools
apt install python3-gst-1.0 python-gst-1.0  # install python bindings for gstreamer
apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0  # Install PyGObject as per https://pygobject.readthedocs.io/en/latest/getting_started.html#ubuntu-getting-started

我扎根于/tmp/my_gtest:

$ ls
python
$ ls python/
srcelement.py
$ GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD gst-inspect-1.0 audiotestsrc_py
No such element or plugin 'audiotestsrc_py'
$ GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD GST_DEBUG=4 gst-inspect-1.0 --gst-plugin-path=/tmp/g/ audiotestsrc_py
0:00:00.000117317   900 0x560506a39a00 INFO                GST_INIT gst.c:510:init_pre: Initializing GStreamer Core Library version 1.10.4
0:00:00.000236545   900 0x560506a39a00 INFO                GST_INIT gst.c:511:init_pre: Using library installed in /usr/lib/x86_64-linux-gnu
0:00:00.000264897   900 0x560506a39a00 INFO                GST_INIT gst.c:522:init_pre: Linux fe34e822e54e 4.18.0-17-generic #18~18.04.1-Ubuntu SMP Fri Mar 15 15:27:12 UTC 2019 x86_64
0:00:00.000422525   900 0x560506a39a00 INFO                GST_INIT gst.c:427:add_path_func: Adding plugin path: "/tmp/my_gtest/", will scan later
0:00:00.001049692   900 0x560506a39a00 INFO                GST_INIT gstmessage.c:126:_priv_gst_message_initialize: init messages
0:00:00.002382651   900 0x560506a39a00 INFO                GST_INIT gstcontext.c:83:_priv_gst_context_initialize: init contexts
0:00:00.002634936   900 0x560506a39a00 INFO      GST_PLUGIN_LOADING gstplugin.c:316:_priv_gst_plugin_initialize: registering 0 static plugins
0:00:00.002687971   900 0x560506a39a00 INFO      GST_PLUGIN_LOADING gstplugin.c:224:gst_plugin_register_static: registered static plugin "staticelements"
0:00:00.002695054   900 0x560506a39a00 INFO      GST_PLUGIN_LOADING gstplugin.c:226:gst_plugin_register_static: added static plugin "staticelements", result: 1
0:00:00.002703860   900 0x560506a39a00 INFO            GST_REGISTRY gstregistry.c:1738:ensure_current_registry: reading registry cache: /root/.cache/gstreamer-1.0/registry.x86_64.bin
0:00:00.007377882   900 0x560506a39a00 INFO            GST_REGISTRY gstregistrybinary.c:619:priv_gst_registry_binary_read_cache: loaded /root/.cache/gstreamer-1.0/registry.x86_64.bin in 0.004664 seconds
0:00:00.007421588   900 0x560506a39a00 INFO            GST_REGISTRY gstregistry.c:1594:scan_and_update_registry: Validating plugins from registry cache: /root/.cache/gstreamer-1.0/registry.x86_64.bin
0:00:00.007427719   900 0x560506a39a00 INFO            GST_REGISTRY gstregistry.c:1606:scan_and_update_registry: Scanning plugin path: "/tmp/my_gtest/"
0:00:00.008249182   900 0x560506a39a00 INFO            GST_REGISTRY gstregistry.c:1696:scan_and_update_registry: Registry cache has not changed
0:00:00.008255509   900 0x560506a39a00 INFO            GST_REGISTRY gstregistry.c:1773:ensure_current_registry: registry reading and updating done, result = 1
0:00:00.008277874   900 0x560506a39a00 INFO                GST_INIT gst.c:720:init_post: GLib runtime version: 2.50.3
0:00:00.008282666   900 0x560506a39a00 INFO                GST_INIT gst.c:722:init_post: GLib headers version: 2.50.3
0:00:00.008286452   900 0x560506a39a00 INFO                GST_INIT gst.c:723:init_post: initialized GStreamer successfully
No such element or plugin 'audiotestsrc_py'

预感是 gst-python 没有正确安装,或者我的 gstreamer 没有正确编译(不能信任这些包?)。然而,python 绑定看起来很好,就像我运行时一样python3:

>>> import gi
>>> gi.require_version('Gst', '1.0')
>>> from gi.repository import GObject, Gst
>>> GObject.threads_init()
>>> Gst.init(None)
>>> Gst.ElementFactory.make("tee")
<__gi__.GstTee object at 0x7f438eef1318 (GstTee at 0x564f28de8000)>
>>> Gst.ElementFactory.make("audiotestsrc_py")
>>> 

您会看到相同的行为audiotestsrc_py找不到。

不确定接下来要尝试什么,可能必须用 C 语言开发 gst 插件。


是的,我在干净的 gstreamer 安装(在 docker 容器内)上遇到了同样的问题。为了修复,我克隆了gst-python并建造它:

cd /home/ml/gst-python
export PYTHON=/usr/bin/python3
./autogen.sh --disable-gtk-doc --noconfigure
./configure --prefix=/usr --with-libpython-dir=/usr/lib/x86_64-linux-gnu
make
sudo make install

echo "check install"
export GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0
gst-inspect-1.0 python

然后我把蟒蛇identity_py插件在工作区下plugins/python并测试:

cd /home/work/gstreamer

# all python plugins are under $PWD/plugins/python
export GST_PLUGIN_PATH=$GST_PLUGIN_PATH:$PWD/plugins

gst-inspect-1.0 identity_py
GST_DEBUG=python:4 gst-launch-1.0 fakesrc num-buffers=10 ! identity_py ! fakesink

真是个小兔子洞!顺便说一句,我想我可以使用appsink插件来达到我的目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法加载 python gstreamer 元素 的相关文章

随机推荐

  • 如何使用 Wt 启动并运行 Restful API

    我有一个基于网络上的教程运行的 Wt 应用程序 我想知道是否有一种优雅的方式使用 Wt 添加一些 Restful API 功能 我有一些可以从当前应用程序公开的资源 但我不想实施任何补丁 如果有人知道如何做到这一点 或者甚至建议一些可以使开
  • PHP:is_file() 和 file_exists() 对同一文件返回不同的结果

    我遇到 file exists 返回 false 而 is file 返回 true 的问题 echo getmygid gid n 501 echo getmyuid uid n 501 echo posix getgid pgid n
  • MySQL 从 3 个表中提取数据 - 连接和最大值

    我有三个 mysql 表 我想从中提取一些信息 这些表是 视频 表示带有分数的视频 标签 包含全局标签列表 VideoTags 在视频和标签之间创建关联 我想要做的是找到每个标签得分最高的视频 有很多具有相同标签的视频 但我的结果集将包含
  • SwiftUI 覆盖阻止列表滚动事件

    我想在 SwiftUI 中的列表顶部放置一个半透明图像叠加层 我试过这样的代码 struct ContentView View var body some View List Text first Text second Text thir
  • Swift 中的无符号字符

    在 Obj C 中 此代码用于将 NSData 转换为 unsigned char unsigned char dataToSentToPrinter unsigned char malloc commandSize 在 Swift 中 u
  • 如何将多个 html 表格导出到 Excel?

    我有一个包含 3 个表的网页 我想将所有 3 个表导出到同一个 Excel 文件 我希望每个表都在自己的工作表中 但将它们全部放在同一张工作表上也可以 经过一番谷歌搜索后 我所看到的只是将一张表导出到一张 Excel 工作表中 var ta
  • 正则表达式匹配大写表达式和单词

    使用 Sublime Text 3 我只想从文本中提取大写单词和表达式 例子 你好世界 这对所有人来说都是阳光明媚的一天 如果我使用查找工具 我可以使用此正则表达式单独提取所有大写单词 b A Z b 结果是 SUNNY 和 DAY 但我想
  • 模型绑定器未拾取表单编码的 Javascript int[]

    昨晚我试图整理一些自 MVC2 以来一直在工作的东西 给定以下课程 public class RouteSaveViewModel public string Title get set public string Comments get
  • 如何将回调转换为 Promise

    我正在使用 play 框架和 Apache Kafka 我有一个 POST 方法 可以向 Kafka 发送消息 Kafka有一个API方法 公共 java util concurrent Future 发送 ProducerRecord 记
  • 颤动错误:每个子项必须恰好布置一次。关于建筑布局

    我正在使用 flutter bloc 我有这样的代码 class Settings extends StatelessWidget final formKey GlobalKey
  • 如何在 javascript 中发送 SOAP 请求,就像在 SoapUI 中一样

    我目前正在开发一个 NodeJS 项目 我需要使用一些soap xml wsdl 问题是无法弄清楚其中任何一个是如何工作的 所以请原谅我的无知 这是我需要的 我有一个 WSDL 站点 我需要从中获取一些答案 我已经弄清楚如何在 SoapUI
  • 使用自定义操作卸载多个产品

    我正在为我们的产品开发基于 WIX 的安装程序 该产品有一个基础产品和许多插件 基础版和插件将作为单独的 MSI 提供 仅当底座可用时才能安装插件 基础和插件在根文件夹下共享公共文件夹树 例如 C Program files MyProdu
  • 当鼠标离开父级时,为什么 IE 8 会因引导、淘汰验证和自定义绑定处理程序而崩溃?

    好吧 这是一个疯狂的错误 我和同事无法弄清楚 Internet Explorer 8 崩溃 没有控制台错误消息 当使用具有自定义绑定 数据绑定 的无线电输入更改淘汰可观察值并且您移出父 DOM 容器时 就会发生这种情况 在 IE 8 浏览器
  • Roxy Fileman 与 TinyMCE 5 使用 file_picker_callback

    我试图upgradeTinyMCE 版本 4 起to ver 5 但函数 file browser callback 已被替换为文件选择器回调具有完全不同的参数 TinyMCE v 4 file browser callback funct
  • 无法创建使用文字零的通用函数

    我正在尝试编写一个与内置函数类似的 Rust 函数Range 但我想要的东西只会返回 X 个数字 并将其作为列表返回 这就是我尝试创建此函数的原因 外部板条箱编号 use num Integer fn positions
  • 将 JSF 应用程序迁移到 Weblogic 12

    我们开发了一个基于 Seam 2 的 Java EE 5 应用程序 它在 Weblogic 11g 上运行 现在 我尝试按照与之前的 WLS 相同的步骤将相同的 WAR 文件部署到新的 Weblogic 12c 本地 Windows 7 计
  • 如何使 Excel MIN 函数忽略集合中的零?

    在 Excel 中 我有以下公式 MIN H69 H52 H35 H18 1 H18 10应该返回MIN范围 并将其除以当前单元格 1 H18 然后乘以 10 我在添加 NULLIF 语句类型时遇到困难 我希望能够有 可能 空白行 并让 M
  • 如何使用 PHP 将 JSON 解析为 html 表?

    我必须在我的网站上找到一张桌子 并且必须从以下位置获取该表的数据 我已经尝试了很多东西但没有任何作用
  • 在 C# 中实现接口与显式实现接口 [重复]

    这个问题在这里已经有答案了 我在 VS2010 中有两个用于实现接口的选项 当我有 IHelper cs 界面如下 public interface IHelper IEnumerable
  • 无法加载 python gstreamer 元素

    我正在跟随指南https mathieuduponchelle github io 2018 02 01 Python Elements html gi language undefined https mathieuduponchelle