我有一个gstreamer管道与各种不同的流,我需要延迟其中之一,以便他们是同步的。
流是实时捕获的,在实际捕获之前有一些预处理,这给流增加了不同的延迟,因此它们不同步地到达计算机,gstreamer的内部同步没有帮助;我正在尝试重新同步它们。
我尝试使用queue提到的min-threshold-time属性here的技巧,但这没有帮助,因为管道仍然会根据它们的时间戳同步所有缓冲区--因此整个管道会被延迟,而不仅仅是一个流。
我目前的管道看起来是:
+-----------+
|decklinksrc|
+-----------+
|
V
+------+
|tee |
+------+
| | +-------------+
| +-------------------> | xvimagesink |
V +-------------+
+-----+
|queue|
+-----+
|
V +------------+
+-------+ |jackaudiosrc|
|x264env| +------------+
+-------+ |
| V
V +-----+
+---------+ |faac |
|h264parse| +-----+
+---------+ |
| V
V +--------+
+-----+ |aacparse|
|queue| +--------+
+-----+ |
| +---------------------+
V V
+----------+
|flvmux |
+----------+
|
V
+-----+
|queue|
+-----+
|
V
+---------+
|rtmpsink |
+---------+由于我目前只是试图延迟视频流,我也尝试使用frei0r-filter-delay0r元素(它封装了frei0r视频延迟插件),但这只适用于RGBA-video ( to is YUY2),转换过于草率。
我认为我需要一个元素来增加(或减去)它接收到的任何缓冲区的时间戳,但是还没有找到这样的东西。
发布于 2014-11-07 22:28:42
一些接收器元素具有呈现延迟属性。你能用一下吗?
编辑:您还可以尝试一个带有睡眠时间属性的identity元素:
identity sleep-time=25000Edit2:还确保为连接到"tee“元素的两个管道都有一个"queue”元素。
tee name=t ! queue ! x264 ! ...
t. ! queue ! xvimagesink很难知道是什么原因造成口吃,而没有看到它或有更多的日志记录细节。
https://stackoverflow.com/questions/26790958
复制相似问题