如何设置非标准 gstreamer 属性 的类型?

How to set the type for a non-standard gstreamer property?

我正在尝试为 videotestsrc 设置 pattern 属性。按照正常逻辑,我尝试将变量设置为 i32 和字符串。两者都因要求特定类型的错误而失败。

查看 gstreamer API,我找不到设置 属性 的方法。

如何强制变量类型与预期匹配?

let pattern = "snow";
src.set_property("pattern", &pattern)
    .expect("setting pattern error");

错误信息

thread 'main' panicked at 'setting pattern error: BoolError { message: "property \'pattern\' of type \'GstVideoTestSrc\' can\'t be set from the given type (expected: \'GstVideoTestSrcPattern\', got: \'gchararray\')",

您可以通过 src.set_property_from_str("snow").

按字符串设置

或者您可以使用 glib::EnumClass API to get all the possible values for the type. You can get the type via src.find_property("pattern") and then get_value_type()