【发布时间】:2020-07-14 14:49:22
【问题描述】:
gstreamer 有 autoaudiosink、autovideosink、autoaudiosrc、autovideosrc。
当有多个匹配的源或接收器时,这是如何工作的
例如:windows 上的videosink 可以是opengl 或directx,
gstreamer 如何决定使用哪一个?
有没有可能改变这个?
【问题讨论】:
gstreamer 有 autoaudiosink、autovideosink、autoaudiosrc、autovideosrc。
当有多个匹配的源或接收器时,这是如何工作的
例如:windows 上的videosink 可以是opengl 或directx,
gstreamer 如何决定使用哪一个?
有没有可能改变这个?
【问题讨论】:
gstreamer 如何决定使用哪一个?
GStreamer 有一个非常通用的自动插入机制,因此它可以做正确的事情。 documentation 非常简洁,但让我们看一下 autovideosink 的情况。
在第一步中,自动插入将尝试过滤掉系统上的相关元素:例如,如果 decodebin 元素的输入是 H264 流,它将仅找到宣传 video/xh264 上限的元素他们的水槽垫。对于autovideosink,它将过滤所有添加了显式“Sink”和“Video”标签的元素以查找相关元素。
在第二步中,它仍然需要从我们刚刚收集的一组元素中选择最佳匹配。为此,GStreamer 选择具有最高“等级”的插件。插件有一个默认等级,但您可以通过编程方式对其进行修改(如何做到这一点已经answered elsewhere)。
注意:某些元素(如 decodebin)还提供额外的 API 以实现更细粒度的控制。
有没有可能改变这个?
所以简短的答案就在这里:通过修改插件排名。
还需要注意的是,应用程序开发人员通常会选择一个给定的接收器(例如 glimagesink)并通过配置该元素的属性来针对这种情况进行优化。
【讨论】: