【发布时间】:2014-11-06 22:52:11
【问题描述】:
我有一个包含各种流的 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 视频延迟插件),但这仅适用于 @987654326 @-video(我的是YUY2),转换成本太高。
我认为我需要一个元素来为它接收到的任何缓冲区的时间戳添加(或减去)偏移量,但还没有找到这样的东西。
【问题讨论】:
标签: synchronization delay gstreamer