我正在研究gstreamer作为从列表中选择视频设备以将其提供给opencv脚本的方法。
我绝对不明白如何在Windows中使用gstreamer与python。我从gstreamer official website安装了Windows gstreamer 1.07二进制文件。但是,我无法在python中导入pygst
和gst
模块。
>>> import pygst
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import pygst
ImportError: No module named pygst
>>>
我检查了gstreamer安装,似乎没有提供pygst.py
。但是有一个名为gst-env
的文件,其中包含环境变量的路径(在安装时未添加到系统变量中。我检查过。
关于同一问题here和here的其他问题,例如,都使用gstreamer的winbuild版本。为什么会这样?
我完全迷失在这一个。
好吧,我使用SDK for Gstreamer 0.10(其中有一个pygst.py
)管理它,但是没有办法使用Gstreamer 1.0系列,因为0.10是“寿命终结”?
这有点晚了,但希望它会有所帮助。
使用GStreamer 1.0最简单的方法是从http://sourceforge.net/projects/pygobjectwin32/files/下载最新版本
这将安装Python(2.7或3.3)模块,以及可选的GStreamer和插件。
但是,如果您已经有GStreamer 0.10 SDK(来自docs.gstreamer.com/display/GstSDK/Home)和旧版本的GStreamer 1.0,那么运行Gstreamer 0.10 Python程序可能会遇到一些问题,例如ImportError:DLL加载失败等这是我对一切的详细设置:
安装Gst 0.10 SDK和Python模块
安装Gst 1.0和Python模块
编辑:如果您同时使用GStreamer0.10和GStreamer1.0,最好为GStreamer0.10创建一个单独的虚拟环境,并将.pth文件放在其site-packages目录中。请参阅下面的评论。
HTH,汤姆
第1步:Windows 8.1 64位
第2步:下载并安装Python
C:\>wget https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi
C:\>./python-2.7.9.amd64.msi
C:\>cd C:\Python27
C:\>pwd
C:\Python27
第3步:下载Gstreamer 1.0的安装Python绑定
C:\>wget http://sourceforge.net/projects/pygobjectwin32/files/pygi-aio-3.14.0_rev14-setup.exe
C:\>unzip "pygi-aio-3.14.0_rev14-setup.exe"
C:\>whereis_unzipped "pygi-aio-3.14.0_rev14-setup.exe"
C:\pygi
C:\>./c:\pygi\setup.exe
第4步:运行此代码
C:\>C:\Python27\python.exe -c "import gi; gi.require_version('Gst', '1.0'); from gi.repository import Gst; Gst.init(None); pipeline = Gst.parse_launch('playbin uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm'); pipeline.set_state(Gst.State.PLAYING); bus = pipeline.get_bus();msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR | Gst.MessageType.EOS)"
第5步:您必须等待10分钟,才能看到类似于以下的结果。因为某些原因需要时间
来自http://sourceforge.net/projects/pygobjectwin32/files/的安装程序应该适用于Tom给出的测试用例。尝试将pygi安装程序安装的插件与官方gstreamer中的插件进行匹配。
安装程序尝试为每个python进行“便携式和私有”安装,而无需更改注册表/环境变量。
我关于运行时dll的注意事项,建议不要混合运行时因为pygi是专门为python a.k.a链接到python的msvcrt,并使用python使用的stat()约定。如果一个公共api这样的glib的stat()使用与其他dll不同的约定,那么运行时混合可能会导致无声崩溃。除此之外它可能工作正常。