Python 3.x TypeError:未知类型GstFraction

Python 3.x TypeError:未知类型GstFraction,python-3.x,gstreamer,gstreamer-1.0,python-gstreamer,Python 3.x,Gstreamer,Gstreamer 1.0,Python Gstreamer,我试图将Gstreamer与python绑定一起使用,以便在我的系统上搜索可用的摄像头。因此,我想获得一个设备列表及其相应的功能(宽度、高度、帧率…) Gstreamer提供了一个非常有用的类,名为Gst.DeviceMonitor,用于获取可用的设备。然而,我在尝试从发现的设备中提取功能时遇到了问题。具体地说,我只在获取功能方面遇到困难,即“像素纵横比”和“帧率”,这两种功能都是Gst.Fraction类型 下面是一个简单的代码示例: import gi gi.require_version

我试图将Gstreamer与python绑定一起使用,以便在我的系统上搜索可用的摄像头。因此,我想获得一个设备列表及其相应的功能(宽度、高度、帧率…)

Gstreamer提供了一个非常有用的类,名为Gst.DeviceMonitor,用于获取可用的设备。然而,我在尝试从发现的设备中提取功能时遇到了问题。具体地说,我只在获取功能方面遇到困难,即“像素纵横比”和“帧率”,这两种功能都是Gst.Fraction类型

下面是一个简单的代码示例:

import gi

gi.require_version('Gst', '1.0')
from gi.repository import Gst

Gst.init(None)

caps = Gst.Caps.from_string('video/x-h264,width=640,height=480,framerate={30/1, 20/1, 15/1, 1/1}')
structure = caps.get_structure(0)

width = structure.get_int('width').value
height = structure.get_int('height').value
framerates = structure.get_list('framerate').array

print('width = ', width)
print('height = ', height)
for i in range(framerates.n_values):
    print(' - framerate = ', framerates.get_nth(i))
在最后一行引发以下异常:

TypeError: unknown type GstFraction
我发现2012年有人也有类似的问题,但我没有找到任何解决方案。有人有什么建议吗


PS:我正在使用
Python 3.5.5
Gstreamer 1.14.5

您的代码在Ubuntu 18上运行得很好:

$python3--版本
Python 3.6.9
$gst-inspect-1.0——版本
gst-inspect-1.0版本1.14.5

因此,这可能是Python GStreamer/GObject内省绑定中的一个错误。

我遇到了完全相同的问题,最终找到了解决方案:安装包
python3-gst-1.0

sudo apt install python3-gst-1.0

我很惊讶没有这个软件包,其他一切都能正常工作。

我已经将Python更新为3.8.6。我以前运行过这个示例代码,但仍然得到相同的错误。我也尝试过使用Python3.6.9(就像你一样),结果也是一样的。唯一的区别是我使用的是Ubuntu20。你有其他的建议吗?可能会有什么不同?
sudo apt install python3-gst-1.0