如何解决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.5
和Gstreamer 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
我很惊讶没有那个包,其他一切都可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。