使用 python 设置 GStreamer 元素 属性
Setting GStreamer Element property with pythoin
这个简单的 Gstreamer 应用使用 python API
失败
import pgi
pgi.require_version('Gst', '1.0')
from pgi.repository import Gst, GLib
import traceback
Gst.init([])
pipeline = Gst.Pipeline()
src = Gst.ElementFactory.make('videotestsrc', 'src')
sink = Gst.ElementFactory.make('autovideosink', 'sink')
pipeline.add(src)
pipeline.add(sink)
src.link(sink)
src.set_property("pattern", 0)
pipeline.set_state(Gst.State.PLAYING)
和
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~/Documents/mythic-projects/OKR_2019Q2/gstreamer_pipeline.py in <module>
12 pipeline.add(sink)
13 src.link(sink)
---> 14 src.set_property("pattern", 0)
15
16 pipeline.set_state(Gst.State.PLAYING)
~/Documents/mythic-projects/OKR_2019Q2/venv/lib/python3.6/site-packages/pgi/obj.py in set_property(self, name, value)
73
74 if not hasattr(self.props, name):
---> 75 raise TypeError("Unknown property: %r" % name)
76 setattr(self.props, name, value)
77
TypeError: Unknown property: 'pattern'
我可以确认命令行操作正常:
gst-launch-1.0 videotestsrc pattern=snow ! autovideosink
但是API好像跟文档和教程不一样。对于任何 .set_property()
操作都是如此。
例如http://lifestyletransfer.com/how-to-launch-gstreamer-pipeline-in-python/
我 运行 在 Mac OSX、python3.6 上,我安装了 gstreamer,如下所述:(我也尝试过从 .dmg 安装,但结果是一样的)
本教程使用 import gi
而不是 import pgi
。这可能会有所作为。
PGI 页面 https://github.com/pygobject/pgi 说它没有维护,也应该改用 PyGObject。
这个简单的 Gstreamer 应用使用 python API
失败import pgi
pgi.require_version('Gst', '1.0')
from pgi.repository import Gst, GLib
import traceback
Gst.init([])
pipeline = Gst.Pipeline()
src = Gst.ElementFactory.make('videotestsrc', 'src')
sink = Gst.ElementFactory.make('autovideosink', 'sink')
pipeline.add(src)
pipeline.add(sink)
src.link(sink)
src.set_property("pattern", 0)
pipeline.set_state(Gst.State.PLAYING)
和
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~/Documents/mythic-projects/OKR_2019Q2/gstreamer_pipeline.py in <module>
12 pipeline.add(sink)
13 src.link(sink)
---> 14 src.set_property("pattern", 0)
15
16 pipeline.set_state(Gst.State.PLAYING)
~/Documents/mythic-projects/OKR_2019Q2/venv/lib/python3.6/site-packages/pgi/obj.py in set_property(self, name, value)
73
74 if not hasattr(self.props, name):
---> 75 raise TypeError("Unknown property: %r" % name)
76 setattr(self.props, name, value)
77
TypeError: Unknown property: 'pattern'
我可以确认命令行操作正常:
gst-launch-1.0 videotestsrc pattern=snow ! autovideosink
但是API好像跟文档和教程不一样。对于任何 .set_property()
操作都是如此。
例如http://lifestyletransfer.com/how-to-launch-gstreamer-pipeline-in-python/
我 运行 在 Mac OSX、python3.6 上,我安装了 gstreamer,如下所述:
本教程使用 import gi
而不是 import pgi
。这可能会有所作为。
PGI 页面 https://github.com/pygobject/pgi 说它没有维护,也应该改用 PyGObject。