You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GStreamer动态调整videocrop参数报GstVideoCrop无caps属性如何解决

问题原因说明

你操作方式有误,报错提示是准确的:GstVideoCrop 元件本身不存在名为 caps 的属性,你的用法混淆了GStreamer两个不同的概念:

  • Gst.caps_from_string() 是用来构造媒体能力描述的,仅用于描述音视频帧的格式、分辨率等参数,不能用来设置元件的自有属性
  • videocrop 的裁剪参数 top/left/right/bottom 本身就是独立的可动态修改属性,不需要通过caps设置
正确实现方式

你直接对获取到的videocrop实例分别设置四个裁剪属性即可,裁剪参数修改实时生效,不需要将流水线切到READY状态也能操作。

修正后的代码如下:

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

GObject.threads_init()
Gst.init(())
# 初始流水线定义不变
p = Gst.parse_launch("tcambin name=src ! video/x-raw, format=BGRx ! videocrop name=try top=0 left=300 right=150 bottom=0 ! videoconvert ! ximagesink")
p.set_state(Gst.State.PLAYING)

# 获取videocrop元件实例
m = p.get_by_name("try")
# 直接修改对应裁剪属性即可,不需要操作caps
m.set_property("top", 500)
m.set_property("left", 300)
m.set_property("right", 150)
m.set_property("bottom", 0)

GObject.MainLoop.run()
补充说明

如果你需要批量设置元件属性,也可以用m.props对象批量赋值,写法更简洁:

m.props.top = 500
m.props.left = 300
m.props.right = 150
m.props.bottom = 0

内容的提问来源于stack exchange,提问作者helpneeded

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:06:05