首先,我想澄清,我的英语说得不太好,如果我不能很好地表达自己,请提前道歉。
上下文
根据命令gst检查-1.0-gst-版本,我有1.14.5的gstreamer。
我启动了一个动态gstreamer项目,其简化的管道结构如下所示(显然,我指定使用的是编程语言,而不是gst-启动)
AnElementNoMatterWhich ! videomixer ! AnElementNoMatterWhich ! tee ! queue ! AnElementNoMatterWhich现在想象一下,10秒后,我想要添加一个元素,不管是巫婆,还是添加到视频复制器接收器中。或者,假设我想向 tee src中添加一个项(这与对录象机一样,只是我要在tee和元素之间添加一个尾,以避免阻塞其他分支)。
这将需要大约10秒的时间,流才能进入录象机的接收器盘。同样,对于T恤的src垫也是如此。类似地,在管道中添加元素(并将其连接到视频切割器或tee)所花费的时间与视频记录器和/或tee衬垫在传递流之前必须等待的时间大致相同。
与新创建的视频记录器和/或tee衬垫相比,执行管道时的差分解释了这一切。
这就是gst_pad_get_offset()和gst_pad_set_offset()两种方法出现的地方。
我的问题
我也不明白为什么gst_pad_get_offset()总是返回。但是,如果我希望能够使用gst_pad_set_offset()方法设置正确的偏移量,则必须获得偏移量。根据文档,我必须在src pad上这样做,但是在哪里?
最后,我不明白为什么gst_pad_set_offset()不能工作。显然,我是在新创建的录像机的接收器盘上运行的,或者是在tee的src盘上运行的。这不会改变任何事情。此外,如果我想将值10 (例如)赋给gst_pad_set_offset (),然后在同一个垫子上运行gst_pad_get_offset (),理论上应该是10,但是,我总是得到0。就好像gst_pad_get_offset ()和gst_pad_set_offset ()不是gst_pad_get_offset()
我学习了所有的gstreamer教程,并在论坛上花了几天时间。我不知道该怎么办。但是,我知道如果没有这两种方法的正常运行,我的项目就会被阻止。我能做些什么?你有什么主意吗?
发布于 2021-10-04 15:55:12
是的,Gst并没有很好的记录。
默认情况下,偏移量为0。您可以更改它,然后get_offset将返回新的值
tee = pipe.get_by_name('t')
tee.srcpads[0].set_offset(1000000000)在本例中,Tee的第一个src pad将被延迟到1秒。
https://stackoverflow.com/questions/65824534
复制相似问题