首先我要澄清的是,我的英语不是很好,所以如果我没有很好地表达我的意思,请提前道歉。
<<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没有很好的文档。
- 纳秒
- 缺省情况下,偏移量为0。你可以改变它,然后get_offset会返回新值
- 你可以使用这样的结构,对我来说它的工作(Gst 1.18.4):
tee = pipe.get_by_name('t')
tee.srcpads[0].set_offset(1000000000)
在本例中,Tee的第一个src pad将延迟到1秒。