首页 > 解决方案 > GStreamer gst_pad_get_offset 和 gst_pad_set_offset 不起作用

问题描述

首先我想澄清一下我的英语说得不是很好,所以如果我表达得不好,请提前道歉。

语境

根据命令gst-inspect-1.0 --gst-version,我有gstreamer 的1.14.5版本。

我开始了一个动态 gstreamer 项目,其简化的管道结构如下所示(显然我指定我使用编程语言而不是 gst-launch)

AnElementNoMatterWhich ! videomixer ! AnElementNoMatterWhich ! tee ! queue ! AnElementNoMatterWhich

现在想象一下,在10 秒后,我想添加一个元素,无论是什么女巫,到videomixer 接收器。或者假设我想在tee src 中添加一个项目(这与videomixer相同,只是我会在 tee 和元素之间添加一个尾巴,以免阻塞其他分支)。

在流进入 videomixer 的 sink pad 之前大约需要 10 秒。同样适用于三通的 src 垫。以此类推,在管道中添加元素(并将其连接到 videomixer 或 tee)之前花费的时间与 videomixer 和/或 tee pad 在传递流之前必须等待的时间大致相同。

与新创建的视频混音器和/或 T 形垫相比,这一切都可以通过管道执行的差异来解释。

这就是gst_pad_get_offset()gst_pad_set_offset()两个方法发挥作用的地方。

我的问题

我遵循了所有 gstreamer 教程并在论坛上呆了几天。我不知道该怎么办。但是,我知道如果没有这两种方法的正常运行,我的项目就会被阻止。我能做些什么 ?你有想法吗 ?

标签: cubuntudynamicgstreameroffset

解决方案


是的,消费税没有很好的记录。

  1. 纳秒
  2. 默认情况下,偏移量为 0。您可以更改它,之后 get_offset 将返回新值
  3. 你可以使用这样的结构,对我来说它有效(Gst 1.18.4):
tee = pipe.get_by_name('t')
tee.srcpads[0].set_offset(1000000000)

在这个例子中,Tee 的第一个 src pad 将被延迟到 1 秒。


推荐阅读