C语言 GStreamer gst_pad_get_offset和gst_pad_set_offset不工作



首先我要澄清的是,我的英语不是很好,所以如果我没有很好地表达我的意思,请提前道歉。

<<p>

上下文/strong>根据命令gst-inspect-1.0——gst-version,我有版本1.14.5of gstreamer.

我启动了一个动态gstreamer项目,其简化的管道结构看起来像这样(显然我指定我使用编程语言而不是gst-launch):

AnElementNoMatterWhich ! videomixer ! AnElementNoMatterWhich ! tee ! queue ! AnElementNoMatterWhich
现在想象一下,在10秒后我想添加一个元素,无论,到视频混音器下沉。或者我想在tee中添加一项src(这与videomixer相同,除了我将在tee和元素之间添加尾部,以便不会阻塞其他分支)。

大约需要10秒的时间,流才会进入视频混频器的接收器。对于tee的src垫也是如此。通过类比,在管道中添加元素(并将其连接到视频混合器或tee)之前花费的时间与视频混合器和/或tee垫片在通过流之前必须等待的时间大致相同。

这都是由差异来解释的在执行管道时与新创建的视频混频器和/或tee pad进行比较。

这两个方法gst_pad_get_offset()andgst_pad_set_offset()请进

我的问题

  • 首先我不明白的偏移单位(gint64)。是时间单位吗?毫秒?微秒级?纳秒?还是别的什么?

  • 我也不明白为什么gst_pad_get_offset()总是返回0. 然而,我必须得到偏移量,如果我想能够设置正确的偏移量与gst_pad_set_offset()方法。根据文档,我必须在src pad上进行操作,但在哪里?

  • 最后我不明白为什么gst_pad_set_offset()不能工作。显然,我在新创建的videomixer的sink pad或tee的src pad上运行它(无论什么)。这不会改变什么。此外,如果我想将值10(例如)赋给gst_pad_set_offset(),然后在同一pad上运行gst_pad_get_offset(),那么理论上我应该拥有值10。然而,我总是得到0。这就好像gst_pad_get_offset()和gst_pad_set_offset()没有被实现。

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

是的,Gst没有很好的文档。

  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秒。

相关内容

  • 没有找到相关文章