首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定选择了哪个GStreamer插件decodebin3?

如何确定选择了哪个GStreamer插件decodebin3?
EN

Stack Overflow用户
提问于 2022-09-21 15:51:42
回答 1查看 72关注 0票数 1

我需要确定哪个解码器插件decodebin3已经选择。

我发现在它产生源垫之后,我不能总是将它连接到某些下游元素。但如果我“禁用”(改变等级)给定的不可用插件,我可以使我的管道链接/功能。我想动态切换选择,如果下游元素无法链接。

较老的decodebin有像autoplug-select这样的信号,这看起来是一种找到正在使用的插件的方法。但是decodebin3没有等效的信号吗?

当我启用调试日志时,我看到了子插件的名称(这是如何手动禁用POC方式的“坏”插件来测试我的概念)。是否有一种方法可以迭代decodebin3中的子级

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 21:19:16

我自己想出来的。基本上,这个插件创建的元素是一个"bin“(这就是为什么它被称为decodeBIN3!),因此可以使用gst_bin_iterate_elements迭代其中的子元素。然后,它可以得到工厂的一个元素是由,并从那里检查类型的工厂,例如,作为一个解码器。您还可以获得“工厂类型”的唯一id。

以下是在为类似问题制定自己的解决方案时使用的主要功能。(对不起,如果我把我的全部用例代码都贴出来,那会很痛苦,也可能会让人困惑.)

代码语言:javascript
运行
复制
gst_bin_iterate_elements( GST_BIN( decoder ) );

GstElement *element( GST_ELEMENT_CAST( g_value_peek_pointer( &value ) ) );

GstElementFactory *factory( gst_element_get_factory( element ) );

const gboolean isDecoder( gst_element_factory_list_is_type( factory, GST_ELEMENT_FACTORY_TYPE_DECODER ) );

const GType factoryType( gst_element_factory_get_element_type( factory ) );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73803717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档