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

GStreamer定义可接受'4/3'的Fraction属性报错排查

问题根源与解决方案

你的问题出在**gst_param_spec_fraction的参数顺序和取值设置错误**:

错误原因

看你传入的参数:

0, G_MAXINT, G_MAXINT, G_MAXINT

对应函数的min_num, min_denom, max_num, max_denom四个参数,这意味着你把分母的最小值设成了G_MAXINT(一个极大的整数)。而4/3的分母是3,远小于这个最小值,自然会被判定为超出范围,触发错误。

另外,GStreamer的GstFraction要求分母必须是正整数(不能为0),所以分母的最小值应该设为1,而不是极大值。

修正后的代码

把min_denom改成1,同时保持其他参数合理:

g_object_class_install_property (gobject_class, PROP_PIXEL_ASPECT_RATIO,
    gst_param_spec_fraction ("pixel-aspect-ratio",
        "Pixel aspect ratio",
        "Pixel aspect ratio of frames in the stream",
        0, 1, G_MAXINT, G_MAXINT,  // 修正:min_denom=1
        DEFAULT_PIXEL_ASPECT_RATIO_NUM, DEFAULT_PIXEL_ASPECT_RATIO_DEN,
        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
    );

关于GstFraction的补充说明

你的理解是对的:GstFraction就是用分子+分母的整数对来表示比例,避免浮点数精度损失,完全适合像素宽高比这类场景。需要注意的核心规则只有两条:

  • 分母必须是正整数(不能为0)
  • 传入的分数会被自动约分(比如8/6会被转成4/3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:47:48