TypeError:未知类型GstFraction

问题描述

我正在尝试将 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

我发现here有人在2012年遇到过类似的问题,但是我没有找到任何解决方案。有人有什么建议吗?

PS :我正在使用Python 3.5.5Gstreamer 1.14.5

解决方法

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

$ python3 --version
Python 3.6.9

$ gst-inspect-1.0 --version
gst-inspect-1.0 version 1.14.5

width =  640
height =  480
 - framerate =  30/1
 - framerate =  20/1
 - framerate =  15/1
 - framerate =  1/1

所以这可能是Python GStreamer / GObject自省绑定中的错误。

,

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

sudo apt install python3-gst-1.0

我很惊讶没有那个包,其他一切都可以正常工作。